From 8865c9fd56ca730510fba57987d41ca1919da8e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cjinzhiwen=E2=80=9D?= <724338817@qq.com> Date: Fri, 3 Mar 2023 22:20:39 +0800 Subject: [PATCH] add dist --- web/dist/0146c2f1e1f5b20320aab16922c176e9.js | 1068 + .../0146c2f1e1f5b20320aab16922c176e9.js.gz | Bin 0 -> 10605 bytes web/dist/023f0a6de254bc2caa975f56d4b61243.js | 582 + .../023f0a6de254bc2caa975f56d4b61243.js.gz | Bin 0 -> 3978 bytes web/dist/027e36a1f41877209eca741a54467a40.js | 16 + .../027e36a1f41877209eca741a54467a40.js.gz | Bin 0 -> 4616 bytes web/dist/031eff2932c3edf3ad690d1e3abe2dde.js | 199 + web/dist/032307ff50be9245a1b1a55a5412cbba.js | 18 + web/dist/036680d9c1d332cf478c5823cd2a47db.js | 9 + web/dist/039af9192b9bb277966ceb4e4ce29c41.js | 16 + web/dist/03c0f1c2c4d4c2b6fa956a3e05de8ce4.js | 18 + web/dist/0410ca02b96655ac3c08452105cdad32.js | 168 + web/dist/05fa8ff839d67e3839195d1dc96d8d49.js | 1822 + .../05fa8ff839d67e3839195d1dc96d8d49.js.gz | Bin 0 -> 16621 bytes web/dist/0645227e6c2479f7aefed1fdd23ac733.js | 387 + .../0645227e6c2479f7aefed1fdd23ac733.js.gz | Bin 0 -> 3045 bytes web/dist/068ea80336df97af69fea2778de69f2f.js | 1743 + .../068ea80336df97af69fea2778de69f2f.js.gz | Bin 0 -> 20801 bytes web/dist/06c89bf980f201e95c550f51a020321b.js | 210 + web/dist/06e44643d965002fada0383a45b3e572.js | 1176 + .../06e44643d965002fada0383a45b3e572.js.gz | Bin 0 -> 12291 bytes web/dist/07cd7a34f1a3637d07c8e69746490d8f.js | 2923 + .../07cd7a34f1a3637d07c8e69746490d8f.js.gz | Bin 0 -> 13750 bytes web/dist/082d72cee51411d39d52d3f0e06eca3b.js | 524 + .../082d72cee51411d39d52d3f0e06eca3b.js.gz | Bin 0 -> 8278 bytes web/dist/08ead5ce2617fb6ce642b5ba343bd62c.js | 9 + web/dist/08f2ebda31cf24e86831115fde674fad.js | 16 + web/dist/097c060d70c9752bce90a4a814f1f161.js | 3779 + .../097c060d70c9752bce90a4a814f1f161.js.gz | Bin 0 -> 27375 bytes web/dist/0bb7acf5bee94a874690e9d25e8d58df.js | 181 + web/dist/0bf7ff3fb3f462333b89e5edd3c8409d.js | 13766 ++++ .../0bf7ff3fb3f462333b89e5edd3c8409d.js.gz | Bin 0 -> 133269 bytes web/dist/0c2b3b3b66a73e289e2ca47cf22ef150.js | 9 + web/dist/0d4d51ed7d30b5084008c57652d53a54.js | 1678 + .../0d4d51ed7d30b5084008c57652d53a54.js.gz | Bin 0 -> 16384 bytes web/dist/0db77d70de73132c7e5979bf8e82f047.js | 310 + .../0db77d70de73132c7e5979bf8e82f047.js.gz | Bin 0 -> 3385 bytes web/dist/0dd0f45c3dde9af3fcf9706e6a2a1edd.js | 9 + web/dist/0e13b643b6e88e8fd6328d50acabfda8.js | 56 + web/dist/0e6175d2306c7bd33ad73acb96313103.js | 330 + .../0e6175d2306c7bd33ad73acb96313103.js.gz | Bin 0 -> 2609 bytes web/dist/0e8e94ce9364aa82e7010f42ace03053.js | 2236 + .../0e8e94ce9364aa82e7010f42ace03053.js.gz | Bin 0 -> 21635 bytes web/dist/10bf27f2508137ec2a1cb087f80ae54d.js | 2194 + .../10bf27f2508137ec2a1cb087f80ae54d.js.gz | Bin 0 -> 21414 bytes web/dist/1178a325160e7e86e4f86460128fc135.js | 481 + .../1178a325160e7e86e4f86460128fc135.js.gz | Bin 0 -> 5549 bytes web/dist/119d8ff08e82b0f391f59f1fe657130f.js | 9 + web/dist/12738aa8461e4775d7f380a5d1953893.js | 279 + .../12738aa8461e4775d7f380a5d1953893.js.gz | Bin 0 -> 2288 bytes web/dist/13b157cfddcb9a76ae0800b47a8f0122.js | 9 + web/dist/142d258626093a8c3187029538e32bbc.js | 9 + web/dist/155500be4d3113e94dca99f997defb7a.js | 9 + web/dist/15bd2f4de9aefea698aea59ecd36327f.js | 16 + web/dist/16ae728a78f1cb04d40f77b322eb133d.js | 414 + .../16ae728a78f1cb04d40f77b322eb133d.js.gz | Bin 0 -> 3470 bytes web/dist/16dcdac9bfa8ec9dbe7eba3a6372189f.js | 3133 + .../16dcdac9bfa8ec9dbe7eba3a6372189f.js.gz | Bin 0 -> 28442 bytes web/dist/173ea2d9126a53f1d6cb61ef26219598.js | 16 + web/dist/17c85759d562794da4d2ff11f1b9b3bd.js | 9 + web/dist/182fa653555b8340835b3bf4f7192ae2.js | 9 + web/dist/1840080076c4078d157a5b05d0d95551.js | 9 + web/dist/1881f705828a30b0030e143a2297eb06.js | 1006 + .../1881f705828a30b0030e143a2297eb06.js.gz | Bin 0 -> 9626 bytes web/dist/18a893070398343ab529fdb7b62f1b6d.js | 9 + web/dist/18b69bf761ab7d8645f68794096dcb46.js | 16 + web/dist/18b9a42de70da52144b223be58bb65c3.js | 502 + .../18b9a42de70da52144b223be58bb65c3.js.gz | Bin 0 -> 3105 bytes web/dist/1afe87852eca4b28294075c659ff8c45.js | 9 + web/dist/1bd8ec07cab7c3b9e5e00671ed6ddcd5.js | 361 + .../1bd8ec07cab7c3b9e5e00671ed6ddcd5.js.gz | Bin 0 -> 4372 bytes web/dist/1c396939d503de7cc34ff9e809ed92ee.js | 393 + .../1c396939d503de7cc34ff9e809ed92ee.js.gz | Bin 0 -> 3813 bytes web/dist/1c71dfe2ae40884baae78d14e2568eb1.js | 9 + web/dist/1c9874850164cfdaa7e1d212d09124a7.js | 9 + web/dist/1cac3566cdfb6be0f51c3f2ade7c1603.js | 16 + web/dist/1cb8df3a3416707163473b1ee9268faf.js | 9 + web/dist/1d26a3c6d2c540c8c3af2f8ef298eb05.js | 2264 + .../1d26a3c6d2c540c8c3af2f8ef298eb05.js.gz | Bin 0 -> 22133 bytes web/dist/1df4e81a7c93bce583f46bcf525cab8a.js | 255 + web/dist/1ea9cb4eff3a4f4c27ff63263151eba2.js | 16 + web/dist/1ebb1ecbb9887608ca7cddd19a57a8d2.js | 18 + web/dist/1f1abd5e247cf6b2e9a3db6303277572.js | 9 + web/dist/1f33899bba9efc8a9dc527f39ce8fe9a.js | 836 + .../1f33899bba9efc8a9dc527f39ce8fe9a.js.gz | Bin 0 -> 5732 bytes web/dist/1facfcf9af0b5a679a66dc7f26080afe.js | 70 + web/dist/1fd353d022bf5027ba193d0b0b9995ed.js | 9 + web/dist/2031467f3d02be43b638c5e3ccba3996.js | 9 + web/dist/20b085f014791c3916e38d818e76ef3c.js | 318 + .../20b085f014791c3916e38d818e76ef3c.js.gz | Bin 0 -> 2008 bytes web/dist/20f8061729d26f9786679bbf7af0b87a.js | 9 + web/dist/214a729dcea91ee8a56f8ef43e17243a.js | 9 + web/dist/21dca974f7343f200597e43a55766c6e.js | 9 + web/dist/21e4ad721af8c3d989a2541cdddd4299.js | 3993 ++ .../21e4ad721af8c3d989a2541cdddd4299.js.gz | Bin 0 -> 24645 bytes web/dist/2218ddba12711e7e7f6aea96015bafa2.js | 428 + .../2218ddba12711e7e7f6aea96015bafa2.js.gz | Bin 0 -> 3849 bytes web/dist/22ddca0f2cac653ae8eebd716e965aa7.js | 9 + web/dist/2322c0d73cf4169df003976804566079.js | 309 + .../2322c0d73cf4169df003976804566079.js.gz | Bin 0 -> 2484 bytes web/dist/23ad6224fd6059c31c199b6d6d420628.js | 16 + .../23ad6224fd6059c31c199b6d6d420628.js.gz | Bin 0 -> 7168 bytes web/dist/242fb5a92733d151e9ca303fcd3ae7ff.js | 9 + web/dist/255c622fc1034b901b1b59510c5fee4a.js | 3110 + .../255c622fc1034b901b1b59510c5fee4a.js.gz | Bin 0 -> 20881 bytes web/dist/2681042a598b029b51d51f7669b81c4d.js | 9 + web/dist/26916d87ee46ad72f432b9a59e6fd198.js | 16 + web/dist/26eb865724d56b0fb703d0ba31431598.js | 1372 + .../26eb865724d56b0fb703d0ba31431598.js.gz | Bin 0 -> 72029 bytes web/dist/26fa04eabe6ca96832d5652350a2fb46.js | 250 + web/dist/273b01495ae7b9dabfd2a8297066ece9.js | 2466 + .../273b01495ae7b9dabfd2a8297066ece9.js.gz | Bin 0 -> 23230 bytes web/dist/2820d22820b6e6c07cdd0ec14477c7b9.js | 765 + .../2820d22820b6e6c07cdd0ec14477c7b9.js.gz | Bin 0 -> 9048 bytes web/dist/2836e58974a8e2730a9b6bec1921dd3d.js | 199 + web/dist/28f7c5b28bbad7b0bac0cc3cc5b89bad.js | 9 + web/dist/293f0f487b15a72a6f8d8620c9630de6.js | 18 + web/dist/2a4c96bd91c25806d68325751fb0c958.js | 16 + .../2a4c96bd91c25806d68325751fb0c958.js.gz | Bin 0 -> 6035 bytes web/dist/2ac58492ad5a1b5244deb0fef1e5a773.js | 9 + web/dist/2b1eed411f531a271f0e47693c82216a.js | 133 + web/dist/2bba99eb717e1aa22e45284a964ca73f.js | 9 + web/dist/2c41df6060672e75b4ab09e4a5d43049.js | 74 + web/dist/2d53cfacb6a695f378ca997fcee7efb3.js | 16 + web/dist/2d84c80112a372bc149cad3464e90fa3.js | 1617 + .../2d84c80112a372bc149cad3464e90fa3.js.gz | Bin 0 -> 10432 bytes web/dist/2dcf359bda4d96fcd06e8b0b7bc039bf.js | 305 + .../2dcf359bda4d96fcd06e8b0b7bc039bf.js.gz | Bin 0 -> 3167 bytes web/dist/2e4c8b961fd80b700a23d21f3d9bb4c5.js | 314 + .../2e4c8b961fd80b700a23d21f3d9bb4c5.js.gz | Bin 0 -> 2991 bytes web/dist/2f689ca91158f918e23ce27c7abbcf25.js | 18 + web/dist/2f6dcc38e5ad378438bea99c47e20e28.js | 16 + web/dist/2f985fd2d1b0603c0cd825f7e9b4218d.js | 18 + web/dist/3003458e04ee41b70b5072fab36589ba.js | 2373 + .../3003458e04ee41b70b5072fab36589ba.js.gz | Bin 0 -> 22408 bytes web/dist/30161c62d9dd1e5ac1ae07b10315d2e0.js | 6673 ++ .../30161c62d9dd1e5ac1ae07b10315d2e0.js.gz | Bin 0 -> 48766 bytes web/dist/30335c579bfc2de8dcf574523ef13020.js | 325 + .../30335c579bfc2de8dcf574523ef13020.js.gz | Bin 0 -> 3046 bytes web/dist/3078a3b7f66272ada3e5d065827dfceb.js | 338 + .../3078a3b7f66272ada3e5d065827dfceb.js.gz | Bin 0 -> 2481 bytes web/dist/31459a657ac30dcaa54765c6d76d8c81.js | 9 + web/dist/318f90759f2ff0d2a437350e87578172.js | 9 + web/dist/31bcb02e59d84ce2e38b85616a0b44db.js | 9 + web/dist/31f3f1c32b27587832d28b634351325c.js | 9 + web/dist/321d98b6707ed20d34818a7533713433.js | 165 + .../321d98b6707ed20d34818a7533713433.js.gz | Bin 0 -> 3866 bytes web/dist/330543be2120b9dcc9bec41ba5e05805.js | 9 + web/dist/33443ec129774bb1add5795cc8895137.js | 9 + web/dist/34eb9d98392182a042fa67206fd33187.js | 279 + .../34eb9d98392182a042fa67206fd33187.js.gz | Bin 0 -> 4517 bytes web/dist/34f05dc84111ffe37a1d5b5aacff7488.js | 9 + web/dist/34f52a56877a14fbb7e9d37469ebbf15.js | 254 + .../34f52a56877a14fbb7e9d37469ebbf15.js.gz | Bin 0 -> 3030 bytes web/dist/35858a47038a7be957df49854e8e5eea.js | 9 + web/dist/35b23ae9af47c42f9442c3071d489fb0.js | 74 + web/dist/35dc4119f9e28cb9baba1475537460bb.js | 9 + web/dist/36dad0e7ec2ab819d1240f9b39d95107.js | 4622 ++ .../36dad0e7ec2ab819d1240f9b39d95107.js.gz | Bin 0 -> 38827 bytes web/dist/3792c6a2af140883f2b4a70d783d442f.js | 16 + web/dist/3799d08c351633c98f6ae5ff08397674.js | 747 + .../3799d08c351633c98f6ae5ff08397674.js.gz | Bin 0 -> 4957 bytes web/dist/38528de2a5c097da375fd0a076667441.js | 9 + web/dist/3a820eb0c0fb52f9b75e34214b5f8c9c.js | 226 + web/dist/3baeab62d681338ba3287f0a50e5dad1.js | 9 + web/dist/3c58f68d787710c79906a2cd6d248295.js | 9 + web/dist/3cab7110c6a090f72c540dcc1cfbe3b5.js | 9 + web/dist/3cbddc141c4d2eb71e54fe3037547812.js | 642 + .../3cbddc141c4d2eb71e54fe3037547812.js.gz | Bin 0 -> 3761 bytes web/dist/3cce0c7e1a8e1148f97de59a4b1ee73f.js | 9 + web/dist/3cf64ec91a700bfa1dece0957c49c7dc.js | 9 + web/dist/3cfffbb4555d5856b82186750e7b2b65.js | 253 + .../3cfffbb4555d5856b82186750e7b2b65.js.gz | Bin 0 -> 3006 bytes web/dist/3dfe9a3e745ca1e3755291ac5c5a4a24.js | 16 + web/dist/3e6808cd6eefd1be1040403985581374.js | 9 + web/dist/3e6a7169aea2691d9a23761b355fddc1.js | 580 + .../3e6a7169aea2691d9a23761b355fddc1.js.gz | Bin 0 -> 2810 bytes web/dist/3e7978dc82cd7d504e8d51865dc5dcf1.js | 108 + web/dist/40505d6c2f34fc08502d3e596573c7f8.js | 9 + web/dist/406a0570f5a7af790698bae4f4ce963e.js | 3150 + .../406a0570f5a7af790698bae4f4ce963e.js.gz | Bin 0 -> 27921 bytes web/dist/41251dac588b04bea51a664d331ff40a.js | 412 + .../41251dac588b04bea51a664d331ff40a.js.gz | Bin 0 -> 4599 bytes web/dist/41b3ba662e75b26d9044a865172f0d16.js | 1933 + .../41b3ba662e75b26d9044a865172f0d16.js.gz | Bin 0 -> 17160 bytes web/dist/41f85ea0c545f0539b6ae2753eb1f79c.js | 9 + web/dist/4299a6fce62e5b921f08685227feadd6.js | 18 + web/dist/43a9bcfc200d80676bc68fe9a3c8ab6d.js | 9 + web/dist/43e0f7960243cbe628b69f7b857a4f08.js | 94 + web/dist/4526fef5c092d1663a859dd237d38238.js | 18 + web/dist/45de113a9f4cd75a8a71a2e6f4f91c95.js | 129 + web/dist/48325ae89eaef130841d0d921ab065fc.js | 146 + web/dist/48ddeeb78dfb01d119269fb9ad4d5d73.js | 19 + web/dist/49152f07a653743e724f599386af2d7c.js | 16 + web/dist/4939c180f8a44b5986493cfbb9b9d787.js | 346 + .../4939c180f8a44b5986493cfbb9b9d787.js.gz | Bin 0 -> 6899 bytes web/dist/49429bb63ec76564dabe9c3abd7e5df7.js | 347 + .../49429bb63ec76564dabe9c3abd7e5df7.js.gz | Bin 0 -> 2965 bytes web/dist/49a6772f0e4c0ad12d9475bef3ec1dd4.js | 450 + .../49a6772f0e4c0ad12d9475bef3ec1dd4.js.gz | Bin 0 -> 4014 bytes web/dist/4b99ec9b42e080ec2d769ea4971ea76c.js | 49 + web/dist/4be9603e95e8ca53663cb73594f371b1.js | 18 + .../4be9603e95e8ca53663cb73594f371b1.js.gz | Bin 0 -> 19571 bytes web/dist/4c2af0e7baef22a45b0f5bb4315196e5.js | 98 + web/dist/4cbd6f8a4f52821c1d3476139078797d.js | 9 + web/dist/4d694d41a0c1b3eaad752a8352c5661c.js | 9 + web/dist/4d753779fcb3505da953d0d75759e255.js | 968 + .../4d753779fcb3505da953d0d75759e255.js.gz | Bin 0 -> 9423 bytes web/dist/4e347d330ecc5e8dcff367c024911892.js | 67 + web/dist/503f9ce3546623bbbbb78ee6363d7a79.js | 16 + web/dist/504a0846d6283cc54c7ea6fe9984f737.js | 276 + .../504a0846d6283cc54c7ea6fe9984f737.js.gz | Bin 0 -> 2402 bytes web/dist/5090b6043f0ffe911c7619d15b64b85e.js | 18 + web/dist/5094b30d2471cc7312746173d8a4bb25.js | 9 + web/dist/51e6ccd3ea9d7443949b155b113eebd5.js | 9 + web/dist/5306139b5cbaa48713136cf1a15af359.js | 629 + .../5306139b5cbaa48713136cf1a15af359.js.gz | Bin 0 -> 8025 bytes web/dist/5343fc74a2893a130daa6ff1bff15621.js | 388 + .../5343fc74a2893a130daa6ff1bff15621.js.gz | Bin 0 -> 5485 bytes web/dist/5403f6664a5ad5a2d47791b54a8ca3b7.js | 759 + .../5403f6664a5ad5a2d47791b54a8ca3b7.js.gz | Bin 0 -> 7688 bytes web/dist/540bba54b49ea7a6ec513270449132db.js | 9 + web/dist/544cdec50f7d5ee773f1023634bc8c59.js | 311 + .../544cdec50f7d5ee773f1023634bc8c59.js.gz | Bin 0 -> 3146 bytes web/dist/54cc6e5f597d4883de3f7f223c8c1b1c.js | 2397 + .../54cc6e5f597d4883de3f7f223c8c1b1c.js.gz | Bin 0 -> 22736 bytes web/dist/553aa6bb3b625428f4df57f5885d50f3.js | 9 + web/dist/564f112fdc65153caebf74208a70dcf0.js | 475 + .../564f112fdc65153caebf74208a70dcf0.js.gz | Bin 0 -> 3186 bytes web/dist/57227411250776fb517249d0a997a96f.js | 18 + web/dist/5732fea8bd237446656490657f7b147d.js | 298 + .../5732fea8bd237446656490657f7b147d.js.gz | Bin 0 -> 2427 bytes web/dist/57c2d2eb6a844a8c9ecd932c6d4067b0.js | 9 + web/dist/5977b934a4c6b480790864ea01303173.js | 10834 +++ .../5977b934a4c6b480790864ea01303173.js.gz | Bin 0 -> 56666 bytes web/dist/5a2b4fb5ab9db07fc3a8acae381d32d8.js | 446 + .../5a2b4fb5ab9db07fc3a8acae381d32d8.js.gz | Bin 0 -> 3267 bytes web/dist/5adf5687c0c3588532b6d8157a3b2a3f.js | 178 + web/dist/5bd58f2ebad7e63ff72a891fb43e2b38.js | 9 + web/dist/5d1543d89f404122d87ebbfb99b51a7a.js | 125 + web/dist/5ead99d987b31962ae1b64c2f01804d6.js | 378 + .../5ead99d987b31962ae1b64c2f01804d6.js.gz | Bin 0 -> 6447 bytes web/dist/5eeee1acc01b04328cf42db0715bb7f5.js | 9 + web/dist/5f6f5026d13b2a9b884a8144a119cf9e.js | 9 + web/dist/5f708f5469b05de5bae06c0e8eaa2ce7.js | 2544 + .../5f708f5469b05de5bae06c0e8eaa2ce7.js.gz | Bin 0 -> 23203 bytes web/dist/60a2f211635d902bf0c2f4d246d02a0c.js | 962 + .../60a2f211635d902bf0c2f4d246d02a0c.js.gz | Bin 0 -> 9614 bytes web/dist/60d06d7e01bd491fa7376e70f9859545.js | 154 + web/dist/60fc15a66fa7ba74ccd248f85b50fbe5.js | 9 + web/dist/61327573c88153bf19008ac24e481eb1.js | 472 + .../61327573c88153bf19008ac24e481eb1.js.gz | Bin 0 -> 6227 bytes web/dist/626617463b05d66ef839305eb1ace8e3.js | 78 + web/dist/62f1660714df9d262535c413ec4535ef.js | 16 + web/dist/63161028c783bc45531ecf9fd37b12df.js | 18 + web/dist/631aaf24371bbc547ab21e8b11ebf657.js | 800 + .../631aaf24371bbc547ab21e8b11ebf657.js.gz | Bin 0 -> 7912 bytes web/dist/6373ffeee52d7649fd4d155b198644b2.js | 403 + .../6373ffeee52d7649fd4d155b198644b2.js.gz | Bin 0 -> 4006 bytes web/dist/63b236091dce5c38c8150dcf792457ba.js | 16 + web/dist/63c855de87f24724bb7f5366c1af96c2.js | 1373 + .../63c855de87f24724bb7f5366c1af96c2.js.gz | Bin 0 -> 14034 bytes web/dist/64537e0da9421afadc14d7c91e2f6ae1.js | 110 + web/dist/64e5c32afb91e13122237cf17da6baa7.js | 357 + .../64e5c32afb91e13122237cf17da6baa7.js.gz | Bin 0 -> 4011 bytes web/dist/64f93b6b093bba4147485023263cf65f.js | 9 + web/dist/654c071ae2c15c994f62e6573e7b9b2d.js | 18 + web/dist/658c329fb1a91779a74d65c3b7e2e4b1.js | 1003 + .../658c329fb1a91779a74d65c3b7e2e4b1.js.gz | Bin 0 -> 8681 bytes web/dist/65e9e719bfb286e3d617eccd6604bb5f.js | 16 + web/dist/6644246324f760500a6a905d4957a559.js | 896 + .../6644246324f760500a6a905d4957a559.js.gz | Bin 0 -> 8624 bytes web/dist/67b64f570007d1b19182be592678cf70.js | 670 + .../67b64f570007d1b19182be592678cf70.js.gz | Bin 0 -> 19339 bytes web/dist/6813d64f169561dbff03e9a9c462ba83.js | 16 + web/dist/68cf9a0e1eaff7cc991e970a855108f8.js | 9 + web/dist/697866aa5cecab4713bee76b603bae58.js | 92 + web/dist/697c2df91bf7c729d317c620a3cd77bd.js | 9 + web/dist/6ac188cc35ae0d38d3647a2eef17b2fc.js | 409 + .../6ac188cc35ae0d38d3647a2eef17b2fc.js.gz | Bin 0 -> 2330 bytes web/dist/6cefda3bcdee592d400b012c61c93ef6.js | 226 + web/dist/6d3d6fa2ad6dc7f95a42c9aab746269a.js | 385 + .../6d3d6fa2ad6dc7f95a42c9aab746269a.js.gz | Bin 0 -> 3917 bytes web/dist/6e88d3943f4c3a068493aad131cd4898.js | 9 + web/dist/6e9ca56e0fa3e784eab3da45f8d0d8ac.js | 9 + web/dist/6f0543453c605ea6d673a3bd31dd1090.js | 9 + web/dist/6fef06c49fbb86934ac46d1631974d03.js | 2640 + .../6fef06c49fbb86934ac46d1631974d03.js.gz | Bin 0 -> 24790 bytes web/dist/6ff5826d3c93e2bd37bc511affebc78b.js | 215 + web/dist/70b5b576c3a31d2ab78f6be5fc147539.js | 289 + .../70b5b576c3a31d2ab78f6be5fc147539.js.gz | Bin 0 -> 9536 bytes web/dist/70cd3f74c024a8e7d573bb425cbcba49.js | 18 + web/dist/716afffe05a2fc1a2a8f5c34221fba3f.js | 278 + .../716afffe05a2fc1a2a8f5c34221fba3f.js.gz | Bin 0 -> 3093 bytes web/dist/71bbf2d4b6293b54d672c2812fa8323e.js | 138 + web/dist/727184c92f9da8d8b0c013fd79cf32fe.js | 9 + web/dist/729151a662f8055d864efe142b48ba27.js | 120 + web/dist/730a06424debf3bfdaf03370df2177bd.js | 9 + web/dist/731a5afa4ad31a0a038e5742b5e98dd7.js | 59 + web/dist/73869ae87d1a0bf48fdcf5f45e86b070.js | 294 + .../73869ae87d1a0bf48fdcf5f45e86b070.js.gz | Bin 0 -> 2562 bytes web/dist/73ca62c494dfdfee1f16213f88d5b3bc.js | 16 + web/dist/758c22ddcb0f7f798a0977e45b44e905.js | 145 + web/dist/769ae488953faab19b33deee8331b789.js | 409 + .../769ae488953faab19b33deee8331b789.js.gz | Bin 0 -> 2251 bytes web/dist/7745f3e776488705a38e62f85adad54d.js | 16 + .../7745f3e776488705a38e62f85adad54d.js.gz | Bin 0 -> 4127 bytes web/dist/777bbf0a7ab200cd0c25bb83731450a5.js | 234 + .../777bbf0a7ab200cd0c25bb83731450a5.js.gz | Bin 0 -> 8565 bytes web/dist/78704635c0d09fc222bfc22e6194c910.js | 737 + .../78704635c0d09fc222bfc22e6194c910.js.gz | Bin 0 -> 7496 bytes web/dist/7a7a92fc77193f8a3ecef04968c8de2c.js | 18 + web/dist/7a8927591addd938435ecd3394f5cddf.js | 18 + web/dist/7bdcb2c0abebee28dea0752a4a53ec8d.js | 438 + .../7bdcb2c0abebee28dea0752a4a53ec8d.js.gz | Bin 0 -> 3835 bytes web/dist/7c67b300762b43a96d8050adbc484103.js | 18 + web/dist/7cef38946c33fa981d6d2c86c62428e0.js | 9 + web/dist/7d25df3855c05c6d49484240a5f4cc72.js | 2505 + .../7d25df3855c05c6d49484240a5f4cc72.js.gz | Bin 0 -> 23886 bytes web/dist/7d46cd8e5efaac33d5bf823ed4268841.js | 9 + web/dist/7e0ca61ea0cda0a8e6874d4ab5661277.js | 559 + .../7e0ca61ea0cda0a8e6874d4ab5661277.js.gz | Bin 0 -> 5421 bytes web/dist/7e858d2812c1c91e399264aa3ded0f00.js | 1256 + .../7e858d2812c1c91e399264aa3ded0f00.js.gz | Bin 0 -> 10653 bytes web/dist/7e98c4d98664d6f7bcc52a07f21a1f9f.js | 9 + web/dist/7f10fe526aec57bd522af77ea6ac2b62.js | 9 + web/dist/81246b2b17fe13310d0eb40a0a0f50ed.js | 2578 + .../81246b2b17fe13310d0eb40a0a0f50ed.js.gz | Bin 0 -> 40601 bytes web/dist/817d52a47a4657b8a4dab79e057f5fb0.js | 9 + web/dist/81800b3632a955b1ae6a6aa5c56b48a9.js | 421 + .../81800b3632a955b1ae6a6aa5c56b48a9.js.gz | Bin 0 -> 4870 bytes web/dist/81c815664e53f84459fe8c5d6d1023a6.js | 231 + web/dist/82d8d30793273702926136095cec929c.js | 1345 + .../82d8d30793273702926136095cec929c.js.gz | Bin 0 -> 11562 bytes web/dist/833b242747fd7b098d46011e4289bc3f.js | 9 + web/dist/83ea78d42f1a8e5f7346f3a30140ebfb.js | 9 + web/dist/85a385e333ceb9e6bbae8779d47520f5.js | 18 + web/dist/867fb2b26eef123915aff8634c0bbf4a.js | 9 + web/dist/86d777efd4d05137e05019407412503a.js | 349 + .../86d777efd4d05137e05019407412503a.js.gz | Bin 0 -> 3064 bytes web/dist/873998da007bed181a6fb275057e12c4.js | 2309 + .../873998da007bed181a6fb275057e12c4.js.gz | Bin 0 -> 22657 bytes web/dist/875b17c88ece41b8596bf7fc71e68866.js | 18 + web/dist/8833a126ef9d8892bfb372d227f7f088.js | 9 + web/dist/8870430db332faf22d90e12f1620ee84.js | 9 + web/dist/88f84860305454c46b6dd7ac02cd5f90.js | 18 + web/dist/89859a411a50c90f1e669deaf8a6775f.js | 9 + web/dist/89a47a0051ac0b3885ef8af2476526f0.js | 9 + web/dist/89ebd0e0e6e5662cea81597f2e4ba9b7.js | 339 + .../89ebd0e0e6e5662cea81597f2e4ba9b7.js.gz | Bin 0 -> 3229 bytes web/dist/8a08dea4bf1584f83498cad4d83baa84.js | 18 + web/dist/8a6e554a1187e2d6572d1f146f18fa4f.js | 252 + web/dist/8a8a1644af027b4abdb3d6083c9955d8.js | 288 + .../8a8a1644af027b4abdb3d6083c9955d8.js.gz | Bin 0 -> 3082 bytes web/dist/8ac889e60c5693eb83a35e6d30582578.js | 232 + web/dist/8b6c6eddf77150952b8fbf4e5efe2700.js | 16 + web/dist/8bfa5574d2b8e845c17a842286a0e2bd.js | 2695 + .../8bfa5574d2b8e845c17a842286a0e2bd.js.gz | Bin 0 -> 24545 bytes web/dist/8e158f69acdb73029247c5a269a566df.js | 348 + .../8e158f69acdb73029247c5a269a566df.js.gz | Bin 0 -> 3392 bytes web/dist/8ed43cdfdd838056af84f9840f79af2d.js | 129 + web/dist/8f7cd49ef21ef2849cb21408fd2cef2e.js | 5832 ++ .../8f7cd49ef21ef2849cb21408fd2cef2e.js.gz | Bin 0 -> 35189 bytes web/dist/90643b9da87302fef490f3f48af806e2.js | 9 + web/dist/909037dfc8091283e4134bc6e5448e2b.js | 9 + web/dist/9142b3f5bf59ae79b69c505c6964f395.js | 16 + web/dist/92917192eaffb1cf3cadaf985d3cc5d1.js | 195 + web/dist/92cf63e9a949f08d97a74d9ed17392ed.js | 9 + web/dist/931d2d4721a07dc0cef85cc83d1dd6db.js | 146 + web/dist/9405408bc4c1c18469c1eefd766f06b9.js | 274 + web/dist/94a0179602c94d55621a35e41c97ed5c.js | 9 + web/dist/95722ce261fad0a28f370f9042ac8acd.js | 82 + web/dist/966a0905960f7cf236a398b68d3a4c6c.js | 472 + .../966a0905960f7cf236a398b68d3a4c6c.js.gz | Bin 0 -> 3003 bytes web/dist/9737a936e499f40b0c36f497031321b1.js | 208 + .../9737a936e499f40b0c36f497031321b1.js.gz | Bin 0 -> 17232 bytes web/dist/97d15c029119bb1a0a1640736097aa31.js | 16 + web/dist/985b400088bf5e23fb83e70d9948eccb.js | 9 + web/dist/9874181c924bc65b0e3b8f51b3ae93df.js | 16 + .../9874181c924bc65b0e3b8f51b3ae93df.js.gz | Bin 0 -> 6136 bytes web/dist/98d1b05bc92d70a819fe9a6f9a1a8d5f.js | 621 + .../98d1b05bc92d70a819fe9a6f9a1a8d5f.js.gz | Bin 0 -> 5864 bytes web/dist/9987746e670b35420f50b6ebd2e0d67a.js | 1985 + .../9987746e670b35420f50b6ebd2e0d67a.js.gz | Bin 0 -> 16637 bytes web/dist/998c5f13555e18b42e9bf826578b2e16.js | 9 + web/dist/99fc1d5bce3320a8fbf9ce9a8d6b9e2f.js | 16 + web/dist/9aafe4a55ece5a23a8c7658cc25325fc.js | 16 + .../9aafe4a55ece5a23a8c7658cc25325fc.js.gz | Bin 0 -> 4503 bytes web/dist/9ad12abef8b90e7454d08765187eeb90.js | 185 + web/dist/9b24c141c4ab1fb899b2b0f1b8ee33ac.js | 16 + web/dist/9b847edd56886a180bb29d04b8bece7e.js | 18 + web/dist/9c202aefac35a5ff49d3d3795e9932bc.js | 9 + web/dist/9d0f4f65be2f50ad54488089f126feda.js | 9 + web/dist/9e357a97da26127713394684a51946b8.js | 9 + web/dist/9e4ae76ef90073c3837eb8383972017d.js | 18 + web/dist/9e69cb39701c3578226b39536edd4dd7.js | 9 + web/dist/9e7b410d51fc77840842aea653f8aee1.js | 312 + .../9e7b410d51fc77840842aea653f8aee1.js.gz | Bin 0 -> 3809 bytes web/dist/9e7dd08cf78e118b417094343686cda8.js | 739 + .../9e7dd08cf78e118b417094343686cda8.js.gz | Bin 0 -> 8510 bytes web/dist/9f1744bf8d426b88f1f87fd3b5cca06a.js | 19 + web/dist/a0fa4459ff5562e61df9d58c70f1bce8.js | 18 + web/dist/a101e3cf93198db4854a63d23542eefe.js | 57570 ++++++++++++++++ .../a101e3cf93198db4854a63d23542eefe.js.gz | Bin 0 -> 383055 bytes web/dist/a1126819c6d0a10f20464c174f78fcfb.js | 16 + web/dist/a12b600f57e52c9d0cac24bbb2e7c07a.js | 18 + web/dist/a17e59619a3d17661de6cad7d6808a1f.js | 358 + .../a17e59619a3d17661de6cad7d6808a1f.js.gz | Bin 0 -> 9426 bytes web/dist/a26463d029a2515171748a1ebcca53c3.js | 9 + web/dist/a2892f98db7a4df3c9483669ddb59ec2.js | 286 + .../a2892f98db7a4df3c9483669ddb59ec2.js.gz | Bin 0 -> 2579 bytes web/dist/a311e02008e0f00a37305a12d479159a.js | 9 + web/dist/a3364b0ae17abf3b8dc45ac0fc88138f.js | 285 + .../a3364b0ae17abf3b8dc45ac0fc88138f.js.gz | Bin 0 -> 3967 bytes web/dist/a65537c91d9088b603c93b6398f580c0.js | 2590 + .../a65537c91d9088b603c93b6398f580c0.js.gz | Bin 0 -> 40120 bytes web/dist/a68bd604e401377e745b8f3a2e5088f0.js | 922 + .../a68bd604e401377e745b8f3a2e5088f0.js.gz | Bin 0 -> 7725 bytes web/dist/a7182b8d60c4b8e3bc60bddc2d69da3c.js | 18 + web/dist/a7668d94ba4eb4fd33fef9ccdf584329.js | 18 + web/dist/a77f254bc934c3d69dd51902da56f6f1.js | 318 + .../a77f254bc934c3d69dd51902da56f6f1.js.gz | Bin 0 -> 3545 bytes web/dist/a7da972483728415ac8f250f02083cd8.js | 343 + .../a7da972483728415ac8f250f02083cd8.js.gz | Bin 0 -> 3409 bytes web/dist/a81cd084ae545af4318d919f40a91fa2.js | 318 + .../a81cd084ae545af4318d919f40a91fa2.js.gz | Bin 0 -> 5003 bytes web/dist/a898336d92cb4d2c2b18e46d9d10c636.js | 882 + .../a898336d92cb4d2c2b18e46d9d10c636.js.gz | Bin 0 -> 8507 bytes web/dist/a8fa7ec7cc9e6632aa3cd10be6ed5b5a.js | 18 + web/dist/ab16c1237e6e04bbf0024ee2bae42130.js | 9 + web/dist/ab224e40ec1be852b08440ae5b93334a.js | 1323 + .../ab224e40ec1be852b08440ae5b93334a.js.gz | Bin 0 -> 8977 bytes web/dist/ab30fd1481481ea1a281fe8b19b2bee0.js | 502 + .../ab30fd1481481ea1a281fe8b19b2bee0.js.gz | Bin 0 -> 5275 bytes web/dist/ab6682f26350a18d64b57b1f6afedb5b.js | 391 + .../ab6682f26350a18d64b57b1f6afedb5b.js.gz | Bin 0 -> 7403 bytes web/dist/ac87527deeab08356fce5f6f6cc26c54.js | 864 + .../ac87527deeab08356fce5f6f6cc26c54.js.gz | Bin 0 -> 8453 bytes web/dist/acc30207efba7ab5b7b509b599f37e6f.js | 9 + web/dist/acc7448b80728a73c9a4046b3ec4407f.js | 9 + web/dist/accd1391b6d74a4f4ef8b1ca97d4c57f.js | 321 + .../accd1391b6d74a4f4ef8b1ca97d4c57f.js.gz | Bin 0 -> 3306 bytes web/dist/ad5c4f70b45e47d623fee743299c075b.js | 2435 + .../ad5c4f70b45e47d623fee743299c075b.js.gz | Bin 0 -> 22957 bytes web/dist/ad806674b28b94be3406af2d34899870.js | 16 + web/dist/adbb57fa182dce548204311d3be6dffa.js | 9 + web/dist/ae72f92a2ea2219a6a8c58e8ae557385.js | 47 + web/dist/af1de9b532b5108926ebe8f8dbe98c9d.js | 239 + .../af1de9b532b5108926ebe8f8dbe98c9d.js.gz | Bin 0 -> 9483 bytes web/dist/af7b012955996316a14afcf804c441e7.js | 212 + web/dist/afb72b77b4edf3430441b8280c9fb6a9.js | 9 + web/dist/b02513e1d0cc664936e1ba9cb5a923af.js | 9 + web/dist/b036b967d8279eb68e21b6624846b420.js | 2291 + .../b036b967d8279eb68e21b6624846b420.js.gz | Bin 0 -> 22574 bytes web/dist/b131314d1ea62fa7bba91a4da8360298.js | 9 + web/dist/b17d523e22cd12b9c29e60edc5171b60.js | 252 + web/dist/b435aebcb57d65080cfd510e0a9d5d9d.js | 9 + web/dist/b4e1edf89aca93d0b8087f0f63b8d36f.js | 338 + .../b4e1edf89aca93d0b8087f0f63b8d36f.js.gz | Bin 0 -> 4198 bytes web/dist/b731b483b53dbc1af3e329d34b819ef9.js | 18 + web/dist/b82b206b6d7ead500802f08c7f1bcf56.js | 16 + web/dist/b830d88aa22a866a208be27af90526a7.js | 9 + web/dist/b9963f909afff9cb4e6dd95bf5bc20c4.js | 129 + web/dist/bad4733ef8214f5264724d94d481ae42.js | 18 + web/dist/bae95bdb1bbcc0969e0e40fb72539df3.js | 9 + web/dist/baf9051837c09b438b0e7d1e09b231e3.js | 2605 + .../baf9051837c09b438b0e7d1e09b231e3.js.gz | Bin 0 -> 23984 bytes web/dist/bbd62124f6d03e01eb4332f55ead999d.js | 9 + web/dist/bc26ab0797e975ba01e701683935864b.js | 9 + web/dist/bd67544cb7690db5a573f0212ef4b767.js | 19 + web/dist/bd6e4c1215a429558edf1546243e338b.js | 18 + web/dist/be964ce7cf6d2902db61ade8f9cd0860.js | 187 + web/dist/beebd365e9d52fb45e4e2e0e8f3f25f3.js | 78 + web/dist/bf615f3f2fbded014d7c7c2cba2a55da.js | 18 + web/dist/bfc402925b28862b622c68f515be1b98.js | 271 + web/dist/bff4a02980e8088d0e56593d6da137cf.js | 18 + web/dist/c137d4af8541a1abf4598a9760ef6a74.js | 2791 + .../c137d4af8541a1abf4598a9760ef6a74.js.gz | Bin 0 -> 25138 bytes web/dist/c23b1f80ab9746b425f3848bdaacc144.js | 9 + web/dist/c23cf8ce8d6d5a73803c971390656875.js | 18 + web/dist/c2b4975093d5885f2e8ff09c4fabe8f7.js | 27 + web/dist/c2ded7fafb683b89f9fb51f37400cfb5.js | 602 + .../c2ded7fafb683b89f9fb51f37400cfb5.js.gz | Bin 0 -> 5333 bytes web/dist/c38a3226f3858a47ba9fb788dc7b44fc.js | 9 + web/dist/c3b0cd15adcc12a549e7ac5d165ac1f4.js | 9 + web/dist/c3ee66447735372b0459983d11153db5.js | 16 + web/dist/c53921154b1d064db029a19020dd6e6c.js | 13954 ++++ .../c53921154b1d064db029a19020dd6e6c.js.gz | Bin 0 -> 134526 bytes web/dist/c57721ccc0d5a41063560477b0bc7d02.js | 457 + .../c57721ccc0d5a41063560477b0bc7d02.js.gz | Bin 0 -> 2780 bytes web/dist/c6c186b45f36f18d9ce1fb2bc07fa5e3.js | 272 + web/dist/c6d4a590e14107a8a5ad505d66241032.js | 9 + web/dist/c6f608398c43e25821557ee65cda5e58.js | 9 + web/dist/c7d3b0afe7600a632fbf44ee8d84996e.js | 9 + web/dist/c856709d8ff07b9e3a72f0fd736437a5.js | 104 + web/dist/c8fa7b978e3d1a3d8871518e9cb83968.js | 293 + .../c8fa7b978e3d1a3d8871518e9cb83968.js.gz | Bin 0 -> 2208 bytes web/dist/c9b9a1dd6c2e609511c3361642370120.js | 16 + web/dist/ca1483809659f6c87cc6f588891d2bd4.js | 9 + web/dist/ca66e3089e6c4a01fceaa4c4675d4da1.js | 245 + web/dist/cb133a447f7bbaa64d268360db08ac7a.js | 439 + .../cb133a447f7bbaa64d268360db08ac7a.js.gz | Bin 0 -> 3799 bytes web/dist/cbc9092524363d014f77a62f36ff1540.js | 174 + web/dist/cbdf771a8121b4ee46803ff5a9cc2162.js | 369 + .../cbdf771a8121b4ee46803ff5a9cc2162.js.gz | Bin 0 -> 3078 bytes web/dist/cc14b072276b7c5f264efe205d06956f.js | 388 + .../cc14b072276b7c5f264efe205d06956f.js.gz | Bin 0 -> 3543 bytes web/dist/cc8577464e70c97c43ca0992593d5e93.js | 18 + web/dist/cde6284f9404fcf0323362f4c28285bd.js | 342 + .../cde6284f9404fcf0323362f4c28285bd.js.gz | Bin 0 -> 3243 bytes web/dist/cf0a04afa21ac9ba23a1de0416a03105.js | 9 + web/dist/cf90a0e6a2989274c84edd1dc44db5e1.js | 318 + .../cf90a0e6a2989274c84edd1dc44db5e1.js.gz | Bin 0 -> 2461 bytes web/dist/cfbb8ac8b034c4ecdb1d74d5a0aa997e.js | 210 + web/dist/d19b415a0279064ddfa890d0a7b3f78c.js | 388 + .../d19b415a0279064ddfa890d0a7b3f78c.js.gz | Bin 0 -> 3597 bytes web/dist/d1d9fa9ed3cbeee7c37f01294459d630.js | 18 + web/dist/d2bee538ff0c2eb104ee3a32dc6545de.js | 16 + web/dist/d37f0f78c06e883be0e04a3be861fb68.js | 277 + .../d37f0f78c06e883be0e04a3be861fb68.js.gz | Bin 0 -> 2612 bytes web/dist/d4185e860c404e802d671def5eda2ead.js | 469 + .../d4185e860c404e802d671def5eda2ead.js.gz | Bin 0 -> 3855 bytes web/dist/d424588d01445a9c14ec1f5681eca0e6.js | 69 + web/dist/d465c0a35c6ef244bf587b0e6bdb4019.js | 9 + web/dist/d484810cd62a56a5dda7e67cbcb005d2.js | 18 + web/dist/d58a44852ccf290e290f798d594ceaf1.js | 116 + web/dist/d66813bade53d7a1eeb0fb22223c9120.js | 9 + web/dist/d750a8dbf9dd09c0a33b9986e79e3c8c.js | 9 + web/dist/d754905fe54aac6f3c350df34f51a0b6.js | 9 + web/dist/d7889907dbb51f58ceadb3e1eec03a5d.js | 9 + web/dist/d8d4867d7fff5b67bbbdd47e637b3a6c.js | 17 + web/dist/da0827f4d8af0fc29eb75e28166177d3.js | 16 + web/dist/dabc32896dd99d88e7b0f27f99d9f3d1.js | 199 + web/dist/db6c0056cef31f6654438a92a8aca336.js | 16 + web/dist/dbfe76a5b35e105c53ee5e24e7aecea9.js | 16 + web/dist/dd0c5a4ed6f5fb11d7cf1f1eff6d60e0.js | 243 + web/dist/dd40dfc7840568927fdef65087a233ed.js | 9 + web/dist/dde83af0489170bfa8323236b2eb8206.js | 2377 + .../dde83af0489170bfa8323236b2eb8206.js.gz | Bin 0 -> 22711 bytes web/dist/de03b970a689d024ab3383991180d48d.js | 268 + .../de03b970a689d024ab3383991180d48d.js.gz | Bin 0 -> 2703 bytes web/dist/de8d05f488f2f27726916d6293e4a59c.js | 268 + .../de8d05f488f2f27726916d6293e4a59c.js.gz | Bin 0 -> 3829 bytes web/dist/de8dee841ffdaaede3a2254deef30376.js | 15395 +++++ .../de8dee841ffdaaede3a2254deef30376.js.gz | Bin 0 -> 205736 bytes web/dist/df14d63677343134a88e906bf460b997.js | 330 + .../df14d63677343134a88e906bf460b997.js.gz | Bin 0 -> 3462 bytes web/dist/dfcf55f148a1c3a275c32ba307579b9b.js | 262 + .../dfcf55f148a1c3a275c32ba307579b9b.js.gz | Bin 0 -> 5211 bytes web/dist/e03035341d2106650617dd1fcc8f9449.js | 16 + web/dist/e0e2b1267a5d4acb4dda3a4a598cd8a5.js | 9 + web/dist/e174a2c6143efab40c57c4660d6bf9bb.js | 435 + .../e174a2c6143efab40c57c4660d6bf9bb.js.gz | Bin 0 -> 5776 bytes web/dist/e2792218bae78a6aef6764de4e61fd82.js | 9 + web/dist/e28135172e9bc8cda916c86776d44203.js | 9 + web/dist/e306579092c3b7297592a3d1ad67cd20.js | 18 + web/dist/e4d51c8b4202d444cb39db4e7642d7d9.js | 9 + web/dist/e543a99512ef5d4029e726a65b8b3cd1.js | 18 + web/dist/e57143ce0fcc3e3a435d5ef13d0353a1.js | 120 + web/dist/e6a1d1f679385aaa06472b3ba6a31104.js | 16 + web/dist/e6a3aa085b6b9711e9726d59a50c461b.js | 2357 + .../e6a3aa085b6b9711e9726d59a50c461b.js.gz | Bin 0 -> 22744 bytes web/dist/e745f8fb4f054a3f5b66ccad100a1217.js | 9 + web/dist/e78eab250e7f8ccac3d918dfdb06ca10.js | 8904 +++ .../e78eab250e7f8ccac3d918dfdb06ca10.js.gz | Bin 0 -> 53831 bytes web/dist/e86b459e406840ac8eaf63fcfcf817e5.js | 264 + web/dist/e908b5e66faee5b948e984da2c1aaf9a.js | 2293 + .../e908b5e66faee5b948e984da2c1aaf9a.js.gz | Bin 0 -> 21872 bytes web/dist/e956ee932ed766d1e40c10a39bf62e58.js | 135 + web/dist/e970a8b8e51d2b1fe9d44e1b2c741ff1.js | 16 + web/dist/ed72112dc346ee7976809d4693f0dcba.js | 16 + web/dist/ef8f636d121f5d3e5047e1399c78ee2b.js | 2271 + .../ef8f636d121f5d3e5047e1399c78ee2b.js.gz | Bin 0 -> 21814 bytes web/dist/efc508c36f4e417ec6bd5ec72989443b.js | 9 + web/dist/f2195d2eae3dbef7e3798e115209dcd7.js | 9 + web/dist/f233af729cc30f9b3af99d3e9a0a2409.js | 256 + web/dist/f2abd10469c6740e9c96cfa9229ec3fe.js | 19 + web/dist/f2cbfaebd00ef55ea3d48ff5acaeb844.js | 202 + web/dist/f2cfc0e604350e23bfcd7c78165b1411.js | 9 + web/dist/f3a0f6e7e442de2ae51eddbf4eb98d97.js | 9 + web/dist/f4acea05f1f36de4fb003f20f7799de6.js | 351 + .../f4acea05f1f36de4fb003f20f7799de6.js.gz | Bin 0 -> 2841 bytes web/dist/f50d7c4ce743ce495230d19bd33fefab.js | 9 + web/dist/f5292be525fc36a337ce7bfb792070de.js | 9 + web/dist/f58ee8ca364e28090c10b602eef235b1.js | 16 + web/dist/f61f1aaed3f32a7dabd977a6f47ecd5f.js | 9 + web/dist/f6493d95eaf3c21810134f4fc28531c7.js | 1026 + .../f6493d95eaf3c21810134f4fc28531c7.js.gz | Bin 0 -> 8764 bytes web/dist/f6cc5f20d4885d2d7d5a244f6f22e650.js | 557 + .../f6cc5f20d4885d2d7d5a244f6f22e650.js.gz | Bin 0 -> 5353 bytes web/dist/f6d0fea0854403a43f86a04e3db40850.js | 16 + web/dist/f7443e8232a7e4289b9f2ed4a512750c.js | 9 + web/dist/f80c6eb0f52a68464b21211240e3d6e6.js | 9 + web/dist/f86deff6386f7243a4aa39e90b30ba36.js | 3510 + .../f86deff6386f7243a4aa39e90b30ba36.js.gz | Bin 0 -> 20642 bytes web/dist/f88127ad8950e3c94c3af6c65a7120fa.js | 9 + web/dist/f8d59c056683c7001a96d4fac22cc664.js | 457 + .../f8d59c056683c7001a96d4fac22cc664.js.gz | Bin 0 -> 3168 bytes web/dist/fa1618cda4da7d5362c381ea2d5f7321.js | 9 + web/dist/faf460076b3383fdc3ecc224068964cf.js | 9 + web/dist/fc044cf204bd7f511182d4c654363401.js | 317 + .../fc044cf204bd7f511182d4c654363401.js.gz | Bin 0 -> 3156 bytes web/dist/fc2291e5687166730bc9040250deb4dc.js | 192 + web/dist/fc6ba43496896432983dff35a140ed34.js | 324 + .../fc6ba43496896432983dff35a140ed34.js.gz | Bin 0 -> 4385 bytes web/dist/fd7d0e7d961590c139ed4e02aa7ca536.js | 214 + .../fd7d0e7d961590c139ed4e02aa7ca536.js.gz | Bin 0 -> 11139 bytes web/dist/ffa203dcaae3e64846fe72a12c66f52a.js | 16 + web/dist/fffbc895129cdb3efeafa5b234743aa0.js | 9 + web/dist/index.html | 42 + web/dist/static/css/base.css | 15 + web/dist/static/css/reset.css | 39 + web/dist/static/font/webfont.eot | 0 web/dist/static/font/webfont.svg | 157 + web/dist/static/font/webfont.ttf | 0 web/dist/static/font/webfont.woff | 0 web/dist/static/font/webfont.woff2 | 0 .../static/fonts/element-icons.535877f.woff | Bin 0 -> 28200 bytes .../static/fonts/element-icons.732389d.ttf | Bin 0 -> 55956 bytes web/dist/static/fonts/fontello.068ca2b.ttf | Bin 0 -> 15400 bytes web/dist/static/fonts/fontello.e73a064.eot | Bin 0 -> 15568 bytes web/dist/static/fonts/iconfont.8ddfca3.eot | Bin 0 -> 15952 bytes web/dist/static/fonts/iconfont.ee39531.ttf | Bin 0 -> 15784 bytes web/dist/static/image/banner.jpg | Bin 0 -> 38700 bytes web/dist/static/image/block.png | Bin 0 -> 6900 bytes web/dist/static/image/logo-2 copy@1.5x.jpg | Bin 0 -> 8486 bytes web/dist/static/image/logo-title.png | Bin 0 -> 1139 bytes web/dist/static/image/logo.jpg | Bin 0 -> 12809 bytes web/dist/static/image/logo@2x.png | Bin 0 -> 8380 bytes web/dist/static/image/nodes.png | Bin 0 -> 9254 bytes web/dist/static/image/transation.png | Bin 0 -> 10925 bytes web/dist/static/image/transationPedding.png | Bin 0 -> 11920 bytes web/dist/static/image/webase_35x35.png | Bin 0 -> 3641 bytes web/dist/static/img/fontello.9354499.svg | 72 + web/dist/static/img/iconfont.7fa1e8d.svg | 251 + web/dist/static/img/transation.1a3785f.png | Bin 0 -> 10925 bytes .../static/img/transationPedding.d68f750.png | Bin 0 -> 11920 bytes web/dist/static/js/0.f3d0801f519d6afb5ad4.js | 53 + .../static/js/0.f3d0801f519d6afb5ad4.js.gz | Bin 0 -> 171083 bytes web/dist/static/js/1.2599b1cb0d1eada20807.js | 70 + .../static/js/1.2599b1cb0d1eada20807.js.gz | Bin 0 -> 502636 bytes web/dist/static/js/10.3056aa7ffdc187149691.js | 1 + web/dist/static/js/11.a973c93b5c09af47d3a5.js | 1 + web/dist/static/js/12.863af599cfde4a0d69c6.js | 1 + .../static/js/12.863af599cfde4a0d69c6.js.gz | Bin 0 -> 16541 bytes web/dist/static/js/13.3914ed72724fbdc745b7.js | 9 + .../static/js/13.3914ed72724fbdc745b7.js.gz | Bin 0 -> 3960 bytes web/dist/static/js/14.6c8b3d32c55aa62e8985.js | 1 + web/dist/static/js/15.5f96aebd3746ced06d3f.js | 1 + web/dist/static/js/16.598bb2bdb7190a86d2ac.js | 1 + web/dist/static/js/17.36aa344c38bd42db8929.js | 1 + web/dist/static/js/18.7de78fd7a6584de4471d.js | 1 + web/dist/static/js/19.c9b640e661441470e5c5.js | 1 + web/dist/static/js/2.825277a2f958cfdebc4d.js | 1 + web/dist/static/js/3.10ba1ba25125fd5b75d8.js | 1 + .../static/js/3.10ba1ba25125fd5b75d8.js.gz | Bin 0 -> 83328 bytes web/dist/static/js/5.bef4785f3d00f0ea6353.js | 37 + .../static/js/5.bef4785f3d00f0ea6353.js.gz | Bin 0 -> 391366 bytes web/dist/static/js/6.194685a25ae6f42028b3.js | 1 + .../static/js/6.194685a25ae6f42028b3.js.gz | Bin 0 -> 59014 bytes web/dist/static/js/7.a5f6c68aa6e9665eba38.js | 18 + .../static/js/7.a5f6c68aa6e9665eba38.js.gz | Bin 0 -> 18333 bytes web/dist/static/js/8.16c720cace4a0448dcd7.js | 1 + web/dist/static/js/9.a665afae74500a13089a.js | 1 + web/dist/static/js/base-loading.js | 15 + web/dist/static/js/browserfs.min.js | 8 + web/dist/static/js/browserfs.min.js.gz | Bin 0 -> 64012 bytes .../static/js/runtime.661c19596a69c29ffe80.js | 1 + web/dist/static/js/web3.min.js | 49 + web/dist/static/js/web3.min.js.gz | Bin 0 -> 340922 bytes 670 files changed, 293913 insertions(+) create mode 100644 web/dist/0146c2f1e1f5b20320aab16922c176e9.js create mode 100644 web/dist/0146c2f1e1f5b20320aab16922c176e9.js.gz create mode 100644 web/dist/023f0a6de254bc2caa975f56d4b61243.js create mode 100644 web/dist/023f0a6de254bc2caa975f56d4b61243.js.gz create mode 100644 web/dist/027e36a1f41877209eca741a54467a40.js create mode 100644 web/dist/027e36a1f41877209eca741a54467a40.js.gz create mode 100644 web/dist/031eff2932c3edf3ad690d1e3abe2dde.js create mode 100644 web/dist/032307ff50be9245a1b1a55a5412cbba.js create mode 100644 web/dist/036680d9c1d332cf478c5823cd2a47db.js create mode 100644 web/dist/039af9192b9bb277966ceb4e4ce29c41.js create mode 100644 web/dist/03c0f1c2c4d4c2b6fa956a3e05de8ce4.js create mode 100644 web/dist/0410ca02b96655ac3c08452105cdad32.js create mode 100644 web/dist/05fa8ff839d67e3839195d1dc96d8d49.js create mode 100644 web/dist/05fa8ff839d67e3839195d1dc96d8d49.js.gz create mode 100644 web/dist/0645227e6c2479f7aefed1fdd23ac733.js create mode 100644 web/dist/0645227e6c2479f7aefed1fdd23ac733.js.gz create mode 100644 web/dist/068ea80336df97af69fea2778de69f2f.js create mode 100644 web/dist/068ea80336df97af69fea2778de69f2f.js.gz create mode 100644 web/dist/06c89bf980f201e95c550f51a020321b.js create mode 100644 web/dist/06e44643d965002fada0383a45b3e572.js create mode 100644 web/dist/06e44643d965002fada0383a45b3e572.js.gz create mode 100644 web/dist/07cd7a34f1a3637d07c8e69746490d8f.js create mode 100644 web/dist/07cd7a34f1a3637d07c8e69746490d8f.js.gz create mode 100644 web/dist/082d72cee51411d39d52d3f0e06eca3b.js create mode 100644 web/dist/082d72cee51411d39d52d3f0e06eca3b.js.gz create mode 100644 web/dist/08ead5ce2617fb6ce642b5ba343bd62c.js create mode 100644 web/dist/08f2ebda31cf24e86831115fde674fad.js create mode 100644 web/dist/097c060d70c9752bce90a4a814f1f161.js create mode 100644 web/dist/097c060d70c9752bce90a4a814f1f161.js.gz create mode 100644 web/dist/0bb7acf5bee94a874690e9d25e8d58df.js create mode 100644 web/dist/0bf7ff3fb3f462333b89e5edd3c8409d.js create mode 100644 web/dist/0bf7ff3fb3f462333b89e5edd3c8409d.js.gz create mode 100644 web/dist/0c2b3b3b66a73e289e2ca47cf22ef150.js create mode 100644 web/dist/0d4d51ed7d30b5084008c57652d53a54.js create mode 100644 web/dist/0d4d51ed7d30b5084008c57652d53a54.js.gz create mode 100644 web/dist/0db77d70de73132c7e5979bf8e82f047.js create mode 100644 web/dist/0db77d70de73132c7e5979bf8e82f047.js.gz create mode 100644 web/dist/0dd0f45c3dde9af3fcf9706e6a2a1edd.js create mode 100644 web/dist/0e13b643b6e88e8fd6328d50acabfda8.js create mode 100644 web/dist/0e6175d2306c7bd33ad73acb96313103.js create mode 100644 web/dist/0e6175d2306c7bd33ad73acb96313103.js.gz create mode 100644 web/dist/0e8e94ce9364aa82e7010f42ace03053.js create mode 100644 web/dist/0e8e94ce9364aa82e7010f42ace03053.js.gz create mode 100644 web/dist/10bf27f2508137ec2a1cb087f80ae54d.js create mode 100644 web/dist/10bf27f2508137ec2a1cb087f80ae54d.js.gz create mode 100644 web/dist/1178a325160e7e86e4f86460128fc135.js create mode 100644 web/dist/1178a325160e7e86e4f86460128fc135.js.gz create mode 100644 web/dist/119d8ff08e82b0f391f59f1fe657130f.js create mode 100644 web/dist/12738aa8461e4775d7f380a5d1953893.js create mode 100644 web/dist/12738aa8461e4775d7f380a5d1953893.js.gz create mode 100644 web/dist/13b157cfddcb9a76ae0800b47a8f0122.js create mode 100644 web/dist/142d258626093a8c3187029538e32bbc.js create mode 100644 web/dist/155500be4d3113e94dca99f997defb7a.js create mode 100644 web/dist/15bd2f4de9aefea698aea59ecd36327f.js create mode 100644 web/dist/16ae728a78f1cb04d40f77b322eb133d.js create mode 100644 web/dist/16ae728a78f1cb04d40f77b322eb133d.js.gz create mode 100644 web/dist/16dcdac9bfa8ec9dbe7eba3a6372189f.js create mode 100644 web/dist/16dcdac9bfa8ec9dbe7eba3a6372189f.js.gz create mode 100644 web/dist/173ea2d9126a53f1d6cb61ef26219598.js create mode 100644 web/dist/17c85759d562794da4d2ff11f1b9b3bd.js create mode 100644 web/dist/182fa653555b8340835b3bf4f7192ae2.js create mode 100644 web/dist/1840080076c4078d157a5b05d0d95551.js create mode 100644 web/dist/1881f705828a30b0030e143a2297eb06.js create mode 100644 web/dist/1881f705828a30b0030e143a2297eb06.js.gz create mode 100644 web/dist/18a893070398343ab529fdb7b62f1b6d.js create mode 100644 web/dist/18b69bf761ab7d8645f68794096dcb46.js create mode 100644 web/dist/18b9a42de70da52144b223be58bb65c3.js create mode 100644 web/dist/18b9a42de70da52144b223be58bb65c3.js.gz create mode 100644 web/dist/1afe87852eca4b28294075c659ff8c45.js create mode 100644 web/dist/1bd8ec07cab7c3b9e5e00671ed6ddcd5.js create mode 100644 web/dist/1bd8ec07cab7c3b9e5e00671ed6ddcd5.js.gz create mode 100644 web/dist/1c396939d503de7cc34ff9e809ed92ee.js create mode 100644 web/dist/1c396939d503de7cc34ff9e809ed92ee.js.gz create mode 100644 web/dist/1c71dfe2ae40884baae78d14e2568eb1.js create mode 100644 web/dist/1c9874850164cfdaa7e1d212d09124a7.js create mode 100644 web/dist/1cac3566cdfb6be0f51c3f2ade7c1603.js create mode 100644 web/dist/1cb8df3a3416707163473b1ee9268faf.js create mode 100644 web/dist/1d26a3c6d2c540c8c3af2f8ef298eb05.js create mode 100644 web/dist/1d26a3c6d2c540c8c3af2f8ef298eb05.js.gz create mode 100644 web/dist/1df4e81a7c93bce583f46bcf525cab8a.js create mode 100644 web/dist/1ea9cb4eff3a4f4c27ff63263151eba2.js create mode 100644 web/dist/1ebb1ecbb9887608ca7cddd19a57a8d2.js create mode 100644 web/dist/1f1abd5e247cf6b2e9a3db6303277572.js create mode 100644 web/dist/1f33899bba9efc8a9dc527f39ce8fe9a.js create mode 100644 web/dist/1f33899bba9efc8a9dc527f39ce8fe9a.js.gz create mode 100644 web/dist/1facfcf9af0b5a679a66dc7f26080afe.js create mode 100644 web/dist/1fd353d022bf5027ba193d0b0b9995ed.js create mode 100644 web/dist/2031467f3d02be43b638c5e3ccba3996.js create mode 100644 web/dist/20b085f014791c3916e38d818e76ef3c.js create mode 100644 web/dist/20b085f014791c3916e38d818e76ef3c.js.gz create mode 100644 web/dist/20f8061729d26f9786679bbf7af0b87a.js create mode 100644 web/dist/214a729dcea91ee8a56f8ef43e17243a.js create mode 100644 web/dist/21dca974f7343f200597e43a55766c6e.js create mode 100644 web/dist/21e4ad721af8c3d989a2541cdddd4299.js create mode 100644 web/dist/21e4ad721af8c3d989a2541cdddd4299.js.gz create mode 100644 web/dist/2218ddba12711e7e7f6aea96015bafa2.js create mode 100644 web/dist/2218ddba12711e7e7f6aea96015bafa2.js.gz create mode 100644 web/dist/22ddca0f2cac653ae8eebd716e965aa7.js create mode 100644 web/dist/2322c0d73cf4169df003976804566079.js create mode 100644 web/dist/2322c0d73cf4169df003976804566079.js.gz create mode 100644 web/dist/23ad6224fd6059c31c199b6d6d420628.js create mode 100644 web/dist/23ad6224fd6059c31c199b6d6d420628.js.gz create mode 100644 web/dist/242fb5a92733d151e9ca303fcd3ae7ff.js create mode 100644 web/dist/255c622fc1034b901b1b59510c5fee4a.js create mode 100644 web/dist/255c622fc1034b901b1b59510c5fee4a.js.gz create mode 100644 web/dist/2681042a598b029b51d51f7669b81c4d.js create mode 100644 web/dist/26916d87ee46ad72f432b9a59e6fd198.js create mode 100644 web/dist/26eb865724d56b0fb703d0ba31431598.js create mode 100644 web/dist/26eb865724d56b0fb703d0ba31431598.js.gz create mode 100644 web/dist/26fa04eabe6ca96832d5652350a2fb46.js create mode 100644 web/dist/273b01495ae7b9dabfd2a8297066ece9.js create mode 100644 web/dist/273b01495ae7b9dabfd2a8297066ece9.js.gz create mode 100644 web/dist/2820d22820b6e6c07cdd0ec14477c7b9.js create mode 100644 web/dist/2820d22820b6e6c07cdd0ec14477c7b9.js.gz create mode 100644 web/dist/2836e58974a8e2730a9b6bec1921dd3d.js create mode 100644 web/dist/28f7c5b28bbad7b0bac0cc3cc5b89bad.js create mode 100644 web/dist/293f0f487b15a72a6f8d8620c9630de6.js create mode 100644 web/dist/2a4c96bd91c25806d68325751fb0c958.js create mode 100644 web/dist/2a4c96bd91c25806d68325751fb0c958.js.gz create mode 100644 web/dist/2ac58492ad5a1b5244deb0fef1e5a773.js create mode 100644 web/dist/2b1eed411f531a271f0e47693c82216a.js create mode 100644 web/dist/2bba99eb717e1aa22e45284a964ca73f.js create mode 100644 web/dist/2c41df6060672e75b4ab09e4a5d43049.js create mode 100644 web/dist/2d53cfacb6a695f378ca997fcee7efb3.js create mode 100644 web/dist/2d84c80112a372bc149cad3464e90fa3.js create mode 100644 web/dist/2d84c80112a372bc149cad3464e90fa3.js.gz create mode 100644 web/dist/2dcf359bda4d96fcd06e8b0b7bc039bf.js create mode 100644 web/dist/2dcf359bda4d96fcd06e8b0b7bc039bf.js.gz create mode 100644 web/dist/2e4c8b961fd80b700a23d21f3d9bb4c5.js create mode 100644 web/dist/2e4c8b961fd80b700a23d21f3d9bb4c5.js.gz create mode 100644 web/dist/2f689ca91158f918e23ce27c7abbcf25.js create mode 100644 web/dist/2f6dcc38e5ad378438bea99c47e20e28.js create mode 100644 web/dist/2f985fd2d1b0603c0cd825f7e9b4218d.js create mode 100644 web/dist/3003458e04ee41b70b5072fab36589ba.js create mode 100644 web/dist/3003458e04ee41b70b5072fab36589ba.js.gz create mode 100644 web/dist/30161c62d9dd1e5ac1ae07b10315d2e0.js create mode 100644 web/dist/30161c62d9dd1e5ac1ae07b10315d2e0.js.gz create mode 100644 web/dist/30335c579bfc2de8dcf574523ef13020.js create mode 100644 web/dist/30335c579bfc2de8dcf574523ef13020.js.gz create mode 100644 web/dist/3078a3b7f66272ada3e5d065827dfceb.js create mode 100644 web/dist/3078a3b7f66272ada3e5d065827dfceb.js.gz create mode 100644 web/dist/31459a657ac30dcaa54765c6d76d8c81.js create mode 100644 web/dist/318f90759f2ff0d2a437350e87578172.js create mode 100644 web/dist/31bcb02e59d84ce2e38b85616a0b44db.js create mode 100644 web/dist/31f3f1c32b27587832d28b634351325c.js create mode 100644 web/dist/321d98b6707ed20d34818a7533713433.js create mode 100644 web/dist/321d98b6707ed20d34818a7533713433.js.gz create mode 100644 web/dist/330543be2120b9dcc9bec41ba5e05805.js create mode 100644 web/dist/33443ec129774bb1add5795cc8895137.js create mode 100644 web/dist/34eb9d98392182a042fa67206fd33187.js create mode 100644 web/dist/34eb9d98392182a042fa67206fd33187.js.gz create mode 100644 web/dist/34f05dc84111ffe37a1d5b5aacff7488.js create mode 100644 web/dist/34f52a56877a14fbb7e9d37469ebbf15.js create mode 100644 web/dist/34f52a56877a14fbb7e9d37469ebbf15.js.gz create mode 100644 web/dist/35858a47038a7be957df49854e8e5eea.js create mode 100644 web/dist/35b23ae9af47c42f9442c3071d489fb0.js create mode 100644 web/dist/35dc4119f9e28cb9baba1475537460bb.js create mode 100644 web/dist/36dad0e7ec2ab819d1240f9b39d95107.js create mode 100644 web/dist/36dad0e7ec2ab819d1240f9b39d95107.js.gz create mode 100644 web/dist/3792c6a2af140883f2b4a70d783d442f.js create mode 100644 web/dist/3799d08c351633c98f6ae5ff08397674.js create mode 100644 web/dist/3799d08c351633c98f6ae5ff08397674.js.gz create mode 100644 web/dist/38528de2a5c097da375fd0a076667441.js create mode 100644 web/dist/3a820eb0c0fb52f9b75e34214b5f8c9c.js create mode 100644 web/dist/3baeab62d681338ba3287f0a50e5dad1.js create mode 100644 web/dist/3c58f68d787710c79906a2cd6d248295.js create mode 100644 web/dist/3cab7110c6a090f72c540dcc1cfbe3b5.js create mode 100644 web/dist/3cbddc141c4d2eb71e54fe3037547812.js create mode 100644 web/dist/3cbddc141c4d2eb71e54fe3037547812.js.gz create mode 100644 web/dist/3cce0c7e1a8e1148f97de59a4b1ee73f.js create mode 100644 web/dist/3cf64ec91a700bfa1dece0957c49c7dc.js create mode 100644 web/dist/3cfffbb4555d5856b82186750e7b2b65.js create mode 100644 web/dist/3cfffbb4555d5856b82186750e7b2b65.js.gz create mode 100644 web/dist/3dfe9a3e745ca1e3755291ac5c5a4a24.js create mode 100644 web/dist/3e6808cd6eefd1be1040403985581374.js create mode 100644 web/dist/3e6a7169aea2691d9a23761b355fddc1.js create mode 100644 web/dist/3e6a7169aea2691d9a23761b355fddc1.js.gz create mode 100644 web/dist/3e7978dc82cd7d504e8d51865dc5dcf1.js create mode 100644 web/dist/40505d6c2f34fc08502d3e596573c7f8.js create mode 100644 web/dist/406a0570f5a7af790698bae4f4ce963e.js create mode 100644 web/dist/406a0570f5a7af790698bae4f4ce963e.js.gz create mode 100644 web/dist/41251dac588b04bea51a664d331ff40a.js create mode 100644 web/dist/41251dac588b04bea51a664d331ff40a.js.gz create mode 100644 web/dist/41b3ba662e75b26d9044a865172f0d16.js create mode 100644 web/dist/41b3ba662e75b26d9044a865172f0d16.js.gz create mode 100644 web/dist/41f85ea0c545f0539b6ae2753eb1f79c.js create mode 100644 web/dist/4299a6fce62e5b921f08685227feadd6.js create mode 100644 web/dist/43a9bcfc200d80676bc68fe9a3c8ab6d.js create mode 100644 web/dist/43e0f7960243cbe628b69f7b857a4f08.js create mode 100644 web/dist/4526fef5c092d1663a859dd237d38238.js create mode 100644 web/dist/45de113a9f4cd75a8a71a2e6f4f91c95.js create mode 100644 web/dist/48325ae89eaef130841d0d921ab065fc.js create mode 100644 web/dist/48ddeeb78dfb01d119269fb9ad4d5d73.js create mode 100644 web/dist/49152f07a653743e724f599386af2d7c.js create mode 100644 web/dist/4939c180f8a44b5986493cfbb9b9d787.js create mode 100644 web/dist/4939c180f8a44b5986493cfbb9b9d787.js.gz create mode 100644 web/dist/49429bb63ec76564dabe9c3abd7e5df7.js create mode 100644 web/dist/49429bb63ec76564dabe9c3abd7e5df7.js.gz create mode 100644 web/dist/49a6772f0e4c0ad12d9475bef3ec1dd4.js create mode 100644 web/dist/49a6772f0e4c0ad12d9475bef3ec1dd4.js.gz create mode 100644 web/dist/4b99ec9b42e080ec2d769ea4971ea76c.js create mode 100644 web/dist/4be9603e95e8ca53663cb73594f371b1.js create mode 100644 web/dist/4be9603e95e8ca53663cb73594f371b1.js.gz create mode 100644 web/dist/4c2af0e7baef22a45b0f5bb4315196e5.js create mode 100644 web/dist/4cbd6f8a4f52821c1d3476139078797d.js create mode 100644 web/dist/4d694d41a0c1b3eaad752a8352c5661c.js create mode 100644 web/dist/4d753779fcb3505da953d0d75759e255.js create mode 100644 web/dist/4d753779fcb3505da953d0d75759e255.js.gz create mode 100644 web/dist/4e347d330ecc5e8dcff367c024911892.js create mode 100644 web/dist/503f9ce3546623bbbbb78ee6363d7a79.js create mode 100644 web/dist/504a0846d6283cc54c7ea6fe9984f737.js create mode 100644 web/dist/504a0846d6283cc54c7ea6fe9984f737.js.gz create mode 100644 web/dist/5090b6043f0ffe911c7619d15b64b85e.js create mode 100644 web/dist/5094b30d2471cc7312746173d8a4bb25.js create mode 100644 web/dist/51e6ccd3ea9d7443949b155b113eebd5.js create mode 100644 web/dist/5306139b5cbaa48713136cf1a15af359.js create mode 100644 web/dist/5306139b5cbaa48713136cf1a15af359.js.gz create mode 100644 web/dist/5343fc74a2893a130daa6ff1bff15621.js create mode 100644 web/dist/5343fc74a2893a130daa6ff1bff15621.js.gz create mode 100644 web/dist/5403f6664a5ad5a2d47791b54a8ca3b7.js create mode 100644 web/dist/5403f6664a5ad5a2d47791b54a8ca3b7.js.gz create mode 100644 web/dist/540bba54b49ea7a6ec513270449132db.js create mode 100644 web/dist/544cdec50f7d5ee773f1023634bc8c59.js create mode 100644 web/dist/544cdec50f7d5ee773f1023634bc8c59.js.gz create mode 100644 web/dist/54cc6e5f597d4883de3f7f223c8c1b1c.js create mode 100644 web/dist/54cc6e5f597d4883de3f7f223c8c1b1c.js.gz create mode 100644 web/dist/553aa6bb3b625428f4df57f5885d50f3.js create mode 100644 web/dist/564f112fdc65153caebf74208a70dcf0.js create mode 100644 web/dist/564f112fdc65153caebf74208a70dcf0.js.gz create mode 100644 web/dist/57227411250776fb517249d0a997a96f.js create mode 100644 web/dist/5732fea8bd237446656490657f7b147d.js create mode 100644 web/dist/5732fea8bd237446656490657f7b147d.js.gz create mode 100644 web/dist/57c2d2eb6a844a8c9ecd932c6d4067b0.js create mode 100644 web/dist/5977b934a4c6b480790864ea01303173.js create mode 100644 web/dist/5977b934a4c6b480790864ea01303173.js.gz create mode 100644 web/dist/5a2b4fb5ab9db07fc3a8acae381d32d8.js create mode 100644 web/dist/5a2b4fb5ab9db07fc3a8acae381d32d8.js.gz create mode 100644 web/dist/5adf5687c0c3588532b6d8157a3b2a3f.js create mode 100644 web/dist/5bd58f2ebad7e63ff72a891fb43e2b38.js create mode 100644 web/dist/5d1543d89f404122d87ebbfb99b51a7a.js create mode 100644 web/dist/5ead99d987b31962ae1b64c2f01804d6.js create mode 100644 web/dist/5ead99d987b31962ae1b64c2f01804d6.js.gz create mode 100644 web/dist/5eeee1acc01b04328cf42db0715bb7f5.js create mode 100644 web/dist/5f6f5026d13b2a9b884a8144a119cf9e.js create mode 100644 web/dist/5f708f5469b05de5bae06c0e8eaa2ce7.js create mode 100644 web/dist/5f708f5469b05de5bae06c0e8eaa2ce7.js.gz create mode 100644 web/dist/60a2f211635d902bf0c2f4d246d02a0c.js create mode 100644 web/dist/60a2f211635d902bf0c2f4d246d02a0c.js.gz create mode 100644 web/dist/60d06d7e01bd491fa7376e70f9859545.js create mode 100644 web/dist/60fc15a66fa7ba74ccd248f85b50fbe5.js create mode 100644 web/dist/61327573c88153bf19008ac24e481eb1.js create mode 100644 web/dist/61327573c88153bf19008ac24e481eb1.js.gz create mode 100644 web/dist/626617463b05d66ef839305eb1ace8e3.js create mode 100644 web/dist/62f1660714df9d262535c413ec4535ef.js create mode 100644 web/dist/63161028c783bc45531ecf9fd37b12df.js create mode 100644 web/dist/631aaf24371bbc547ab21e8b11ebf657.js create mode 100644 web/dist/631aaf24371bbc547ab21e8b11ebf657.js.gz create mode 100644 web/dist/6373ffeee52d7649fd4d155b198644b2.js create mode 100644 web/dist/6373ffeee52d7649fd4d155b198644b2.js.gz create mode 100644 web/dist/63b236091dce5c38c8150dcf792457ba.js create mode 100644 web/dist/63c855de87f24724bb7f5366c1af96c2.js create mode 100644 web/dist/63c855de87f24724bb7f5366c1af96c2.js.gz create mode 100644 web/dist/64537e0da9421afadc14d7c91e2f6ae1.js create mode 100644 web/dist/64e5c32afb91e13122237cf17da6baa7.js create mode 100644 web/dist/64e5c32afb91e13122237cf17da6baa7.js.gz create mode 100644 web/dist/64f93b6b093bba4147485023263cf65f.js create mode 100644 web/dist/654c071ae2c15c994f62e6573e7b9b2d.js create mode 100644 web/dist/658c329fb1a91779a74d65c3b7e2e4b1.js create mode 100644 web/dist/658c329fb1a91779a74d65c3b7e2e4b1.js.gz create mode 100644 web/dist/65e9e719bfb286e3d617eccd6604bb5f.js create mode 100644 web/dist/6644246324f760500a6a905d4957a559.js create mode 100644 web/dist/6644246324f760500a6a905d4957a559.js.gz create mode 100644 web/dist/67b64f570007d1b19182be592678cf70.js create mode 100644 web/dist/67b64f570007d1b19182be592678cf70.js.gz create mode 100644 web/dist/6813d64f169561dbff03e9a9c462ba83.js create mode 100644 web/dist/68cf9a0e1eaff7cc991e970a855108f8.js create mode 100644 web/dist/697866aa5cecab4713bee76b603bae58.js create mode 100644 web/dist/697c2df91bf7c729d317c620a3cd77bd.js create mode 100644 web/dist/6ac188cc35ae0d38d3647a2eef17b2fc.js create mode 100644 web/dist/6ac188cc35ae0d38d3647a2eef17b2fc.js.gz create mode 100644 web/dist/6cefda3bcdee592d400b012c61c93ef6.js create mode 100644 web/dist/6d3d6fa2ad6dc7f95a42c9aab746269a.js create mode 100644 web/dist/6d3d6fa2ad6dc7f95a42c9aab746269a.js.gz create mode 100644 web/dist/6e88d3943f4c3a068493aad131cd4898.js create mode 100644 web/dist/6e9ca56e0fa3e784eab3da45f8d0d8ac.js create mode 100644 web/dist/6f0543453c605ea6d673a3bd31dd1090.js create mode 100644 web/dist/6fef06c49fbb86934ac46d1631974d03.js create mode 100644 web/dist/6fef06c49fbb86934ac46d1631974d03.js.gz create mode 100644 web/dist/6ff5826d3c93e2bd37bc511affebc78b.js create mode 100644 web/dist/70b5b576c3a31d2ab78f6be5fc147539.js create mode 100644 web/dist/70b5b576c3a31d2ab78f6be5fc147539.js.gz create mode 100644 web/dist/70cd3f74c024a8e7d573bb425cbcba49.js create mode 100644 web/dist/716afffe05a2fc1a2a8f5c34221fba3f.js create mode 100644 web/dist/716afffe05a2fc1a2a8f5c34221fba3f.js.gz create mode 100644 web/dist/71bbf2d4b6293b54d672c2812fa8323e.js create mode 100644 web/dist/727184c92f9da8d8b0c013fd79cf32fe.js create mode 100644 web/dist/729151a662f8055d864efe142b48ba27.js create mode 100644 web/dist/730a06424debf3bfdaf03370df2177bd.js create mode 100644 web/dist/731a5afa4ad31a0a038e5742b5e98dd7.js create mode 100644 web/dist/73869ae87d1a0bf48fdcf5f45e86b070.js create mode 100644 web/dist/73869ae87d1a0bf48fdcf5f45e86b070.js.gz create mode 100644 web/dist/73ca62c494dfdfee1f16213f88d5b3bc.js create mode 100644 web/dist/758c22ddcb0f7f798a0977e45b44e905.js create mode 100644 web/dist/769ae488953faab19b33deee8331b789.js create mode 100644 web/dist/769ae488953faab19b33deee8331b789.js.gz create mode 100644 web/dist/7745f3e776488705a38e62f85adad54d.js create mode 100644 web/dist/7745f3e776488705a38e62f85adad54d.js.gz create mode 100644 web/dist/777bbf0a7ab200cd0c25bb83731450a5.js create mode 100644 web/dist/777bbf0a7ab200cd0c25bb83731450a5.js.gz create mode 100644 web/dist/78704635c0d09fc222bfc22e6194c910.js create mode 100644 web/dist/78704635c0d09fc222bfc22e6194c910.js.gz create mode 100644 web/dist/7a7a92fc77193f8a3ecef04968c8de2c.js create mode 100644 web/dist/7a8927591addd938435ecd3394f5cddf.js create mode 100644 web/dist/7bdcb2c0abebee28dea0752a4a53ec8d.js create mode 100644 web/dist/7bdcb2c0abebee28dea0752a4a53ec8d.js.gz create mode 100644 web/dist/7c67b300762b43a96d8050adbc484103.js create mode 100644 web/dist/7cef38946c33fa981d6d2c86c62428e0.js create mode 100644 web/dist/7d25df3855c05c6d49484240a5f4cc72.js create mode 100644 web/dist/7d25df3855c05c6d49484240a5f4cc72.js.gz create mode 100644 web/dist/7d46cd8e5efaac33d5bf823ed4268841.js create mode 100644 web/dist/7e0ca61ea0cda0a8e6874d4ab5661277.js create mode 100644 web/dist/7e0ca61ea0cda0a8e6874d4ab5661277.js.gz create mode 100644 web/dist/7e858d2812c1c91e399264aa3ded0f00.js create mode 100644 web/dist/7e858d2812c1c91e399264aa3ded0f00.js.gz create mode 100644 web/dist/7e98c4d98664d6f7bcc52a07f21a1f9f.js create mode 100644 web/dist/7f10fe526aec57bd522af77ea6ac2b62.js create mode 100644 web/dist/81246b2b17fe13310d0eb40a0a0f50ed.js create mode 100644 web/dist/81246b2b17fe13310d0eb40a0a0f50ed.js.gz create mode 100644 web/dist/817d52a47a4657b8a4dab79e057f5fb0.js create mode 100644 web/dist/81800b3632a955b1ae6a6aa5c56b48a9.js create mode 100644 web/dist/81800b3632a955b1ae6a6aa5c56b48a9.js.gz create mode 100644 web/dist/81c815664e53f84459fe8c5d6d1023a6.js create mode 100644 web/dist/82d8d30793273702926136095cec929c.js create mode 100644 web/dist/82d8d30793273702926136095cec929c.js.gz create mode 100644 web/dist/833b242747fd7b098d46011e4289bc3f.js create mode 100644 web/dist/83ea78d42f1a8e5f7346f3a30140ebfb.js create mode 100644 web/dist/85a385e333ceb9e6bbae8779d47520f5.js create mode 100644 web/dist/867fb2b26eef123915aff8634c0bbf4a.js create mode 100644 web/dist/86d777efd4d05137e05019407412503a.js create mode 100644 web/dist/86d777efd4d05137e05019407412503a.js.gz create mode 100644 web/dist/873998da007bed181a6fb275057e12c4.js create mode 100644 web/dist/873998da007bed181a6fb275057e12c4.js.gz create mode 100644 web/dist/875b17c88ece41b8596bf7fc71e68866.js create mode 100644 web/dist/8833a126ef9d8892bfb372d227f7f088.js create mode 100644 web/dist/8870430db332faf22d90e12f1620ee84.js create mode 100644 web/dist/88f84860305454c46b6dd7ac02cd5f90.js create mode 100644 web/dist/89859a411a50c90f1e669deaf8a6775f.js create mode 100644 web/dist/89a47a0051ac0b3885ef8af2476526f0.js create mode 100644 web/dist/89ebd0e0e6e5662cea81597f2e4ba9b7.js create mode 100644 web/dist/89ebd0e0e6e5662cea81597f2e4ba9b7.js.gz create mode 100644 web/dist/8a08dea4bf1584f83498cad4d83baa84.js create mode 100644 web/dist/8a6e554a1187e2d6572d1f146f18fa4f.js create mode 100644 web/dist/8a8a1644af027b4abdb3d6083c9955d8.js create mode 100644 web/dist/8a8a1644af027b4abdb3d6083c9955d8.js.gz create mode 100644 web/dist/8ac889e60c5693eb83a35e6d30582578.js create mode 100644 web/dist/8b6c6eddf77150952b8fbf4e5efe2700.js create mode 100644 web/dist/8bfa5574d2b8e845c17a842286a0e2bd.js create mode 100644 web/dist/8bfa5574d2b8e845c17a842286a0e2bd.js.gz create mode 100644 web/dist/8e158f69acdb73029247c5a269a566df.js create mode 100644 web/dist/8e158f69acdb73029247c5a269a566df.js.gz create mode 100644 web/dist/8ed43cdfdd838056af84f9840f79af2d.js create mode 100644 web/dist/8f7cd49ef21ef2849cb21408fd2cef2e.js create mode 100644 web/dist/8f7cd49ef21ef2849cb21408fd2cef2e.js.gz create mode 100644 web/dist/90643b9da87302fef490f3f48af806e2.js create mode 100644 web/dist/909037dfc8091283e4134bc6e5448e2b.js create mode 100644 web/dist/9142b3f5bf59ae79b69c505c6964f395.js create mode 100644 web/dist/92917192eaffb1cf3cadaf985d3cc5d1.js create mode 100644 web/dist/92cf63e9a949f08d97a74d9ed17392ed.js create mode 100644 web/dist/931d2d4721a07dc0cef85cc83d1dd6db.js create mode 100644 web/dist/9405408bc4c1c18469c1eefd766f06b9.js create mode 100644 web/dist/94a0179602c94d55621a35e41c97ed5c.js create mode 100644 web/dist/95722ce261fad0a28f370f9042ac8acd.js create mode 100644 web/dist/966a0905960f7cf236a398b68d3a4c6c.js create mode 100644 web/dist/966a0905960f7cf236a398b68d3a4c6c.js.gz create mode 100644 web/dist/9737a936e499f40b0c36f497031321b1.js create mode 100644 web/dist/9737a936e499f40b0c36f497031321b1.js.gz create mode 100644 web/dist/97d15c029119bb1a0a1640736097aa31.js create mode 100644 web/dist/985b400088bf5e23fb83e70d9948eccb.js create mode 100644 web/dist/9874181c924bc65b0e3b8f51b3ae93df.js create mode 100644 web/dist/9874181c924bc65b0e3b8f51b3ae93df.js.gz create mode 100644 web/dist/98d1b05bc92d70a819fe9a6f9a1a8d5f.js create mode 100644 web/dist/98d1b05bc92d70a819fe9a6f9a1a8d5f.js.gz create mode 100644 web/dist/9987746e670b35420f50b6ebd2e0d67a.js create mode 100644 web/dist/9987746e670b35420f50b6ebd2e0d67a.js.gz create mode 100644 web/dist/998c5f13555e18b42e9bf826578b2e16.js create mode 100644 web/dist/99fc1d5bce3320a8fbf9ce9a8d6b9e2f.js create mode 100644 web/dist/9aafe4a55ece5a23a8c7658cc25325fc.js create mode 100644 web/dist/9aafe4a55ece5a23a8c7658cc25325fc.js.gz create mode 100644 web/dist/9ad12abef8b90e7454d08765187eeb90.js create mode 100644 web/dist/9b24c141c4ab1fb899b2b0f1b8ee33ac.js create mode 100644 web/dist/9b847edd56886a180bb29d04b8bece7e.js create mode 100644 web/dist/9c202aefac35a5ff49d3d3795e9932bc.js create mode 100644 web/dist/9d0f4f65be2f50ad54488089f126feda.js create mode 100644 web/dist/9e357a97da26127713394684a51946b8.js create mode 100644 web/dist/9e4ae76ef90073c3837eb8383972017d.js create mode 100644 web/dist/9e69cb39701c3578226b39536edd4dd7.js create mode 100644 web/dist/9e7b410d51fc77840842aea653f8aee1.js create mode 100644 web/dist/9e7b410d51fc77840842aea653f8aee1.js.gz create mode 100644 web/dist/9e7dd08cf78e118b417094343686cda8.js create mode 100644 web/dist/9e7dd08cf78e118b417094343686cda8.js.gz create mode 100644 web/dist/9f1744bf8d426b88f1f87fd3b5cca06a.js create mode 100644 web/dist/a0fa4459ff5562e61df9d58c70f1bce8.js create mode 100644 web/dist/a101e3cf93198db4854a63d23542eefe.js create mode 100644 web/dist/a101e3cf93198db4854a63d23542eefe.js.gz create mode 100644 web/dist/a1126819c6d0a10f20464c174f78fcfb.js create mode 100644 web/dist/a12b600f57e52c9d0cac24bbb2e7c07a.js create mode 100644 web/dist/a17e59619a3d17661de6cad7d6808a1f.js create mode 100644 web/dist/a17e59619a3d17661de6cad7d6808a1f.js.gz create mode 100644 web/dist/a26463d029a2515171748a1ebcca53c3.js create mode 100644 web/dist/a2892f98db7a4df3c9483669ddb59ec2.js create mode 100644 web/dist/a2892f98db7a4df3c9483669ddb59ec2.js.gz create mode 100644 web/dist/a311e02008e0f00a37305a12d479159a.js create mode 100644 web/dist/a3364b0ae17abf3b8dc45ac0fc88138f.js create mode 100644 web/dist/a3364b0ae17abf3b8dc45ac0fc88138f.js.gz create mode 100644 web/dist/a65537c91d9088b603c93b6398f580c0.js create mode 100644 web/dist/a65537c91d9088b603c93b6398f580c0.js.gz create mode 100644 web/dist/a68bd604e401377e745b8f3a2e5088f0.js create mode 100644 web/dist/a68bd604e401377e745b8f3a2e5088f0.js.gz create mode 100644 web/dist/a7182b8d60c4b8e3bc60bddc2d69da3c.js create mode 100644 web/dist/a7668d94ba4eb4fd33fef9ccdf584329.js create mode 100644 web/dist/a77f254bc934c3d69dd51902da56f6f1.js create mode 100644 web/dist/a77f254bc934c3d69dd51902da56f6f1.js.gz create mode 100644 web/dist/a7da972483728415ac8f250f02083cd8.js create mode 100644 web/dist/a7da972483728415ac8f250f02083cd8.js.gz create mode 100644 web/dist/a81cd084ae545af4318d919f40a91fa2.js create mode 100644 web/dist/a81cd084ae545af4318d919f40a91fa2.js.gz create mode 100644 web/dist/a898336d92cb4d2c2b18e46d9d10c636.js create mode 100644 web/dist/a898336d92cb4d2c2b18e46d9d10c636.js.gz create mode 100644 web/dist/a8fa7ec7cc9e6632aa3cd10be6ed5b5a.js create mode 100644 web/dist/ab16c1237e6e04bbf0024ee2bae42130.js create mode 100644 web/dist/ab224e40ec1be852b08440ae5b93334a.js create mode 100644 web/dist/ab224e40ec1be852b08440ae5b93334a.js.gz create mode 100644 web/dist/ab30fd1481481ea1a281fe8b19b2bee0.js create mode 100644 web/dist/ab30fd1481481ea1a281fe8b19b2bee0.js.gz create mode 100644 web/dist/ab6682f26350a18d64b57b1f6afedb5b.js create mode 100644 web/dist/ab6682f26350a18d64b57b1f6afedb5b.js.gz create mode 100644 web/dist/ac87527deeab08356fce5f6f6cc26c54.js create mode 100644 web/dist/ac87527deeab08356fce5f6f6cc26c54.js.gz create mode 100644 web/dist/acc30207efba7ab5b7b509b599f37e6f.js create mode 100644 web/dist/acc7448b80728a73c9a4046b3ec4407f.js create mode 100644 web/dist/accd1391b6d74a4f4ef8b1ca97d4c57f.js create mode 100644 web/dist/accd1391b6d74a4f4ef8b1ca97d4c57f.js.gz create mode 100644 web/dist/ad5c4f70b45e47d623fee743299c075b.js create mode 100644 web/dist/ad5c4f70b45e47d623fee743299c075b.js.gz create mode 100644 web/dist/ad806674b28b94be3406af2d34899870.js create mode 100644 web/dist/adbb57fa182dce548204311d3be6dffa.js create mode 100644 web/dist/ae72f92a2ea2219a6a8c58e8ae557385.js create mode 100644 web/dist/af1de9b532b5108926ebe8f8dbe98c9d.js create mode 100644 web/dist/af1de9b532b5108926ebe8f8dbe98c9d.js.gz create mode 100644 web/dist/af7b012955996316a14afcf804c441e7.js create mode 100644 web/dist/afb72b77b4edf3430441b8280c9fb6a9.js create mode 100644 web/dist/b02513e1d0cc664936e1ba9cb5a923af.js create mode 100644 web/dist/b036b967d8279eb68e21b6624846b420.js create mode 100644 web/dist/b036b967d8279eb68e21b6624846b420.js.gz create mode 100644 web/dist/b131314d1ea62fa7bba91a4da8360298.js create mode 100644 web/dist/b17d523e22cd12b9c29e60edc5171b60.js create mode 100644 web/dist/b435aebcb57d65080cfd510e0a9d5d9d.js create mode 100644 web/dist/b4e1edf89aca93d0b8087f0f63b8d36f.js create mode 100644 web/dist/b4e1edf89aca93d0b8087f0f63b8d36f.js.gz create mode 100644 web/dist/b731b483b53dbc1af3e329d34b819ef9.js create mode 100644 web/dist/b82b206b6d7ead500802f08c7f1bcf56.js create mode 100644 web/dist/b830d88aa22a866a208be27af90526a7.js create mode 100644 web/dist/b9963f909afff9cb4e6dd95bf5bc20c4.js create mode 100644 web/dist/bad4733ef8214f5264724d94d481ae42.js create mode 100644 web/dist/bae95bdb1bbcc0969e0e40fb72539df3.js create mode 100644 web/dist/baf9051837c09b438b0e7d1e09b231e3.js create mode 100644 web/dist/baf9051837c09b438b0e7d1e09b231e3.js.gz create mode 100644 web/dist/bbd62124f6d03e01eb4332f55ead999d.js create mode 100644 web/dist/bc26ab0797e975ba01e701683935864b.js create mode 100644 web/dist/bd67544cb7690db5a573f0212ef4b767.js create mode 100644 web/dist/bd6e4c1215a429558edf1546243e338b.js create mode 100644 web/dist/be964ce7cf6d2902db61ade8f9cd0860.js create mode 100644 web/dist/beebd365e9d52fb45e4e2e0e8f3f25f3.js create mode 100644 web/dist/bf615f3f2fbded014d7c7c2cba2a55da.js create mode 100644 web/dist/bfc402925b28862b622c68f515be1b98.js create mode 100644 web/dist/bff4a02980e8088d0e56593d6da137cf.js create mode 100644 web/dist/c137d4af8541a1abf4598a9760ef6a74.js create mode 100644 web/dist/c137d4af8541a1abf4598a9760ef6a74.js.gz create mode 100644 web/dist/c23b1f80ab9746b425f3848bdaacc144.js create mode 100644 web/dist/c23cf8ce8d6d5a73803c971390656875.js create mode 100644 web/dist/c2b4975093d5885f2e8ff09c4fabe8f7.js create mode 100644 web/dist/c2ded7fafb683b89f9fb51f37400cfb5.js create mode 100644 web/dist/c2ded7fafb683b89f9fb51f37400cfb5.js.gz create mode 100644 web/dist/c38a3226f3858a47ba9fb788dc7b44fc.js create mode 100644 web/dist/c3b0cd15adcc12a549e7ac5d165ac1f4.js create mode 100644 web/dist/c3ee66447735372b0459983d11153db5.js create mode 100644 web/dist/c53921154b1d064db029a19020dd6e6c.js create mode 100644 web/dist/c53921154b1d064db029a19020dd6e6c.js.gz create mode 100644 web/dist/c57721ccc0d5a41063560477b0bc7d02.js create mode 100644 web/dist/c57721ccc0d5a41063560477b0bc7d02.js.gz create mode 100644 web/dist/c6c186b45f36f18d9ce1fb2bc07fa5e3.js create mode 100644 web/dist/c6d4a590e14107a8a5ad505d66241032.js create mode 100644 web/dist/c6f608398c43e25821557ee65cda5e58.js create mode 100644 web/dist/c7d3b0afe7600a632fbf44ee8d84996e.js create mode 100644 web/dist/c856709d8ff07b9e3a72f0fd736437a5.js create mode 100644 web/dist/c8fa7b978e3d1a3d8871518e9cb83968.js create mode 100644 web/dist/c8fa7b978e3d1a3d8871518e9cb83968.js.gz create mode 100644 web/dist/c9b9a1dd6c2e609511c3361642370120.js create mode 100644 web/dist/ca1483809659f6c87cc6f588891d2bd4.js create mode 100644 web/dist/ca66e3089e6c4a01fceaa4c4675d4da1.js create mode 100644 web/dist/cb133a447f7bbaa64d268360db08ac7a.js create mode 100644 web/dist/cb133a447f7bbaa64d268360db08ac7a.js.gz create mode 100644 web/dist/cbc9092524363d014f77a62f36ff1540.js create mode 100644 web/dist/cbdf771a8121b4ee46803ff5a9cc2162.js create mode 100644 web/dist/cbdf771a8121b4ee46803ff5a9cc2162.js.gz create mode 100644 web/dist/cc14b072276b7c5f264efe205d06956f.js create mode 100644 web/dist/cc14b072276b7c5f264efe205d06956f.js.gz create mode 100644 web/dist/cc8577464e70c97c43ca0992593d5e93.js create mode 100644 web/dist/cde6284f9404fcf0323362f4c28285bd.js create mode 100644 web/dist/cde6284f9404fcf0323362f4c28285bd.js.gz create mode 100644 web/dist/cf0a04afa21ac9ba23a1de0416a03105.js create mode 100644 web/dist/cf90a0e6a2989274c84edd1dc44db5e1.js create mode 100644 web/dist/cf90a0e6a2989274c84edd1dc44db5e1.js.gz create mode 100644 web/dist/cfbb8ac8b034c4ecdb1d74d5a0aa997e.js create mode 100644 web/dist/d19b415a0279064ddfa890d0a7b3f78c.js create mode 100644 web/dist/d19b415a0279064ddfa890d0a7b3f78c.js.gz create mode 100644 web/dist/d1d9fa9ed3cbeee7c37f01294459d630.js create mode 100644 web/dist/d2bee538ff0c2eb104ee3a32dc6545de.js create mode 100644 web/dist/d37f0f78c06e883be0e04a3be861fb68.js create mode 100644 web/dist/d37f0f78c06e883be0e04a3be861fb68.js.gz create mode 100644 web/dist/d4185e860c404e802d671def5eda2ead.js create mode 100644 web/dist/d4185e860c404e802d671def5eda2ead.js.gz create mode 100644 web/dist/d424588d01445a9c14ec1f5681eca0e6.js create mode 100644 web/dist/d465c0a35c6ef244bf587b0e6bdb4019.js create mode 100644 web/dist/d484810cd62a56a5dda7e67cbcb005d2.js create mode 100644 web/dist/d58a44852ccf290e290f798d594ceaf1.js create mode 100644 web/dist/d66813bade53d7a1eeb0fb22223c9120.js create mode 100644 web/dist/d750a8dbf9dd09c0a33b9986e79e3c8c.js create mode 100644 web/dist/d754905fe54aac6f3c350df34f51a0b6.js create mode 100644 web/dist/d7889907dbb51f58ceadb3e1eec03a5d.js create mode 100644 web/dist/d8d4867d7fff5b67bbbdd47e637b3a6c.js create mode 100644 web/dist/da0827f4d8af0fc29eb75e28166177d3.js create mode 100644 web/dist/dabc32896dd99d88e7b0f27f99d9f3d1.js create mode 100644 web/dist/db6c0056cef31f6654438a92a8aca336.js create mode 100644 web/dist/dbfe76a5b35e105c53ee5e24e7aecea9.js create mode 100644 web/dist/dd0c5a4ed6f5fb11d7cf1f1eff6d60e0.js create mode 100644 web/dist/dd40dfc7840568927fdef65087a233ed.js create mode 100644 web/dist/dde83af0489170bfa8323236b2eb8206.js create mode 100644 web/dist/dde83af0489170bfa8323236b2eb8206.js.gz create mode 100644 web/dist/de03b970a689d024ab3383991180d48d.js create mode 100644 web/dist/de03b970a689d024ab3383991180d48d.js.gz create mode 100644 web/dist/de8d05f488f2f27726916d6293e4a59c.js create mode 100644 web/dist/de8d05f488f2f27726916d6293e4a59c.js.gz create mode 100644 web/dist/de8dee841ffdaaede3a2254deef30376.js create mode 100644 web/dist/de8dee841ffdaaede3a2254deef30376.js.gz create mode 100644 web/dist/df14d63677343134a88e906bf460b997.js create mode 100644 web/dist/df14d63677343134a88e906bf460b997.js.gz create mode 100644 web/dist/dfcf55f148a1c3a275c32ba307579b9b.js create mode 100644 web/dist/dfcf55f148a1c3a275c32ba307579b9b.js.gz create mode 100644 web/dist/e03035341d2106650617dd1fcc8f9449.js create mode 100644 web/dist/e0e2b1267a5d4acb4dda3a4a598cd8a5.js create mode 100644 web/dist/e174a2c6143efab40c57c4660d6bf9bb.js create mode 100644 web/dist/e174a2c6143efab40c57c4660d6bf9bb.js.gz create mode 100644 web/dist/e2792218bae78a6aef6764de4e61fd82.js create mode 100644 web/dist/e28135172e9bc8cda916c86776d44203.js create mode 100644 web/dist/e306579092c3b7297592a3d1ad67cd20.js create mode 100644 web/dist/e4d51c8b4202d444cb39db4e7642d7d9.js create mode 100644 web/dist/e543a99512ef5d4029e726a65b8b3cd1.js create mode 100644 web/dist/e57143ce0fcc3e3a435d5ef13d0353a1.js create mode 100644 web/dist/e6a1d1f679385aaa06472b3ba6a31104.js create mode 100644 web/dist/e6a3aa085b6b9711e9726d59a50c461b.js create mode 100644 web/dist/e6a3aa085b6b9711e9726d59a50c461b.js.gz create mode 100644 web/dist/e745f8fb4f054a3f5b66ccad100a1217.js create mode 100644 web/dist/e78eab250e7f8ccac3d918dfdb06ca10.js create mode 100644 web/dist/e78eab250e7f8ccac3d918dfdb06ca10.js.gz create mode 100644 web/dist/e86b459e406840ac8eaf63fcfcf817e5.js create mode 100644 web/dist/e908b5e66faee5b948e984da2c1aaf9a.js create mode 100644 web/dist/e908b5e66faee5b948e984da2c1aaf9a.js.gz create mode 100644 web/dist/e956ee932ed766d1e40c10a39bf62e58.js create mode 100644 web/dist/e970a8b8e51d2b1fe9d44e1b2c741ff1.js create mode 100644 web/dist/ed72112dc346ee7976809d4693f0dcba.js create mode 100644 web/dist/ef8f636d121f5d3e5047e1399c78ee2b.js create mode 100644 web/dist/ef8f636d121f5d3e5047e1399c78ee2b.js.gz create mode 100644 web/dist/efc508c36f4e417ec6bd5ec72989443b.js create mode 100644 web/dist/f2195d2eae3dbef7e3798e115209dcd7.js create mode 100644 web/dist/f233af729cc30f9b3af99d3e9a0a2409.js create mode 100644 web/dist/f2abd10469c6740e9c96cfa9229ec3fe.js create mode 100644 web/dist/f2cbfaebd00ef55ea3d48ff5acaeb844.js create mode 100644 web/dist/f2cfc0e604350e23bfcd7c78165b1411.js create mode 100644 web/dist/f3a0f6e7e442de2ae51eddbf4eb98d97.js create mode 100644 web/dist/f4acea05f1f36de4fb003f20f7799de6.js create mode 100644 web/dist/f4acea05f1f36de4fb003f20f7799de6.js.gz create mode 100644 web/dist/f50d7c4ce743ce495230d19bd33fefab.js create mode 100644 web/dist/f5292be525fc36a337ce7bfb792070de.js create mode 100644 web/dist/f58ee8ca364e28090c10b602eef235b1.js create mode 100644 web/dist/f61f1aaed3f32a7dabd977a6f47ecd5f.js create mode 100644 web/dist/f6493d95eaf3c21810134f4fc28531c7.js create mode 100644 web/dist/f6493d95eaf3c21810134f4fc28531c7.js.gz create mode 100644 web/dist/f6cc5f20d4885d2d7d5a244f6f22e650.js create mode 100644 web/dist/f6cc5f20d4885d2d7d5a244f6f22e650.js.gz create mode 100644 web/dist/f6d0fea0854403a43f86a04e3db40850.js create mode 100644 web/dist/f7443e8232a7e4289b9f2ed4a512750c.js create mode 100644 web/dist/f80c6eb0f52a68464b21211240e3d6e6.js create mode 100644 web/dist/f86deff6386f7243a4aa39e90b30ba36.js create mode 100644 web/dist/f86deff6386f7243a4aa39e90b30ba36.js.gz create mode 100644 web/dist/f88127ad8950e3c94c3af6c65a7120fa.js create mode 100644 web/dist/f8d59c056683c7001a96d4fac22cc664.js create mode 100644 web/dist/f8d59c056683c7001a96d4fac22cc664.js.gz create mode 100644 web/dist/fa1618cda4da7d5362c381ea2d5f7321.js create mode 100644 web/dist/faf460076b3383fdc3ecc224068964cf.js create mode 100644 web/dist/fc044cf204bd7f511182d4c654363401.js create mode 100644 web/dist/fc044cf204bd7f511182d4c654363401.js.gz create mode 100644 web/dist/fc2291e5687166730bc9040250deb4dc.js create mode 100644 web/dist/fc6ba43496896432983dff35a140ed34.js create mode 100644 web/dist/fc6ba43496896432983dff35a140ed34.js.gz create mode 100644 web/dist/fd7d0e7d961590c139ed4e02aa7ca536.js create mode 100644 web/dist/fd7d0e7d961590c139ed4e02aa7ca536.js.gz create mode 100644 web/dist/ffa203dcaae3e64846fe72a12c66f52a.js create mode 100644 web/dist/fffbc895129cdb3efeafa5b234743aa0.js create mode 100644 web/dist/index.html create mode 100644 web/dist/static/css/base.css create mode 100644 web/dist/static/css/reset.css create mode 100644 web/dist/static/font/webfont.eot create mode 100644 web/dist/static/font/webfont.svg create mode 100644 web/dist/static/font/webfont.ttf create mode 100644 web/dist/static/font/webfont.woff create mode 100644 web/dist/static/font/webfont.woff2 create mode 100644 web/dist/static/fonts/element-icons.535877f.woff create mode 100644 web/dist/static/fonts/element-icons.732389d.ttf create mode 100644 web/dist/static/fonts/fontello.068ca2b.ttf create mode 100644 web/dist/static/fonts/fontello.e73a064.eot create mode 100644 web/dist/static/fonts/iconfont.8ddfca3.eot create mode 100644 web/dist/static/fonts/iconfont.ee39531.ttf create mode 100644 web/dist/static/image/banner.jpg create mode 100644 web/dist/static/image/block.png create mode 100644 web/dist/static/image/logo-2 copy@1.5x.jpg create mode 100644 web/dist/static/image/logo-title.png create mode 100644 web/dist/static/image/logo.jpg create mode 100644 web/dist/static/image/logo@2x.png create mode 100644 web/dist/static/image/nodes.png create mode 100644 web/dist/static/image/transation.png create mode 100644 web/dist/static/image/transationPedding.png create mode 100644 web/dist/static/image/webase_35x35.png create mode 100644 web/dist/static/img/fontello.9354499.svg create mode 100644 web/dist/static/img/iconfont.7fa1e8d.svg create mode 100644 web/dist/static/img/transation.1a3785f.png create mode 100644 web/dist/static/img/transationPedding.d68f750.png create mode 100644 web/dist/static/js/0.f3d0801f519d6afb5ad4.js create mode 100644 web/dist/static/js/0.f3d0801f519d6afb5ad4.js.gz create mode 100644 web/dist/static/js/1.2599b1cb0d1eada20807.js create mode 100644 web/dist/static/js/1.2599b1cb0d1eada20807.js.gz create mode 100644 web/dist/static/js/10.3056aa7ffdc187149691.js create mode 100644 web/dist/static/js/11.a973c93b5c09af47d3a5.js create mode 100644 web/dist/static/js/12.863af599cfde4a0d69c6.js create mode 100644 web/dist/static/js/12.863af599cfde4a0d69c6.js.gz create mode 100644 web/dist/static/js/13.3914ed72724fbdc745b7.js create mode 100644 web/dist/static/js/13.3914ed72724fbdc745b7.js.gz create mode 100644 web/dist/static/js/14.6c8b3d32c55aa62e8985.js create mode 100644 web/dist/static/js/15.5f96aebd3746ced06d3f.js create mode 100644 web/dist/static/js/16.598bb2bdb7190a86d2ac.js create mode 100644 web/dist/static/js/17.36aa344c38bd42db8929.js create mode 100644 web/dist/static/js/18.7de78fd7a6584de4471d.js create mode 100644 web/dist/static/js/19.c9b640e661441470e5c5.js create mode 100644 web/dist/static/js/2.825277a2f958cfdebc4d.js create mode 100644 web/dist/static/js/3.10ba1ba25125fd5b75d8.js create mode 100644 web/dist/static/js/3.10ba1ba25125fd5b75d8.js.gz create mode 100644 web/dist/static/js/5.bef4785f3d00f0ea6353.js create mode 100644 web/dist/static/js/5.bef4785f3d00f0ea6353.js.gz create mode 100644 web/dist/static/js/6.194685a25ae6f42028b3.js create mode 100644 web/dist/static/js/6.194685a25ae6f42028b3.js.gz create mode 100644 web/dist/static/js/7.a5f6c68aa6e9665eba38.js create mode 100644 web/dist/static/js/7.a5f6c68aa6e9665eba38.js.gz create mode 100644 web/dist/static/js/8.16c720cace4a0448dcd7.js create mode 100644 web/dist/static/js/9.a665afae74500a13089a.js create mode 100644 web/dist/static/js/base-loading.js create mode 100644 web/dist/static/js/browserfs.min.js create mode 100644 web/dist/static/js/browserfs.min.js.gz create mode 100644 web/dist/static/js/runtime.661c19596a69c29ffe80.js create mode 100644 web/dist/static/js/web3.min.js create mode 100644 web/dist/static/js/web3.min.js.gz diff --git a/web/dist/0146c2f1e1f5b20320aab16922c176e9.js b/web/dist/0146c2f1e1f5b20320aab16922c176e9.js new file mode 100644 index 00000000..7eda90a1 --- /dev/null +++ b/web/dist/0146c2f1e1f5b20320aab16922c176e9.js @@ -0,0 +1,1068 @@ +ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var DocCommentHighlightRules = function () { + this.$rules = { + "start": [{ + token: "comment.doc.tag", + regex: "@[\\w\\d_]+" // TODO: fix email addresses + }, + DocCommentHighlightRules.getTagRule(), + { + defaultToken: "comment.doc", + caseInsensitive: true + }] + }; +}; +oop.inherits(DocCommentHighlightRules, TextHighlightRules); +DocCommentHighlightRules.getTagRule = function (start) { + return { + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" + }; +}; +DocCommentHighlightRules.getStartRule = function (start) { + return { + token: "comment.doc", + regex: "\\/\\*(?=\\*)", + next: start + }; +}; +DocCommentHighlightRules.getEndRule = function (start) { + return { + token: "comment.doc", + regex: "\\*\\/", + next: start + }; +}; +exports.DocCommentHighlightRules = DocCommentHighlightRules; + +}); + +ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; +var JavaScriptHighlightRules = function (options) { + var keywordMapper = this.createKeywordMapper({ + "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|" + // Constructors + "Namespace|QName|XML|XMLList|" + // E4X + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors + "SyntaxError|TypeError|URIError|" + + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions + "isNaN|parseFloat|parseInt|" + + "JSON|Math|" + // Other + "this|arguments|prototype|window|document", + "keyword": "const|yield|import|get|set|async|await|" + + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + + "__parent__|__count__|escape|unescape|with|__proto__|" + + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor", + "storage.type": "const|let|var|function", + "constant.language": "null|Infinity|NaN|undefined", + "support.function": "alert", + "constant.language.boolean": "true|false" + }, "identifier"); + var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; + var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex + "u[0-9a-fA-F]{4}|" + // unicode + "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode + "[0-2][0-7]{0,2}|" + // oct + "3[0-7][0-7]?|" + // oct + "[4-7][0-7]?|" + //oct + ".)"; + this.$rules = { + "no_regex": [ + DocCommentHighlightRules.getStartRule("doc-start"), + comments("no_regex"), + { + token: "string", + regex: "'(?=.)", + next: "qstring" + }, { + token: "string", + regex: '"(?=.)', + next: "qqstring" + }, { + token: "constant.numeric", + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + }, { + token: [ + "storage.type", "punctuation.operator", "support.function", + "punctuation.operator", "entity.name.function", "text", "keyword.operator" + ], + regex: "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe + ")(\\s*)(=)", + next: "function_arguments" + }, { + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", "storage.type", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "entity.name.function", "text", "keyword.operator", "text", "storage.type", + "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(function\\*?)(\\s+)(" + identifierRe + ")(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "entity.name.function", "text", "punctuation.operator", + "text", "storage.type", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "text", "text", "storage.type", "text", "paren.lparen" + ], + regex: "(:)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: "keyword", + regex: "from(?=\\s*('|\"))" + }, { + token: "keyword", + regex: "(?:" + kwBeforeRe + ")\\b", + next: "start" + }, { + token: "support.constant", + regex: /that\b/ + }, { + token: ["storage.type", "punctuation.operator", "support.function.firebug"], + regex: /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ + }, { + token: keywordMapper, + regex: identifierRe + }, { + token: "punctuation.operator", + regex: /[.](?![.])/, + next: "property" + }, { + token: "storage.type", + regex: /=>/, + next: "start" + }, { + token: "keyword.operator", + regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next: "start" + }, { + token: "punctuation.operator", + regex: /[?:,;.]/, + next: "start" + }, { + token: "paren.lparen", + regex: /[\[({]/, + next: "start" + }, { + token: "paren.rparen", + regex: /[\])}]/ + }, { + token: "comment", + regex: /^#!.*$/ + } + ], + property: [{ + token: "text", + regex: "\\s+" + }, { + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()", + next: "function_arguments" + }, { + token: "punctuation.operator", + regex: /[.](?![.])/ + }, { + token: "support.function", + regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ + }, { + token: "support.function.dom", + regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ + }, { + token: "support.constant", + regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ + }, { + token: "identifier", + regex: identifierRe + }, { + regex: "", + token: "empty", + next: "no_regex" + } + ], + "start": [ + DocCommentHighlightRules.getStartRule("doc-start"), + comments("start"), + { + token: "string.regexp", + regex: "\\/", + next: "regex" + }, { + token: "text", + regex: "\\s+|^$", + next: "start" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "regex": [ + { + token: "regexp.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "string.regexp", + regex: "/[sxngimy]*", + next: "no_regex" + }, { + token: "invalid", + regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ + }, { + token: "constant.language.escape", + regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ + }, { + token: "constant.language.delimiter", + regex: /\|/ + }, { + token: "constant.language.escape", + regex: /\[\^?/, + next: "regex_character_class" + }, { + token: "empty", + regex: "$", + next: "no_regex" + }, { + defaultToken: "string.regexp" + } + ], + "regex_character_class": [ + { + token: "regexp.charclass.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "constant.language.escape", + regex: "]", + next: "regex" + }, { + token: "constant.language.escape", + regex: "-" + }, { + token: "empty", + regex: "$", + next: "no_regex" + }, { + defaultToken: "string.regexp.charachterclass" + } + ], + "default_parameter": [ + { + token: "string", + regex: "'(?=.)", + push: [ + { + token: "string", + regex: "'|$", + next: "pop" + }, { + include: "qstring" + } + ] + }, { + token: "string", + regex: '"(?=.)', + push: [ + { + token: "string", + regex: '"|$', + next: "pop" + }, { + include: "qqstring" + } + ] + }, { + token: "constant.language", + regex: "null|Infinity|NaN|undefined" + }, { + token: "constant.numeric", + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + }, { + token: "punctuation.operator", + regex: ",", + next: "function_arguments" + }, { + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "function_arguments": [ + comments("function_arguments"), + { + token: "variable.parameter", + regex: identifierRe + }, { + token: "punctuation.operator", + regex: "," + }, { + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: '"|$', + next: "no_regex" + }, { + defaultToken: "string" + } + ], + "qstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: "'|$", + next: "no_regex" + }, { + defaultToken: "string" + } + ] + }; + if (!options || !options.noES6) { + this.$rules.no_regex.unshift({ + regex: "[{}]", onMatch: function (val, state, stack) { + this.next = val == "{" ? this.nextState : ""; + if (val == "{" && stack.length) { + stack.unshift("start", state); + } + else if (val == "}" && stack.length) { + stack.shift(); + this.next = stack.shift(); + if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) + return "paren.quasi.end"; + } + return val == "{" ? "paren.lparen" : "paren.rparen"; + }, + nextState: "start" + }, { + token: "string.quasi.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedRe + }, { + token: "paren.quasi.start", + regex: /\${/, + push: "start" + }, { + token: "string.quasi.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string.quasi" + }] + }, { + token: ["variable.parameter", "text"], + regex: "(" + identifierRe + ")(\\s*)(?=\\=>)" + }, { + token: "paren.lparen", + regex: "(\\()(?=.+\\s*=>)", + next: "function_arguments" + }, { + token: "variable.language", + regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b" + }); + this.$rules["function_arguments"].unshift({ + token: "keyword.operator", + regex: "=", + next: "default_parameter" + }, { + token: "keyword.operator", + regex: "\\.{3}" + }); + this.$rules["property"].unshift({ + token: "support.function", + regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|" + + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()" + }, { + token: "constant.language", + regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b" + }); + if (!options || options.jsx != false) + JSX.call(this); + } + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]); + this.normalizeRules(); +}; +oop.inherits(JavaScriptHighlightRules, TextHighlightRules); +function JSX() { + var tagRegex = identifierRe.replace("\\d", "\\d\\-"); + var jsxTag = { + onMatch: function (val, state, stack) { + var offset = val.charAt(1) == "/" ? 2 : 1; + if (offset == 1) { + if (state != this.nextState) + stack.unshift(this.next, this.nextState, 0); + else + stack.unshift(this.next); + stack[2]++; + } + else if (offset == 2) { + if (state == this.nextState) { + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.shift(); + stack.shift(); + } + } + } + return [{ + type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", + value: val.slice(0, offset) + }, { + type: "meta.tag.tag-name.xml", + value: val.substr(offset) + }]; + }, + regex: "", + onMatch: function (value, currentState, stack) { + if (currentState == stack[0]) + stack.shift(); + if (value.length == 2) { + if (stack[0] == this.nextState) + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.splice(0, 2); + } + } + this.next = stack[0] || "start"; + return [{ type: this.token, value: value }]; + }, + nextState: "jsx" + }, + jsxJsRule, + comments("jsxAttributes"), + { + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + token: "text.tag-whitespace.xml", + regex: "\\s+" + }, { + token: "string.attribute-value.xml", + regex: "'", + stateName: "jsx_attr_q", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + stateName: "jsx_attr_qq", + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, + jsxTag + ]; + this.$rules.reference = [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }]; +} +function comments(next) { + return [ + { + token: "comment", + regex: /\/\*/, + next: [ + DocCommentHighlightRules.getTagRule(), + { token: "comment", regex: "\\*\\/", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } + ] + }, { + token: "comment", + regex: "\\/\\/", + next: [ + DocCommentHighlightRules.getTagRule(), + { token: "comment", regex: "$|^", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } + ] + } + ]; +} +exports.JavaScriptHighlightRules = JavaScriptHighlightRules; + +}); + +ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) + return false; + return /^\s*\}/.test(input); + }; + this.autoOutdent = function (doc, row) { + var line = doc.getLine(row); + var match = line.match(/^(\s*\})/); + if (!match) + return 0; + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; + var indent = this.$getIndent(doc.getLine(openBracePos.row)); + doc.replace(new Range(row, 0, row, column - 1), indent); + }; + this.$getIndent = function (line) { + return line.match(/^\s*/)[0]; + }; +}).call(MatchingBraceOutdent.prototype); +exports.MatchingBraceOutdent = MatchingBraceOutdent; + +}); + +ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = JavaScriptHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CstyleBehaviour(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "//"; + this.blockComment = { start: "/*", end: "*/" }; + this.$quotes = { '"': '"', "'": "'", "`": "`" }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + var endState = tokenizedLine.state; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + if (state == "start" || state == "no_regex") { + var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); + if (match) { + indent += tab; + } + } + else if (state == "doc-start") { + if (endState == "start" || endState == "no_regex") { + return ""; + } + var match = line.match(/^\s*(\/?)\*/); + if (match) { + if (match[1]) { + indent += " "; + } + indent += "* "; + } + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.createWorker = function (session) { + var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); + worker.attachToDocument(session.getDocument()); + worker.on("annotate", function (results) { + session.setAnnotations(results.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/javascript"; + this.snippetFileId = "ace/snippets/javascript"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +ace.define("ace/mode/gobstones_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var GobstonesHighlightRules = function () { + var definitions = { + standard: "program|procedure|function|interactive|return|let", + type: "type|is|variant|record|field|case" + }; + var control = { + commands: { + repetitions: "repeat|while|foreach|in", + alternatives: "if|elseif|else|switch" + }, + expressions: { + alternatives: "choose|when|otherwise|matching|select|on" + } + }; + var values = { + colors: "Verde|Rojo|Azul|Negro", + cardinals: "Norte|Sur|Este|Oeste", + booleans: "True|False", + numbers: /([-]?)([0-9]+)\b/, + strings: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + }; + var primitives = { + commands: "Poner|Sacar|Mover|IrAlBorde|VaciarTablero|BOOM", + expressions: "nroBolitas|hayBolitas|puedeMover|" + + "siguiente|previo|opuesto|" + + "minBool|maxBool|minDir|maxDir|minColor|maxColor|" + + "primero|sinElPrimero|esVacía|" + + "boom", + keys: "K_A|K_B|K_C|K_D|K_E|K_F|K_G|K_G|K_H|K_I|K_J|K_K|K_L|K_M|K_N|K_Ñ|" + + "K_O|K_P|K_Q|K_R|K_S|K_T|K_U|K_V|K_W|K_X|K_Y|K_Z|" + + "K_0|K_1|K_2|K_3|K_4|K_5|K_6|K_7|K_8|K_9|" + + "K_F1|K_F2|K_F3|K_F4|K_F5|K_F6|K_F7|K_F8|K_F9|K_F10|K_F11|K_12|" + + "K_UP|K_DOWN|K_LEFT|K_RIGHT|K_RETURN|K_BACKSPACE|K_TAB|K_SPACE|K_ESCAPE" + + "K_CTRL_A|K_CTRL_B|K_CTRL_C|K_CTRL_D|K_CTRL_E|K_CTRL_F|K_CTRL_G|K_CTRL_G|" + + "K_CTRL_H|K_CTRL_I|K_CTRL_J|K_CTRL_K|K_CTRL_L|K_CTRL_M|K_CTRL_N|K_CTRL_Ñ|" + + "K_CTRL_O|K_CTRL_P|K_CTRL_Q|K_CTRL_R|K_CTRL_S|K_CTRL_T|K_CTRL_U|K_CTRL_V|" + + "K_CTRL_W|K_CTRL_X|K_CTRL_Y|K_CTRL_Z|" + + "K_CTRL_0|K_CTRL_1|K_CTRL_2|K_CTRL_3|K_CTRL_4|K_CTRL_5|K_CTRL_6|K_CTRL_7|K_CTRL_8|K_CTRL_9|" + + "K_CTRL_F1|K_CTRL_F2|K_CTRL_F3|K_CTRL_F4|K_CTRL_F5|K_CTRL_F6|K_CTRL_F7|" + + "K_CTRL_F8|K_CTRL_F9|K_CTRL_F10|K_CTRL_F11|K_CTRL_F12|" + + "K_CTRL_UP|K_CTRL_DOWN|K_CTRL_LEFT|K_CTRL_RIGHT|K_CTRL_RETURN|" + + "K_CTRL_BACKSPACE|K_CTRL_TAB|K_CTRL_SPACE|K_CTRL_ESCAPE" + + "K_ALT_A|K_ALT_B|K_ALT_C|K_ALT_D|K_ALT_E|K_ALT_F|K_ALT_G|K_ALT_G|K_ALT_H|" + + "K_ALT_I|K_ALT_J|K_ALT_K|K_ALT_L|K_ALT_M|K_ALT_N|K_ALT_Ñ|K_ALT_O|K_ALT_P|" + + "K_ALT_Q|K_ALT_R|K_ALT_S|K_ALT_T|K_ALT_U|K_ALT_V|K_ALT_W|K_ALT_X|K_ALT_Y|K_ALT_Z|" + + "K_ALT_0|K_ALT_1|K_ALT_2|K_ALT_3|K_ALT_4|K_ALT_5|K_ALT_6|K_ALT_7|K_ALT_8|K_ALT_9|" + + "K_ALT_F1|K_ALT_F2|K_ALT_F3|K_ALT_F4|K_ALT_F5|K_ALT_F6|K_ALT_F7|K_ALT_F8|" + + "K_ALT_F9|K_ALT_F10|K_ALT_F11|K_ALT_F12|" + + "K_ALT_UP|K_ALT_DOWN|K_ALT_LEFT|K_ALT_RIGHT|K_ALT_RETURN|K_ALT_BACKSPACE|" + + "K_ALT_TAB|K_ALT_SPACE|K_ALT_ESCAPE" + + "K_SHIFT_A|K_SHIFT_B|K_SHIFT_C|K_SHIFT_D|K_SHIFT_E|K_SHIFT_F|K_SHIFT_G|" + + "K_SHIFT_G|K_SHIFT_H|K_SHIFT_I|K_SHIFT_J|K_SHIFT_K|K_SHIFT_L|K_SHIFT_M|" + + "K_SHIFT_N|K_SHIFT_Ñ|K_SHIFT_O|K_SHIFT_P|K_SHIFT_Q|K_SHIFT_R|K_SHIFT_S|" + + "K_SHIFT_T|K_SHIFT_U|K_SHIFT_V|K_SHIFT_W|K_SHIFT_X|K_SHIFT_Y|K_SHIFT_Z|" + + "K_SHIFT_0|K_SHIFT_1|K_SHIFT_2|K_SHIFT_3|K_SHIFT_4|K_SHIFT_5|K_SHIFT_6|" + + "K_SHIFT_7|K_SHIFT_8|K_SHIFT_9|" + + "K_SHIFT_F1|K_SHIFT_F2|K_SHIFT_F3|K_SHIFT_F4|K_SHIFT_F5|K_SHIFT_F6|" + + "K_SHIFT_F7|K_SHIFT_F8|K_SHIFT_F9|K_SHIFT_F10|K_SHIFT_F11|K_SHIFT_F12|" + + "K_SHIFT_UP|K_SHIFT_DOWN|K_SHIFT_LEFT|K_SHIFT_RIGHT|K_SHIFT_RETURN|" + + "K_SHIFT_BACKSPACE|K_SHIFT_TAB|K_SHIFT_SPACE|K_SHIFT_ESCAPE" + + "K_CTRL_ALT_A|K_CTRL_ALT_B|K_CTRL_ALT_C|K_CTRL_ALT_D|K_CTRL_ALT_E|" + + "K_CTRL_ALT_F|K_CTRL_ALT_G|K_CTRL_ALT_G|K_CTRL_ALT_H|K_CTRL_ALT_I|" + + "K_CTRL_ALT_J|K_CTRL_ALT_K|K_CTRL_ALT_L|K_CTRL_ALT_M|K_CTRL_ALT_N|" + + "K_CTRL_ALT_Ñ|K_CTRL_ALT_O|K_CTRL_ALT_P|K_CTRL_ALT_Q|K_CTRL_ALT_R|" + + "K_CTRL_ALT_S|K_CTRL_ALT_T|K_CTRL_ALT_U|K_CTRL_ALT_V|K_CTRL_ALT_W|" + + "K_CTRL_ALT_X|K_CTRL_ALT_Y|K_CTRL_ALT_Z|" + + "K_CTRL_ALT_0|K_CTRL_ALT_1|K_CTRL_ALT_2|K_CTRL_ALT_3|K_CTRL_ALT_4|" + + "K_CTRL_ALT_5|K_CTRL_ALT_6|K_CTRL_ALT_7|K_CTRL_ALT_8|K_CTRL_ALT_9|" + + "K_CTRL_ALT_F1|K_CTRL_ALT_F2|K_CTRL_ALT_F3|K_CTRL_ALT_F4|K_CTRL_ALT_F5|" + + "K_CTRL_ALT_F6|K_CTRL_ALT_F7|K_CTRL_ALT_F8|K_CTRL_ALT_F9|K_CTRL_ALT_F10|" + + "K_CTRL_ALT_F11|K_CTRL_ALT_F12|" + + "K_CTRL_ALT_UP|K_CTRL_ALT_DOWN|K_CTRL_ALT_LEFT|K_CTRL_ALT_RIGHT|" + + "K_CTRL_ALT_RETURN|K_CTRL_ALT_BACKSPACE|K_CTRL_ALT_TAB|K_CTRL_ALT_SPACE|K_CTRL_ALT_ESCAPE" + + "K_CTRL_SHIFT_A|K_CTRL_SHIFT_B|K_CTRL_SHIFT_C|K_CTRL_SHIFT_D|K_CTRL_SHIFT_E|" + + "K_CTRL_SHIFT_F|K_CTRL_SHIFT_G|K_CTRL_SHIFT_G|K_CTRL_SHIFT_H|K_CTRL_SHIFT_I|" + + "K_CTRL_SHIFT_J|K_CTRL_SHIFT_K|K_CTRL_SHIFT_L|K_CTRL_SHIFT_M|K_CTRL_SHIFT_N|" + + "K_CTRL_SHIFT_Ñ|K_CTRL_SHIFT_O|K_CTRL_SHIFT_P|K_CTRL_SHIFT_Q|K_CTRL_SHIFT_R|" + + "K_CTRL_SHIFT_S|K_CTRL_SHIFT_T|K_CTRL_SHIFT_U|K_CTRL_SHIFT_V|K_CTRL_SHIFT_W|" + + "K_CTRL_SHIFT_X|K_CTRL_SHIFT_Y|K_CTRL_SHIFT_Z|" + + "K_CTRL_SHIFT_0|K_CTRL_SHIFT_1|K_CTRL_SHIFT_2|K_CTRL_SHIFT_3|K_CTRL_SHIFT_4|" + + "K_CTRL_SHIFT_5|K_CTRL_SHIFT_6|K_CTRL_SHIFT_7|K_CTRL_SHIFT_8|K_CTRL_SHIFT_9|" + + "K_CTRL_SHIFT_F1|K_CTRL_SHIFT_F2|K_CTRL_SHIFT_F3|K_CTRL_SHIFT_F4|" + + "K_CTRL_SHIFT_F5|K_CTRL_SHIFT_F6|K_CTRL_SHIFT_F7|K_CTRL_SHIFT_F8|" + + "K_CTRL_SHIFT_9|K_CTRL_SHIFT_10|K_CTRL_SHIFT_11|K_CTRL_SHIFT_12|" + + "K_CTRL_SHIFT_UP|K_CTRL_SHIFT_DOWN|K_CTRL_SHIFT_LEFT|K_CTRL_SHIFT_RIGHT|" + + "K_CTRL_SHIFT_RETURN|K_CTRL_SHIFT_BACKSPACE|K_CTRL_SHIFT_TAB|" + + "K_CTRL_SHIFT_SPACE|K_CTRL_SHIFT_ESCAPE" + + "K_ALT_SHIFT_A|K_ALT_SHIFT_B|K_ALT_SHIFT_C|K_ALT_SHIFT_D|K_ALT_SHIFT_E|" + + "K_ALT_SHIFT_F|K_ALT_SHIFT_G|K_ALT_SHIFT_G|K_ALT_SHIFT_H|K_ALT_SHIFT_I|" + + "K_ALT_SHIFT_J|K_ALT_SHIFT_K|K_ALT_SHIFT_L|K_ALT_SHIFT_M|K_ALT_SHIFT_N|" + + "K_ALT_SHIFT_Ñ|K_ALT_SHIFT_O|K_ALT_SHIFT_P|K_ALT_SHIFT_Q|K_ALT_SHIFT_R|" + + "K_ALT_SHIFT_S|K_ALT_SHIFT_T|K_ALT_SHIFT_U|K_ALT_SHIFT_V|K_ALT_SHIFT_W|" + + "K_ALT_SHIFT_X|K_ALT_SHIFT_Y|K_ALT_SHIFT_Z|" + + "K_ALT_SHIFT_0|K_ALT_SHIFT_1|K_ALT_SHIFT_2|K_ALT_SHIFT_3|K_ALT_SHIFT_4|" + + "K_ALT_SHIFT_5|K_ALT_SHIFT_6|K_ALT_SHIFT_7|K_ALT_SHIFT_8|K_ALT_SHIFT_9|" + + "K_ALT_SHIFT_F1|K_ALT_SHIFT_F2|K_ALT_SHIFT_F3|K_ALT_SHIFT_F4|" + + "K_ALT_SHIFT_F5|K_ALT_SHIFT_F6|K_ALT_SHIFT_F7|K_ALT_SHIFT_F8|" + + "K_ALT_SHIFT_9|K_ALT_SHIFT_10|K_ALT_SHIFT_11|K_ALT_SHIFT_12|" + + "K_ALT_SHIFT_UP|K_ALT_SHIFT_DOWN|K_ALT_SHIFT_LEFT|K_ALT_SHIFT_RIGHT|" + + "K_ALT_SHIFT_RETURN|K_ALT_SHIFT_BACKSPACE|K_ALT_SHIFT_TAB|K_ALT_SHIFT_SPACE|" + + "K_ALT_SHIFT_ESCAPE" + + "K_CTRL_ALT_SHIFT_A|K_CTRL_ALT_SHIFT_B|K_CTRL_ALT_SHIFT_C|K_CTRL_ALT_SHIFT_D|" + + "K_CTRL_ALT_SHIFT_E|K_CTRL_ALT_SHIFT_F|K_CTRL_ALT_SHIFT_G|K_CTRL_ALT_SHIFT_G|" + + "K_CTRL_ALT_SHIFT_H|K_CTRL_ALT_SHIFT_I|K_CTRL_ALT_SHIFT_J|K_CTRL_ALT_SHIFT_K|" + + "K_CTRL_ALT_SHIFT_L|K_CTRL_ALT_SHIFT_M|K_CTRL_ALT_SHIFT_N|K_CTRL_ALT_SHIFT_Ñ|" + + "K_CTRL_ALT_SHIFT_O|K_CTRL_ALT_SHIFT_P|K_CTRL_ALT_SHIFT_Q|K_CTRL_ALT_SHIFT_R|" + + "K_CTRL_ALT_SHIFT_S|K_CTRL_ALT_SHIFT_T|K_CTRL_ALT_SHIFT_U|K_CTRL_ALT_SHIFT_V|" + + "K_CTRL_ALT_SHIFT_W|K_CTRL_ALT_SHIFT_X|K_CTRL_ALT_SHIFT_Y|K_CTRL_ALT_SHIFT_Z|" + + "K_CTRL_ALT_SHIFT_0|K_CTRL_ALT_SHIFT_1|K_CTRL_ALT_SHIFT_2|K_CTRL_ALT_SHIFT_3|" + + "K_CTRL_ALT_SHIFT_4|K_CTRL_ALT_SHIFT_5|K_CTRL_ALT_SHIFT_6|K_CTRL_ALT_SHIFT_7|" + + "K_CTRL_ALT_SHIFT_8|K_CTRL_ALT_SHIFT_9|" + + "K_CTRL_ALT_SHIFT_F1|K_CTRL_ALT_SHIFT_F2|K_CTRL_ALT_SHIFT_F3|K_CTRL_ALT_SHIFT_F4|" + + "K_CTRL_ALT_SHIFT_F5|K_CTRL_ALT_SHIFT_F6|K_CTRL_ALT_SHIFT_F7|K_CTRL_ALT_SHIFT_F8|" + + "K_CTRL_ALT_SHIFT_F9|K_CTRL_ALT_SHIFT_F10|K_CTRL_ALT_SHIFT_F11|K_CTRL_ALT_SHIFT_F12|" + + "K_CTRL_ALT_SHIFT_UP|K_CTRL_ALT_SHIFT_DOWN|K_CTRL_ALT_SHIFT_LEFT|K_CTRL_ALT_SHIFT_RIGHT|" + + "K_CTRL_ALT_SHIFT_RETURN|K_CTRL_ALT_SHIFT_BACKSPACE|K_CTRL_ALT_SHIFT_TAB|" + + "K_CTRL_ALT_SHIFT_SPACE|K_CTRL_ALT_SHIFT_ESCAPE" + }; + var operations = { + commands: ":=", + expressions: { + numeric: "\\+|\\-|\\*|\\^|div|mod", + comparison: ">=|<=|==|\\/=|>|<", + boolean: "\\|\\||&&|not", + other: "\\+\\+|<\\-|\\[|\\]|\\_|\\->" + } + }; + var comments = { + line: { + double_slash: "\\/\\/.*$", + double_dash: "\\-\\-.*$", + number_sign: "#.*$" + }, + block: { start: "\\/\\*", end: "\\*\\/" }, + block_alt: { start: "\\{\\-", end: "\\-\\}" } + }; + this.$rules = { + "start": [ + { + token: "comment.line.double-slash.gobstones", + regex: comments.line.double_slash + }, + { + token: "comment.line.double-dash.gobstones", + regex: comments.line.double_dash + }, + { + token: "comment.line.number-sign.gobstones", + regex: comments.line.number_sign + }, + { + token: "comment.block.dash-asterisc.gobstones", + regex: comments.block.start, + next: "block_comment_end" + }, + { + token: "comment.block.brace-dash.gobstones", + regex: comments.block_alt.start, + next: "block_comment_alt_end" + }, + { + token: "constant.numeric.gobstones", + regex: values.numbers + }, + { + token: "string.quoted.double.gobstones", + regex: values.strings + }, + { + token: "keyword.operator.other.gobstones", + regex: operations.expressions.other + }, + { + token: "keyword.operator.numeric.gobstones", + regex: operations.expressions.numeric + }, + { + token: "keyword.operator.compare.gobstones", + regex: operations.expressions.comparison + }, + { + token: "keyword.operator.boolean.gobstones", + regex: operations.expressions.boolean + }, + { + token: this.createKeywordMapper({ + "storage.type.definitions.gobstones": definitions.standard, + "storage.type.types.gobstones": definitions.type, + "keyword.control.commands.repetitions.gobstones": control.commands.repetitions, + "keyword.control.commands.alternatives.gobstones": control.commands.alternatives, + "keyword.control.expressions.alternatives.gobstones": control.expressions.alternatives, + "constant.language.colors.gobstones": values.colors, + "constant.language.cardinals.gobstones": values.cardinals, + "constant.language.boolean.gobstones": values.booleans, + "support.function.gobstones": primitives.commands, + "support.variable.gobstones": primitives.expressions, + "variable.language.gobstones": primitives.keys + }, "identifier.gobstones"), + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, + { + token: "comma.gobstones", + regex: "," + }, + { + token: "semicolon.gobstones", + regex: ";" + }, + { + token: "lparen", + regex: "[[({]" + }, + { + token: "rparen", + regex: "[\\])}]" + }, + { + token: "text", + regex: "\\s+" + } + ], + "block_comment_end": [{ + token: "comment.block.dash-asterisc.gobstones", + regex: comments.block.end, + next: "start" + }, { + defaultToken: "comment.block.dash-asterisc.gobstones" + } + ], + "block_comment_alt_end": [{ + token: "comment.block.brace-dash.gobstones", + regex: comments.block_alt.end, + next: "start" + }, { + defaultToken: "comment.block.brace-dash.gobstones" + } + ] + }; +}; +oop.inherits(GobstonesHighlightRules, TextHighlightRules); +exports.GobstonesHighlightRules = GobstonesHighlightRules; + +}); + +ace.define("ace/mode/gobstones",["require","exports","module","ace/lib/oop","ace/mode/javascript","ace/mode/gobstones_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var JavaScriptMode = require("./javascript").Mode; +var GobstonesHighlightRules = require("./gobstones_highlight_rules").GobstonesHighlightRules; +var Mode = function () { + JavaScriptMode.call(this); + this.HighlightRules = GobstonesHighlightRules; + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, JavaScriptMode); +(function () { + this.createWorker = function () { + return null; + }; + this.$id = "ace/mode/gobstones"; + this.snippetFileId = "ace/snippets/gobstones"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/gobstones"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/0146c2f1e1f5b20320aab16922c176e9.js.gz b/web/dist/0146c2f1e1f5b20320aab16922c176e9.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..05852fc3f0b1eed1bb15b3dde9431bcf781c6d96 GIT binary patch literal 10605 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/, + next: "pop" + }, { + token: "paren.start", + regex: /#{/, + push: "start" + }, { + defaultToken: "string" + }] + }, { + stateName: "ppstring", + token: "string.start", + regex: /%[Qx]?\|/, + push: [{ + token: "constant.language.escape", + regex: extEscapeExspresssion + }, { + token: "string.end", + regex: /\|/, + next: "pop" + }, { + token: "paren.start", + regex: /#{/, + push: "start" + }, { + defaultToken: "string" + }] + }, { + stateName: "rpqstring", + token: "string.start", + regex: /%[qwir]\(/, + push: [{ + token: "string.start", + regex: /\(/, + push: "rpqstring" + }, { + token: "string.end", + regex: /\)/, + next: "pop" + }, { + defaultToken: "string" + }] + }, { + stateName: "spqstring", + token: "string.start", + regex: /%[qwir]\[/, + push: [{ + token: "string.start", + regex: /\[/, + push: "spqstring" + }, { + token: "string.end", + regex: /]/, + next: "pop" + }, { + defaultToken: "string" + }] + }, { + stateName: "fpqstring", + token: "string.start", + regex: /%[qwir]{/, + push: [{ + token: "string.start", + regex: /{/, + push: "fpqstring" + }, { + token: "string.end", + regex: /}/, + next: "pop" + }, { + defaultToken: "string" + }] + }, { + stateName: "tpqstring", + token: "string.start", + regex: /%[qwir]/, + next: "pop" + }, { + defaultToken: "string" + }] + }, { + stateName: "ppqstring", + token: "string.start", + regex: /%[qwir]\|/, + push: [{ + token: "string.end", + regex: /\|/, + next: "pop" + }, { + defaultToken: "string" + }] + }, { + token: "string.start", + regex: /'/, + push: [{ + token: "constant.language.escape", + regex: escapeExpression + }, { + token: "string.end", + regex: /'|$/, + next: "pop" + }, { + defaultToken: "string" + }] + }], { + token: "text", + regex: "::" + }, { + token: "variable.instance", + regex: "@{1,2}[a-zA-Z_\\d]+" + }, { + token: "variable.fresh", + regex: "%[a-zA-Z_\\d]+" + }, { + token: "support.class", + regex: "[A-Z][a-zA-Z_\\d]+" + }, { + token: "constant.other.symbol", + regex: "[:](?:(?:===|<=>|\\[]\\?|\\[]=|\\[]|>>|\\*\\*|<<|==|!=|>=|<=|!~|=~|<|\\+|-|\\*|\\/|%|&|\\||\\^|>|!|~)|(?:(?:[A-Za-z_]|[@$](?=[a-zA-Z0-9_]))[a-zA-Z0-9_]*[!=?]?))" + }, { + token: "constant.numeric", + regex: "[+-]?\\d(?:\\d|_(?=\\d))*(?:(?:\\.\\d(?:\\d|_(?=\\d))*)?(?:[eE][+-]?\\d+)?)?(?:_?[fF](?:32|64))?\\b" + }, { + token: "constant.numeric", + regex: intNumber + }, { + token: "constant.other.symbol", + regex: ':"', + push: [{ + token: "constant.language.escape", + regex: extEscapeExspresssion + }, { + token: "constant.other.symbol", + regex: '"', + next: "pop" + }, { + defaultToken: "constant.other.symbol" + }] + }, { + token: "constant.language.boolean", + regex: "(?:true|false)\\b" + }, { + token: "support.function", + regex: "(?:is_a\\?|nil\\?|responds_to\\?|as\\?)" + }, { + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$!?]*\\b" + }, { + token: "variable.system", + regex: "\\$\\!|\\$\\?" + }, { + token: "punctuation.separator.key-value", + regex: "=>" + }, { + stateName: "heredoc", + onMatch: function (value, currentState, stack) { + var next = "heredoc"; + var tokens = value.split(this.splitRegex); + stack.push(next, tokens[3]); + return [ + { type: "constant", value: tokens[1] }, + { type: "string", value: tokens[2] }, + { type: "support.class", value: tokens[3] }, + { type: "string", value: tokens[4] } + ]; + }, + regex: "(<<-)([']?)([\\w]+)([']?)", + rules: { + heredoc: [{ + token: "string", + regex: "^ +" + }, { + onMatch: function (value, currentState, stack) { + if (value === stack[1]) { + stack.shift(); + stack.shift(); + this.next = stack[0] || "start"; + return "support.class"; + } + this.next = ""; + return "string"; + }, + regex: ".*$", + next: "start" + }] + } + }, { + regex: "$", + token: "empty", + next: function (currentState, stack) { + if (stack[0] === "heredoc") + return stack[0]; + return currentState; + } + }, { + token: "punctuation.operator", + regex: /[.]\s*(?![.])/, + push: [{ + token: "punctuation.operator", + regex: /[.]\s*(?![.])/ + }, { + token: "support.function", + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + regex: "", + token: "empty", + next: "pop" + }] + }, { + token: "keyword.operator", + regex: "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|\\?|\\:|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\^|\\|" + }, { + token: "punctuation.operator", + regex: /[?:,;.]/ + }, { + token: "paren.lparen", + regex: "[[({]" + }, { + token: "paren.rparen", + regex: "[\\])}]" + }, { + token: "text", + regex: "\\s+" + } + ] + }; + this.normalizeRules(); +}; +oop.inherits(CrystalHighlightRules, TextHighlightRules); +exports.CrystalHighlightRules = CrystalHighlightRules; + +}); + +ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) + return false; + return /^\s*\}/.test(input); + }; + this.autoOutdent = function (doc, row) { + var line = doc.getLine(row); + var match = line.match(/^(\s*\})/); + if (!match) + return 0; + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; + var indent = this.$getIndent(doc.getLine(openBracePos.row)); + doc.replace(new Range(row, 0, row, column - 1), indent); + }; + this.$getIndent = function (line) { + return line.match(/^\s*/)[0]; + }; +}).call(MatchingBraceOutdent.prototype); +exports.MatchingBraceOutdent = MatchingBraceOutdent; + +}); + +ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var BaseFoldMode = require("./fold_mode").FoldMode; +var Range = require("../../range").Range; +var FoldMode = exports.FoldMode = function () { }; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.getFoldWidgetRange = function (session, foldStyle, row) { + var range = this.indentationBlock(session, row); + if (range) + return range; + var re = /\S/; + var line = session.getLine(row); + var startLevel = line.search(re); + if (startLevel == -1 || line[startLevel] != "#") + return; + var startColumn = line.length; + var maxRow = session.getLength(); + var startRow = row; + var endRow = row; + while (++row < maxRow) { + line = session.getLine(row); + var level = line.search(re); + if (level == -1) + continue; + if (line[level] != "#") + break; + endRow = row; + } + if (endRow > startRow) { + var endColumn = session.getLine(endRow).length; + return new Range(startRow, startColumn, endRow, endColumn); + } + }; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + var indent = line.search(/\S/); + var next = session.getLine(row + 1); + var prev = session.getLine(row - 1); + var prevIndent = prev.search(/\S/); + var nextIndent = next.search(/\S/); + if (indent == -1) { + session.foldWidgets[row - 1] = prevIndent != -1 && prevIndent < nextIndent ? "start" : ""; + return ""; + } + if (prevIndent == -1) { + if (indent == nextIndent && line[indent] == "#" && next[indent] == "#") { + session.foldWidgets[row - 1] = ""; + session.foldWidgets[row + 1] = ""; + return "start"; + } + } + else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { + if (session.getLine(row - 2).search(/\S/) == -1) { + session.foldWidgets[row - 1] = "start"; + session.foldWidgets[row + 1] = ""; + return ""; + } + } + if (prevIndent != -1 && prevIndent < indent) + session.foldWidgets[row - 1] = "start"; + else + session.foldWidgets[row - 1] = ""; + if (indent < nextIndent) + return "start"; + else + return ""; + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/crystal",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/crystal_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/behaviour/cstyle","ace/mode/folding/coffee"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var CrystalHighlightRules = require("./crystal_highlight_rules").CrystalHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var Range = require("../range").Range; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var FoldMode = require("./folding/coffee").FoldMode; +var Mode = function () { + this.HighlightRules = CrystalHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CstyleBehaviour(); + this.foldingRules = new FoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "#"; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + if (state == "start") { + var match = line.match(/^.*[\{\(\[]\s*$/); + var startingClassOrMethod = line.match(/^\s*(class|def|module)\s.*$/); + var startingDoBlock = line.match(/.*do(\s*|\s+\|.*\|\s*)$/); + var startingConditional = line.match(/^\s*(if|else|when)\s*/); + if (match || startingClassOrMethod || startingDoBlock || startingConditional) { + indent += tab; + } + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return /^\s+(end|else)$/.test(line + input) || this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, session, row) { + var line = session.getLine(row); + if (/}/.test(line)) + return this.$outdent.autoOutdent(session, row); + var indent = this.$getIndent(line); + var prevLine = session.getLine(row - 1); + var prevIndent = this.$getIndent(prevLine); + var tab = session.getTabString(); + if (prevIndent.length <= indent.length) { + if (indent.slice(-tab.length) == tab) + session.remove(new Range(row, indent.length - tab.length, row, indent.length)); + } + }; + this.$id = "ace/mode/crystal"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/crystal"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/023f0a6de254bc2caa975f56d4b61243.js.gz b/web/dist/023f0a6de254bc2caa975f56d4b61243.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..694e12144a617239a1f314df83f45f392e1c1af0 GIT binary patch literal 3978 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 k52Y(Mf5cFFibI*MduZcAvhib~6}N-@5A3`\nsnippet doctype HTML 4.01 Transitional\n\t\nsnippet doctype HTML 5\n\t\nsnippet doctype XHTML 1.0 Frameset\n\t\nsnippet doctype XHTML 1.0 Strict\n\t\nsnippet doctype XHTML 1.0 Transitional\n\t\nsnippet doctype XHTML 1.1\n\t\n# HTML Doctype 4.01 Strict\nsnippet docts\n\t\n# HTML Doctype 4.01 Transitional\nsnippet doct\n\t\n# HTML Doctype 5\nsnippet doct5\n\t\n# XHTML Doctype 1.0 Frameset\nsnippet docxf\n\t\n# XHTML Doctype 1.0 Strict\nsnippet docxs\n\t\n# XHTML Doctype 1.0 Transitional\nsnippet docxt\n\t\n# XHTML Doctype 1.1\nsnippet docx\n\t\n# html5shiv\nsnippet html5shiv\n\t\nsnippet html5printshiv\n\t\n# Attributes\nsnippet attr\n\t${1:attribute}=\"${2:property}\"\nsnippet attr+\n\t${1:attribute}=\"${2:property}\" attr+${3}\nsnippet .\n\tclass=\"${1}\"${2}\nsnippet #\n\tid=\"${1}\"${2}\nsnippet alt\n\talt=\"${1}\"${2}\nsnippet charset\n\tcharset=\"${1:utf-8}\"${2}\nsnippet data\n\tdata-${1}=\"${2:$1}\"${3}\nsnippet for\n\tfor=\"${1}\"${2}\nsnippet height\n\theight=\"${1}\"${2}\nsnippet href\n\thref=\"${1:#}\"${2}\nsnippet lang\n\tlang=\"${1:en}\"${2}\nsnippet media\n\tmedia=\"${1}\"${2}\nsnippet name\n\tname=\"${1}\"${2}\nsnippet rel\n\trel=\"${1}\"${2}\nsnippet scope\n\tscope=\"${1:row}\"${2}\nsnippet src\n\tsrc=\"${1}\"${2}\nsnippet title=\n\ttitle=\"${1}\"${2}\nsnippet type\n\ttype=\"${1}\"${2}\nsnippet value\n\tvalue=\"${1}\"${2}\nsnippet width\n\twidth=\"${1}\"${2}\n# Elements\nsnippet a\n\t${2:$1}\nsnippet a.\n\t${3:$1}\nsnippet a#\n\t${3:$1}\nsnippet a:ext\n\t${2:$1}\nsnippet a:mail\n\t${3:email me}\nsnippet abbr\n\t${2}\nsnippet address\n\t
\n\t\t${1}\n\t
\nsnippet area\n\t\"${4}\"\nsnippet area+\n\t\"${4}\"\n\tarea+${5}\nsnippet area:c\n\t\"${3}\"\nsnippet area:d\n\t\"${3}\"\nsnippet area:p\n\t\"${3}\"\nsnippet area:r\n\t\"${3}\"\nsnippet article\n\t
\n\t\t${1}\n\t
\nsnippet article.\n\t
\n\t\t${2}\n\t
\nsnippet article#\n\t
\n\t\t${2}\n\t
\nsnippet aside\n\t\nsnippet aside.\n\t\nsnippet aside#\n\t\nsnippet audio\n\t\nsnippet b\n\t${1}\nsnippet base\n\t\nsnippet bdi\n\t${1}\nsnippet bdo\n\t${2}\nsnippet bdo:l\n\t${1}\nsnippet bdo:r\n\t${1}\nsnippet blockquote\n\t
\n\t\t${1}\n\t
\nsnippet body\n\t\n\t\t${1}\n\t\nsnippet br\n\t
${1}\nsnippet button\n\t\nsnippet button.\n\t\nsnippet button#\n\t\nsnippet button:s\n\t\nsnippet button:r\n\t\nsnippet canvas\n\t\n\t\t${1}\n\t\nsnippet caption\n\t${1}\nsnippet cite\n\t${1}\nsnippet code\n\t${1}\nsnippet col\n\t${1}\nsnippet col+\n\t\n\tcol+${1}\nsnippet colgroup\n\t\n\t\t${1}\n\t\nsnippet colgroup+\n\t\n\t\t\n\t\tcol+${1}\n\t\nsnippet command\n\t\nsnippet command:c\n\t\nsnippet command:r\n\t\nsnippet datagrid\n\t\n\t\t${1}\n\t\nsnippet datalist\n\t\n\t\t${1}\n\t\nsnippet datatemplate\n\t\n\t\t${1}\n\t\nsnippet dd\n\t
${1}
\nsnippet dd.\n\t
${2}
\nsnippet dd#\n\t
${2}
\nsnippet del\n\t${1}\nsnippet details\n\t
${1}
\nsnippet dfn\n\t${1}\nsnippet dialog\n\t\n\t\t${1}\n\t\nsnippet div\n\t
\n\t\t${1}\n\t
\nsnippet div.\n\t
\n\t\t${2}\n\t
\nsnippet div#\n\t
\n\t\t${2}\n\t
\nsnippet dl\n\t
\n\t\t${1}\n\t
\nsnippet dl.\n\t
\n\t\t${2}\n\t
\nsnippet dl#\n\t
\n\t\t${2}\n\t
\nsnippet dl+\n\t
\n\t\t
${1}
\n\t\t
${2}
\n\t\tdt+${3}\n\t
\nsnippet dt\n\t
${1}
\nsnippet dt.\n\t
${2}
\nsnippet dt#\n\t
${2}
\nsnippet dt+\n\t
${1}
\n\t
${2}
\n\tdt+${3}\nsnippet em\n\t${1}\nsnippet embed\n\t\nsnippet fieldset\n\t
\n\t\t${1}\n\t
\nsnippet fieldset.\n\t
\n\t\t${2}\n\t
\nsnippet fieldset#\n\t
\n\t\t${2}\n\t
\nsnippet fieldset+\n\t
\n\t\t${1}\n\t\t${2}\n\t
\n\tfieldset+${3}\nsnippet figcaption\n\t
${1}
\nsnippet figure\n\t
${1}
\nsnippet footer\n\t
\n\t\t${1}\n\t
\nsnippet footer.\n\t
\n\t\t${2}\n\t
\nsnippet footer#\n\t
\n\t\t${2}\n\t
\nsnippet form\n\t
\n\t\t${3}\n\t
\nsnippet form.\n\t
\n\t\t${4}\n\t
\nsnippet form#\n\t
\n\t\t${4}\n\t
\nsnippet h1\n\t

${1}

\nsnippet h1.\n\t

${2}

\nsnippet h1#\n\t

${2}

\nsnippet h2\n\t

${1}

\nsnippet h2.\n\t

${2}

\nsnippet h2#\n\t

${2}

\nsnippet h3\n\t

${1}

\nsnippet h3.\n\t

${2}

\nsnippet h3#\n\t

${2}

\nsnippet h4\n\t

${1}

\nsnippet h4.\n\t

${2}

\nsnippet h4#\n\t

${2}

\nsnippet h5\n\t
${1}
\nsnippet h5.\n\t
${2}
\nsnippet h5#\n\t
${2}
\nsnippet h6\n\t
${1}
\nsnippet h6.\n\t
${2}
\nsnippet h6#\n\t
${2}
\nsnippet head\n\t\n\t\t\n\n\t\t${1:`substitute(Filename('', 'Page Title'), '^.', '\\u&', '')`}\n\t\t${2}\n\t\nsnippet header\n\t
\n\t\t${1}\n\t
\nsnippet header.\n\t
\n\t\t${2}\n\t
\nsnippet header#\n\t
\n\t\t${2}\n\t
\nsnippet hgroup\n\t
\n\t\t${1}\n\t
\nsnippet hgroup.\n\t
\n\t\t${2}\n\t
\nsnippet hr\n\t
${1}\nsnippet html\n\t\n\t${1}\n\t\nsnippet xhtml\n\t\n\t${1}\n\t\nsnippet html5\n\t\n\t\n\t\t\n\t\t\t\n\t\t\t${1:`substitute(Filename('', 'Page Title'), '^.', '\\u&', '')`}\n\t\t\t${2:meta}\n\t\t\n\t\t\n\t\t\t${3:body}\n\t\t\n\t\nsnippet xhtml5\n\t\n\t\n\t\t\n\t\t\t\n\t\t\t${1:`substitute(Filename('', 'Page Title'), '^.', '\\u&', '')`}\n\t\t\t${2:meta}\n\t\t\n\t\t\n\t\t\t${3:body}\n\t\t\n\t\nsnippet i\n\t${1}\nsnippet iframe\n\t${2}\nsnippet iframe.\n\t${3}\nsnippet iframe#\n\t${3}\nsnippet img\n\t\"${2}\"${3}\nsnippet img.\n\t\"${3}\"${4}\nsnippet img#\n\t\"${3}\"${4}\nsnippet input\n\t${5}\nsnippet input.\n\t${6}\nsnippet input:text\n\t${4}\nsnippet input:submit\n\t${4}\nsnippet input:hidden\n\t${4}\nsnippet input:button\n\t${4}\nsnippet input:image\n\t${5}\nsnippet input:checkbox\n\t${3}\nsnippet input:radio\n\t${3}\nsnippet input:color\n\t${4}\nsnippet input:date\n\t${4}\nsnippet input:datetime\n\t${4}\nsnippet input:datetime-local\n\t${4}\nsnippet input:email\n\t${4}\nsnippet input:file\n\t${4}\nsnippet input:month\n\t${4}\nsnippet input:number\n\t${4}\nsnippet input:password\n\t${4}\nsnippet input:range\n\t${4}\nsnippet input:reset\n\t${4}\nsnippet input:search\n\t${4}\nsnippet input:time\n\t${4}\nsnippet input:url\n\t${4}\nsnippet input:week\n\t${4}\nsnippet ins\n\t${1}\nsnippet kbd\n\t${1}\nsnippet keygen\n\t${1}\nsnippet label\n\t\nsnippet label:i\n\t\n\t${7}\nsnippet label:s\n\t\n\t\nsnippet legend\n\t${1}\nsnippet legend+\n\t${1}\nsnippet li\n\t
  • ${1}
  • \nsnippet li.\n\t
  • ${2}
  • \nsnippet li+\n\t
  • ${1}
  • \n\tli+${2}\nsnippet lia\n\t
  • ${1}
  • \nsnippet lia+\n\t
  • ${1}
  • \n\tlia+${3}\nsnippet link\n\t${5}\nsnippet link:atom\n\t${2}\nsnippet link:css\n\t${4}\nsnippet link:favicon\n\t${2}\nsnippet link:rss\n\t${2}\nsnippet link:touch\n\t${2}\nsnippet map\n\t\n\t\t${2}\n\t\nsnippet map.\n\t\n\t\t${3}\n\t\nsnippet map#\n\t\n\t\t${3}\n\t\nsnippet map+\n\t\n\t\t\"${5}\"${6}\n\t${7}\nsnippet mark\n\t${1}\nsnippet menu\n\t\n\t\t${1}\n\t\nsnippet menu:c\n\t\n\t\t${1}\n\t\nsnippet menu:t\n\t\n\t\t${1}\n\t\nsnippet meta\n\t${3}\nsnippet meta:compat\n\t${3}\nsnippet meta:refresh\n\t${3}\nsnippet meta:utf\n\t${3}\nsnippet meter\n\t${1}\nsnippet nav\n\t\nsnippet nav.\n\t\nsnippet nav#\n\t\nsnippet noscript\n\t\nsnippet object\n\t\n\t\t${3}\n\t${4}\n# Embed QT Movie\nsnippet movie\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t${6}\nsnippet ol\n\t
      \n\t\t${1}\n\t
    \nsnippet ol.\n\t
      \n\t\t${2}\n\t
    \nsnippet ol#\n\t
      \n\t\t${2}\n\t
    \nsnippet ol+\n\t
      \n\t\t
    1. ${1}
    2. \n\t\tli+${2}\n\t
    \nsnippet opt\n\t\nsnippet opt+\n\t\n\topt+${3}\nsnippet optt\n\t\nsnippet optgroup\n\t\n\t\t\n\t\topt+${3}\n\t\nsnippet output\n\t${1}\nsnippet p\n\t

    ${1}

    \nsnippet param\n\t${3}\nsnippet pre\n\t
    \n\t\t${1}\n\t
    \nsnippet progress\n\t${1}\nsnippet q\n\t${1}\nsnippet rp\n\t${1}\nsnippet rt\n\t${1}\nsnippet ruby\n\t\n\t\t${1}\n\t\nsnippet s\n\t${1}\nsnippet samp\n\t\n\t\t${1}\n\t\nsnippet script\n\t\nsnippet scriptsrc\n\t\nsnippet newscript\n\t\nsnippet newscriptsrc\n\t\nsnippet section\n\t
    \n\t\t${1}\n\t
    \nsnippet section.\n\t
    \n\t\t${2}\n\t
    \nsnippet section#\n\t
    \n\t\t${2}\n\t
    \nsnippet select\n\t\nsnippet select.\n\t\nsnippet select+\n\t\nsnippet small\n\t${1}\nsnippet source\n\t\nsnippet span\n\t${1}\nsnippet strong\n\t${1}\nsnippet style\n\t\nsnippet sub\n\t${1}\nsnippet summary\n\t\n\t\t${1}\n\t\nsnippet sup\n\t${1}\nsnippet table\n\t\n\t\t${2}\n\t
    \nsnippet table.\n\t\n\t\t${3}\n\t
    \nsnippet table#\n\t\n\t\t${3}\n\t
    \nsnippet tbody\n\t\n\t\t${1}\n\t\nsnippet td\n\t${1}\nsnippet td.\n\t${2}\nsnippet td#\n\t${2}\nsnippet td+\n\t${1}\n\ttd+${2}\nsnippet textarea\n\t${6}\nsnippet tfoot\n\t\n\t\t${1}\n\t\nsnippet th\n\t${1}\nsnippet th.\n\t${2}\nsnippet th#\n\t${2}\nsnippet th+\n\t${1}\n\tth+${2}\nsnippet thead\n\t\n\t\t${1}\n\t\nsnippet time\n\t\nsnippet title\n\t${1:`substitute(Filename('', 'Page Title'), '^.', '\\u&', '')`}\nsnippet tr\n\t\n\t\t${1}\n\t\nsnippet tr+\n\t\n\t\t${1}\n\t\ttd+${2}\n\t\nsnippet track\n\t${5}${6}\nsnippet ul\n\t
      \n\t\t${1}\n\t
    \nsnippet ul.\n\t
      \n\t\t${2}\n\t
    \nsnippet ul#\n\t
      \n\t\t${2}\n\t
    \nsnippet ul+\n\t
      \n\t\t
    • ${1}
    • \n\t\tli+${2}\n\t
    \nsnippet var\n\t${1}\nsnippet video\n\t${8}\nsnippet wbr\n\t${1}\n"; + +}); + +ace.define("ace/snippets/liquid",["require","exports","module","ace/snippets/liquid.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./liquid.snippets"); +exports.scope = "liquid"; + +}); (function() { + ace.require(["ace/snippets/liquid"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/027e36a1f41877209eca741a54467a40.js.gz b/web/dist/027e36a1f41877209eca741a54467a40.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..ce507cd1abd1ef04d6b58ef957562381f07bac16 GIT binary patch literal 4616 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 literal 0 HcmV?d00001 diff --git a/web/dist/031eff2932c3edf3ad690d1e3abe2dde.js b/web/dist/031eff2932c3edf3ad690d1e3abe2dde.js new file mode 100644 index 00000000..5543cfa3 --- /dev/null +++ b/web/dist/031eff2932c3edf3ad690d1e3abe2dde.js @@ -0,0 +1,199 @@ +ace.define("ace/mode/pascal_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var PascalHighlightRules = function () { + var keywordMapper = this.createKeywordMapper({ + "keyword.control": "absolute|abstract|all|and|and_then|array|as|asm|attribute|begin|bindable|case|class" + + "|const|constructor|destructor|div|do|do|else|end|except|export|exports|external|far|file|finalization" + + "|finally|for|forward|goto|if|implementation|import|in|inherited|initialization|interface|interrupt|is" + + "|label|library|mod|module|name|near|nil|not|object|of|only|operator|or|or_else|otherwise|packed|pow|private" + + "|program|property|protected|public|published|qualified|record|repeat|resident|restricted|segment|set|shl|shr" + + "|then|to|try|type|unit|until|uses|value|var|view|virtual|while|with|xor" + }, "identifier", true); + this.$rules = { + start: [{ + caseInsensitive: true, + token: ['variable', "text", + 'storage.type.prototype', + 'entity.name.function.prototype' + ], + regex: '\\b(function|procedure)(\\s+)(\\w+)(\\.\\w+)?(?=(?:\\(.*?\\))?;\\s*(?:attribute|forward|external))' + }, { + caseInsensitive: true, + token: ['variable', "text", 'storage.type.function', 'entity.name.function'], + regex: '\\b(function|procedure)(\\s+)(\\w+)(\\.\\w+)?' + }, { + caseInsensitive: true, + token: keywordMapper, + regex: /\b[a-z_]+\b/ + }, { + token: 'constant.numeric', + regex: '\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b' + }, { + token: 'punctuation.definition.comment', + regex: '--.*$' + }, { + token: 'punctuation.definition.comment', + regex: '//.*$' + }, { + token: 'punctuation.definition.comment', + regex: '\\(\\*', + push: [{ + token: 'punctuation.definition.comment', + regex: '\\*\\)', + next: 'pop' + }, + { defaultToken: 'comment.block.one' } + ] + }, { + token: 'punctuation.definition.comment', + regex: '\\{', + push: [{ + token: 'punctuation.definition.comment', + regex: '\\}', + next: 'pop' + }, + { defaultToken: 'comment.block.two' } + ] + }, { + token: 'punctuation.definition.string.begin', + regex: '"', + push: [{ token: 'constant.character.escape', regex: '\\\\.' }, + { + token: 'punctuation.definition.string.end', + regex: '"', + next: 'pop' + }, + { defaultToken: 'string.quoted.double' } + ] + }, { + token: 'punctuation.definition.string.begin', + regex: '\'', + push: [{ + token: 'constant.character.escape.apostrophe', + regex: '\'\'' + }, + { + token: 'punctuation.definition.string.end', + regex: '\'', + next: 'pop' + }, + { defaultToken: 'string.quoted.single' } + ] + }, { + token: 'keyword.operator', + regex: '[+\\-;,/*%]|:=|=' + } + ] + }; + this.normalizeRules(); +}; +oop.inherits(PascalHighlightRules, TextHighlightRules); +exports.PascalHighlightRules = PascalHighlightRules; + +}); + +ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var BaseFoldMode = require("./fold_mode").FoldMode; +var Range = require("../../range").Range; +var FoldMode = exports.FoldMode = function () { }; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.getFoldWidgetRange = function (session, foldStyle, row) { + var range = this.indentationBlock(session, row); + if (range) + return range; + var re = /\S/; + var line = session.getLine(row); + var startLevel = line.search(re); + if (startLevel == -1 || line[startLevel] != "#") + return; + var startColumn = line.length; + var maxRow = session.getLength(); + var startRow = row; + var endRow = row; + while (++row < maxRow) { + line = session.getLine(row); + var level = line.search(re); + if (level == -1) + continue; + if (line[level] != "#") + break; + endRow = row; + } + if (endRow > startRow) { + var endColumn = session.getLine(endRow).length; + return new Range(startRow, startColumn, endRow, endColumn); + } + }; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + var indent = line.search(/\S/); + var next = session.getLine(row + 1); + var prev = session.getLine(row - 1); + var prevIndent = prev.search(/\S/); + var nextIndent = next.search(/\S/); + if (indent == -1) { + session.foldWidgets[row - 1] = prevIndent != -1 && prevIndent < nextIndent ? "start" : ""; + return ""; + } + if (prevIndent == -1) { + if (indent == nextIndent && line[indent] == "#" && next[indent] == "#") { + session.foldWidgets[row - 1] = ""; + session.foldWidgets[row + 1] = ""; + return "start"; + } + } + else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { + if (session.getLine(row - 2).search(/\S/) == -1) { + session.foldWidgets[row - 1] = "start"; + session.foldWidgets[row + 1] = ""; + return ""; + } + } + if (prevIndent != -1 && prevIndent < indent) + session.foldWidgets[row - 1] = "start"; + else + session.foldWidgets[row - 1] = ""; + if (indent < nextIndent) + return "start"; + else + return ""; + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/pascal",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/pascal_highlight_rules","ace/mode/folding/coffee"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ +"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var PascalHighlightRules = require("./pascal_highlight_rules").PascalHighlightRules; +var FoldMode = require("./folding/coffee").FoldMode; +var Mode = function () { + this.HighlightRules = PascalHighlightRules; + this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = ["--", "//"]; + this.blockComment = [ + { start: "(*", end: "*)" }, + { start: "{", end: "}" } + ]; + this.$id = "ace/mode/pascal"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/pascal"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/032307ff50be9245a1b1a55a5412cbba.js b/web/dist/032307ff50be9245a1b1a55a5412cbba.js new file mode 100644 index 00000000..478e4a4c --- /dev/null +++ b/web/dist/032307ff50be9245a1b1a55a5412cbba.js @@ -0,0 +1,18 @@ +ace.define("ace/theme/tomorrow_night_blue.css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-tomorrow-night-blue .ace_gutter {\n background: #00204b;\n color: #7388b5\n}\n\n.ace-tomorrow-night-blue .ace_print-margin {\n width: 1px;\n background: #00204b\n}\n\n.ace-tomorrow-night-blue {\n background-color: #002451;\n color: #FFFFFF\n}\n\n.ace-tomorrow-night-blue .ace_constant.ace_other,\n.ace-tomorrow-night-blue .ace_cursor {\n color: #FFFFFF\n}\n\n.ace-tomorrow-night-blue .ace_marker-layer .ace_selection {\n background: #003F8E\n}\n\n.ace-tomorrow-night-blue.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #002451;\n}\n\n.ace-tomorrow-night-blue .ace_marker-layer .ace_step {\n background: rgb(127, 111, 19)\n}\n\n.ace-tomorrow-night-blue .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid #404F7D\n}\n\n.ace-tomorrow-night-blue .ace_marker-layer .ace_active-line {\n background: #00346E\n}\n\n.ace-tomorrow-night-blue .ace_gutter-active-line {\n background-color: #022040\n}\n\n.ace-tomorrow-night-blue .ace_marker-layer .ace_selected-word {\n border: 1px solid #003F8E\n}\n\n.ace-tomorrow-night-blue .ace_invisible {\n color: #404F7D\n}\n\n.ace-tomorrow-night-blue .ace_keyword,\n.ace-tomorrow-night-blue .ace_meta,\n.ace-tomorrow-night-blue .ace_storage,\n.ace-tomorrow-night-blue .ace_storage.ace_type,\n.ace-tomorrow-night-blue .ace_support.ace_type {\n color: #EBBBFF\n}\n\n.ace-tomorrow-night-blue .ace_keyword.ace_operator {\n color: #99FFFF\n}\n\n.ace-tomorrow-night-blue .ace_constant.ace_character,\n.ace-tomorrow-night-blue .ace_constant.ace_language,\n.ace-tomorrow-night-blue .ace_constant.ace_numeric,\n.ace-tomorrow-night-blue .ace_keyword.ace_other.ace_unit,\n.ace-tomorrow-night-blue .ace_support.ace_constant,\n.ace-tomorrow-night-blue .ace_variable.ace_parameter {\n color: #FFC58F\n}\n\n.ace-tomorrow-night-blue .ace_invalid {\n color: #FFFFFF;\n background-color: #F99DA5\n}\n\n.ace-tomorrow-night-blue .ace_invalid.ace_deprecated {\n color: #FFFFFF;\n background-color: #EBBBFF\n}\n\n.ace-tomorrow-night-blue .ace_fold {\n background-color: #BBDAFF;\n border-color: #FFFFFF\n}\n\n.ace-tomorrow-night-blue .ace_entity.ace_name.ace_function,\n.ace-tomorrow-night-blue .ace_support.ace_function,\n.ace-tomorrow-night-blue .ace_variable {\n color: #BBDAFF\n}\n\n.ace-tomorrow-night-blue .ace_support.ace_class,\n.ace-tomorrow-night-blue .ace_support.ace_type {\n color: #FFEEAD\n}\n\n.ace-tomorrow-night-blue .ace_heading,\n.ace-tomorrow-night-blue .ace_markup.ace_heading,\n.ace-tomorrow-night-blue .ace_string {\n color: #D1F1A9\n}\n\n.ace-tomorrow-night-blue .ace_entity.ace_name.ace_tag,\n.ace-tomorrow-night-blue .ace_entity.ace_other.ace_attribute-name,\n.ace-tomorrow-night-blue .ace_meta.ace_tag,\n.ace-tomorrow-night-blue .ace_string.ace_regexp,\n.ace-tomorrow-night-blue .ace_variable {\n color: #FF9DA4\n}\n\n.ace-tomorrow-night-blue .ace_comment {\n color: #7285B7\n}\n\n.ace-tomorrow-night-blue .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYJDzqfwPAANXAeNsiA+ZAAAAAElFTkSuQmCC) right repeat-y\n}\n\n.ace-tomorrow-night-blue .ace_indent-guide-active {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y;\n}\n"; + +}); + +ace.define("ace/theme/tomorrow_night_blue",["require","exports","module","ace/theme/tomorrow_night_blue.css","ace/lib/dom"], function(require, exports, module){exports.isDark = true; +exports.cssClass = "ace-tomorrow-night-blue"; +exports.cssText = require("./tomorrow_night_blue.css"); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass, false); + +}); (function() { + ace.require(["ace/theme/tomorrow_night_blue"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/036680d9c1d332cf478c5823cd2a47db.js b/web/dist/036680d9c1d332cf478c5823cd2a47db.js new file mode 100644 index 00000000..b8490539 --- /dev/null +++ b/web/dist/036680d9c1d332cf478c5823cd2a47db.js @@ -0,0 +1,9 @@ + +; (function() { + ace.require(["ace/snippets/groovy"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/039af9192b9bb277966ceb4e4ce29c41.js b/web/dist/039af9192b9bb277966ceb4e4ce29c41.js new file mode 100644 index 00000000..b42b0d2f --- /dev/null +++ b/web/dist/039af9192b9bb277966ceb4e4ce29c41.js @@ -0,0 +1,16 @@ +ace.define("ace/snippets/javascript.snippets",["require","exports","module"], function(require, exports, module){module.exports = "# Prototype\nsnippet proto\n\t${1:class_name}.prototype.${2:method_name} = function(${3:first_argument}) {\n\t\t${4:// body...}\n\t};\n# Function\nsnippet fun\n\tfunction ${1?:function_name}(${2:argument}) {\n\t\t${3:// body...}\n\t}\n# Anonymous Function\nregex /((=)\\s*|(:)\\s*|(\\()|\\b)/f/(\\))?/\nsnippet f\n\tfunction${M1?: ${1:functionName}}($2) {\n\t\t${0:$TM_SELECTED_TEXT}\n\t}${M2?;}${M3?,}${M4?)}\n# Immediate function\ntrigger \\(?f\\(\nendTrigger \\)?\nsnippet f(\n\t(function(${1}) {\n\t\t${0:${TM_SELECTED_TEXT:/* code */}}\n\t}(${1}));\n# if\nsnippet if\n\tif (${1:true}) {\n\t\t${0}\n\t}\n# if ... else\nsnippet ife\n\tif (${1:true}) {\n\t\t${2}\n\t} else {\n\t\t${0}\n\t}\n# tertiary conditional\nsnippet ter\n\t${1:/* condition */} ? ${2:a} : ${3:b}\n# switch\nsnippet switch\n\tswitch (${1:expression}) {\n\t\tcase '${3:case}':\n\t\t\t${4:// code}\n\t\t\tbreak;\n\t\t${5}\n\t\tdefault:\n\t\t\t${2:// code}\n\t}\n# case\nsnippet case\n\tcase '${1:case}':\n\t\t${2:// code}\n\t\tbreak;\n\t${3}\n\n# while (...) {...}\nsnippet wh\n\twhile (${1:/* condition */}) {\n\t\t${0:/* code */}\n\t}\n# try\nsnippet try\n\ttry {\n\t\t${0:/* code */}\n\t} catch (e) {}\n# do...while\nsnippet do\n\tdo {\n\t\t${2:/* code */}\n\t} while (${1:/* condition */});\n# Object Method\nsnippet :f\nregex /([,{[])|^\\s*/:f/\n\t${1:method_name}: function(${2:attribute}) {\n\t\t${0}\n\t}${3:,}\n# setTimeout function\nsnippet setTimeout\nregex /\\b/st|timeout|setTimeo?u?t?/\n\tsetTimeout(function() {${3:$TM_SELECTED_TEXT}}, ${1:10});\n# Get Elements\nsnippet gett\n\tgetElementsBy${1:TagName}('${2}')${3}\n# Get Element\nsnippet get\n\tgetElementBy${1:Id}('${2}')${3}\n# console.log (Firebug)\nsnippet cl\n\tconsole.log(${1});\n# return\nsnippet ret\n\treturn ${1:result}\n# for (property in object ) { ... }\nsnippet fori\n\tfor (var ${1:prop} in ${2:Things}) {\n\t\t${0:$2[$1]}\n\t}\n# hasOwnProperty\nsnippet has\n\thasOwnProperty(${1})\n# docstring\nsnippet /**\n\t/**\n\t * ${1:description}\n\t *\n\t */\nsnippet @par\nregex /^\\s*\\*\\s*/@(para?m?)?/\n\t@param {${1:type}} ${2:name} ${3:description}\nsnippet @ret\n\t@return {${1:type}} ${2:description}\n# JSON.parse\nsnippet jsonp\n\tJSON.parse(${1:jstr});\n# JSON.stringify\nsnippet jsons\n\tJSON.stringify(${1:object});\n# self-defining function\nsnippet sdf\n\tvar ${1:function_name} = function(${2:argument}) {\n\t\t${3:// initial code ...}\n\n\t\t$1 = function($2) {\n\t\t\t${4:// main code}\n\t\t};\n\t}\n# singleton\nsnippet sing\n\tfunction ${1:Singleton} (${2:argument}) {\n\t\t// the cached instance\n\t\tvar instance;\n\n\t\t// rewrite the constructor\n\t\t$1 = function $1($2) {\n\t\t\treturn instance;\n\t\t};\n\t\t\n\t\t// carry over the prototype properties\n\t\t$1.prototype = this;\n\n\t\t// the instance\n\t\tinstance = new $1();\n\n\t\t// reset the constructor pointer\n\t\tinstance.constructor = $1;\n\n\t\t${3:// code ...}\n\n\t\treturn instance;\n\t}\n# class\nsnippet class\nregex /^\\s*/clas{0,2}/\n\tvar ${1:class} = function(${20}) {\n\t\t$40$0\n\t};\n\t\n\t(function() {\n\t\t${60:this.prop = \"\"}\n\t}).call(${1:class}.prototype);\n\t\n\texports.${1:class} = ${1:class};\n# \nsnippet for-\n\tfor (var ${1:i} = ${2:Things}.length; ${1:i}--; ) {\n\t\t${0:${2:Things}[${1:i}];}\n\t}\n# for (...) {...}\nsnippet for\n\tfor (var ${1:i} = 0; $1 < ${2:Things}.length; $1++) {\n\t\t${3:$2[$1]}$0\n\t}\n# for (...) {...} (Improved Native For-Loop)\nsnippet forr\n\tfor (var ${1:i} = ${2:Things}.length - 1; $1 >= 0; $1--) {\n\t\t${3:$2[$1]}$0\n\t}\n\n\n#modules\nsnippet def\n\tdefine(function(require, exports, module) {\n\t\"use strict\";\n\tvar ${1/.*\\///} = require(\"${1}\");\n\t\n\t$TM_SELECTED_TEXT\n\t});\nsnippet req\nguard ^\\s*\n\tvar ${1/.*\\///} = require(\"${1}\");\n\t$0\nsnippet requ\nguard ^\\s*\n\tvar ${1/.*\\/(.)/\\u$1/} = require(\"${1}\").${1/.*\\/(.)/\\u$1/};\n\t$0\n"; + +}); + +ace.define("ace/snippets/javascript",["require","exports","module","ace/snippets/javascript.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./javascript.snippets"); +exports.scope = "javascript"; + +}); (function() { + ace.require(["ace/snippets/javascript"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/03c0f1c2c4d4c2b6fa956a3e05de8ce4.js b/web/dist/03c0f1c2c4d4c2b6fa956a3e05de8ce4.js new file mode 100644 index 00000000..e9c0f6aa --- /dev/null +++ b/web/dist/03c0f1c2c4d4c2b6fa956a3e05de8ce4.js @@ -0,0 +1,18 @@ +ace.define("ace/theme/chaos.css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-chaos .ace_gutter {\n background: #141414;\n color: #595959;\n border-right: 1px solid #282828;\n}\n.ace-chaos .ace_gutter-cell.ace_warning {\n background-image: none;\n background: #FC0;\n border-left: none;\n padding-left: 0;\n color: #000;\n}\n.ace-chaos .ace_gutter-cell.ace_error {\n background-position: -6px center;\n background-image: none;\n background: #F10;\n border-left: none;\n padding-left: 0;\n color: #000;\n}\n.ace-chaos .ace_print-margin {\n border-left: 1px solid #555;\n right: 0;\n background: #1D1D1D;\n}\n.ace-chaos {\n background-color: #161616;\n color: #E6E1DC;\n}\n\n.ace-chaos .ace_cursor {\n border-left: 2px solid #FFFFFF;\n}\n.ace-chaos .ace_cursor.ace_overwrite {\n border-left: 0px;\n border-bottom: 1px solid #FFFFFF;\n}\n.ace-chaos .ace_marker-layer .ace_selection {\n background: #494836;\n}\n.ace-chaos .ace_marker-layer .ace_step {\n background: rgb(198, 219, 174);\n}\n.ace-chaos .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid #FCE94F;\n}\n.ace-chaos .ace_marker-layer .ace_active-line {\n background: #333;\n}\n.ace-chaos .ace_gutter-active-line {\n background-color: #222;\n}\n.ace-chaos .ace_invisible {\n color: #404040;\n}\n.ace-chaos .ace_keyword {\n color:#00698F;\n}\n.ace-chaos .ace_keyword.ace_operator {\n color:#FF308F;\n}\n.ace-chaos .ace_constant {\n color:#1EDAFB;\n}\n.ace-chaos .ace_constant.ace_language {\n color:#FDC251;\n}\n.ace-chaos .ace_constant.ace_library {\n color:#8DFF0A;\n}\n.ace-chaos .ace_constant.ace_numeric {\n color:#58C554;\n}\n.ace-chaos .ace_invalid {\n color:#FFFFFF;\n background-color:#990000;\n}\n.ace-chaos .ace_invalid.ace_deprecated {\n color:#FFFFFF;\n background-color:#990000;\n}\n.ace-chaos .ace_support {\n color: #999;\n}\n.ace-chaos .ace_support.ace_function {\n color:#00AEEF;\n}\n.ace-chaos .ace_function {\n color:#00AEEF;\n}\n.ace-chaos .ace_string {\n color:#58C554;\n}\n.ace-chaos .ace_comment {\n color:#555;\n font-style:italic;\n padding-bottom: 0px;\n}\n.ace-chaos .ace_variable {\n color:#997744;\n}\n.ace-chaos .ace_meta.ace_tag {\n color:#BE53E6;\n}\n.ace-chaos .ace_entity.ace_other.ace_attribute-name {\n color:#FFFF89;\n}\n.ace-chaos .ace_markup.ace_underline {\n text-decoration: underline;\n}\n.ace-chaos .ace_fold-widget {\n text-align: center;\n}\n\n.ace-chaos .ace_fold-widget:hover {\n color: #777;\n}\n\n.ace-chaos .ace_fold-widget.ace_start,\n.ace-chaos .ace_fold-widget.ace_end,\n.ace-chaos .ace_fold-widget.ace_closed{\n background: none !important;\n border: none;\n box-shadow: none;\n}\n\n.ace-chaos .ace_fold-widget.ace_start:after {\n content: '\u25BE'\n}\n\n.ace-chaos .ace_fold-widget.ace_end:after {\n content: '\u25B4'\n}\n\n.ace-chaos .ace_fold-widget.ace_closed:after {\n content: '\u2023'\n}\n\n.ace-chaos .ace_indent-guide {\n border-right:1px dotted #333333;\n margin-right:-1px;\n}\n\n.ace-chaos .ace_indent-guide-active {\n border-right:1px dotted #afafaf;\n margin-right:-1px;\n}\n\n.ace-chaos .ace_fold { \n background: #222; \n border-radius: 3px; \n color: #7AF; \n border: none; \n}\n.ace-chaos .ace_fold:hover {\n background: #CCC; \n color: #000;\n}\n"; + +}); + +ace.define("ace/theme/chaos",["require","exports","module","ace/theme/chaos.css","ace/lib/dom"], function(require, exports, module){exports.isDark = true; +exports.cssClass = "ace-chaos"; +exports.cssText = require("./chaos.css"); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass, false); + +}); (function() { + ace.require(["ace/theme/chaos"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/0410ca02b96655ac3c08452105cdad32.js b/web/dist/0410ca02b96655ac3c08452105cdad32.js new file mode 100644 index 00000000..07520db0 --- /dev/null +++ b/web/dist/0410ca02b96655ac3c08452105cdad32.js @@ -0,0 +1,168 @@ +ace.define("ace/mode/robot_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){'use strict'; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var RobotHighlightRules = function () { + var builtinConstantsRegex = new RegExp(/\$\{CURDIR\}|\$\{TEMPDIR\}|\$\{EXECDIR\}|\$\{\/\}|\$\{\:\}|\$\{\\n\}|\$\{true\}|\$\{false\}|\$\{none\}|\$\{null\}|\$\{space(?:\s*\*\s+[0-9]+)?\}|\$\{empty\}|&\{empty\}|@\{empty\}|\$\{TEST NAME\}|@\{TEST[\s_]TAGS\}|\$\{TEST[\s_]DOCUMENTATION\}|\$\{TEST[\s_]STATUS\}|\$\{TEST[\s_]MESSAGE\}|\$\{PREV[\s_]TEST[\s_]NAME\}|\$\{PREV[\s_]TEST[\s_]STATUS\}|\$\{PREV[\s_]TEST[\s_]MESSAGE\}|\$\{SUITE[\s_]NAME\}|\$\{SUITE[\s_]SOURCE\}|\$\{SUITE[\s_]DOCUMENTATION\}|&\{SUITE[\s_]METADATA\}|\$\{SUITE[\s_]STATUS\}|\$\{SUITE[\s_]MESSAGE\}|\$\{KEYWORD[\s_]STATUS\}|\$\{KEYWORD[\s_]MESSAGE\}|\$\{LOG[\s_]LEVEL\}|\$\{OUTPUT[\s_]FILE\}|\$\{LOG[\s_]FILE\}|\$\{REPORT[\s_]FILE\}|\$\{DEBUG[\s_]FILE\}|\$\{OUTPUT[\s_]DIR\}/); + this.$rules = { + "start": [{ + token: "string.robot.header", + regex: /^\*{3}\s+(?:settings?|metadata|(?:user )?keywords?|test ?cases?|tasks?|variables?)/, + caseInsensitive: true, + push: [{ + token: "string.robot.header", + regex: /$/, + next: "pop" + }, { + defaultToken: "string.robot.header" + }], + comment: "start of a table" + }, { + token: "comment.robot", + regex: /(?:^|\s{2,}|\t|\|\s{1,})(?=[^\\])#/, + push: [{ + token: "comment.robot", + regex: /$/, + next: "pop" + }, { + defaultToken: "comment.robot" + }] + }, { + token: "comment", + regex: /^\s*\[?Documentation\]?/, + caseInsensitive: true, + push: [{ + token: "comment", + regex: /^(?!\s*\.\.\.)/, + next: "pop" + }, { + defaultToken: "comment" + }] + }, { + token: "storage.type.method.robot", + regex: /\[(?:Arguments|Setup|Teardown|Precondition|Postcondition|Template|Return|Timeout)\]/, + caseInsensitive: true, + comment: "testcase settings" + }, { + token: "storage.type.method.robot", + regex: /\[Tags\]/, + caseInsensitive: true, + push: [{ + token: "storage.type.method.robot", + regex: /^(?!\s*\.\.\.)/, + next: "pop" + }, { + token: "comment", + regex: /^\s*\.\.\./ + }, { + defaultToken: "storage.type.method.robot" + }], + comment: "test tags" + }, { + token: "constant.language", + regex: builtinConstantsRegex, + caseInsensitive: true + }, { + token: "entity.name.variable.wrapper", + regex: /[$@&%]\{\{?/, + push: [{ + token: "entity.name.variable.wrapper", + regex: /\}\}?(\s?=)?/, + next: "pop" + }, { + include: "$self" + }, { + token: "entity.name.variable", + regex: /./ + }, { + defaultToken: "entity.name.variable" + }] + }, { + token: "keyword.control.robot", + regex: /^[^\s\t*$|]+|(?=^\|)\s+[^\s\t*$|]+/, + push: [{ + token: "keyword.control.robot", + regex: /(?=\s{2})|\t|$|\s+(?=\|)/, + next: "pop" + }, { + defaultToken: "keyword.control.robot" + }] + }, { + token: "constant.numeric.robot", + regex: /\b[0-9]+(?:\.[0-9]+)?\b/ + }, { + token: "keyword", + regex: /\s{2,}(for|in range|in|end|else if|if|else|with name)(\s{2,}|$)/, + caseInsensitive: true + }, { + token: "storage.type.function", + regex: /^(?:\s{2,}\s+)[^ \t*$@&%[.|]+/, + push: [{ + token: "storage.type.function", + regex: /(?=\s{2})|\t|$|\s+(?=\|)/, + next: "pop" + }, { + defaultToken: "storage.type.function" + }] + }] + }; + this.normalizeRules(); +}; +RobotHighlightRules.metadata = { + fileTypes: ['robot'], + name: 'Robot', + scopeName: 'source.robot' +}; +oop.inherits(RobotHighlightRules, TextHighlightRules); +exports.RobotHighlightRules = RobotHighlightRules; + +}); + +ace.define("ace/mode/folding/pythonic",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (markers) { + this.foldingStartMarker = new RegExp("([\\[{])(?:\\s*)$|(" + markers + ")(?:\\s*)(?:#.*)?$"); +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.getFoldWidgetRange = function (session, foldStyle, row) { + var line = session.getLine(row); + var match = line.match(this.foldingStartMarker); + if (match) { + if (match[1]) + return this.openingBracketBlock(session, match[1], row, match.index); + if (match[2]) + return this.indentationBlock(session, row, match.index + match[2].length); + return this.indentationBlock(session, row); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/robot",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/robot_highlight_rules","ace/mode/folding/pythonic"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var RobotHighlightRules = require("./robot_highlight_rules").RobotHighlightRules; +var FoldMode = require("./folding/pythonic").FoldMode; +var Mode = function () { + this.HighlightRules = RobotHighlightRules; + this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "#"; + this.$id = "ace/mode/robot"; + this.snippetFileId = "ace/snippets/robot"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/robot"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/05fa8ff839d67e3839195d1dc96d8d49.js b/web/dist/05fa8ff839d67e3839195d1dc96d8d49.js new file mode 100644 index 00000000..be0186f4 --- /dev/null +++ b/web/dist/05fa8ff839d67e3839195d1dc96d8d49.js @@ -0,0 +1,1822 @@ +ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; +var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; +var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; +var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; +var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; +var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; +var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; +var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; +var CssHighlightRules = function () { + var keywordMapper = this.createKeywordMapper({ + "support.function": supportFunction, + "support.constant": supportConstant, + "support.type": supportType, + "support.constant.color": supportConstantColor, + "support.constant.fonts": supportConstantFonts + }, "text", true); + this.$rules = { + "start": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" + }, { + token: "string", + regex: "@(?!viewport)", + next: "media" + }, { + token: "keyword", + regex: "#[a-z0-9-_]+" + }, { + token: "keyword", + regex: "%" + }, { + token: "variable", + regex: "\\.[a-z0-9-_]+" + }, { + token: "string", + regex: ":[a-z0-9-_]+" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant", + regex: "[a-z0-9-_]+" + }, { + caseInsensitive: true + }], + "media": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "start" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + token: "string", + regex: ";", + next: "start" + }, { + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" + }], + "comments": [{ + token: "comment", + regex: "\\/\\*", + push: [{ + token: "comment", + regex: "\\*\\/", + next: "pop" + }, { + defaultToken: "comment" + }] + }], + "ruleset": [{ + regex: "-(webkit|ms|moz|o)-", + token: "text" + }, { + token: "punctuation.operator", + regex: "[:;]" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + include: ["strings", "url", "comments"] + }, { + token: ["constant.numeric", "keyword"], + regex: "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant.numeric", + regex: "#[a-f0-9]{6}" + }, { + token: "constant.numeric", + regex: "#[a-f0-9]{3}" + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"], + regex: pseudoElements + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"], + regex: pseudoClasses + }, { + include: "url" + }, { + token: keywordMapper, + regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" + }, { + caseInsensitive: true + }], + url: [{ + token: "support.function", + regex: "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token: "support.function", + regex: "\\)", + next: "pop" + }, { + defaultToken: "string" + }] + }], + strings: [{ + token: "string.start", + regex: "'", + push: [{ + token: "string.end", + regex: "'|$", + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }, { + token: "string.start", + regex: '"', + push: [{ + token: "string.end", + regex: '"|$', + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], + escapes: [{ + token: "constant.language.escape", + regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ + }] + }; + this.normalizeRules(); +}; +oop.inherits(CssHighlightRules, TextHighlightRules); +exports.CssHighlightRules = CssHighlightRules; + +}); + +ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var DocCommentHighlightRules = function () { + this.$rules = { + "start": [{ + token: "comment.doc.tag", + regex: "@[\\w\\d_]+" // TODO: fix email addresses + }, + DocCommentHighlightRules.getTagRule(), + { + defaultToken: "comment.doc", + caseInsensitive: true + }] + }; +}; +oop.inherits(DocCommentHighlightRules, TextHighlightRules); +DocCommentHighlightRules.getTagRule = function (start) { + return { + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" + }; +}; +DocCommentHighlightRules.getStartRule = function (start) { + return { + token: "comment.doc", + regex: "\\/\\*(?=\\*)", + next: start + }; +}; +DocCommentHighlightRules.getEndRule = function (start) { + return { + token: "comment.doc", + regex: "\\*\\/", + next: start + }; +}; +exports.DocCommentHighlightRules = DocCommentHighlightRules; + +}); + +ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; +var JavaScriptHighlightRules = function (options) { + var keywordMapper = this.createKeywordMapper({ + "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|" + // Constructors + "Namespace|QName|XML|XMLList|" + // E4X + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors + "SyntaxError|TypeError|URIError|" + + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions + "isNaN|parseFloat|parseInt|" + + "JSON|Math|" + // Other + "this|arguments|prototype|window|document", + "keyword": "const|yield|import|get|set|async|await|" + + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + + "__parent__|__count__|escape|unescape|with|__proto__|" + + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor", + "storage.type": "const|let|var|function", + "constant.language": "null|Infinity|NaN|undefined", + "support.function": "alert", + "constant.language.boolean": "true|false" + }, "identifier"); + var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; + var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex + "u[0-9a-fA-F]{4}|" + // unicode + "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode + "[0-2][0-7]{0,2}|" + // oct + "3[0-7][0-7]?|" + // oct + "[4-7][0-7]?|" + //oct + ".)"; + this.$rules = { + "no_regex": [ + DocCommentHighlightRules.getStartRule("doc-start"), + comments("no_regex"), + { + token: "string", + regex: "'(?=.)", + next: "qstring" + }, { + token: "string", + regex: '"(?=.)', + next: "qqstring" + }, { + token: "constant.numeric", + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + }, { + token: [ + "storage.type", "punctuation.operator", "support.function", + "punctuation.operator", "entity.name.function", "text", "keyword.operator" + ], + regex: "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe + ")(\\s*)(=)", + next: "function_arguments" + }, { + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", "storage.type", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "entity.name.function", "text", "keyword.operator", "text", "storage.type", + "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(function\\*?)(\\s+)(" + identifierRe + ")(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "entity.name.function", "text", "punctuation.operator", + "text", "storage.type", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "text", "text", "storage.type", "text", "paren.lparen" + ], + regex: "(:)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: "keyword", + regex: "from(?=\\s*('|\"))" + }, { + token: "keyword", + regex: "(?:" + kwBeforeRe + ")\\b", + next: "start" + }, { + token: "support.constant", + regex: /that\b/ + }, { + token: ["storage.type", "punctuation.operator", "support.function.firebug"], + regex: /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ + }, { + token: keywordMapper, + regex: identifierRe + }, { + token: "punctuation.operator", + regex: /[.](?![.])/, + next: "property" + }, { + token: "storage.type", + regex: /=>/, + next: "start" + }, { + token: "keyword.operator", + regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next: "start" + }, { + token: "punctuation.operator", + regex: /[?:,;.]/, + next: "start" + }, { + token: "paren.lparen", + regex: /[\[({]/, + next: "start" + }, { + token: "paren.rparen", + regex: /[\])}]/ + }, { + token: "comment", + regex: /^#!.*$/ + } + ], + property: [{ + token: "text", + regex: "\\s+" + }, { + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()", + next: "function_arguments" + }, { + token: "punctuation.operator", + regex: /[.](?![.])/ + }, { + token: "support.function", + regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ + }, { + token: "support.function.dom", + regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ + }, { + token: "support.constant", + regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ + }, { + token: "identifier", + regex: identifierRe + }, { + regex: "", + token: "empty", + next: "no_regex" + } + ], + "start": [ + DocCommentHighlightRules.getStartRule("doc-start"), + comments("start"), + { + token: "string.regexp", + regex: "\\/", + next: "regex" + }, { + token: "text", + regex: "\\s+|^$", + next: "start" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "regex": [ + { + token: "regexp.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "string.regexp", + regex: "/[sxngimy]*", + next: "no_regex" + }, { + token: "invalid", + regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ + }, { + token: "constant.language.escape", + regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ + }, { + token: "constant.language.delimiter", + regex: /\|/ + }, { + token: "constant.language.escape", + regex: /\[\^?/, + next: "regex_character_class" + }, { + token: "empty", + regex: "$", + next: "no_regex" + }, { + defaultToken: "string.regexp" + } + ], + "regex_character_class": [ + { + token: "regexp.charclass.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "constant.language.escape", + regex: "]", + next: "regex" + }, { + token: "constant.language.escape", + regex: "-" + }, { + token: "empty", + regex: "$", + next: "no_regex" + }, { + defaultToken: "string.regexp.charachterclass" + } + ], + "default_parameter": [ + { + token: "string", + regex: "'(?=.)", + push: [ + { + token: "string", + regex: "'|$", + next: "pop" + }, { + include: "qstring" + } + ] + }, { + token: "string", + regex: '"(?=.)', + push: [ + { + token: "string", + regex: '"|$', + next: "pop" + }, { + include: "qqstring" + } + ] + }, { + token: "constant.language", + regex: "null|Infinity|NaN|undefined" + }, { + token: "constant.numeric", + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + }, { + token: "punctuation.operator", + regex: ",", + next: "function_arguments" + }, { + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "function_arguments": [ + comments("function_arguments"), + { + token: "variable.parameter", + regex: identifierRe + }, { + token: "punctuation.operator", + regex: "," + }, { + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: '"|$', + next: "no_regex" + }, { + defaultToken: "string" + } + ], + "qstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: "'|$", + next: "no_regex" + }, { + defaultToken: "string" + } + ] + }; + if (!options || !options.noES6) { + this.$rules.no_regex.unshift({ + regex: "[{}]", onMatch: function (val, state, stack) { + this.next = val == "{" ? this.nextState : ""; + if (val == "{" && stack.length) { + stack.unshift("start", state); + } + else if (val == "}" && stack.length) { + stack.shift(); + this.next = stack.shift(); + if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) + return "paren.quasi.end"; + } + return val == "{" ? "paren.lparen" : "paren.rparen"; + }, + nextState: "start" + }, { + token: "string.quasi.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedRe + }, { + token: "paren.quasi.start", + regex: /\${/, + push: "start" + }, { + token: "string.quasi.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string.quasi" + }] + }, { + token: ["variable.parameter", "text"], + regex: "(" + identifierRe + ")(\\s*)(?=\\=>)" + }, { + token: "paren.lparen", + regex: "(\\()(?=.+\\s*=>)", + next: "function_arguments" + }, { + token: "variable.language", + regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b" + }); + this.$rules["function_arguments"].unshift({ + token: "keyword.operator", + regex: "=", + next: "default_parameter" + }, { + token: "keyword.operator", + regex: "\\.{3}" + }); + this.$rules["property"].unshift({ + token: "support.function", + regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|" + + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()" + }, { + token: "constant.language", + regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b" + }); + if (!options || options.jsx != false) + JSX.call(this); + } + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]); + this.normalizeRules(); +}; +oop.inherits(JavaScriptHighlightRules, TextHighlightRules); +function JSX() { + var tagRegex = identifierRe.replace("\\d", "\\d\\-"); + var jsxTag = { + onMatch: function (val, state, stack) { + var offset = val.charAt(1) == "/" ? 2 : 1; + if (offset == 1) { + if (state != this.nextState) + stack.unshift(this.next, this.nextState, 0); + else + stack.unshift(this.next); + stack[2]++; + } + else if (offset == 2) { + if (state == this.nextState) { + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.shift(); + stack.shift(); + } + } + } + return [{ + type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", + value: val.slice(0, offset) + }, { + type: "meta.tag.tag-name.xml", + value: val.substr(offset) + }]; + }, + regex: "", + onMatch: function (value, currentState, stack) { + if (currentState == stack[0]) + stack.shift(); + if (value.length == 2) { + if (stack[0] == this.nextState) + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.splice(0, 2); + } + } + this.next = stack[0] || "start"; + return [{ type: this.token, value: value }]; + }, + nextState: "jsx" + }, + jsxJsRule, + comments("jsxAttributes"), + { + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + token: "text.tag-whitespace.xml", + regex: "\\s+" + }, { + token: "string.attribute-value.xml", + regex: "'", + stateName: "jsx_attr_q", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + stateName: "jsx_attr_qq", + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, + jsxTag + ]; + this.$rules.reference = [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }]; +} +function comments(next) { + return [ + { + token: "comment", + regex: /\/\*/, + next: [ + DocCommentHighlightRules.getTagRule(), + { token: "comment", regex: "\\*\\/", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } + ] + }, { + token: "comment", + regex: "\\/\\/", + next: [ + DocCommentHighlightRules.getTagRule(), + { token: "comment", regex: "$|^", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } + ] + } + ]; +} +exports.JavaScriptHighlightRules = JavaScriptHighlightRules; + +}); + +ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var XmlHighlightRules = function (normalize) { + var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; + this.$rules = { + start: [ + { token: "string.cdata.xml", regex: "<\\!\\[CDATA\\[", next: "cdata" }, + { + token: ["punctuation.instruction.xml", "keyword.instruction.xml"], + regex: "(<\\?)(" + tagRegex + ")", next: "processing_instruction" + }, + { token: "comment.start.xml", regex: "<\\!--", next: "comment" }, + { + token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], + regex: "(<\\!)(DOCTYPE)(?=[\\s])", next: "doctype", caseInsensitive: true + }, + { include: "tag" }, + { token: "text.end-tag-open.xml", regex: "", + next: "start" + }], + doctype: [ + { include: "whitespace" }, + { include: "string" }, + { token: "xml-pe.doctype.xml", regex: ">", next: "start" }, + { token: "xml-pe.xml", regex: "[-_a-zA-Z0-9:]+" }, + { token: "punctuation.int-subset", regex: "\\[", push: "int_subset" } + ], + int_subset: [{ + token: "text.xml", + regex: "\\s+" + }, { + token: "punctuation.int-subset.xml", + regex: "]", + next: "pop" + }, { + token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], + regex: "(<\\!)(" + tagRegex + ")", + push: [{ + token: "text", + regex: "\\s+" + }, + { + token: "punctuation.markup-decl.xml", + regex: ">", + next: "pop" + }, + { include: "string" }] + }], + cdata: [ + { token: "string.cdata.xml", regex: "\\]\\]>", next: "start" }, + { token: "text.xml", regex: "\\s+" }, + { token: "text.xml", regex: "(?:[^\\]]|\\](?!\\]>))+" } + ], + comment: [ + { token: "comment.end.xml", regex: "-->", next: "start" }, + { defaultToken: "comment.xml" } + ], + reference: [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + attr_reference: [{ + token: "constant.language.escape.reference.attribute-value.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + tag: [{ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], + regex: "(?:(<)|(", next: "start" } + ] + }], + tag_whitespace: [ + { token: "text.tag-whitespace.xml", regex: "\\s+" } + ], + whitespace: [ + { token: "text.whitespace.xml", regex: "\\s+" } + ], + string: [{ + token: "string.xml", + regex: "'", + push: [ + { token: "string.xml", regex: "'", next: "pop" }, + { defaultToken: "string.xml" } + ] + }, { + token: "string.xml", + regex: '"', + push: [ + { token: "string.xml", regex: '"', next: "pop" }, + { defaultToken: "string.xml" } + ] + }], + attributes: [{ + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + include: "tag_whitespace" + }, { + include: "attribute_value" + }], + attribute_value: [{ + token: "string.attribute-value.xml", + regex: "'", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }] + }; + if (this.constructor === XmlHighlightRules) + this.normalizeRules(); +}; +(function () { + this.embedTagRules = function (HighlightRules, prefix, tag) { + this.$rules.tag.unshift({ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(<)(" + tag + "(?=\\s|>|$))", + next: [ + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: prefix + "start" } + ] + }); + this.$rules[tag + "-end"] = [ + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start", + onMatch: function (value, currentState, stack) { + stack.splice(0); + return this.token; + } } + ]; + this.embedRules(HighlightRules, prefix, [{ + token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(|$))", + next: tag + "-end" + }, { + token: "string.cdata.xml", + regex: "<\\!\\[CDATA\\[" + }, { + token: "string.cdata.xml", + regex: "\\]\\]>" + }]); + }; +}).call(TextHighlightRules.prototype); +oop.inherits(XmlHighlightRules, TextHighlightRules); +exports.XmlHighlightRules = XmlHighlightRules; + +}); + +ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; +var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; +var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; +var tagMap = lang.createMap({ + a: 'anchor', + button: 'form', + form: 'form', + img: 'image', + input: 'form', + label: 'form', + option: 'form', + script: 'script', + select: 'form', + textarea: 'form', + style: 'style', + table: 'table', + tbody: 'table', + td: 'table', + tfoot: 'table', + th: 'table', + tr: 'table' +}); +var HtmlHighlightRules = function () { + XmlHighlightRules.call(this); + this.addRules({ + attributes: [{ + include: "tag_whitespace" + }, { + token: "entity.other.attribute-name.xml", + regex: "[-_a-zA-Z0-9:.]+" + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=", + push: [{ + include: "tag_whitespace" + }, { + token: "string.unquoted.attribute-value.html", + regex: "[^<>='\"`\\s]+", + next: "pop" + }, { + token: "empty", + regex: "", + next: "pop" + }] + }, { + include: "attribute_value" + }], + tag: [{ + token: function (start, tag) { + var group = tagMap[tag]; + return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", + "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; + }, + regex: "(", next: "start" } + ] + }); + this.embedTagRules(CssHighlightRules, "css-", "style"); + this.embedTagRules(new JavaScriptHighlightRules({ jsx: false }).getRules(), "js-", "script"); + if (this.constructor === HtmlHighlightRules) + this.normalizeRules(); +}; +oop.inherits(HtmlHighlightRules, XmlHighlightRules); +exports.HtmlHighlightRules = HtmlHighlightRules; + +}); + +ace.define("ace/mode/ruby_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var constantOtherSymbol = exports.constantOtherSymbol = { + token: "constant.other.symbol.ruby", + regex: "[:](?:[A-Za-z_]|[@$](?=[a-zA-Z0-9_]))[a-zA-Z0-9_]*[!=?]?" +}; +exports.qString = { + token: "string", + regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" +}; +exports.qqString = { + token: "string", + regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' +}; +exports.tString = { + token: "string", + regex: "[`](?:(?:\\\\.)|(?:[^'\\\\]))*?[`]" +}; +var constantNumericHex = exports.constantNumericHex = { + token: "constant.numeric", + regex: "0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_(?=[0-9a-fA-F]))*\\b" +}; +var constantNumericBinary = exports.constantNumericBinary = { + token: "constant.numeric", + regex: /\b(0[bB][01](?:[01]|_(?=[01]))*)\b/ +}; +var constantNumericDecimal = exports.constantNumericDecimal = { + token: "constant.numeric", + regex: /\b(0[dD](?:[1-9](?:[\d]|_(?=[\d]))*|0))\b/ +}; +var constantNumericOctal = exports.constantNumericDecimal = { + token: "constant.numeric", + regex: /\b(0[oO]?(?:[1-7](?:[0-7]|_(?=[0-7]))*|0))\b/ +}; +var constantNumericRational = exports.constantNumericRational = { + token: "constant.numeric", + regex: /\b([\d]+(?:[./][\d]+)?ri?)\b/ +}; +var constantNumericComplex = exports.constantNumericComplex = { + token: "constant.numeric", + regex: /\b([\d]i)\b/ +}; +var constantNumericFloat = exports.constantNumericFloat = { + token: "constant.numeric", + regex: "[+-]?\\d(?:\\d|_(?=\\d))*(?:(?:\\.\\d(?:\\d|_(?=\\d))*)?(?:[eE][+-]?\\d+)?)?i?\\b" +}; +var instanceVariable = exports.instanceVariable = { + token: "variable.instance", + regex: "@{1,2}[a-zA-Z_\\d]+" +}; +var RubyHighlightRules = function () { + var builtinFunctions = ("abort|Array|assert|assert_equal|assert_not_equal|assert_same|assert_not_same|" + + "assert_nil|assert_not_nil|assert_match|assert_no_match|assert_in_delta|assert_throws|" + + "assert_raise|assert_nothing_raised|assert_instance_of|assert_kind_of|assert_respond_to|" + + "assert_operator|assert_send|assert_difference|assert_no_difference|assert_recognizes|" + + "assert_generates|assert_response|assert_redirected_to|assert_template|assert_select|" + + "assert_select_email|assert_select_rjs|assert_select_encoded|css_select|at_exit|" + + "attr|attr_writer|attr_reader|attr_accessor|attr_accessible|autoload|binding|block_given?|callcc|" + + "caller|catch|chomp|chomp!|chop|chop!|defined?|delete_via_redirect|eval|exec|exit|" + + "exit!|fail|Float|flunk|follow_redirect!|fork|form_for|form_tag|format|gets|global_variables|gsub|" + + "gsub!|get_via_redirect|host!|https?|https!|include|Integer|lambda|link_to|" + + "link_to_unless_current|link_to_function|link_to_remote|load|local_variables|loop|open|open_session|" + + "p|print|printf|proc|putc|puts|post_via_redirect|put_via_redirect|raise|rand|" + + "raw|readline|readlines|redirect?|request_via_redirect|require|scan|select|" + + "set_trace_func|sleep|split|sprintf|srand|String|stylesheet_link_tag|syscall|system|sub|sub!|test|" + + "throw|trace_var|trap|untrace_var|atan2|cos|exp|frexp|ldexp|log|log10|sin|sqrt|tan|" + + "render|javascript_include_tag|csrf_meta_tag|label_tag|text_field_tag|submit_tag|check_box_tag|" + + "content_tag|radio_button_tag|text_area_tag|password_field_tag|hidden_field_tag|" + + "fields_for|select_tag|options_for_select|options_from_collection_for_select|collection_select|" + + "time_zone_select|select_date|select_time|select_datetime|date_select|time_select|datetime_select|" + + "select_year|select_month|select_day|select_hour|select_minute|select_second|file_field_tag|" + + "file_field|respond_to|skip_before_filter|around_filter|after_filter|verify|" + + "protect_from_forgery|rescue_from|helper_method|redirect_to|before_filter|" + + "send_data|send_file|validates_presence_of|validates_uniqueness_of|validates_length_of|" + + "validates_format_of|validates_acceptance_of|validates_associated|validates_exclusion_of|" + + "validates_inclusion_of|validates_numericality_of|validates_with|validates_each|" + + "authenticate_or_request_with_http_basic|authenticate_or_request_with_http_digest|" + + "filter_parameter_logging|match|get|post|resources|redirect|scope|assert_routing|" + + "translate|localize|extract_locale_from_tld|caches_page|expire_page|caches_action|expire_action|" + + "cache|expire_fragment|expire_cache_for|observe|cache_sweeper|" + + "has_many|has_one|belongs_to|has_and_belongs_to_many|p|warn|refine|using|module_function|extend|alias_method|" + + "private_class_method|remove_method|undef_method"); + var keywords = ("alias|and|BEGIN|begin|break|case|class|def|defined|do|else|elsif|END|end|ensure|" + + "__FILE__|finally|for|gem|if|in|__LINE__|module|next|not|or|private|protected|public|" + + "redo|rescue|retry|return|super|then|undef|unless|until|when|while|yield|__ENCODING__|prepend"); + var buildinConstants = ("true|TRUE|false|FALSE|nil|NIL|ARGF|ARGV|DATA|ENV|RUBY_PLATFORM|RUBY_RELEASE_DATE|" + + "RUBY_VERSION|STDERR|STDIN|STDOUT|TOPLEVEL_BINDING|RUBY_PATCHLEVEL|RUBY_REVISION|RUBY_COPYRIGHT|RUBY_ENGINE|RUBY_ENGINE_VERSION|RUBY_DESCRIPTION"); + var builtinVariables = ("$DEBUG|$defout|$FILENAME|$LOAD_PATH|$SAFE|$stdin|$stdout|$stderr|$VERBOSE|" + + "$!|root_url|flash|session|cookies|params|request|response|logger|self"); + var keywordMapper = this.$keywords = this.createKeywordMapper({ + "keyword": keywords, + "constant.language": buildinConstants, + "variable.language": builtinVariables, + "support.function": builtinFunctions, + "invalid.deprecated": "debugger" // TODO is this a remnant from js mode? + }, "identifier"); + var escapedChars = "\\\\(?:n(?:[1-7][0-7]{0,2}|0)|[nsrtvfbae'\"\\\\]|c(?:\\\\M-)?.|M-(?:\\\\C-|\\\\c)?.|C-(?:\\\\M-)?.|[0-7]{3}|x[\\da-fA-F]{2}|u[\\da-fA-F]{4}|u{[\\da-fA-F]{1,6}(?:\\s[\\da-fA-F]{1,6})*})"; + var closeParen = { + "(": ")", + "[": "]", + "{": "}", + "<": ">", + "^": "^", + "|": "|", + "%": "%" + }; + this.$rules = { + "start": [ + { + token: "comment", + regex: "#.*$" + }, { + token: "comment.multiline", + regex: "^=begin(?=$|\\s.*$)", + next: "comment" + }, { + token: "string.regexp", + regex: /[/](?=.*\/)/, + next: "regex" + }, + [{ + token: ["constant.other.symbol.ruby", "string.start"], + regex: /(:)?(")/, + push: [{ + token: "constant.language.escape", + regex: escapedChars + }, { + token: "paren.start", + regex: /#{/, + push: "start" + }, { + token: "string.end", + regex: /"/, + next: "pop" + }, { + defaultToken: "string" + }] + }, { + token: "string.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedChars + }, { + token: "paren.start", + regex: /#{/, + push: "start" + }, { + token: "string.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string" + }] + }, { + token: ["constant.other.symbol.ruby", "string.start"], + regex: /(:)?(')/, + push: [{ + token: "constant.language.escape", + regex: /\\['\\]/ + }, { + token: "string.end", + regex: /'/, + next: "pop" + }, { + defaultToken: "string" + }] + }, { + token: "string.start", + regex: /%[qwx]([(\[<{^|%])/, onMatch: function (val, state, stack) { + if (stack.length) + stack = []; + var paren = val[val.length - 1]; + stack.unshift(paren, state); + this.next = "qStateWithoutInterpolation"; + return this.token; + } + }, { + token: "string.start", + regex: /%[QWX]?([(\[<{^|%])/, onMatch: function (val, state, stack) { + if (stack.length) + stack = []; + var paren = val[val.length - 1]; + stack.unshift(paren, state); + this.next = "qStateWithInterpolation"; + return this.token; + } + }, { + token: "constant.other.symbol.ruby", + regex: /%[si]([(\[<{^|%])/, onMatch: function (val, state, stack) { + if (stack.length) + stack = []; + var paren = val[val.length - 1]; + stack.unshift(paren, state); + this.next = "sStateWithoutInterpolation"; + return this.token; + } + }, { + token: "constant.other.symbol.ruby", + regex: /%[SI]([(\[<{^|%])/, onMatch: function (val, state, stack) { + if (stack.length) + stack = []; + var paren = val[val.length - 1]; + stack.unshift(paren, state); + this.next = "sStateWithInterpolation"; + return this.token; + } + }, { + token: "string.regexp", + regex: /%[r]([(\[<{^|%])/, onMatch: function (val, state, stack) { + if (stack.length) + stack = []; + var paren = val[val.length - 1]; + stack.unshift(paren, state); + this.next = "rState"; + return this.token; + } + }], + { + token: "punctuation", + regex: "::" + }, + instanceVariable, + { + token: "variable.global", + regex: "[$][a-zA-Z_\\d]+" + }, { + token: "support.class", + regex: "[A-Z][a-zA-Z_\\d]*" + }, { + token: ["punctuation.operator", "support.function"], + regex: /(\.)([a-zA-Z_\d]+)(?=\()/ + }, { + token: ["punctuation.operator", "identifier"], + regex: /(\.)([a-zA-Z_][a-zA-Z_\d]*)/ + }, { + token: "string.character", + regex: "\\B\\?(?:" + escapedChars + "|\\S)" + }, { + token: "punctuation.operator", + regex: /\?(?=.+:)/ + }, + constantNumericRational, + constantNumericComplex, + constantOtherSymbol, + constantNumericHex, + constantNumericFloat, + constantNumericBinary, + constantNumericDecimal, + constantNumericOctal, + { + token: "constant.language.boolean", + regex: "(?:true|false)\\b" + }, { + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token: "punctuation.separator.key-value", + regex: "=>" + }, { + stateName: "heredoc", + onMatch: function (value, currentState, stack) { + var next = (value[2] == '-' || value[2] == '~') ? "indentedHeredoc" : "heredoc"; + var tokens = value.split(this.splitRegex); + stack.push(next, tokens[3]); + return [ + { type: "constant", value: tokens[1] }, + { type: "string", value: tokens[2] }, + { type: "support.class", value: tokens[3] }, + { type: "string", value: tokens[4] } + ]; + }, + regex: "(<<[-~]?)(['\"`]?)([\\w]+)(['\"`]?)", + rules: { + heredoc: [{ + onMatch: function (value, currentState, stack) { + if (value === stack[1]) { + stack.shift(); + stack.shift(); + this.next = stack[0] || "start"; + return "support.class"; + } + this.next = ""; + return "string"; + }, + regex: ".*$", + next: "start" + }], + indentedHeredoc: [{ + token: "string", + regex: "^ +" + }, { + onMatch: function (value, currentState, stack) { + if (value === stack[1]) { + stack.shift(); + stack.shift(); + this.next = stack[0] || "start"; + return "support.class"; + } + this.next = ""; + return "string"; + }, + regex: ".*$", + next: "start" + }] + } + }, { + regex: "$", + token: "empty", + next: function (currentState, stack) { + if (stack[0] === "heredoc" || stack[0] === "indentedHeredoc") + return stack[0]; + return currentState; + } + }, { + token: "keyword.operator", + regex: "!|\\$|%|&|\\*|/|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\||\\b(?:in|instanceof|new|delete|typeof|void)" + }, { + token: "paren.lparen", + regex: "[[({]" + }, { + token: "paren.rparen", + regex: "[\\])}]", + onMatch: function (value, currentState, stack) { + this.next = ''; + if (value == "}" && stack.length > 1 && stack[1] != "start") { + stack.shift(); + this.next = stack.shift(); + } + return this.token; + } + }, { + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: /[?:,;.]/ + } + ], + "comment": [ + { + token: "comment.multiline", + regex: "^=end(?=$|\\s.*$)", + next: "start" + }, { + token: "comment", + regex: ".+" + } + ], + "qStateWithInterpolation": [{ + token: "string.start", + regex: /[(\[<{]/, onMatch: function (val, state, stack) { + if (stack.length && val === stack[0]) { + stack.unshift(val, state); + return this.token; + } + return "string"; + } + }, { + token: "constant.language.escape", + regex: escapedChars + }, { + token: "constant.language.escape", + regex: /\\./ + }, { + token: "paren.start", + regex: /#{/, + push: "start" + }, { + token: "string.end", + regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) { + if (stack.length && val === closeParen[stack[0]]) { + stack.shift(); + this.next = stack.shift(); + return this.token; + } + this.next = ''; + return "string"; + } + }, { + defaultToken: "string" + }], + "qStateWithoutInterpolation": [{ + token: "string.start", + regex: /[(\[<{]/, onMatch: function (val, state, stack) { + if (stack.length && val === stack[0]) { + stack.unshift(val, state); + return this.token; + } + return "string"; + } + }, { + token: "constant.language.escape", + regex: /\\['\\]/ + }, { + token: "constant.language.escape", + regex: /\\./ + }, { + token: "string.end", + regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) { + if (stack.length && val === closeParen[stack[0]]) { + stack.shift(); + this.next = stack.shift(); + return this.token; + } + this.next = ''; + return "string"; + } + }, { + defaultToken: "string" + }], + "sStateWithoutInterpolation": [{ + token: "constant.other.symbol.ruby", + regex: /[(\[<{]/, onMatch: function (val, state, stack) { + if (stack.length && val === stack[0]) { + stack.unshift(val, state); + return this.token; + } + return "constant.other.symbol.ruby"; + } + }, { + token: "constant.other.symbol.ruby", + regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) { + if (stack.length && val === closeParen[stack[0]]) { + stack.shift(); + this.next = stack.shift(); + return this.token; + } + this.next = ''; + return "constant.other.symbol.ruby"; + } + }, { + defaultToken: "constant.other.symbol.ruby" + }], + "sStateWithInterpolation": [{ + token: "constant.other.symbol.ruby", + regex: /[(\[<{]/, onMatch: function (val, state, stack) { + if (stack.length && val === stack[0]) { + stack.unshift(val, state); + return this.token; + } + return "constant.other.symbol.ruby"; + } + }, { + token: "constant.language.escape", + regex: escapedChars + }, { + token: "constant.language.escape", + regex: /\\./ + }, { + token: "paren.start", + regex: /#{/, + push: "start" + }, { + token: "constant.other.symbol.ruby", + regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) { + if (stack.length && val === closeParen[stack[0]]) { + stack.shift(); + this.next = stack.shift(); + return this.token; + } + this.next = ''; + return "constant.other.symbol.ruby"; + } + }, { + defaultToken: "constant.other.symbol.ruby" + }], + "rState": [{ + token: "string.regexp", + regex: /[(\[<{]/, onMatch: function (val, state, stack) { + if (stack.length && val === stack[0]) { + stack.unshift(val, state); + return this.token; + } + return "constant.language.escape"; + } + }, { + token: "paren.start", + regex: /#{/, + push: "start" + }, { + token: "string.regexp", + regex: /\// + }, { + token: "string.regexp", + regex: /[)\]>}^|%][imxouesn]*/, onMatch: function (val, state, stack) { + if (stack.length && val[0] === closeParen[stack[0]]) { + stack.shift(); + this.next = stack.shift(); + return this.token; + } + this.next = ''; + return "constant.language.escape"; + } + }, + { include: "regex" }, + { + defaultToken: "string.regexp" + }], + "regex": [ + { + token: "regexp.keyword", + regex: /\\[wWdDhHsS]/ + }, { + token: "constant.language.escape", + regex: /\\[AGbBzZ]/ + }, { + token: "constant.language.escape", + regex: /\\g<[a-zA-Z0-9]*>/ + }, { + token: ["constant.language.escape", "regexp.keyword", "constant.language.escape"], + regex: /(\\p{\^?)(Alnum|Alpha|Blank|Cntrl|Digit|Graph|Lower|Print|Punct|Space|Upper|XDigit|Word|ASCII|Any|Assigned|Arabic|Armenian|Balinese|Bengali|Bopomofo|Braille|Buginese|Buhid|Canadian_Aboriginal|Carian|Cham|Cherokee|Common|Coptic|Cuneiform|Cypriot|Cyrillic|Deseret|Devanagari|Ethiopic|Georgian|Glagolitic|Gothic|Greek|Gujarati|Gurmukhi|Han|Hangul|Hanunoo|Hebrew|Hiragana|Inherited|Kannada|Katakana|Kayah_Li|Kharoshthi|Khmer|Lao|Latin|Lepcha|Limbu|Linear_B|Lycian|Lydian|Malayalam|Mongolian|Myanmar|New_Tai_Lue|Nko|Ogham|Ol_Chiki|Old_Italic|Old_Persian|Oriya|Osmanya|Phags_Pa|Phoenician|Rejang|Runic|Saurashtra|Shavian|Sinhala|Sundanese|Syloti_Nagri|Syriac|Tagalog|Tagbanwa|Tai_Le|Tamil|Telugu|Thaana|Thai|Tibetan|Tifinagh|Ugaritic|Vai|Yi|Ll|Lm|Lt|Lu|Lo|Mn|Mc|Me|Nd|Nl|Pc|Pd|Ps|Pe|Pi|Pf|Po|No|Sm|Sc|Sk|So|Zs|Zl|Zp|Cc|Cf|Cn|Co|Cs|N|L|M|P|S|Z|C)(})/ + }, { + token: ["constant.language.escape", "invalid", "constant.language.escape"], + regex: /(\\p{\^?)([^/]*)(})/ + }, { + token: "regexp.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "string.regexp", + regex: /[/][imxouesn]*/, + next: "start" + }, { + token: "invalid", + regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ + }, { + token: "constant.language.escape", + regex: /\(\?(?:[:=!>]|<'?[a-zA-Z]*'?>|<[=!])|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ + }, { + token: "constant.language.delimiter", + regex: /\|/ + }, { + token: "regexp.keyword", + regex: /\[\[:(?:alnum|alpha|blank|cntrl|digit|graph|lower|print|punct|space|upper|xdigit|word|ascii):\]\]/ + }, { + token: "constant.language.escape", + regex: /\[\^?/, + push: "regex_character_class" + }, { + defaultToken: "string.regexp" + } + ], + "regex_character_class": [ + { + token: "regexp.keyword", + regex: /\\[wWdDhHsS]/ + }, { + token: "regexp.charclass.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "constant.language.escape", + regex: /&?&?\[\^?/, + push: "regex_character_class" + }, { + token: "constant.language.escape", + regex: "]", + next: "pop" + }, { + token: "constant.language.escape", + regex: "-" + }, { + defaultToken: "string.regexp.characterclass" + } + ] + }; + this.normalizeRules(); +}; +oop.inherits(RubyHighlightRules, TextHighlightRules); +exports.RubyHighlightRules = RubyHighlightRules; + +}); + +ace.define("ace/mode/haml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules","ace/mode/ruby_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; +var RubyExports = require("./ruby_highlight_rules"); +var RubyHighlightRules = RubyExports.RubyHighlightRules; +var HamlHighlightRules = function () { + HtmlHighlightRules.call(this); + this.$rules = { + "start": [ + { + token: "comment.block", + regex: /^\/$/, + next: "comment" + }, + { + token: "comment.block", + regex: /^\-#$/, + next: "comment" + }, + { + token: "comment.line", + regex: /\/\s*.*/ + }, + { + token: "comment.line", + regex: /-#\s*.*/ + }, + { + token: "keyword.other.doctype", + regex: "^!!!\\s*(?:[a-zA-Z0-9-_]+)?" + }, + RubyExports.qString, + RubyExports.qqString, + RubyExports.tString, + { + token: "meta.tag.haml", + regex: /(%[\w:\-]+)/ + }, + { + token: "keyword.attribute-name.class.haml", + regex: /\.[\w-]+/ + }, + { + token: "keyword.attribute-name.id.haml", + regex: /#[\w-]+/, + next: "element_class" + }, + RubyExports.constantNumericHex, + RubyExports.constantNumericFloat, + RubyExports.constantOtherSymbol, + { + token: "text", + regex: /=|-|~/, + next: "embedded_ruby" + } + ], + "element_class": [ + { + token: "keyword.attribute-name.class.haml", + regex: /\.[\w-]+/ + }, + { + token: "punctuation.section", + regex: /\{/, + next: "element_attributes" + }, + RubyExports.constantOtherSymbol, + { + token: "empty", + regex: "$|(?!\\.|#|\\{|\\[|=|-|~|\\/])", + next: "start" + } + ], + "element_attributes": [ + RubyExports.constantOtherSymbol, + RubyExports.qString, + RubyExports.qqString, + RubyExports.tString, + RubyExports.constantNumericHex, + RubyExports.constantNumericFloat, + { + token: "punctuation.section", + regex: /$|\}/, + next: "start" + } + ], + "embedded_ruby": [ + RubyExports.constantNumericHex, + RubyExports.constantNumericFloat, + RubyExports.instanceVariable, + RubyExports.qString, + RubyExports.qqString, + RubyExports.tString, + { + token: "support.class", + regex: "[A-Z][a-zA-Z_\\d]+" + }, + { + token: new RubyHighlightRules().getKeywords(), + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, + { + token: ["keyword", "text", "text"], + regex: "(?:do|\\{)(?: \\|[^|]+\\|)?$", + next: "start" + }, + { + token: ["text"], + regex: "^$", + next: "start" + }, + { + token: ["text"], + regex: "^(?!.*\\|\\s*$)", + next: "start" + } + ], + "comment": [ + { + token: "comment.block", + regex: /^$/, + next: "start" + }, + { + token: "comment.block", + regex: /\s+.*/ + } + ] + }; + this.normalizeRules(); +}; +oop.inherits(HamlHighlightRules, HtmlHighlightRules); +exports.HamlHighlightRules = HamlHighlightRules; + +}); + +ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var BaseFoldMode = require("./fold_mode").FoldMode; +var Range = require("../../range").Range; +var FoldMode = exports.FoldMode = function () { }; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.getFoldWidgetRange = function (session, foldStyle, row) { + var range = this.indentationBlock(session, row); + if (range) + return range; + var re = /\S/; + var line = session.getLine(row); + var startLevel = line.search(re); + if (startLevel == -1 || line[startLevel] != "#") + return; + var startColumn = line.length; + var maxRow = session.getLength(); + var startRow = row; + var endRow = row; + while (++row < maxRow) { + line = session.getLine(row); + var level = line.search(re); + if (level == -1) + continue; + if (line[level] != "#") + break; + endRow = row; + } + if (endRow > startRow) { + var endColumn = session.getLine(endRow).length; + return new Range(startRow, startColumn, endRow, endColumn); + } + }; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + var indent = line.search(/\S/); + var next = session.getLine(row + 1); + var prev = session.getLine(row - 1); + var prevIndent = prev.search(/\S/); + var nextIndent = next.search(/\S/); + if (indent == -1) { + session.foldWidgets[row - 1] = prevIndent != -1 && prevIndent < nextIndent ? "start" : ""; + return ""; + } + if (prevIndent == -1) { + if (indent == nextIndent && line[indent] == "#" && next[indent] == "#") { + session.foldWidgets[row - 1] = ""; + session.foldWidgets[row + 1] = ""; + return "start"; + } + } + else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { + if (session.getLine(row - 2).search(/\S/) == -1) { + session.foldWidgets[row - 1] = "start"; + session.foldWidgets[row + 1] = ""; + return ""; + } + } + if (prevIndent != -1 && prevIndent < indent) + session.foldWidgets[row - 1] = "start"; + else + session.foldWidgets[row - 1] = ""; + if (indent < nextIndent) + return "start"; + else + return ""; + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/haml",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/haml_highlight_rules","ace/mode/folding/coffee"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ +"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var HamlHighlightRules = require("./haml_highlight_rules").HamlHighlightRules; +var FoldMode = require("./folding/coffee").FoldMode; +var Mode = function () { + this.HighlightRules = HamlHighlightRules; + this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "//"; + this.$id = "ace/mode/haml"; + this.snippetFileId = "ace/snippets/haml"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/haml"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/05fa8ff839d67e3839195d1dc96d8d49.js.gz b/web/dist/05fa8ff839d67e3839195d1dc96d8d49.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..ae3f23050a1ae9ae062af60bb6ecfe57b4d445e0 GIT binary patch literal 16621 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 literal 0 HcmV?d00001 diff --git a/web/dist/0645227e6c2479f7aefed1fdd23ac733.js b/web/dist/0645227e6c2479f7aefed1fdd23ac733.js new file mode 100644 index 00000000..a8e2fe00 --- /dev/null +++ b/web/dist/0645227e6c2479f7aefed1fdd23ac733.js @@ -0,0 +1,387 @@ +ace.define("ace/mode/tex_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){/* + * tex_highlight_rules.js + * + * Copyright (C) 2009-11 by RStudio, Inc. + * + * The Initial Developer of the Original Code is + * Ajax.org B.V. + * Portions created by the Initial Developer are Copyright (C) 2010 + * the Initial Developer. All Rights Reserved. + * + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * + */ +"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var TexHighlightRules = function (textClass) { + if (!textClass) + textClass = "text"; + this.$rules = { + "start": [ + { + token: "comment", + regex: "%.*$" + }, { + token: textClass, + regex: "\\\\[$&%#\\{\\}]" + }, { + token: "keyword", + regex: "\\\\(?:documentclass|usepackage|newcounter|setcounter|addtocounter|value|arabic|stepcounter|newenvironment|renewenvironment|ref|vref|eqref|pageref|label|cite[a-zA-Z]*|tag|begin|end|bibitem)\\b", + next: "nospell" + }, { + token: "keyword", + regex: "\\\\(?:[a-zA-Z0-9]+|[^a-zA-Z0-9])" + }, { + token: "paren.keyword.operator", + regex: "[[({]" + }, { + token: "paren.keyword.operator", + regex: "[\\])}]" + }, { + token: textClass, + regex: "\\s+" + } + ], + "nospell": [ + { + token: "comment", + regex: "%.*$", + next: "start" + }, { + token: "nospell." + textClass, + regex: "\\\\[$&%#\\{\\}]" + }, { + token: "keyword", + regex: "\\\\(?:documentclass|usepackage|newcounter|setcounter|addtocounter|value|arabic|stepcounter|newenvironment|renewenvironment|ref|vref|eqref|pageref|label|cite[a-zA-Z]*|tag|begin|end|bibitem)\\b" + }, { + token: "keyword", + regex: "\\\\(?:[a-zA-Z0-9]+|[^a-zA-Z0-9])", + next: "start" + }, { + token: "paren.keyword.operator", + regex: "[[({]" + }, { + token: "paren.keyword.operator", + regex: "[\\])]" + }, { + token: "paren.keyword.operator", + regex: "}", + next: "start" + }, { + token: "nospell." + textClass, + regex: "\\s+" + }, { + token: "nospell." + textClass, + regex: "\\w+" + } + ] + }; +}; +oop.inherits(TexHighlightRules, TextHighlightRules); +exports.TexHighlightRules = TexHighlightRules; + +}); + +ace.define("ace/mode/r_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/tex_highlight_rules"], function(require, exports, module){/* + * r_highlight_rules.js + * + * Copyright (C) 2009-11 by RStudio, Inc. + * + * The Initial Developer of the Original Code is + * Ajax.org B.V. + * Portions created by the Initial Developer are Copyright (C) 2010 + * the Initial Developer. All Rights Reserved. + * + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * + */ +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var TexHighlightRules = require("./tex_highlight_rules").TexHighlightRules; +var RHighlightRules = function () { + var keywords = lang.arrayToMap(("function|if|in|break|next|repeat|else|for|return|switch|while|try|tryCatch|stop|warning|require|library|attach|detach|source|setMethod|setGeneric|setGroupGeneric|setClass") + .split("|")); + var buildinConstants = lang.arrayToMap(("NULL|NA|TRUE|FALSE|T|F|Inf|NaN|NA_integer_|NA_real_|NA_character_|" + + "NA_complex_").split("|")); + this.$rules = { + "start": [ + { + token: "comment.sectionhead", + regex: "#+(?!').*(?:----|====|####)\\s*$" + }, + { + token: "comment", + regex: "#+'", + next: "rd-start" + }, + { + token: "comment", + regex: "#.*$" + }, + { + token: "string", + regex: '["]', + next: "qqstring" + }, + { + token: "string", + regex: "[']", + next: "qstring" + }, + { + token: "constant.numeric", + regex: "0[xX][0-9a-fA-F]+[Li]?\\b" + }, + { + token: "constant.numeric", + regex: "\\d+L\\b" + }, + { + token: "constant.numeric", + regex: "\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d*)?i?\\b" + }, + { + token: "constant.numeric", + regex: "\\.\\d+(?:[eE][+\\-]?\\d*)?i?\\b" + }, + { + token: "constant.language.boolean", + regex: "(?:TRUE|FALSE|T|F)\\b" + }, + { + token: "identifier", + regex: "`.*?`" + }, + { + onMatch: function (value) { + if (keywords[value]) + return "keyword"; + else if (buildinConstants[value]) + return "constant.language"; + else if (value == '...' || value.match(/^\.\.\d+$/)) + return "variable.language"; + else + return "identifier"; + }, + regex: "[a-zA-Z.][a-zA-Z0-9._]*\\b" + }, + { + token: "keyword.operator", + regex: "%%|>=|<=|==|!=|\\->|<\\-|\\|\\||&&|=|\\+|\\-|\\*|/|\\^|>|<|!|&|\\||~|\\$|:" + }, + { + token: "keyword.operator", + regex: "%.*?%" + }, + { + token: "paren.keyword.operator", + regex: "[[({]" + }, + { + token: "paren.keyword.operator", + regex: "[\\])}]" + }, + { + token: "text", + regex: "\\s+" + } + ], + "qqstring": [ + { + token: "string", + regex: '(?:(?:\\\\.)|(?:[^"\\\\]))*?"', + next: "start" + }, + { + token: "string", + regex: '.+' + } + ], + "qstring": [ + { + token: "string", + regex: "(?:(?:\\\\.)|(?:[^'\\\\]))*?'", + next: "start" + }, + { + token: "string", + regex: '.+' + } + ] + }; + var rdRules = new TexHighlightRules("comment").getRules(); + for (var i = 0; i < rdRules["start"].length; i++) { + rdRules["start"][i].token += ".virtual-comment"; + } + this.addRules(rdRules, "rd-"); + this.$rules["rd-start"].unshift({ + token: "text", + regex: "^", + next: "start" + }); + this.$rules["rd-start"].unshift({ + token: "keyword", + regex: "@(?!@)[^ ]*" + }); + this.$rules["rd-start"].unshift({ + token: "comment", + regex: "@@" + }); + this.$rules["rd-start"].push({ + token: "comment", + regex: "[^%\\\\[({\\])}]+" + }); +}; +oop.inherits(RHighlightRules, TextHighlightRules); +exports.RHighlightRules = RHighlightRules; + +}); + +ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) + return false; + return /^\s*\}/.test(input); + }; + this.autoOutdent = function (doc, row) { + var line = doc.getLine(row); + var match = line.match(/^(\s*\})/); + if (!match) + return 0; + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; + var indent = this.$getIndent(doc.getLine(openBracePos.row)); + doc.replace(new Range(row, 0, row, column - 1), indent); + }; + this.$getIndent = function (line) { + return line.match(/^\s*/)[0]; + }; +}).call(MatchingBraceOutdent.prototype); +exports.MatchingBraceOutdent = MatchingBraceOutdent; + +}); + +ace.define("ace/mode/r",["require","exports","module","ace/unicode","ace/range","ace/lib/oop","ace/mode/text","ace/mode/text_highlight_rules","ace/mode/r_highlight_rules","ace/mode/matching_brace_outdent"], function(require, exports, module){/* + * r.js + * + * Copyright (C) 2009-11 by RStudio, Inc. + * + * The Initial Developer of the Original Code is + * Ajax.org B.V. + * Portions created by the Initial Developer are Copyright (C) 2010 + * the Initial Developer. All Rights Reserved. + * + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * + */ +"use strict"; +var unicode = require("../unicode"); +var Range = require("../range").Range; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var RHighlightRules = require("./r_highlight_rules").RHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var Mode = function () { + this.HighlightRules = RHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "#"; + this.tokenRe = new RegExp("^[" + unicode.wordChars + "._]+", "g"); + this.nonTokenRe = new RegExp("^(?:[^" + unicode.wordChars + "._]|\s])+", "g"); + this.$id = "ace/mode/r"; + this.snippetFileId = "ace/snippets/r"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/r"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/0645227e6c2479f7aefed1fdd23ac733.js.gz b/web/dist/0645227e6c2479f7aefed1fdd23ac733.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..ce30a89f8e1c3471be0720f0d223134040fba7e9 GIT binary patch literal 3045 zcmV;qc%$eVLo0oIWSj(o0L;J2zMZvP^&Mjj1m${Zlj_3{bf)Nc#&?gK!ngHYa&{G4ciHi(K^$+Wt5`@>} zQ2B@;t7Q)@EtcbFAf?~hI$eF%!(GF*D{%G^w%(s7^uT6kQGs_UT}k5nLTnGLi~V%&14{Q zBQPI~0;D2m-^6KC^NM?tpIs zAPLD3CTs|kE}A%jI}fpo$`rJ0P?rxy65kq9lx%7~f$-t907%BYQ$YbxAgO-p%PGz?-`m=t5>x%^+*93fG<%$stuDEr`39$RR3Q6tTgqL)QN{G z$W%S7t0`*ZA_dUZnu!Wbo@!t&5T`B^<6Nz2_@I7PLHw$IA)^JrScdwK77#%vIjWvj zPgDcZ#7FD^zNocy^$bM>&5hQfVQOZ}RLM!RdBm-2sQO2(rW*T*S8p2JL@h&=fsa|` z>;VPrW9;MeVaw3CrL=~r>U!(k)S3+mT>A+O0g_f>=uz&-W`p|@ywTJz5Et#ijV_Z< zrz*7TXhl93s%Q%X=0wdbk^xJYBIdNRq@kYFwG*{bQ<0#FK%X>2mB3A!fdpF0`BN3x zwz%#%B|tWKOegNnhJc$eE>N2Z`x`eFtmt4w4oG%#ih`ny4`L}Lz*D${f*;Nqi3tbu zX@0Kic&tthC_lI*Wq#NgZVoL!qH^FcLUqEBt z4vSxT6K25oV|pQCR>*`s(jGVA=YHyq0|Z~FzefZ+7~%#g$a54Sy{6xQ;;pjvMwse- zkQW1v1zrr;flvF*ySJ}9o%>Gbp}RV`@P*#p2B9M?2Nyr=x~7Rw zZ|xxVVed~O%JN6caafSQ+*n>r6DzcOuAM}Tj`9u|OZ^)+419!6LOR#bPj2vwe#P$* z@WbDp)uUcwyNtH2?SEId|JmJ2n01}>C`4EZZ2U>j?LqHQ>U4S~s`+42(992DZ}+^H zuvRA5?)ER;O47cZyh%^sHiBcwS2CUoMsXG#bW51G+v0uqMHzHDUFj+FYo*B>Rb~Lk zZ{5kTvA3RmB`%yF>B?W-oSB4*Kq~81`=hJ&=Pt@;n*)E+HT$9*9{z_*Xm0O#R`lD& zI}?9;*x!I32#XZghdc&S5^*j}kxK$0h>)^kgi;pP%(d-rY&^i24XdoQ68_A>ioCp} z^OU+vxURaat1j!R%ev~auDYzNE`PzQ%l}cGWg4v+e ze>Dr6A{LAi*k^p$Z<9=^1ne2Y7N1y*SwQ1Z{wqC(FgZG-uq8S8bOM=9h{+HMb=nuGS4TF_Ys& z^ZQA|YCzAG3uzeSR9E;6*6{d)J%CirX4nkz?Idr;u3$Lwz;EEFIkBF*?xjSOduu?g zWhvR~iumExrlf2^UbYRNV>`JACsbF~eP3mF$rIdJBa@^UoXl494?>xqd1CxUTvZ*M_CP@;)Ta+Q%LfpB8 zNuWeWezX(~89lv(`@f(rxnZA0E_Gl0R+bBO*cASB#>h+3dA1QcdDi9A+xfgs9LKAYa!s?gEGvL)3is`h zxG;KmAAbFs!?iR0x{62rYc_z+N~L&!&C<2quENzLl>;IuH*Uyc%iGSGrwkt^$%y5o z0AdCt^SE4?&sW-$c)hE{el&3VOq|HEV72AWy)3lNJMQ7T+09=^Q2+;e9FDStj2hiq}k~o2`T3q7~;WBiwcN zfZAWm#(7`|nYjKaX2sRV|Lz51stDpKh0%y{!kNe_3xN6-L`nM_Gp#sytMibJP8sYM z_m*^(#w;ik%L#0mgu!i5CSJ$_DS!~VakHtT6On3viikTCiz3iH4i7~xjoi; zkP!A3-xWZ>m>7+)f({@_YUy-6g9$a>A{Grgi!T)fLb{NSJm?kiIN(!M;a>lu;P4fZdH~VXs)Qn#!7& z-re4)c!rloh3w$4-<479-!`qS1Ncg>u2+n#RMJWC=m<4+{GNdH0TFote>=|<<=|<=>|&&=|=>|!~|\\^=|&=|\\|=|\\.=|x=|%=|\\/=|\\*=|\\-=|\\+=|=~|\\*\\*|\\-\\-|\\.\\.|\\|\\||&&|\\+\\+|\\->|!=|==|>=|<=|>>|<<|,|=|\\?\\:|\\^|\\||x|%|\\/|\\*|<|&|\\\\|~|!|>|\\.|\\-|\\+|\\-C|\\-b|\\-S|\\-u|\\-t|\\-p|\\-l|\\-d|\\-f|\\-g|\\-s|\\-z|\\-k|\\-e|\\-O|\\-T|\\-B|\\-M|\\-A|\\-X|\\-W|\\-c|\\-R|\\-o|\\-x|\\-w|\\-r|\\b(?:and|cmp|eq|ge|gt|le|lt|ne|not|or|xor)" + }, { + token: "comment", + regex: "#.*$" + }, { + token: "lparen", + regex: "[[({]" + }, { + token: "rparen", + regex: "[\\])}]" + }, { + token: "text", + regex: "\\s+" + } + ], + "qqstring": [ + { + token: "string", + regex: '(?:(?:\\\\.)|(?:[^"\\\\]))*?"', + next: "start" + }, { + token: "string", + regex: '.+' + } + ], + "qstring": [ + { + token: "string", + regex: "(?:(?:\\\\.)|(?:[^'\\\\]))*?'", + next: "start" + }, { + token: "string", + regex: '.+' + } + ], + "block_comment": [ + { + token: "comment.doc", + regex: "^=cut\\b", + next: "start" + }, + { + defaultToken: "comment.doc" + } + ] + }; +}; +oop.inherits(PerlHighlightRules, TextHighlightRules); +exports.PerlHighlightRules = PerlHighlightRules; + +}); + +ace.define("ace/mode/python_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){/* + * TODO: python delimiters + */ +"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var PythonHighlightRules = function () { + var keywords = ("and|as|assert|break|class|continue|def|del|elif|else|except|exec|" + + "finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|" + + "raise|return|try|while|with|yield|async|await|nonlocal"); + var builtinConstants = ("True|False|None|NotImplemented|Ellipsis|__debug__"); + var builtinFunctions = ("abs|divmod|input|open|staticmethod|all|enumerate|int|ord|str|any|" + + "eval|isinstance|pow|sum|basestring|execfile|issubclass|print|super|" + + "binfile|bin|iter|property|tuple|bool|filter|len|range|type|bytearray|" + + "float|list|raw_input|unichr|callable|format|locals|reduce|unicode|" + + "chr|frozenset|long|reload|vars|classmethod|getattr|map|repr|xrange|" + + "cmp|globals|max|reversed|zip|compile|hasattr|memoryview|round|" + + "__import__|complex|hash|min|apply|delattr|help|next|setattr|set|" + + "buffer|dict|hex|object|slice|coerce|dir|id|oct|sorted|intern|" + + "ascii|breakpoint|bytes"); + var keywordMapper = this.createKeywordMapper({ + "invalid.deprecated": "debugger", + "support.function": builtinFunctions, + "variable.language": "self|cls", + "constant.language": builtinConstants, + "keyword": keywords + }, "identifier"); + var strPre = "[uU]?"; + var strRawPre = "[rR]"; + var strFormatPre = "[fF]"; + var strRawFormatPre = "(?:[rR][fF]|[fF][rR])"; + var decimalInteger = "(?:(?:[1-9]\\d*)|(?:0))"; + var octInteger = "(?:0[oO]?[0-7]+)"; + var hexInteger = "(?:0[xX][\\dA-Fa-f]+)"; + var binInteger = "(?:0[bB][01]+)"; + var integer = "(?:" + decimalInteger + "|" + octInteger + "|" + hexInteger + "|" + binInteger + ")"; + var exponent = "(?:[eE][+-]?\\d+)"; + var fraction = "(?:\\.\\d+)"; + var intPart = "(?:\\d+)"; + var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))"; + var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + exponent + ")"; + var floatNumber = "(?:" + exponentFloat + "|" + pointFloat + ")"; + var stringEscape = "\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\abfnrtv'\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})"; + this.$rules = { + "start": [{ + token: "comment", + regex: "#.*$" + }, { + token: "string", + regex: strPre + '"{3}', + next: "qqstring3" + }, { + token: "string", + regex: strPre + '"(?=.)', + next: "qqstring" + }, { + token: "string", + regex: strPre + "'{3}", + next: "qstring3" + }, { + token: "string", + regex: strPre + "'(?=.)", + next: "qstring" + }, { + token: "string", + regex: strRawPre + '"{3}', + next: "rawqqstring3" + }, { + token: "string", + regex: strRawPre + '"(?=.)', + next: "rawqqstring" + }, { + token: "string", + regex: strRawPre + "'{3}", + next: "rawqstring3" + }, { + token: "string", + regex: strRawPre + "'(?=.)", + next: "rawqstring" + }, { + token: "string", + regex: strFormatPre + '"{3}', + next: "fqqstring3" + }, { + token: "string", + regex: strFormatPre + '"(?=.)', + next: "fqqstring" + }, { + token: "string", + regex: strFormatPre + "'{3}", + next: "fqstring3" + }, { + token: "string", + regex: strFormatPre + "'(?=.)", + next: "fqstring" + }, { + token: "string", + regex: strRawFormatPre + '"{3}', + next: "rfqqstring3" + }, { + token: "string", + regex: strRawFormatPre + '"(?=.)', + next: "rfqqstring" + }, { + token: "string", + regex: strRawFormatPre + "'{3}", + next: "rfqstring3" + }, { + token: "string", + regex: strRawFormatPre + "'(?=.)", + next: "rfqstring" + }, { + token: "keyword.operator", + regex: "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|%|@|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|=" + }, { + token: "punctuation", + regex: ",|:|;|\\->|\\+=|\\-=|\\*=|\\/=|\\/\\/=|%=|@=|&=|\\|=|^=|>>=|<<=|\\*\\*=" + }, { + token: "paren.lparen", + regex: "[\\[\\(\\{]" + }, { + token: "paren.rparen", + regex: "[\\]\\)\\}]" + }, { + token: ["keyword", "text", "entity.name.function"], + regex: "(def|class)(\\s+)([\\u00BF-\\u1FFF\\u2C00-\\uD7FF\\w]+)" + }, { + token: "text", + regex: "\\s+" + }, { + include: "constants" + }], + "qqstring3": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", + regex: '"{3}', + next: "start" + }, { + defaultToken: "string" + }], + "qstring3": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", + regex: "'{3}", + next: "start" + }, { + defaultToken: "string" + }], + "qqstring": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", + regex: "\\\\$", + next: "qqstring" + }, { + token: "string", + regex: '"|$', + next: "start" + }, { + defaultToken: "string" + }], + "qstring": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", + regex: "\\\\$", + next: "qstring" + }, { + token: "string", + regex: "'|$", + next: "start" + }, { + defaultToken: "string" + }], + "rawqqstring3": [{ + token: "string", + regex: '"{3}', + next: "start" + }, { + defaultToken: "string" + }], + "rawqstring3": [{ + token: "string", + regex: "'{3}", + next: "start" + }, { + defaultToken: "string" + }], + "rawqqstring": [{ + token: "string", + regex: "\\\\$", + next: "rawqqstring" + }, { + token: "string", + regex: '"|$', + next: "start" + }, { + defaultToken: "string" + }], + "rawqstring": [{ + token: "string", + regex: "\\\\$", + next: "rawqstring" + }, { + token: "string", + regex: "'|$", + next: "start" + }, { + defaultToken: "string" + }], + "fqqstring3": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", + regex: '"{3}', + next: "start" + }, { + token: "paren.lparen", + regex: "{", + push: "fqstringParRules" + }, { + defaultToken: "string" + }], + "fqstring3": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", + regex: "'{3}", + next: "start" + }, { + token: "paren.lparen", + regex: "{", + push: "fqstringParRules" + }, { + defaultToken: "string" + }], + "fqqstring": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", + regex: "\\\\$", + next: "fqqstring" + }, { + token: "string", + regex: '"|$', + next: "start" + }, { + token: "paren.lparen", + regex: "{", + push: "fqstringParRules" + }, { + defaultToken: "string" + }], + "fqstring": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", + regex: "'|$", + next: "start" + }, { + token: "paren.lparen", + regex: "{", + push: "fqstringParRules" + }, { + defaultToken: "string" + }], + "rfqqstring3": [{ + token: "string", + regex: '"{3}', + next: "start" + }, { + token: "paren.lparen", + regex: "{", + push: "fqstringParRules" + }, { + defaultToken: "string" + }], + "rfqstring3": [{ + token: "string", + regex: "'{3}", + next: "start" + }, { + token: "paren.lparen", + regex: "{", + push: "fqstringParRules" + }, { + defaultToken: "string" + }], + "rfqqstring": [{ + token: "string", + regex: "\\\\$", + next: "rfqqstring" + }, { + token: "string", + regex: '"|$', + next: "start" + }, { + token: "paren.lparen", + regex: "{", + push: "fqstringParRules" + }, { + defaultToken: "string" + }], + "rfqstring": [{ + token: "string", + regex: "'|$", + next: "start" + }, { + token: "paren.lparen", + regex: "{", + push: "fqstringParRules" + }, { + defaultToken: "string" + }], + "fqstringParRules": [{ + token: "paren.lparen", + regex: "[\\[\\(]" + }, { + token: "paren.rparen", + regex: "[\\]\\)]" + }, { + token: "string", + regex: "\\s+" + }, { + token: "string", + regex: "'[^']*'" + }, { + token: "string", + regex: '"[^"]*"' + }, { + token: "function.support", + regex: "(!s|!r|!a)" + }, { + include: "constants" + }, { + token: 'paren.rparen', + regex: "}", + next: 'pop' + }, { + token: 'paren.lparen', + regex: "{", + push: "fqstringParRules" + }], + "constants": [{ + token: "constant.numeric", + regex: "(?:" + floatNumber + "|\\d+)[jJ]\\b" + }, { + token: "constant.numeric", + regex: floatNumber + }, { + token: "constant.numeric", + regex: integer + "[lL]\\b" + }, { + token: "constant.numeric", + regex: integer + "\\b" + }, { + token: ["punctuation", "function.support"], + regex: "(\\.)([a-zA-Z_]+)\\b" + }, { + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }] + }; + this.normalizeRules(); +}; +oop.inherits(PythonHighlightRules, TextHighlightRules); +exports.PythonHighlightRules = PythonHighlightRules; + +}); + +ace.define("ace/mode/json_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var JsonHighlightRules = function () { + this.$rules = { + "start": [ + { + token: "variable", + regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]\\s*(?=:)' + }, { + token: "string", + regex: '"', + next: "string" + }, { + token: "constant.numeric", + regex: "0[xX][0-9a-fA-F]+\\b" + }, { + token: "constant.numeric", + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token: "constant.language.boolean", + regex: "(?:true|false)\\b" + }, { + token: "text", + regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + }, { + token: "comment", + regex: "\\/\\/.*$" + }, { + token: "comment.start", + regex: "\\/\\*", + next: "comment" + }, { + token: "paren.lparen", + regex: "[[({]" + }, { + token: "paren.rparen", + regex: "[\\])}]" + }, { + token: "punctuation.operator", + regex: /[,]/ + }, { + token: "text", + regex: "\\s+" + } + ], + "string": [ + { + token: "constant.language.escape", + regex: /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/ + }, { + token: "string", + regex: '"|$', + next: "start" + }, { + defaultToken: "string" + } + ], + "comment": [ + { + token: "comment.end", + regex: "\\*\\/", + next: "start" + }, { + defaultToken: "comment" + } + ] + }; +}; +oop.inherits(JsonHighlightRules, TextHighlightRules); +exports.JsonHighlightRules = JsonHighlightRules; + +}); + +ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; +var JavaScriptHighlightRules = function (options) { + var keywordMapper = this.createKeywordMapper({ + "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|" + // Constructors + "Namespace|QName|XML|XMLList|" + // E4X + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors + "SyntaxError|TypeError|URIError|" + + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions + "isNaN|parseFloat|parseInt|" + + "JSON|Math|" + // Other + "this|arguments|prototype|window|document", + "keyword": "const|yield|import|get|set|async|await|" + + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + + "__parent__|__count__|escape|unescape|with|__proto__|" + + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor", + "storage.type": "const|let|var|function", + "constant.language": "null|Infinity|NaN|undefined", + "support.function": "alert", + "constant.language.boolean": "true|false" + }, "identifier"); + var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; + var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex + "u[0-9a-fA-F]{4}|" + // unicode + "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode + "[0-2][0-7]{0,2}|" + // oct + "3[0-7][0-7]?|" + // oct + "[4-7][0-7]?|" + //oct + ".)"; + this.$rules = { + "no_regex": [ + DocCommentHighlightRules.getStartRule("doc-start"), + comments("no_regex"), + { + token: "string", + regex: "'(?=.)", + next: "qstring" + }, { + token: "string", + regex: '"(?=.)', + next: "qqstring" + }, { + token: "constant.numeric", + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + }, { + token: [ + "storage.type", "punctuation.operator", "support.function", + "punctuation.operator", "entity.name.function", "text", "keyword.operator" + ], + regex: "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe + ")(\\s*)(=)", + next: "function_arguments" + }, { + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", "storage.type", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "entity.name.function", "text", "keyword.operator", "text", "storage.type", + "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(function\\*?)(\\s+)(" + identifierRe + ")(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "entity.name.function", "text", "punctuation.operator", + "text", "storage.type", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "text", "text", "storage.type", "text", "paren.lparen" + ], + regex: "(:)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: "keyword", + regex: "from(?=\\s*('|\"))" + }, { + token: "keyword", + regex: "(?:" + kwBeforeRe + ")\\b", + next: "start" + }, { + token: "support.constant", + regex: /that\b/ + }, { + token: ["storage.type", "punctuation.operator", "support.function.firebug"], + regex: /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ + }, { + token: keywordMapper, + regex: identifierRe + }, { + token: "punctuation.operator", + regex: /[.](?![.])/, + next: "property" + }, { + token: "storage.type", + regex: /=>/, + next: "start" + }, { + token: "keyword.operator", + regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next: "start" + }, { + token: "punctuation.operator", + regex: /[?:,;.]/, + next: "start" + }, { + token: "paren.lparen", + regex: /[\[({]/, + next: "start" + }, { + token: "paren.rparen", + regex: /[\])}]/ + }, { + token: "comment", + regex: /^#!.*$/ + } + ], + property: [{ + token: "text", + regex: "\\s+" + }, { + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()", + next: "function_arguments" + }, { + token: "punctuation.operator", + regex: /[.](?![.])/ + }, { + token: "support.function", + regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ + }, { + token: "support.function.dom", + regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ + }, { + token: "support.constant", + regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ + }, { + token: "identifier", + regex: identifierRe + }, { + regex: "", + token: "empty", + next: "no_regex" + } + ], + "start": [ + DocCommentHighlightRules.getStartRule("doc-start"), + comments("start"), + { + token: "string.regexp", + regex: "\\/", + next: "regex" + }, { + token: "text", + regex: "\\s+|^$", + next: "start" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "regex": [ + { + token: "regexp.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "string.regexp", + regex: "/[sxngimy]*", + next: "no_regex" + }, { + token: "invalid", + regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ + }, { + token: "constant.language.escape", + regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ + }, { + token: "constant.language.delimiter", + regex: /\|/ + }, { + token: "constant.language.escape", + regex: /\[\^?/, + next: "regex_character_class" + }, { + token: "empty", + regex: "$", + next: "no_regex" + }, { + defaultToken: "string.regexp" + } + ], + "regex_character_class": [ + { + token: "regexp.charclass.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "constant.language.escape", + regex: "]", + next: "regex" + }, { + token: "constant.language.escape", + regex: "-" + }, { + token: "empty", + regex: "$", + next: "no_regex" + }, { + defaultToken: "string.regexp.charachterclass" + } + ], + "default_parameter": [ + { + token: "string", + regex: "'(?=.)", + push: [ + { + token: "string", + regex: "'|$", + next: "pop" + }, { + include: "qstring" + } + ] + }, { + token: "string", + regex: '"(?=.)', + push: [ + { + token: "string", + regex: '"|$', + next: "pop" + }, { + include: "qqstring" + } + ] + }, { + token: "constant.language", + regex: "null|Infinity|NaN|undefined" + }, { + token: "constant.numeric", + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + }, { + token: "punctuation.operator", + regex: ",", + next: "function_arguments" + }, { + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "function_arguments": [ + comments("function_arguments"), + { + token: "variable.parameter", + regex: identifierRe + }, { + token: "punctuation.operator", + regex: "," + }, { + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: '"|$', + next: "no_regex" + }, { + defaultToken: "string" + } + ], + "qstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: "'|$", + next: "no_regex" + }, { + defaultToken: "string" + } + ] + }; + if (!options || !options.noES6) { + this.$rules.no_regex.unshift({ + regex: "[{}]", onMatch: function (val, state, stack) { + this.next = val == "{" ? this.nextState : ""; + if (val == "{" && stack.length) { + stack.unshift("start", state); + } + else if (val == "}" && stack.length) { + stack.shift(); + this.next = stack.shift(); + if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) + return "paren.quasi.end"; + } + return val == "{" ? "paren.lparen" : "paren.rparen"; + }, + nextState: "start" + }, { + token: "string.quasi.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedRe + }, { + token: "paren.quasi.start", + regex: /\${/, + push: "start" + }, { + token: "string.quasi.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string.quasi" + }] + }, { + token: ["variable.parameter", "text"], + regex: "(" + identifierRe + ")(\\s*)(?=\\=>)" + }, { + token: "paren.lparen", + regex: "(\\()(?=.+\\s*=>)", + next: "function_arguments" + }, { + token: "variable.language", + regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b" + }); + this.$rules["function_arguments"].unshift({ + token: "keyword.operator", + regex: "=", + next: "default_parameter" + }, { + token: "keyword.operator", + regex: "\\.{3}" + }); + this.$rules["property"].unshift({ + token: "support.function", + regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|" + + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()" + }, { + token: "constant.language", + regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b" + }); + if (!options || options.jsx != false) + JSX.call(this); + } + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]); + this.normalizeRules(); +}; +oop.inherits(JavaScriptHighlightRules, TextHighlightRules); +function JSX() { + var tagRegex = identifierRe.replace("\\d", "\\d\\-"); + var jsxTag = { + onMatch: function (val, state, stack) { + var offset = val.charAt(1) == "/" ? 2 : 1; + if (offset == 1) { + if (state != this.nextState) + stack.unshift(this.next, this.nextState, 0); + else + stack.unshift(this.next); + stack[2]++; + } + else if (offset == 2) { + if (state == this.nextState) { + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.shift(); + stack.shift(); + } + } + } + return [{ + type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", + value: val.slice(0, offset) + }, { + type: "meta.tag.tag-name.xml", + value: val.substr(offset) + }]; + }, + regex: "", + onMatch: function (value, currentState, stack) { + if (currentState == stack[0]) + stack.shift(); + if (value.length == 2) { + if (stack[0] == this.nextState) + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.splice(0, 2); + } + } + this.next = stack[0] || "start"; + return [{ type: this.token, value: value }]; + }, + nextState: "jsx" + }, + jsxJsRule, + comments("jsxAttributes"), + { + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + token: "text.tag-whitespace.xml", + regex: "\\s+" + }, { + token: "string.attribute-value.xml", + regex: "'", + stateName: "jsx_attr_q", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + stateName: "jsx_attr_qq", + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, + jsxTag + ]; + this.$rules.reference = [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }]; +} +function comments(next) { + return [ + { + token: "comment", + regex: /\/\*/, + next: [ + DocCommentHighlightRules.getTagRule(), + { token: "comment", regex: "\\*\\/", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } + ] + }, { + token: "comment", + regex: "\\/\\/", + next: [ + DocCommentHighlightRules.getTagRule(), + { token: "comment", regex: "$|^", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } + ] + } + ]; +} +exports.JavaScriptHighlightRules = JavaScriptHighlightRules; + +}); + +ace.define("ace/mode/pgsql_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules","ace/mode/perl_highlight_rules","ace/mode/python_highlight_rules","ace/mode/json_highlight_rules","ace/mode/javascript_highlight_rules"], function(require, exports, module){var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var PerlHighlightRules = require("./perl_highlight_rules").PerlHighlightRules; +var PythonHighlightRules = require("./python_highlight_rules").PythonHighlightRules; +var JsonHighlightRules = require("./json_highlight_rules").JsonHighlightRules; +var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; +var PgsqlHighlightRules = function () { + var keywords = ("abort|absolute|abstime|access|aclitem|action|add|admin|after|aggregate|all|also|alter|always|" + + "analyse|analyze|and|any|anyarray|anyelement|anyenum|anynonarray|anyrange|array|as|asc|" + + "assertion|assignment|asymmetric|at|attribute|authorization|backward|before|begin|between|" + + "bigint|binary|bit|bool|boolean|both|box|bpchar|by|bytea|cache|called|cascade|cascaded|case|cast|" + + "catalog|chain|char|character|characteristics|check|checkpoint|cid|cidr|circle|class|close|" + + "cluster|coalesce|collate|collation|column|comment|comments|commit|committed|concurrently|" + + "configuration|connection|constraint|constraints|content|continue|conversion|copy|cost|" + + "create|cross|cstring|csv|current|current_catalog|current_date|current_role|" + + "current_schema|current_time|current_timestamp|current_user|cursor|cycle|data|database|" + + "date|daterange|day|deallocate|dec|decimal|declare|default|defaults|deferrable|deferred|" + + "definer|delete|delimiter|delimiters|desc|dictionary|disable|discard|distinct|do|document|" + + "domain|double|drop|each|else|enable|encoding|encrypted|end|enum|escape|event|event_trigger|" + + "except|exclude|excluding|exclusive|execute|exists|explain|extension|external|extract|false|" + + "family|fdw_handler|fetch|first|float|float4|float8|following|for|force|foreign|forward|" + + "freeze|from|full|function|functions|global|grant|granted|greatest|group|gtsvector|handler|" + + "having|header|hold|hour|identity|if|ilike|immediate|immutable|implicit|in|including|" + + "increment|index|indexes|inet|inherit|inherits|initially|inline|inner|inout|input|" + + "insensitive|insert|instead|int|int2|int2vector|int4|int4range|int8|int8range|integer|" + + "internal|intersect|interval|into|invoker|is|isnull|isolation|join|json|key|label|language|" + + "language_handler|large|last|lateral|lc_collate|lc_ctype|leading|leakproof|least|left|level|" + + "like|limit|line|listen|load|local|localtime|localtimestamp|location|lock|lseg|macaddr|" + + "mapping|match|materialized|maxvalue|minute|minvalue|mode|money|month|move|name|names|" + + "national|natural|nchar|next|no|none|not|nothing|notify|notnull|nowait|null|nullif|nulls|" + + "numeric|numrange|object|of|off|offset|oid|oids|oidvector|on|only|opaque|operator|option|" + + "options|or|order|out|outer|over|overlaps|overlay|owned|owner|parser|partial|partition|passing|" + + "password|path|pg_attribute|pg_auth_members|pg_authid|pg_class|pg_database|pg_node_tree|" + + "pg_proc|pg_type|placing|plans|point|polygon|position|preceding|precision|prepare|prepared|" + + "preserve|primary|prior|privileges|procedural|procedure|program|quote|range|read|real|" + + "reassign|recheck|record|recursive|ref|refcursor|references|refresh|regclass|regconfig|" + + "regdictionary|regoper|regoperator|regproc|regprocedure|regtype|reindex|relative|release|" + + "reltime|rename|repeatable|replace|replica|reset|restart|restrict|returning|returns|revoke|" + + "right|role|rollback|row|rows|rule|savepoint|schema|scroll|search|second|security|select|" + + "sequence|sequences|serializable|server|session|session_user|set|setof|share|show|similar|" + + "simple|smallint|smgr|snapshot|some|stable|standalone|start|statement|statistics|stdin|" + + "stdout|storage|strict|strip|substring|symmetric|sysid|system|table|tables|tablespace|temp|" + + "template|temporary|text|then|tid|time|timestamp|timestamptz|timetz|tinterval|to|trailing|" + + "transaction|treat|trigger|trim|true|truncate|trusted|tsquery|tsrange|tstzrange|tsvector|" + + "txid_snapshot|type|types|unbounded|uncommitted|unencrypted|union|unique|unknown|unlisten|" + + "unlogged|until|update|user|using|uuid|vacuum|valid|validate|validator|value|values|varbit|" + + "varchar|variadic|varying|verbose|version|view|void|volatile|when|where|whitespace|window|" + + "with|without|work|wrapper|write|xid|xml|xmlattributes|xmlconcat|xmlelement|xmlexists|" + + "xmlforest|xmlparse|xmlpi|xmlroot|xmlserialize|year|yes|zone|ties"); + var builtinFunctions = ("RI_FKey_cascade_del|RI_FKey_cascade_upd|RI_FKey_check_ins|RI_FKey_check_upd|" + + "RI_FKey_noaction_del|RI_FKey_noaction_upd|RI_FKey_restrict_del|RI_FKey_restrict_upd|" + + "RI_FKey_setdefault_del|RI_FKey_setdefault_upd|RI_FKey_setnull_del|" + + "RI_FKey_setnull_upd|abbrev|abs|abstime|abstimeeq|abstimege|abstimegt|abstimein|abstimele|" + + "abstimelt|abstimene|abstimeout|abstimerecv|abstimesend|aclcontains|acldefault|" + + "aclexplode|aclinsert|aclitemeq|aclitemin|aclitemout|aclremove|acos|age|any_in|any_out|" + + "anyarray_in|anyarray_out|anyarray_recv|anyarray_send|anyelement_in|anyelement_out|" + + "anyenum_in|anyenum_out|anynonarray_in|anynonarray_out|anyrange_in|anyrange_out|" + + "anytextcat|area|areajoinsel|areasel|array_agg|array_agg_finalfn|array_agg_transfn|" + + "array_append|array_cat|array_dims|array_eq|array_fill|array_ge|array_gt|array_in|" + + "array_larger|array_le|array_length|array_lower|array_lt|array_ndims|array_ne|array_out|" + + "array_prepend|array_recv|array_remove|array_replace|array_send|array_smaller|" + + "array_to_json|array_to_string|array_typanalyze|array_upper|arraycontained|" + + "arraycontains|arraycontjoinsel|arraycontsel|arrayoverlap|ascii|ascii_to_mic|" + + "ascii_to_utf8|asin|atan|atan2|avg|big5_to_euc_tw|big5_to_mic|big5_to_utf8|bit_and|bit_in|" + + "bit_length|bit_or|bit_out|bit_recv|bit_send|bitand|bitcat|bitcmp|biteq|bitge|bitgt|bitle|" + + "bitlt|bitne|bitnot|bitor|bitshiftleft|bitshiftright|bittypmodin|bittypmodout|bitxor|bool|" + + "bool_and|bool_or|booland_statefunc|booleq|boolge|boolgt|boolin|boolle|boollt|boolne|" + + "boolor_statefunc|boolout|boolrecv|boolsend|box|box_above|box_above_eq|box_add|box_below|" + + "box_below_eq|box_center|box_contain|box_contain_pt|box_contained|box_distance|box_div|" + + "box_eq|box_ge|box_gt|box_in|box_intersect|box_le|box_left|box_lt|box_mul|box_out|" + + "box_overabove|box_overbelow|box_overlap|box_overleft|box_overright|box_recv|box_right|" + + "box_same|box_send|box_sub|bpchar_larger|bpchar_pattern_ge|bpchar_pattern_gt|" + + "bpchar_pattern_le|bpchar_pattern_lt|bpchar_smaller|bpcharcmp|bpchareq|bpcharge|" + + "bpchargt|bpchariclike|bpcharicnlike|bpcharicregexeq|bpcharicregexne|bpcharin|bpcharle|" + + "bpcharlike|bpcharlt|bpcharne|bpcharnlike|bpcharout|bpcharrecv|bpcharregexeq|" + + "bpcharregexne|bpcharsend|bpchartypmodin|bpchartypmodout|broadcast|btabstimecmp|" + + "btarraycmp|btbeginscan|btboolcmp|btbpchar_pattern_cmp|btbuild|btbuildempty|" + + "btbulkdelete|btcanreturn|btcharcmp|btcostestimate|btendscan|btfloat48cmp|btfloat4cmp|" + + "btfloat4sortsupport|btfloat84cmp|btfloat8cmp|btfloat8sortsupport|btgetbitmap|" + + "btgettuple|btinsert|btint24cmp|btint28cmp|btint2cmp|btint2sortsupport|btint42cmp|" + + "btint48cmp|btint4cmp|btint4sortsupport|btint82cmp|btint84cmp|btint8cmp|" + + "btint8sortsupport|btmarkpos|btnamecmp|btnamesortsupport|btoidcmp|btoidsortsupport|" + + "btoidvectorcmp|btoptions|btrecordcmp|btreltimecmp|btrescan|btrestrpos|btrim|" + + "bttext_pattern_cmp|bttextcmp|bttidcmp|bttintervalcmp|btvacuumcleanup|" + + "bytea_string_agg_finalfn|bytea_string_agg_transfn|byteacat|byteacmp|byteaeq|byteage|" + + "byteagt|byteain|byteale|bytealike|bytealt|byteane|byteanlike|byteaout|bytearecv|byteasend|" + + "cash_cmp|cash_div_cash|cash_div_flt4|cash_div_flt8|cash_div_int2|cash_div_int4|cash_eq|" + + "cash_ge|cash_gt|cash_in|cash_le|cash_lt|cash_mi|cash_mul_flt4|cash_mul_flt8|" + + "cash_mul_int2|cash_mul_int4|cash_ne|cash_out|cash_pl|cash_recv|cash_send|cash_words|" + + "cashlarger|cashsmaller|cbrt|ceil|ceiling|center|char|char_length|character_length|chareq|" + + "charge|chargt|charin|charle|charlt|charne|charout|charrecv|charsend|chr|cideq|cidin|cidout|" + + "cidr|cidr_in|cidr_out|cidr_recv|cidr_send|cidrecv|cidsend|circle|circle_above|" + + "circle_add_pt|circle_below|circle_center|circle_contain|circle_contain_pt|" + + "circle_contained|circle_distance|circle_div_pt|circle_eq|circle_ge|circle_gt|circle_in|" + + "circle_le|circle_left|circle_lt|circle_mul_pt|circle_ne|circle_out|circle_overabove|" + + "circle_overbelow|circle_overlap|circle_overleft|circle_overright|circle_recv|" + + "circle_right|circle_same|circle_send|circle_sub_pt|clock_timestamp|close_lb|close_ls|" + + "close_lseg|close_pb|close_pl|close_ps|close_sb|close_sl|col_description|concat|concat_ws|" + + "contjoinsel|contsel|convert|convert_from|convert_to|corr|cos|cot|count|covar_pop|" + + "covar_samp|cstring_in|cstring_out|cstring_recv|cstring_send|cume_dist|current_database|" + + "current_query|current_schema|current_schemas|current_setting|current_user|currtid|" + + "currtid2|currval|cursor_to_xml|cursor_to_xmlschema|database_to_xml|" + + "database_to_xml_and_xmlschema|database_to_xmlschema|date|date_cmp|date_cmp_timestamp|" + + "date_cmp_timestamptz|date_eq|date_eq_timestamp|date_eq_timestamptz|date_ge|" + + "date_ge_timestamp|date_ge_timestamptz|date_gt|date_gt_timestamp|date_gt_timestamptz|" + + "date_in|date_larger|date_le|date_le_timestamp|date_le_timestamptz|date_lt|" + + "date_lt_timestamp|date_lt_timestamptz|date_mi|date_mi_interval|date_mii|date_ne|" + + "date_ne_timestamp|date_ne_timestamptz|date_out|date_part|date_pl_interval|date_pli|" + + "date_recv|date_send|date_smaller|date_sortsupport|date_trunc|daterange|" + + "daterange_canonical|daterange_subdiff|datetime_pl|datetimetz_pl|dcbrt|decode|degrees|" + + "dense_rank|dexp|diagonal|diameter|dispell_init|dispell_lexize|dist_cpoly|dist_lb|dist_pb|" + + "dist_pc|dist_pl|dist_ppath|dist_ps|dist_sb|dist_sl|div|dlog1|dlog10|domain_in|domain_recv|" + + "dpow|dround|dsimple_init|dsimple_lexize|dsnowball_init|dsnowball_lexize|dsqrt|" + + "dsynonym_init|dsynonym_lexize|dtrunc|elem_contained_by_range|encode|enum_cmp|enum_eq|" + + "enum_first|enum_ge|enum_gt|enum_in|enum_larger|enum_last|enum_le|enum_lt|enum_ne|enum_out|" + + "enum_range|enum_recv|enum_send|enum_smaller|eqjoinsel|eqsel|euc_cn_to_mic|" + + "euc_cn_to_utf8|euc_jis_2004_to_shift_jis_2004|euc_jis_2004_to_utf8|euc_jp_to_mic|" + + "euc_jp_to_sjis|euc_jp_to_utf8|euc_kr_to_mic|euc_kr_to_utf8|euc_tw_to_big5|" + + "euc_tw_to_mic|euc_tw_to_utf8|event_trigger_in|event_trigger_out|every|exp|factorial|" + + "family|fdw_handler_in|fdw_handler_out|first_value|float4|float48div|float48eq|float48ge|" + + "float48gt|float48le|float48lt|float48mi|float48mul|float48ne|float48pl|float4_accum|" + + "float4abs|float4div|float4eq|float4ge|float4gt|float4in|float4larger|float4le|float4lt|" + + "float4mi|float4mul|float4ne|float4out|float4pl|float4recv|float4send|float4smaller|" + + "float4um|float4up|float8|float84div|float84eq|float84ge|float84gt|float84le|float84lt|" + + "float84mi|float84mul|float84ne|float84pl|float8_accum|float8_avg|float8_corr|" + + "float8_covar_pop|float8_covar_samp|float8_regr_accum|float8_regr_avgx|" + + "float8_regr_avgy|float8_regr_intercept|float8_regr_r2|float8_regr_slope|" + + "float8_regr_sxx|float8_regr_sxy|float8_regr_syy|float8_stddev_pop|float8_stddev_samp|" + + "float8_var_pop|float8_var_samp|float8abs|float8div|float8eq|float8ge|float8gt|float8in|" + + "float8larger|float8le|float8lt|float8mi|float8mul|float8ne|float8out|float8pl|float8recv|" + + "float8send|float8smaller|float8um|float8up|floor|flt4_mul_cash|flt8_mul_cash|" + + "fmgr_c_validator|fmgr_internal_validator|fmgr_sql_validator|format|format_type|" + + "gb18030_to_utf8|gbk_to_utf8|generate_series|generate_subscripts|get_bit|get_byte|" + + "get_current_ts_config|getdatabaseencoding|getpgusername|gin_cmp_prefix|" + + "gin_cmp_tslexeme|gin_extract_tsquery|gin_extract_tsvector|gin_tsquery_consistent|" + + "ginarrayconsistent|ginarrayextract|ginbeginscan|ginbuild|ginbuildempty|ginbulkdelete|" + + "gincostestimate|ginendscan|gingetbitmap|gininsert|ginmarkpos|ginoptions|" + + "ginqueryarrayextract|ginrescan|ginrestrpos|ginvacuumcleanup|gist_box_compress|" + + "gist_box_consistent|gist_box_decompress|gist_box_penalty|gist_box_picksplit|" + + "gist_box_same|gist_box_union|gist_circle_compress|gist_circle_consistent|" + + "gist_point_compress|gist_point_consistent|gist_point_distance|gist_poly_compress|" + + "gist_poly_consistent|gistbeginscan|gistbuild|gistbuildempty|gistbulkdelete|" + + "gistcostestimate|gistendscan|gistgetbitmap|gistgettuple|gistinsert|gistmarkpos|" + + "gistoptions|gistrescan|gistrestrpos|gistvacuumcleanup|gtsquery_compress|" + + "gtsquery_consistent|gtsquery_decompress|gtsquery_penalty|gtsquery_picksplit|" + + "gtsquery_same|gtsquery_union|gtsvector_compress|gtsvector_consistent|" + + "gtsvector_decompress|gtsvector_penalty|gtsvector_picksplit|gtsvector_same|" + + "gtsvector_union|gtsvectorin|gtsvectorout|has_any_column_privilege|" + + "has_column_privilege|has_database_privilege|has_foreign_data_wrapper_privilege|" + + "has_function_privilege|has_language_privilege|has_schema_privilege|" + + "has_sequence_privilege|has_server_privilege|has_table_privilege|" + + "has_tablespace_privilege|has_type_privilege|hash_aclitem|hash_array|hash_numeric|" + + "hash_range|hashbeginscan|hashbpchar|hashbuild|hashbuildempty|hashbulkdelete|hashchar|" + + "hashcostestimate|hashendscan|hashenum|hashfloat4|hashfloat8|hashgetbitmap|hashgettuple|" + + "hashinet|hashinsert|hashint2|hashint2vector|hashint4|hashint8|hashmacaddr|hashmarkpos|" + + "hashname|hashoid|hashoidvector|hashoptions|hashrescan|hashrestrpos|hashtext|" + + "hashvacuumcleanup|hashvarlena|height|host|hostmask|iclikejoinsel|iclikesel|" + + "icnlikejoinsel|icnlikesel|icregexeqjoinsel|icregexeqsel|icregexnejoinsel|icregexnesel|" + + "inet_client_addr|inet_client_port|inet_in|inet_out|inet_recv|inet_send|" + + "inet_server_addr|inet_server_port|inetand|inetmi|inetmi_int8|inetnot|inetor|inetpl|" + + "initcap|int2|int24div|int24eq|int24ge|int24gt|int24le|int24lt|int24mi|int24mul|int24ne|" + + "int24pl|int28div|int28eq|int28ge|int28gt|int28le|int28lt|int28mi|int28mul|int28ne|int28pl|" + + "int2_accum|int2_avg_accum|int2_mul_cash|int2_sum|int2abs|int2and|int2div|int2eq|int2ge|" + + "int2gt|int2in|int2larger|int2le|int2lt|int2mi|int2mod|int2mul|int2ne|int2not|int2or|int2out|" + + "int2pl|int2recv|int2send|int2shl|int2shr|int2smaller|int2um|int2up|int2vectoreq|" + + "int2vectorin|int2vectorout|int2vectorrecv|int2vectorsend|int2xor|int4|int42div|int42eq|" + + "int42ge|int42gt|int42le|int42lt|int42mi|int42mul|int42ne|int42pl|int48div|int48eq|int48ge|" + + "int48gt|int48le|int48lt|int48mi|int48mul|int48ne|int48pl|int4_accum|int4_avg_accum|" + + "int4_mul_cash|int4_sum|int4abs|int4and|int4div|int4eq|int4ge|int4gt|int4in|int4inc|" + + "int4larger|int4le|int4lt|int4mi|int4mod|int4mul|int4ne|int4not|int4or|int4out|int4pl|" + + "int4range|int4range_canonical|int4range_subdiff|int4recv|int4send|int4shl|int4shr|" + + "int4smaller|int4um|int4up|int4xor|int8|int82div|int82eq|int82ge|int82gt|int82le|int82lt|" + + "int82mi|int82mul|int82ne|int82pl|int84div|int84eq|int84ge|int84gt|int84le|int84lt|int84mi|" + + "int84mul|int84ne|int84pl|int8_accum|int8_avg|int8_avg_accum|int8_sum|int8abs|int8and|" + + "int8div|int8eq|int8ge|int8gt|int8in|int8inc|int8inc_any|int8inc_float8_float8|int8larger|" + + "int8le|int8lt|int8mi|int8mod|int8mul|int8ne|int8not|int8or|int8out|int8pl|int8pl_inet|" + + "int8range|int8range_canonical|int8range_subdiff|int8recv|int8send|int8shl|int8shr|" + + "int8smaller|int8um|int8up|int8xor|integer_pl_date|inter_lb|inter_sb|inter_sl|internal_in|" + + "internal_out|interval_accum|interval_avg|interval_cmp|interval_div|interval_eq|" + + "interval_ge|interval_gt|interval_hash|interval_in|interval_larger|interval_le|" + + "interval_lt|interval_mi|interval_mul|interval_ne|interval_out|interval_pl|" + + "interval_pl_date|interval_pl_time|interval_pl_timestamp|interval_pl_timestamptz|" + + "interval_pl_timetz|interval_recv|interval_send|interval_smaller|interval_transform|" + + "interval_um|intervaltypmodin|intervaltypmodout|intinterval|isclosed|isempty|isfinite|" + + "ishorizontal|iso8859_1_to_utf8|iso8859_to_utf8|iso_to_koi8r|iso_to_mic|iso_to_win1251|" + + "iso_to_win866|isopen|isparallel|isperp|isvertical|johab_to_utf8|json_agg|" + + "json_agg_finalfn|json_agg_transfn|json_array_element|json_array_element_text|" + + "json_array_elements|json_array_length|json_each|json_each_text|json_extract_path|" + + "json_extract_path_op|json_extract_path_text|json_extract_path_text_op|json_in|" + + "json_object_field|json_object_field_text|json_object_keys|json_out|" + + "json_populate_record|json_populate_recordset|json_recv|json_send|justify_days|" + + "justify_hours|justify_interval|koi8r_to_iso|koi8r_to_mic|koi8r_to_utf8|" + + "koi8r_to_win1251|koi8r_to_win866|koi8u_to_utf8|lag|language_handler_in|" + + "language_handler_out|last_value|lastval|latin1_to_mic|latin2_to_mic|latin2_to_win1250|" + + "latin3_to_mic|latin4_to_mic|lead|left|length|like|like_escape|likejoinsel|likesel|line|" + + "line_distance|line_eq|line_horizontal|line_in|line_interpt|line_intersect|line_out|" + + "line_parallel|line_perp|line_recv|line_send|line_vertical|ln|lo_close|lo_creat|lo_create|" + + "lo_export|lo_import|lo_lseek|lo_lseek64|lo_open|lo_tell|lo_tell64|lo_truncate|" + + "lo_truncate64|lo_unlink|log|loread|lower|lower_inc|lower_inf|lowrite|lpad|lseg|lseg_center|" + + "lseg_distance|lseg_eq|lseg_ge|lseg_gt|lseg_horizontal|lseg_in|lseg_interpt|" + + "lseg_intersect|lseg_le|lseg_length|lseg_lt|lseg_ne|lseg_out|lseg_parallel|lseg_perp|" + + "lseg_recv|lseg_send|lseg_vertical|ltrim|macaddr_and|macaddr_cmp|macaddr_eq|macaddr_ge|" + + "macaddr_gt|macaddr_in|macaddr_le|macaddr_lt|macaddr_ne|macaddr_not|macaddr_or|" + + "macaddr_out|macaddr_recv|macaddr_send|makeaclitem|masklen|max|md5|mic_to_ascii|" + + "mic_to_big5|mic_to_euc_cn|mic_to_euc_jp|mic_to_euc_kr|mic_to_euc_tw|mic_to_iso|" + + "mic_to_koi8r|mic_to_latin1|mic_to_latin2|mic_to_latin3|mic_to_latin4|mic_to_sjis|" + + "mic_to_win1250|mic_to_win1251|mic_to_win866|min|mktinterval|mod|money|mul_d_interval|" + + "name|nameeq|namege|namegt|nameiclike|nameicnlike|nameicregexeq|nameicregexne|namein|" + + "namele|namelike|namelt|namene|namenlike|nameout|namerecv|nameregexeq|nameregexne|namesend|" + + "neqjoinsel|neqsel|netmask|network|network_cmp|network_eq|network_ge|network_gt|" + + "network_le|network_lt|network_ne|network_sub|network_subeq|network_sup|network_supeq|" + + "nextval|nlikejoinsel|nlikesel|notlike|now|npoints|nth_value|ntile|numeric_abs|" + + "numeric_accum|numeric_add|numeric_avg|numeric_avg_accum|numeric_cmp|numeric_div|" + + "numeric_div_trunc|numeric_eq|numeric_exp|numeric_fac|numeric_ge|numeric_gt|numeric_in|" + + "numeric_inc|numeric_larger|numeric_le|numeric_ln|numeric_log|numeric_lt|numeric_mod|" + + "numeric_mul|numeric_ne|numeric_out|numeric_power|numeric_recv|numeric_send|" + + "numeric_smaller|numeric_sqrt|numeric_stddev_pop|numeric_stddev_samp|numeric_sub|" + + "numeric_transform|numeric_uminus|numeric_uplus|numeric_var_pop|numeric_var_samp|" + + "numerictypmodin|numerictypmodout|numnode|numrange|numrange_subdiff|obj_description|" + + "octet_length|oid|oideq|oidge|oidgt|oidin|oidlarger|oidle|oidlt|oidne|oidout|oidrecv|oidsend|" + + "oidsmaller|oidvectoreq|oidvectorge|oidvectorgt|oidvectorin|oidvectorle|oidvectorlt|" + + "oidvectorne|oidvectorout|oidvectorrecv|oidvectorsend|oidvectortypes|on_pb|on_pl|" + + "on_ppath|on_ps|on_sb|on_sl|opaque_in|opaque_out|overlaps|overlay|path|path_add|path_add_pt|" + + "path_center|path_contain_pt|path_distance|path_div_pt|path_in|path_inter|path_length|" + + "path_mul_pt|path_n_eq|path_n_ge|path_n_gt|path_n_le|path_n_lt|path_npoints|path_out|" + + "path_recv|path_send|path_sub_pt|pclose|percent_rank|pg_advisory_lock|" + + "pg_advisory_lock_shared|pg_advisory_unlock|pg_advisory_unlock_all|" + + "pg_advisory_unlock_shared|pg_advisory_xact_lock|pg_advisory_xact_lock_shared|" + + "pg_available_extension_versions|pg_available_extensions|pg_backend_pid|" + + "pg_backup_start_time|pg_cancel_backend|pg_char_to_encoding|pg_client_encoding|" + + "pg_collation_for|pg_collation_is_visible|pg_column_is_updatable|pg_column_size|" + + "pg_conf_load_time|pg_conversion_is_visible|pg_create_restore_point|" + + "pg_current_xlog_insert_location|pg_current_xlog_location|pg_cursor|pg_database_size|" + + "pg_describe_object|pg_encoding_max_length|pg_encoding_to_char|" + + "pg_event_trigger_dropped_objects|pg_export_snapshot|pg_extension_config_dump|" + + "pg_extension_update_paths|pg_function_is_visible|pg_get_constraintdef|pg_get_expr|" + + "pg_get_function_arguments|pg_get_function_identity_arguments|" + + "pg_get_function_result|pg_get_functiondef|pg_get_indexdef|pg_get_keywords|" + + "pg_get_multixact_members|pg_get_ruledef|pg_get_serial_sequence|pg_get_triggerdef|" + + "pg_get_userbyid|pg_get_viewdef|pg_has_role|pg_identify_object|pg_indexes_size|" + + "pg_is_in_backup|pg_is_in_recovery|pg_is_other_temp_schema|pg_is_xlog_replay_paused|" + + "pg_last_xact_replay_timestamp|pg_last_xlog_receive_location|" + + "pg_last_xlog_replay_location|pg_listening_channels|pg_lock_status|pg_ls_dir|" + + "pg_my_temp_schema|pg_node_tree_in|pg_node_tree_out|pg_node_tree_recv|" + + "pg_node_tree_send|pg_notify|pg_opclass_is_visible|pg_operator_is_visible|" + + "pg_opfamily_is_visible|pg_options_to_table|pg_postmaster_start_time|" + + "pg_prepared_statement|pg_prepared_xact|pg_read_binary_file|pg_read_file|" + + "pg_relation_filenode|pg_relation_filepath|pg_relation_is_updatable|pg_relation_size|" + + "pg_reload_conf|pg_rotate_logfile|pg_sequence_parameters|pg_show_all_settings|" + + "pg_size_pretty|pg_sleep|pg_start_backup|pg_stat_clear_snapshot|pg_stat_file|" + + "pg_stat_get_activity|pg_stat_get_analyze_count|pg_stat_get_autoanalyze_count|" + + "pg_stat_get_autovacuum_count|pg_stat_get_backend_activity|" + + "pg_stat_get_backend_activity_start|pg_stat_get_backend_client_addr|" + + "pg_stat_get_backend_client_port|pg_stat_get_backend_dbid|pg_stat_get_backend_idset|" + + "pg_stat_get_backend_pid|pg_stat_get_backend_start|pg_stat_get_backend_userid|" + + "pg_stat_get_backend_waiting|pg_stat_get_backend_xact_start|" + + "pg_stat_get_bgwriter_buf_written_checkpoints|" + + "pg_stat_get_bgwriter_buf_written_clean|pg_stat_get_bgwriter_maxwritten_clean|" + + "pg_stat_get_bgwriter_requested_checkpoints|pg_stat_get_bgwriter_stat_reset_time|" + + "pg_stat_get_bgwriter_timed_checkpoints|pg_stat_get_blocks_fetched|" + + "pg_stat_get_blocks_hit|pg_stat_get_buf_alloc|pg_stat_get_buf_fsync_backend|" + + "pg_stat_get_buf_written_backend|pg_stat_get_checkpoint_sync_time|" + + "pg_stat_get_checkpoint_write_time|pg_stat_get_db_blk_read_time|" + + "pg_stat_get_db_blk_write_time|pg_stat_get_db_blocks_fetched|" + + "pg_stat_get_db_blocks_hit|pg_stat_get_db_conflict_all|" + + "pg_stat_get_db_conflict_bufferpin|pg_stat_get_db_conflict_lock|" + + "pg_stat_get_db_conflict_snapshot|pg_stat_get_db_conflict_startup_deadlock|" + + "pg_stat_get_db_conflict_tablespace|pg_stat_get_db_deadlocks|" + + "pg_stat_get_db_numbackends|pg_stat_get_db_stat_reset_time|" + + "pg_stat_get_db_temp_bytes|pg_stat_get_db_temp_files|pg_stat_get_db_tuples_deleted|" + + "pg_stat_get_db_tuples_fetched|pg_stat_get_db_tuples_inserted|" + + "pg_stat_get_db_tuples_returned|pg_stat_get_db_tuples_updated|" + + "pg_stat_get_db_xact_commit|pg_stat_get_db_xact_rollback|pg_stat_get_dead_tuples|" + + "pg_stat_get_function_calls|pg_stat_get_function_self_time|" + + "pg_stat_get_function_total_time|pg_stat_get_last_analyze_time|" + + "pg_stat_get_last_autoanalyze_time|pg_stat_get_last_autovacuum_time|" + + "pg_stat_get_last_vacuum_time|pg_stat_get_live_tuples|pg_stat_get_numscans|" + + "pg_stat_get_tuples_deleted|pg_stat_get_tuples_fetched|" + + "pg_stat_get_tuples_hot_updated|pg_stat_get_tuples_inserted|" + + "pg_stat_get_tuples_returned|pg_stat_get_tuples_updated|pg_stat_get_vacuum_count|" + + "pg_stat_get_wal_senders|pg_stat_get_xact_blocks_fetched|" + + "pg_stat_get_xact_blocks_hit|pg_stat_get_xact_function_calls|" + + "pg_stat_get_xact_function_self_time|pg_stat_get_xact_function_total_time|" + + "pg_stat_get_xact_numscans|pg_stat_get_xact_tuples_deleted|" + + "pg_stat_get_xact_tuples_fetched|pg_stat_get_xact_tuples_hot_updated|" + + "pg_stat_get_xact_tuples_inserted|pg_stat_get_xact_tuples_returned|" + + "pg_stat_get_xact_tuples_updated|pg_stat_reset|pg_stat_reset_shared|" + + "pg_stat_reset_single_function_counters|pg_stat_reset_single_table_counters|" + + "pg_stop_backup|pg_switch_xlog|pg_table_is_visible|pg_table_size|" + + "pg_tablespace_databases|pg_tablespace_location|pg_tablespace_size|" + + "pg_terminate_backend|pg_timezone_abbrevs|pg_timezone_names|pg_total_relation_size|" + + "pg_trigger_depth|pg_try_advisory_lock|pg_try_advisory_lock_shared|" + + "pg_try_advisory_xact_lock|pg_try_advisory_xact_lock_shared|pg_ts_config_is_visible|" + + "pg_ts_dict_is_visible|pg_ts_parser_is_visible|pg_ts_template_is_visible|" + + "pg_type_is_visible|pg_typeof|pg_xlog_location_diff|pg_xlog_replay_pause|" + + "pg_xlog_replay_resume|pg_xlogfile_name|pg_xlogfile_name_offset|pi|plainto_tsquery|" + + "plpgsql_call_handler|plpgsql_inline_handler|plpgsql_validator|point|point_above|" + + "point_add|point_below|point_distance|point_div|point_eq|point_horiz|point_in|point_left|" + + "point_mul|point_ne|point_out|point_recv|point_right|point_send|point_sub|point_vert|" + + "poly_above|poly_below|poly_center|poly_contain|poly_contain_pt|poly_contained|" + + "poly_distance|poly_in|poly_left|poly_npoints|poly_out|poly_overabove|poly_overbelow|" + + "poly_overlap|poly_overleft|poly_overright|poly_recv|poly_right|poly_same|poly_send|" + + "polygon|popen|position|positionjoinsel|positionsel|postgresql_fdw_validator|pow|power|" + + "prsd_end|prsd_headline|prsd_lextype|prsd_nexttoken|prsd_start|pt_contained_circle|" + + "pt_contained_poly|query_to_xml|query_to_xml_and_xmlschema|query_to_xmlschema|" + + "querytree|quote_ident|quote_literal|quote_nullable|radians|radius|random|range_adjacent|" + + "range_after|range_before|range_cmp|range_contained_by|range_contains|" + + "range_contains_elem|range_eq|range_ge|range_gist_compress|range_gist_consistent|" + + "range_gist_decompress|range_gist_penalty|range_gist_picksplit|range_gist_same|" + + "range_gist_union|range_gt|range_in|range_intersect|range_le|range_lt|range_minus|" + + "range_ne|range_out|range_overlaps|range_overleft|range_overright|range_recv|range_send|" + + "range_typanalyze|range_union|rangesel|rank|record_eq|record_ge|record_gt|record_in|" + + "record_le|record_lt|record_ne|record_out|record_recv|record_send|regclass|regclassin|" + + "regclassout|regclassrecv|regclasssend|regconfigin|regconfigout|regconfigrecv|" + + "regconfigsend|regdictionaryin|regdictionaryout|regdictionaryrecv|regdictionarysend|" + + "regexeqjoinsel|regexeqsel|regexnejoinsel|regexnesel|regexp_matches|regexp_replace|" + + "regexp_split_to_array|regexp_split_to_table|regoperatorin|regoperatorout|" + + "regoperatorrecv|regoperatorsend|regoperin|regoperout|regoperrecv|regopersend|" + + "regprocedurein|regprocedureout|regprocedurerecv|regproceduresend|regprocin|regprocout|" + + "regprocrecv|regprocsend|regr_avgx|regr_avgy|regr_count|regr_intercept|regr_r2|" + + "regr_slope|regr_sxx|regr_sxy|regr_syy|regtypein|regtypeout|regtyperecv|regtypesend|" + + "reltime|reltimeeq|reltimege|reltimegt|reltimein|reltimele|reltimelt|reltimene|reltimeout|" + + "reltimerecv|reltimesend|repeat|replace|reverse|right|round|row_number|row_to_json|rpad|" + + "rtrim|scalargtjoinsel|scalargtsel|scalarltjoinsel|scalarltsel|schema_to_xml|" + + "schema_to_xml_and_xmlschema|schema_to_xmlschema|session_user|set_bit|set_byte|" + + "set_config|set_masklen|setseed|setval|setweight|shell_in|shell_out|" + + "shift_jis_2004_to_euc_jis_2004|shift_jis_2004_to_utf8|shobj_description|sign|" + + "similar_escape|sin|sjis_to_euc_jp|sjis_to_mic|sjis_to_utf8|slope|smgreq|smgrin|smgrne|" + + "smgrout|spg_kd_choose|spg_kd_config|spg_kd_inner_consistent|spg_kd_picksplit|" + + "spg_quad_choose|spg_quad_config|spg_quad_inner_consistent|spg_quad_leaf_consistent|" + + "spg_quad_picksplit|spg_range_quad_choose|spg_range_quad_config|" + + "spg_range_quad_inner_consistent|spg_range_quad_leaf_consistent|" + + "spg_range_quad_picksplit|spg_text_choose|spg_text_config|spg_text_inner_consistent|" + + "spg_text_leaf_consistent|spg_text_picksplit|spgbeginscan|spgbuild|spgbuildempty|" + + "spgbulkdelete|spgcanreturn|spgcostestimate|spgendscan|spggetbitmap|spggettuple|" + + "spginsert|spgmarkpos|spgoptions|spgrescan|spgrestrpos|spgvacuumcleanup|split_part|sqrt|" + + "statement_timestamp|stddev|stddev_pop|stddev_samp|string_agg|string_agg_finalfn|" + + "string_agg_transfn|string_to_array|strip|strpos|substr|substring|sum|" + + "suppress_redundant_updates_trigger|table_to_xml|table_to_xml_and_xmlschema|" + + "table_to_xmlschema|tan|text|text_ge|text_gt|text_larger|text_le|text_lt|text_pattern_ge|" + + "text_pattern_gt|text_pattern_le|text_pattern_lt|text_smaller|textanycat|textcat|texteq|" + + "texticlike|texticnlike|texticregexeq|texticregexne|textin|textlen|textlike|textne|" + + "textnlike|textout|textrecv|textregexeq|textregexne|textsend|thesaurus_init|" + + "thesaurus_lexize|tideq|tidge|tidgt|tidin|tidlarger|tidle|tidlt|tidne|tidout|tidrecv|tidsend|" + + "tidsmaller|time_cmp|time_eq|time_ge|time_gt|time_hash|time_in|time_larger|time_le|time_lt|" + + "time_mi_interval|time_mi_time|time_ne|time_out|time_pl_interval|time_recv|time_send|" + + "time_smaller|time_transform|timedate_pl|timemi|timenow|timeofday|timepl|timestamp_cmp|" + + "timestamp_cmp_date|timestamp_cmp_timestamptz|timestamp_eq|timestamp_eq_date|" + + "timestamp_eq_timestamptz|timestamp_ge|timestamp_ge_date|timestamp_ge_timestamptz|" + + "timestamp_gt|timestamp_gt_date|timestamp_gt_timestamptz|timestamp_hash|timestamp_in|" + + "timestamp_larger|timestamp_le|timestamp_le_date|timestamp_le_timestamptz|" + + "timestamp_lt|timestamp_lt_date|timestamp_lt_timestamptz|timestamp_mi|" + + "timestamp_mi_interval|timestamp_ne|timestamp_ne_date|timestamp_ne_timestamptz|" + + "timestamp_out|timestamp_pl_interval|timestamp_recv|timestamp_send|timestamp_smaller|" + + "timestamp_sortsupport|timestamp_transform|timestamptypmodin|timestamptypmodout|" + + "timestamptz_cmp|timestamptz_cmp_date|timestamptz_cmp_timestamp|timestamptz_eq|" + + "timestamptz_eq_date|timestamptz_eq_timestamp|timestamptz_ge|timestamptz_ge_date|" + + "timestamptz_ge_timestamp|timestamptz_gt|timestamptz_gt_date|" + + "timestamptz_gt_timestamp|timestamptz_in|timestamptz_larger|timestamptz_le|" + + "timestamptz_le_date|timestamptz_le_timestamp|timestamptz_lt|timestamptz_lt_date|" + + "timestamptz_lt_timestamp|timestamptz_mi|timestamptz_mi_interval|timestamptz_ne|" + + "timestamptz_ne_date|timestamptz_ne_timestamp|timestamptz_out|" + + "timestamptz_pl_interval|timestamptz_recv|timestamptz_send|timestamptz_smaller|" + + "timestamptztypmodin|timestamptztypmodout|timetypmodin|timetypmodout|timetz_cmp|" + + "timetz_eq|timetz_ge|timetz_gt|timetz_hash|timetz_in|timetz_larger|timetz_le|timetz_lt|" + + "timetz_mi_interval|timetz_ne|timetz_out|timetz_pl_interval|timetz_recv|timetz_send|" + + "timetz_smaller|timetzdate_pl|timetztypmodin|timetztypmodout|timezone|tinterval|" + + "tintervalct|tintervalend|tintervaleq|tintervalge|tintervalgt|tintervalin|tintervalle|" + + "tintervalleneq|tintervallenge|tintervallengt|tintervallenle|tintervallenlt|" + + "tintervallenne|tintervallt|tintervalne|tintervalout|tintervalov|tintervalrecv|" + + "tintervalrel|tintervalsame|tintervalsend|tintervalstart|to_ascii|to_char|to_date|to_hex|" + + "to_json|to_number|to_timestamp|to_tsquery|to_tsvector|transaction_timestamp|translate|" + + "trigger_in|trigger_out|trunc|ts_debug|ts_headline|ts_lexize|ts_match_qv|ts_match_tq|" + + "ts_match_tt|ts_match_vq|ts_parse|ts_rank|ts_rank_cd|ts_rewrite|ts_stat|ts_token_type|" + + "ts_typanalyze|tsmatchjoinsel|tsmatchsel|tsq_mcontained|tsq_mcontains|tsquery_and|" + + "tsquery_cmp|tsquery_eq|tsquery_ge|tsquery_gt|tsquery_le|tsquery_lt|tsquery_ne|" + + "tsquery_not|tsquery_or|tsqueryin|tsqueryout|tsqueryrecv|tsquerysend|tsrange|" + + "tsrange_subdiff|tstzrange|tstzrange_subdiff|tsvector_cmp|tsvector_concat|tsvector_eq|" + + "tsvector_ge|tsvector_gt|tsvector_le|tsvector_lt|tsvector_ne|tsvector_update_trigger|" + + "tsvector_update_trigger_column|tsvectorin|tsvectorout|tsvectorrecv|tsvectorsend|" + + "txid_current|txid_current_snapshot|txid_snapshot_in|txid_snapshot_out|" + + "txid_snapshot_recv|txid_snapshot_send|txid_snapshot_xip|txid_snapshot_xmax|" + + "txid_snapshot_xmin|txid_visible_in_snapshot|uhc_to_utf8|unique_key_recheck|unknownin|" + + "unknownout|unknownrecv|unknownsend|unnest|upper|upper_inc|upper_inf|utf8_to_ascii|" + + "utf8_to_big5|utf8_to_euc_cn|utf8_to_euc_jis_2004|utf8_to_euc_jp|utf8_to_euc_kr|" + + "utf8_to_euc_tw|utf8_to_gb18030|utf8_to_gbk|utf8_to_iso8859|utf8_to_iso8859_1|" + + "utf8_to_johab|utf8_to_koi8r|utf8_to_koi8u|utf8_to_shift_jis_2004|utf8_to_sjis|" + + "utf8_to_uhc|utf8_to_win|uuid_cmp|uuid_eq|uuid_ge|uuid_gt|uuid_hash|uuid_in|uuid_le|" + + "uuid_lt|uuid_ne|uuid_out|uuid_recv|uuid_send|var_pop|var_samp|varbit_in|varbit_out|" + + "varbit_recv|varbit_send|varbit_transform|varbitcmp|varbiteq|varbitge|varbitgt|varbitle|" + + "varbitlt|varbitne|varbittypmodin|varbittypmodout|varchar_transform|varcharin|" + + "varcharout|varcharrecv|varcharsend|varchartypmodin|varchartypmodout|variance|version|" + + "void_in|void_out|void_recv|void_send|width|width_bucket|win1250_to_latin2|" + + "win1250_to_mic|win1251_to_iso|win1251_to_koi8r|win1251_to_mic|win1251_to_win866|" + + "win866_to_iso|win866_to_koi8r|win866_to_mic|win866_to_win1251|win_to_utf8|xideq|" + + "xideqint4|xidin|xidout|xidrecv|xidsend|xml|xml_in|xml_is_well_formed|" + + "xml_is_well_formed_content|xml_is_well_formed_document|xml_out|xml_recv|xml_send|" + + "xmlagg|xmlcomment|xmlconcat2|xmlexists|xmlvalidate|xpath|xpath_exists"); + var keywordMapper = this.createKeywordMapper({ + "support.function": builtinFunctions, + "keyword": keywords + }, "identifier", true); + var sqlRules = [{ + token: "string", + regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + }, { + token: "variable.language", + regex: '".*?"' + }, { + token: "constant.numeric", + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token: keywordMapper, + regex: "[a-zA-Z_][a-zA-Z0-9_$]*\\b" // TODO - Unicode in identifiers + }, { + token: "keyword.operator", + regex: "!|!!|!~|!~\\*|!~~|!~~\\*|#|##|#<|#<=|#<>|#=|#>|#>=|%|\\&|\\&\\&|\\&<|\\&<\\||\\&>|\\*|\\+|" + + "\\-|/|<|<#>|<\\->|<<|<<=|<<\\||<=|<>|<\\?>|<@|<\\^|=|>|>=|>>|>>=|>\\^|\\?#|\\?\\-|\\?\\-\\||" + + "\\?\\||\\?\\|\\||@|@\\-@|@>|@@|@@@|\\^|\\||\\|\\&>|\\|/|\\|>>|\\|\\||\\|\\|/|~|~\\*|~<=~|~<~|" + + "~=|~>=~|~>~|~~|~~\\*" + }, { + token: "paren.lparen", + regex: "[\\(]" + }, { + token: "paren.rparen", + regex: "[\\)]" + }, { + token: "text", + regex: "\\s+" + } + ]; + this.$rules = { + "start": [{ + token: "comment", + regex: "--.*$" + }, + DocCommentHighlightRules.getStartRule("doc-start"), + { + token: "comment", + regex: "\\/\\*", + next: "comment" + }, { + token: "keyword.statementBegin", + regex: "[a-zA-Z]+", + next: "statement" + }, { + token: "support.buildin", + regex: "^\\\\[\\S]+.*$" + } + ], + "statement": [{ + token: "comment", + regex: "--.*$" + }, { + token: "comment", + regex: "\\/\\*", + next: "commentStatement" + }, { + token: "statementEnd", + regex: ";", + next: "start" + }, { + token: "string", + regex: "\\$perl\\$", + next: "perl-start" + }, { + token: "string", + regex: "\\$python\\$", + next: "python-start" + }, { + token: "string", + regex: "\\$json\\$", + next: "json-start" + }, { + token: "string", + regex: "\\$(js|javascript)\\$", + next: "javascript-start" + }, { + token: "string", + regex: "\\$\\$$", + next: "dollarSql" + }, { + token: "string", + regex: "\\$[\\w_0-9]*\\$", + next: "dollarStatementString" + } + ].concat(sqlRules), + "dollarSql": [{ + token: "comment", + regex: "--.*$" + }, { + token: "comment", + regex: "\\/\\*", + next: "commentDollarSql" + }, { + token: ["keyword", "statementEnd", "text", "string"], + regex: "(^|END)(;)?(\\s*)(\\$\\$)", + next: "statement" + }, { + token: "string", + regex: "\\$[\\w_0-9]*\\$", + next: "dollarSqlString" + } + ].concat(sqlRules), + "comment": [{ + token: "comment", + regex: "\\*\\/", + next: "start" + }, { + defaultToken: "comment" + } + ], + "commentStatement": [{ + token: "comment", + regex: "\\*\\/", + next: "statement" + }, { + defaultToken: "comment" + } + ], + "commentDollarSql": [{ + token: "comment", + regex: "\\*\\/", + next: "dollarSql" + }, { + defaultToken: "comment" + } + ], + "dollarStatementString": [{ + token: "string", + regex: ".*?\\$[\\w_0-9]*\\$", + next: "statement" + }, { + token: "string", + regex: ".+" + } + ], + "dollarSqlString": [{ + token: "string", + regex: ".*?\\$[\\w_0-9]*\\$", + next: "dollarSql" + }, { + token: "string", + regex: ".+" + } + ] + }; + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("start")]); + this.embedRules(PerlHighlightRules, "perl-", [{ token: "string", regex: "\\$perl\\$", next: "statement" }]); + this.embedRules(PythonHighlightRules, "python-", [{ token: "string", regex: "\\$python\\$", next: "statement" }]); + this.embedRules(JsonHighlightRules, "json-", [{ token: "string", regex: "\\$json\\$", next: "statement" }]); + this.embedRules(JavaScriptHighlightRules, "javascript-", [{ token: "string", regex: "\\$(js|javascript)\\$", next: "statement" }]); +}; +oop.inherits(PgsqlHighlightRules, TextHighlightRules); +exports.PgsqlHighlightRules = PgsqlHighlightRules; + +}); + +ace.define("ace/mode/pgsql",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/pgsql_highlight_rules"], function(require, exports, module){var oop = require("../lib/oop"); +var TextMode = require("../mode/text").Mode; +var PgsqlHighlightRules = require("./pgsql_highlight_rules").PgsqlHighlightRules; +var Mode = function () { + this.HighlightRules = PgsqlHighlightRules; + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "--"; + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { + if (state == "start" || state == "keyword.statementEnd") { + return ""; + } + else { + return this.$getIndent(line); // Keep whatever indent the previous line has + } + }; + this.$id = "ace/mode/pgsql"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/pgsql"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/068ea80336df97af69fea2778de69f2f.js.gz b/web/dist/068ea80336df97af69fea2778de69f2f.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..3a35a721d6e215519cb5eec5b55db99afbd81cc9 GIT binary patch literal 20801 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

    @2}#Ure3e)<>yaQVu6ZFf^lsHn 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 0; i--) { + ch = line[i]; + if (ch === '(') { + delta--; + isParen = true; + } + else if (ch === '(' || ch === '[' || ch === '{') { + delta--; + isParen = false; + } + else if (ch === ')' || ch === ']' || ch === '}') { + delta++; + } + if (delta < 0) { + break; + } + } + if (delta < 0 && isParen) { + i += 1; + var iBefore = i; + var fn = ''; + while (true) { + ch = line[i]; + if (ch === ' ' || ch === '\t') { + if (this.minorIndentFunctions.indexOf(fn) !== -1) { + return this.$toIndent(line.substring(0, iBefore - 1) + tab); + } + else { + return this.$toIndent(line.substring(0, i + 1)); + } + } + else if (ch === undefined) { + return this.$toIndent(line.substring(0, iBefore - 1) + tab); + } + fn += line[i]; + i++; + } + } + else if (delta < 0 && !isParen) { + return this.$toIndent(line.substring(0, i + 1)); + } + else if (delta > 0) { + baseIndent = baseIndent.substring(0, baseIndent.length - tab.length); + return baseIndent; + } + else { + return baseIndent; + } + }; + this.getNextLineIndent = function (state, line, tab) { + return this.$calculateIndent(line, tab); + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.$id = "ace/mode/scheme"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/scheme"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/06e44643d965002fada0383a45b3e572.js b/web/dist/06e44643d965002fada0383a45b3e572.js new file mode 100644 index 00000000..9d89b51d --- /dev/null +++ b/web/dist/06e44643d965002fada0383a45b3e572.js @@ -0,0 +1,1176 @@ +ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; +var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; +var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; +var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; +var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; +var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; +var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; +var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; +var CssHighlightRules = function () { + var keywordMapper = this.createKeywordMapper({ + "support.function": supportFunction, + "support.constant": supportConstant, + "support.type": supportType, + "support.constant.color": supportConstantColor, + "support.constant.fonts": supportConstantFonts + }, "text", true); + this.$rules = { + "start": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" + }, { + token: "string", + regex: "@(?!viewport)", + next: "media" + }, { + token: "keyword", + regex: "#[a-z0-9-_]+" + }, { + token: "keyword", + regex: "%" + }, { + token: "variable", + regex: "\\.[a-z0-9-_]+" + }, { + token: "string", + regex: ":[a-z0-9-_]+" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant", + regex: "[a-z0-9-_]+" + }, { + caseInsensitive: true + }], + "media": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "start" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + token: "string", + regex: ";", + next: "start" + }, { + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" + }], + "comments": [{ + token: "comment", + regex: "\\/\\*", + push: [{ + token: "comment", + regex: "\\*\\/", + next: "pop" + }, { + defaultToken: "comment" + }] + }], + "ruleset": [{ + regex: "-(webkit|ms|moz|o)-", + token: "text" + }, { + token: "punctuation.operator", + regex: "[:;]" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + include: ["strings", "url", "comments"] + }, { + token: ["constant.numeric", "keyword"], + regex: "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant.numeric", + regex: "#[a-f0-9]{6}" + }, { + token: "constant.numeric", + regex: "#[a-f0-9]{3}" + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"], + regex: pseudoElements + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"], + regex: pseudoClasses + }, { + include: "url" + }, { + token: keywordMapper, + regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" + }, { + caseInsensitive: true + }], + url: [{ + token: "support.function", + regex: "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token: "support.function", + regex: "\\)", + next: "pop" + }, { + defaultToken: "string" + }] + }], + strings: [{ + token: "string.start", + regex: "'", + push: [{ + token: "string.end", + regex: "'|$", + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }, { + token: "string.start", + regex: '"', + push: [{ + token: "string.end", + regex: '"|$', + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], + escapes: [{ + token: "constant.language.escape", + regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ + }] + }; + this.normalizeRules(); +}; +oop.inherits(CssHighlightRules, TextHighlightRules); +exports.CssHighlightRules = CssHighlightRules; + +}); + +ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var DocCommentHighlightRules = function () { + this.$rules = { + "start": [{ + token: "comment.doc.tag", + regex: "@[\\w\\d_]+" // TODO: fix email addresses + }, + DocCommentHighlightRules.getTagRule(), + { + defaultToken: "comment.doc", + caseInsensitive: true + }] + }; +}; +oop.inherits(DocCommentHighlightRules, TextHighlightRules); +DocCommentHighlightRules.getTagRule = function (start) { + return { + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" + }; +}; +DocCommentHighlightRules.getStartRule = function (start) { + return { + token: "comment.doc", + regex: "\\/\\*(?=\\*)", + next: start + }; +}; +DocCommentHighlightRules.getEndRule = function (start) { + return { + token: "comment.doc", + regex: "\\*\\/", + next: start + }; +}; +exports.DocCommentHighlightRules = DocCommentHighlightRules; + +}); + +ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; +var JavaScriptHighlightRules = function (options) { + var keywordMapper = this.createKeywordMapper({ + "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|" + // Constructors + "Namespace|QName|XML|XMLList|" + // E4X + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors + "SyntaxError|TypeError|URIError|" + + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions + "isNaN|parseFloat|parseInt|" + + "JSON|Math|" + // Other + "this|arguments|prototype|window|document", + "keyword": "const|yield|import|get|set|async|await|" + + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + + "__parent__|__count__|escape|unescape|with|__proto__|" + + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor", + "storage.type": "const|let|var|function", + "constant.language": "null|Infinity|NaN|undefined", + "support.function": "alert", + "constant.language.boolean": "true|false" + }, "identifier"); + var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; + var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex + "u[0-9a-fA-F]{4}|" + // unicode + "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode + "[0-2][0-7]{0,2}|" + // oct + "3[0-7][0-7]?|" + // oct + "[4-7][0-7]?|" + //oct + ".)"; + this.$rules = { + "no_regex": [ + DocCommentHighlightRules.getStartRule("doc-start"), + comments("no_regex"), + { + token: "string", + regex: "'(?=.)", + next: "qstring" + }, { + token: "string", + regex: '"(?=.)', + next: "qqstring" + }, { + token: "constant.numeric", + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + }, { + token: [ + "storage.type", "punctuation.operator", "support.function", + "punctuation.operator", "entity.name.function", "text", "keyword.operator" + ], + regex: "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe + ")(\\s*)(=)", + next: "function_arguments" + }, { + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", "storage.type", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "entity.name.function", "text", "keyword.operator", "text", "storage.type", + "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(function\\*?)(\\s+)(" + identifierRe + ")(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "entity.name.function", "text", "punctuation.operator", + "text", "storage.type", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "text", "text", "storage.type", "text", "paren.lparen" + ], + regex: "(:)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: "keyword", + regex: "from(?=\\s*('|\"))" + }, { + token: "keyword", + regex: "(?:" + kwBeforeRe + ")\\b", + next: "start" + }, { + token: "support.constant", + regex: /that\b/ + }, { + token: ["storage.type", "punctuation.operator", "support.function.firebug"], + regex: /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ + }, { + token: keywordMapper, + regex: identifierRe + }, { + token: "punctuation.operator", + regex: /[.](?![.])/, + next: "property" + }, { + token: "storage.type", + regex: /=>/, + next: "start" + }, { + token: "keyword.operator", + regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next: "start" + }, { + token: "punctuation.operator", + regex: /[?:,;.]/, + next: "start" + }, { + token: "paren.lparen", + regex: /[\[({]/, + next: "start" + }, { + token: "paren.rparen", + regex: /[\])}]/ + }, { + token: "comment", + regex: /^#!.*$/ + } + ], + property: [{ + token: "text", + regex: "\\s+" + }, { + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()", + next: "function_arguments" + }, { + token: "punctuation.operator", + regex: /[.](?![.])/ + }, { + token: "support.function", + regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ + }, { + token: "support.function.dom", + regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ + }, { + token: "support.constant", + regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ + }, { + token: "identifier", + regex: identifierRe + }, { + regex: "", + token: "empty", + next: "no_regex" + } + ], + "start": [ + DocCommentHighlightRules.getStartRule("doc-start"), + comments("start"), + { + token: "string.regexp", + regex: "\\/", + next: "regex" + }, { + token: "text", + regex: "\\s+|^$", + next: "start" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "regex": [ + { + token: "regexp.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "string.regexp", + regex: "/[sxngimy]*", + next: "no_regex" + }, { + token: "invalid", + regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ + }, { + token: "constant.language.escape", + regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ + }, { + token: "constant.language.delimiter", + regex: /\|/ + }, { + token: "constant.language.escape", + regex: /\[\^?/, + next: "regex_character_class" + }, { + token: "empty", + regex: "$", + next: "no_regex" + }, { + defaultToken: "string.regexp" + } + ], + "regex_character_class": [ + { + token: "regexp.charclass.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "constant.language.escape", + regex: "]", + next: "regex" + }, { + token: "constant.language.escape", + regex: "-" + }, { + token: "empty", + regex: "$", + next: "no_regex" + }, { + defaultToken: "string.regexp.charachterclass" + } + ], + "default_parameter": [ + { + token: "string", + regex: "'(?=.)", + push: [ + { + token: "string", + regex: "'|$", + next: "pop" + }, { + include: "qstring" + } + ] + }, { + token: "string", + regex: '"(?=.)', + push: [ + { + token: "string", + regex: '"|$', + next: "pop" + }, { + include: "qqstring" + } + ] + }, { + token: "constant.language", + regex: "null|Infinity|NaN|undefined" + }, { + token: "constant.numeric", + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + }, { + token: "punctuation.operator", + regex: ",", + next: "function_arguments" + }, { + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "function_arguments": [ + comments("function_arguments"), + { + token: "variable.parameter", + regex: identifierRe + }, { + token: "punctuation.operator", + regex: "," + }, { + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: '"|$', + next: "no_regex" + }, { + defaultToken: "string" + } + ], + "qstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: "'|$", + next: "no_regex" + }, { + defaultToken: "string" + } + ] + }; + if (!options || !options.noES6) { + this.$rules.no_regex.unshift({ + regex: "[{}]", onMatch: function (val, state, stack) { + this.next = val == "{" ? this.nextState : ""; + if (val == "{" && stack.length) { + stack.unshift("start", state); + } + else if (val == "}" && stack.length) { + stack.shift(); + this.next = stack.shift(); + if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) + return "paren.quasi.end"; + } + return val == "{" ? "paren.lparen" : "paren.rparen"; + }, + nextState: "start" + }, { + token: "string.quasi.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedRe + }, { + token: "paren.quasi.start", + regex: /\${/, + push: "start" + }, { + token: "string.quasi.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string.quasi" + }] + }, { + token: ["variable.parameter", "text"], + regex: "(" + identifierRe + ")(\\s*)(?=\\=>)" + }, { + token: "paren.lparen", + regex: "(\\()(?=.+\\s*=>)", + next: "function_arguments" + }, { + token: "variable.language", + regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b" + }); + this.$rules["function_arguments"].unshift({ + token: "keyword.operator", + regex: "=", + next: "default_parameter" + }, { + token: "keyword.operator", + regex: "\\.{3}" + }); + this.$rules["property"].unshift({ + token: "support.function", + regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|" + + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()" + }, { + token: "constant.language", + regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b" + }); + if (!options || options.jsx != false) + JSX.call(this); + } + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]); + this.normalizeRules(); +}; +oop.inherits(JavaScriptHighlightRules, TextHighlightRules); +function JSX() { + var tagRegex = identifierRe.replace("\\d", "\\d\\-"); + var jsxTag = { + onMatch: function (val, state, stack) { + var offset = val.charAt(1) == "/" ? 2 : 1; + if (offset == 1) { + if (state != this.nextState) + stack.unshift(this.next, this.nextState, 0); + else + stack.unshift(this.next); + stack[2]++; + } + else if (offset == 2) { + if (state == this.nextState) { + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.shift(); + stack.shift(); + } + } + } + return [{ + type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", + value: val.slice(0, offset) + }, { + type: "meta.tag.tag-name.xml", + value: val.substr(offset) + }]; + }, + regex: "", + onMatch: function (value, currentState, stack) { + if (currentState == stack[0]) + stack.shift(); + if (value.length == 2) { + if (stack[0] == this.nextState) + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.splice(0, 2); + } + } + this.next = stack[0] || "start"; + return [{ type: this.token, value: value }]; + }, + nextState: "jsx" + }, + jsxJsRule, + comments("jsxAttributes"), + { + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + token: "text.tag-whitespace.xml", + regex: "\\s+" + }, { + token: "string.attribute-value.xml", + regex: "'", + stateName: "jsx_attr_q", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + stateName: "jsx_attr_qq", + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, + jsxTag + ]; + this.$rules.reference = [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }]; +} +function comments(next) { + return [ + { + token: "comment", + regex: /\/\*/, + next: [ + DocCommentHighlightRules.getTagRule(), + { token: "comment", regex: "\\*\\/", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } + ] + }, { + token: "comment", + regex: "\\/\\/", + next: [ + DocCommentHighlightRules.getTagRule(), + { token: "comment", regex: "$|^", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } + ] + } + ]; +} +exports.JavaScriptHighlightRules = JavaScriptHighlightRules; + +}); + +ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var XmlHighlightRules = function (normalize) { + var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; + this.$rules = { + start: [ + { token: "string.cdata.xml", regex: "<\\!\\[CDATA\\[", next: "cdata" }, + { + token: ["punctuation.instruction.xml", "keyword.instruction.xml"], + regex: "(<\\?)(" + tagRegex + ")", next: "processing_instruction" + }, + { token: "comment.start.xml", regex: "<\\!--", next: "comment" }, + { + token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], + regex: "(<\\!)(DOCTYPE)(?=[\\s])", next: "doctype", caseInsensitive: true + }, + { include: "tag" }, + { token: "text.end-tag-open.xml", regex: "", + next: "start" + }], + doctype: [ + { include: "whitespace" }, + { include: "string" }, + { token: "xml-pe.doctype.xml", regex: ">", next: "start" }, + { token: "xml-pe.xml", regex: "[-_a-zA-Z0-9:]+" }, + { token: "punctuation.int-subset", regex: "\\[", push: "int_subset" } + ], + int_subset: [{ + token: "text.xml", + regex: "\\s+" + }, { + token: "punctuation.int-subset.xml", + regex: "]", + next: "pop" + }, { + token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], + regex: "(<\\!)(" + tagRegex + ")", + push: [{ + token: "text", + regex: "\\s+" + }, + { + token: "punctuation.markup-decl.xml", + regex: ">", + next: "pop" + }, + { include: "string" }] + }], + cdata: [ + { token: "string.cdata.xml", regex: "\\]\\]>", next: "start" }, + { token: "text.xml", regex: "\\s+" }, + { token: "text.xml", regex: "(?:[^\\]]|\\](?!\\]>))+" } + ], + comment: [ + { token: "comment.end.xml", regex: "-->", next: "start" }, + { defaultToken: "comment.xml" } + ], + reference: [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + attr_reference: [{ + token: "constant.language.escape.reference.attribute-value.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + tag: [{ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], + regex: "(?:(<)|(", next: "start" } + ] + }], + tag_whitespace: [ + { token: "text.tag-whitespace.xml", regex: "\\s+" } + ], + whitespace: [ + { token: "text.whitespace.xml", regex: "\\s+" } + ], + string: [{ + token: "string.xml", + regex: "'", + push: [ + { token: "string.xml", regex: "'", next: "pop" }, + { defaultToken: "string.xml" } + ] + }, { + token: "string.xml", + regex: '"', + push: [ + { token: "string.xml", regex: '"', next: "pop" }, + { defaultToken: "string.xml" } + ] + }], + attributes: [{ + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + include: "tag_whitespace" + }, { + include: "attribute_value" + }], + attribute_value: [{ + token: "string.attribute-value.xml", + regex: "'", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }] + }; + if (this.constructor === XmlHighlightRules) + this.normalizeRules(); +}; +(function () { + this.embedTagRules = function (HighlightRules, prefix, tag) { + this.$rules.tag.unshift({ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(<)(" + tag + "(?=\\s|>|$))", + next: [ + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: prefix + "start" } + ] + }); + this.$rules[tag + "-end"] = [ + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start", + onMatch: function (value, currentState, stack) { + stack.splice(0); + return this.token; + } } + ]; + this.embedRules(HighlightRules, prefix, [{ + token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(|$))", + next: tag + "-end" + }, { + token: "string.cdata.xml", + regex: "<\\!\\[CDATA\\[" + }, { + token: "string.cdata.xml", + regex: "\\]\\]>" + }]); + }; +}).call(TextHighlightRules.prototype); +oop.inherits(XmlHighlightRules, TextHighlightRules); +exports.XmlHighlightRules = XmlHighlightRules; + +}); + +ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; +var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; +var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; +var tagMap = lang.createMap({ + a: 'anchor', + button: 'form', + form: 'form', + img: 'image', + input: 'form', + label: 'form', + option: 'form', + script: 'script', + select: 'form', + textarea: 'form', + style: 'style', + table: 'table', + tbody: 'table', + td: 'table', + tfoot: 'table', + th: 'table', + tr: 'table' +}); +var HtmlHighlightRules = function () { + XmlHighlightRules.call(this); + this.addRules({ + attributes: [{ + include: "tag_whitespace" + }, { + token: "entity.other.attribute-name.xml", + regex: "[-_a-zA-Z0-9:.]+" + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=", + push: [{ + include: "tag_whitespace" + }, { + token: "string.unquoted.attribute-value.html", + regex: "[^<>='\"`\\s]+", + next: "pop" + }, { + token: "empty", + regex: "", + next: "pop" + }] + }, { + include: "attribute_value" + }], + tag: [{ + token: function (start, tag) { + var group = tagMap[tag]; + return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", + "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; + }, + regex: "(", next: "start" } + ] + }); + this.embedTagRules(CssHighlightRules, "css-", "style"); + this.embedTagRules(new JavaScriptHighlightRules({ jsx: false }).getRules(), "js-", "script"); + if (this.constructor === HtmlHighlightRules) + this.normalizeRules(); +}; +oop.inherits(HtmlHighlightRules, XmlHighlightRules); +exports.HtmlHighlightRules = HtmlHighlightRules; + +}); + +ace.define("ace/mode/ftl_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var FtlLangHighlightRules = function () { + var stringBuiltIns = "\\?|substring|cap_first|uncap_first|capitalize|chop_linebreak|date|time|datetime|" + + "ends_with|html|groups|index_of|j_string|js_string|json_string|last_index_of|length|lower_case|" + + "left_pad|right_pad|contains|matches|number|replace|rtf|url|split|starts_with|string|trim|" + + "upper_case|word_list|xhtml|xml"; + var numberBuiltIns = "c|round|floor|ceiling"; + var dateBuiltIns = "iso_[a-z_]+"; + var seqBuiltIns = "first|last|seq_contains|seq_index_of|seq_last_index_of|reverse|size|sort|sort_by|chunk"; + var hashBuiltIns = "keys|values"; + var xmlBuiltIns = "children|parent|root|ancestors|node_name|node_type|node_namespace"; + var expertBuiltIns = "byte|double|float|int|long|short|number_to_date|number_to_time|number_to_datetime|" + + "eval|has_content|interpret|is_[a-z_]+|namespacenew"; + var allBuiltIns = stringBuiltIns + numberBuiltIns + dateBuiltIns + seqBuiltIns + hashBuiltIns + + xmlBuiltIns + expertBuiltIns; + var deprecatedBuiltIns = "default|exists|if_exists|web_safe"; + var variables = "data_model|error|globals|lang|locale|locals|main|namespace|node|current_node|" + + "now|output_encoding|template_name|url_escaping_charset|vars|version"; + var operators = "gt|gte|lt|lte|as|in|using"; + var reserved = "true|false"; + var attributes = "encoding|parse|locale|number_format|date_format|time_format|datetime_format|time_zone|" + + "url_escaping_charset|classic_compatible|strip_whitespace|strip_text|strict_syntax|ns_prefixes|" + + "attributes"; + this.$rules = { + "start": [{ + token: "constant.character.entity", + regex: /&[^;]+;/ + }, { + token: "support.function", + regex: "\\?(" + allBuiltIns + ")" + }, { + token: "support.function.deprecated", + regex: "\\?(" + deprecatedBuiltIns + ")" + }, { + token: "language.variable", + regex: "\\.(?:" + variables + ")" + }, { + token: "constant.language", + regex: "\\b(" + reserved + ")\\b" + }, { + token: "keyword.operator", + regex: "\\b(?:" + operators + ")\\b" + }, { + token: "entity.other.attribute-name", + regex: attributes + }, { + token: "string", + regex: /['"]/, + next: "qstring" + }, { + token: function (value) { + if (value.match("^[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?$")) { + return "constant.numeric"; + } + else { + return "variable"; + } + }, + regex: /[\w.+\-]+/ + }, { + token: "keyword.operator", + regex: "!|\\.|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=" + }, { + token: "paren.lparen", + regex: "[[({]" + }, { + token: "paren.rparen", + regex: "[\\])}]" + }, { + token: "text", + regex: "\\s+" + }], + "qstring": [{ + token: "constant.character.escape", + regex: '\\\\[nrtvef\\\\"$]' + }, { + token: "string", + regex: /['"]/, + next: "start" + }, { + defaultToken: "string" + }] + }; +}; +oop.inherits(FtlLangHighlightRules, TextHighlightRules); +var FtlHighlightRules = function () { + HtmlHighlightRules.call(this); + var directives = "assign|attempt|break|case|compress|default|elseif|else|escape|fallback|function|flush|" + + "ftl|global|if|import|include|list|local|lt|macro|nested|noescape|noparse|nt|recover|recurse|return|rt|" + + "setting|stop|switch|t|visit"; + var startRules = [ + { + token: "comment", + regex: "<#--", + next: "ftl-dcomment" + }, { + token: "string.interpolated", + regex: "\\${", + push: "ftl-start" + }, { + token: "keyword.function", + regex: "", + next: "pop" + }, { + token: "string.interpolated", + regex: "}", + next: "pop" + } + ]; + for (var key in this.$rules) + this.$rules[key].unshift.apply(this.$rules[key], startRules); + this.embedRules(FtlLangHighlightRules, "ftl-", endRules, ["start"]); + this.addRules({ + "ftl-dcomment": [{ + token: "comment", + regex: "-->", + next: "pop" + }, { + defaultToken: "comment" + }] + }); + this.normalizeRules(); +}; +oop.inherits(FtlHighlightRules, HtmlHighlightRules); +exports.FtlHighlightRules = FtlHighlightRules; + +}); + +ace.define("ace/mode/ftl",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/ftl_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var FtlHighlightRules = require("./ftl_highlight_rules").FtlHighlightRules; +var Mode = function () { + this.HighlightRules = FtlHighlightRules; + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); +(function () { + this.$id = "ace/mode/ftl"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/ftl"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/06e44643d965002fada0383a45b3e572.js.gz b/web/dist/06e44643d965002fada0383a45b3e572.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..ac2edda7a871b0582212084adffb237873cbc6bb GIT binary patch literal 12291 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 literal 0 HcmV?d00001 diff --git a/web/dist/07cd7a34f1a3637d07c8e69746490d8f.js b/web/dist/07cd7a34f1a3637d07c8e69746490d8f.js new file mode 100644 index 00000000..c6b64e4a --- /dev/null +++ b/web/dist/07cd7a34f1a3637d07c8e69746490d8f.js @@ -0,0 +1,2923 @@ +ace.define("ace/mode/csound_preprocessor_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var CsoundPreprocessorHighlightRules = function (embeddedRulePrefix) { + this.embeddedRulePrefix = embeddedRulePrefix === undefined ? "" : embeddedRulePrefix; + this.semicolonComments = { + token: "comment.line.semicolon.csound", + regex: ";.*$" + }; + this.comments = [ + { + token: "punctuation.definition.comment.begin.csound", + regex: "/\\*", + push: [ + { + token: "punctuation.definition.comment.end.csound", + regex: "\\*/", + next: "pop" + }, { + defaultToken: "comment.block.csound" + } + ] + }, { + token: "comment.line.double-slash.csound", + regex: "//.*$" + }, + this.semicolonComments + ]; + this.macroUses = [ + { + token: ["entity.name.function.preprocessor.csound", "punctuation.definition.macro-parameter-value-list.begin.csound"], + regex: /(\$[A-Z_a-z]\w*\.?)(\()/, + next: "macro parameter value list" + }, { + token: "entity.name.function.preprocessor.csound", + regex: /\$[A-Z_a-z]\w*(?:\.|\b)/ + } + ]; + this.numbers = [ + { + token: "constant.numeric.float.csound", + regex: /(?:\d+[Ee][+-]?\d+)|(?:\d+\.\d*|\d*\.\d+)(?:[Ee][+-]?\d+)?/ + }, { + token: ["storage.type.number.csound", "constant.numeric.integer.hexadecimal.csound"], + regex: /(0[Xx])([0-9A-Fa-f]+)/ + }, { + token: "constant.numeric.integer.decimal.csound", + regex: /\d+/ + } + ]; + this.bracedStringContents = [ + { + token: "constant.character.escape.csound", + regex: /\\(?:[\\abnrt"]|[0-7]{1,3})/ + }, + { + token: "constant.character.placeholder.csound", + regex: /%[#0\- +]*\d*(?:\.\d+)?[diuoxXfFeEgGaAcs]/ + }, { + token: "constant.character.escape.csound", + regex: /%%/ + } + ]; + this.quotedStringContents = [ + this.macroUses, + this.bracedStringContents + ]; + var start = [ + this.comments, + { + token: "keyword.preprocessor.csound", + regex: /#(?:e(?:nd(?:if)?|lse)\b|##)|@@?[ \t]*\d+/ + }, { + token: "keyword.preprocessor.csound", + regex: /#include/, + push: [ + this.comments, + { + token: "string.csound", + regex: /([^ \t])(?:.*?\1)/, + next: "pop" + } + ] + }, { + token: "keyword.preprocessor.csound", + regex: /#includestr/, + push: [ + this.comments, + { + token: "string.csound", + regex: /([^ \t])(?:.*?\1)/, + next: "pop" + } + ] + }, { + token: "keyword.preprocessor.csound", + regex: /#[ \t]*define/, + next: "define directive" + }, { + token: "keyword.preprocessor.csound", + regex: /#(?:ifn?def|undef)\b/, + next: "macro directive" + }, + this.macroUses + ]; + this.$rules = { + "start": start, + "define directive": [ + this.comments, + { + token: "entity.name.function.preprocessor.csound", + regex: /[A-Z_a-z]\w*/ + }, { + token: "punctuation.definition.macro-parameter-name-list.begin.csound", + regex: /\(/, + next: "macro parameter name list" + }, { + token: "punctuation.definition.macro.begin.csound", + regex: /#/, + next: "macro body" + } + ], + "macro parameter name list": [ + { + token: "variable.parameter.preprocessor.csound", + regex: /[A-Z_a-z]\w*/ + }, { + token: "punctuation.definition.macro-parameter-name-list.end.csound", + regex: /\)/, + next: "define directive" + } + ], + "macro body": [ + { + token: "constant.character.escape.csound", + regex: /\\#/ + }, { + token: "punctuation.definition.macro.end.csound", + regex: /#/, + next: "start" + }, + start + ], + "macro directive": [ + this.comments, + { + token: "entity.name.function.preprocessor.csound", + regex: /[A-Z_a-z]\w*/, + next: "start" + } + ], + "macro parameter value list": [ + { + token: "punctuation.definition.macro-parameter-value-list.end.csound", + regex: /\)/, + next: "start" + }, { + token: "punctuation.definition.string.begin.csound", + regex: /"/, + next: "macro parameter value quoted string" + }, this.pushRule({ + token: "punctuation.macro-parameter-value-parenthetical.begin.csound", + regex: /\(/, + next: "macro parameter value parenthetical" + }), { + token: "punctuation.macro-parameter-value-separator.csound", + regex: "[#']" + } + ], + "macro parameter value quoted string": [ + { + token: "constant.character.escape.csound", + regex: /\\[#'()]/ + }, { + token: "invalid.illegal.csound", + regex: /[#'()]/ + }, { + token: "punctuation.definition.string.end.csound", + regex: /"/, + next: "macro parameter value list" + }, + this.quotedStringContents, + { + defaultToken: "string.quoted.csound" + } + ], + "macro parameter value parenthetical": [ + { + token: "constant.character.escape.csound", + regex: /\\\)/ + }, this.popRule({ + token: "punctuation.macro-parameter-value-parenthetical.end.csound", + regex: /\)/ + }), this.pushRule({ + token: "punctuation.macro-parameter-value-parenthetical.begin.csound", + regex: /\(/, + next: "macro parameter value parenthetical" + }), + start + ] + }; +}; +oop.inherits(CsoundPreprocessorHighlightRules, TextHighlightRules); +(function () { + this.pushRule = function (params) { + if (Array.isArray(params.next)) { + for (var i = 0; i < params.next.length; i++) { + params.next[i] = this.embeddedRulePrefix + params.next[i]; + } + } + return { + regex: params.regex, onMatch: function (value, currentState, stack, line) { + if (stack.length === 0) + stack.push(currentState); + if (Array.isArray(params.next)) { + for (var i = 0; i < params.next.length; i++) { + stack.push(params.next[i]); + } + } + else { + stack.push(params.next); + } + this.next = stack[stack.length - 1]; + return params.token; + }, + get next() { return Array.isArray(params.next) ? params.next[params.next.length - 1] : params.next; }, + set next(next) { + if (!Array.isArray(params.next)) { + params.next = next; + } + }, + get token() { return params.token; } + }; + }; + this.popRule = function (params) { + if (params.next) { + params.next = this.embeddedRulePrefix + params.next; + } + return { + regex: params.regex, onMatch: function (value, currentState, stack, line) { + stack.pop(); + if (params.next) { + stack.push(params.next); + this.next = stack[stack.length - 1]; + } + else { + this.next = stack.length > 1 ? stack[stack.length - 1] : stack.pop(); + } + return params.token; + } + }; + }; +}).call(CsoundPreprocessorHighlightRules.prototype); +exports.CsoundPreprocessorHighlightRules = CsoundPreprocessorHighlightRules; + +}); + +ace.define("ace/mode/csound_score_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/csound_preprocessor_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var CsoundPreprocessorHighlightRules = require("./csound_preprocessor_highlight_rules").CsoundPreprocessorHighlightRules; +var CsoundScoreHighlightRules = function (embeddedRulePrefix) { + CsoundPreprocessorHighlightRules.call(this, embeddedRulePrefix); + this.quotedStringContents.push({ + token: "invalid.illegal.csound-score", + regex: /[^"]*$/ + }); + var start = this.$rules.start; + start.push({ + token: "keyword.control.csound-score", + regex: /[aBbCdefiqstvxy]/ + }, { + token: "invalid.illegal.csound-score", + regex: /w/ + }, { + token: "constant.numeric.language.csound-score", + regex: /z/ + }, { + token: ["keyword.control.csound-score", "constant.numeric.integer.decimal.csound-score"], + regex: /([nNpP][pP])(\d+)/ + }, { + token: "keyword.other.csound-score", + regex: /[mn]/, + push: [ + { + token: "empty", + regex: /$/, + next: "pop" + }, + this.comments, + { + token: "entity.name.label.csound-score", + regex: /[A-Z_a-z]\w*/ + } + ] + }, { + token: "keyword.preprocessor.csound-score", + regex: /r\b/, + next: "repeat section" + }, this.numbers, { + token: "keyword.operator.csound-score", + regex: "[!+\\-*/^%&|<>#~.]" + }, this.pushRule({ + token: "punctuation.definition.string.begin.csound-score", + regex: /"/, + next: "quoted string" + }), this.pushRule({ + token: "punctuation.braced-loop.begin.csound-score", + regex: /{/, + next: "loop after left brace" + })); + this.addRules({ + "repeat section": [ + { + token: "empty", + regex: /$/, + next: "start" + }, + this.comments, + { + token: "constant.numeric.integer.decimal.csound-score", + regex: /\d+/, + next: "repeat section before label" + } + ], + "repeat section before label": [ + { + token: "empty", + regex: /$/, + next: "start" + }, + this.comments, + { + token: "entity.name.label.csound-score", + regex: /[A-Z_a-z]\w*/, + next: "start" + } + ], + "quoted string": [ + this.popRule({ + token: "punctuation.definition.string.end.csound-score", + regex: /"/ + }), + this.quotedStringContents, + { + defaultToken: "string.quoted.csound-score" + } + ], + "loop after left brace": [ + this.popRule({ + token: "constant.numeric.integer.decimal.csound-score", + regex: /\d+/, + next: "loop after repeat count" + }), + this.comments, + { + token: "invalid.illegal.csound", + regex: /\S.*/ + } + ], + "loop after repeat count": [ + this.popRule({ + token: "entity.name.function.preprocessor.csound-score", + regex: /[A-Z_a-z]\w*\b/, + next: "loop after macro name" + }), + this.comments, + { + token: "invalid.illegal.csound", + regex: /\S.*/ + } + ], + "loop after macro name": [ + start, + this.popRule({ + token: "punctuation.braced-loop.end.csound-score", + regex: /}/ + }) + ] + }); + this.normalizeRules(); +}; +oop.inherits(CsoundScoreHighlightRules, CsoundPreprocessorHighlightRules); +exports.CsoundScoreHighlightRules = CsoundScoreHighlightRules; + +}); + +ace.define("ace/mode/lua_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var LuaHighlightRules = function () { + var keywords = ("break|do|else|elseif|end|for|function|if|in|local|repeat|" + + "return|then|until|while|or|and|not"); + var builtinConstants = ("true|false|nil|_G|_VERSION"); + var functions = ( + "string|xpcall|package|tostring|print|os|unpack|require|" + + "getfenv|setmetatable|next|assert|tonumber|io|rawequal|" + + "collectgarbage|getmetatable|module|rawset|math|debug|" + + "pcall|table|newproxy|type|coroutine|_G|select|gcinfo|" + + "pairs|rawget|loadstring|ipairs|_VERSION|dofile|setfenv|" + + "load|error|loadfile|" + + "sub|upper|len|gfind|rep|find|match|char|dump|gmatch|" + + "reverse|byte|format|gsub|lower|preload|loadlib|loaded|" + + "loaders|cpath|config|path|seeall|exit|setlocale|date|" + + "getenv|difftime|remove|time|clock|tmpname|rename|execute|" + + "lines|write|close|flush|open|output|type|read|stderr|" + + "stdin|input|stdout|popen|tmpfile|log|max|acos|huge|" + + "ldexp|pi|cos|tanh|pow|deg|tan|cosh|sinh|random|randomseed|" + + "frexp|ceil|floor|rad|abs|sqrt|modf|asin|min|mod|fmod|log10|" + + "atan2|exp|sin|atan|getupvalue|debug|sethook|getmetatable|" + + "gethook|setmetatable|setlocal|traceback|setfenv|getinfo|" + + "setupvalue|getlocal|getregistry|getfenv|setn|insert|getn|" + + "foreachi|maxn|foreach|concat|sort|remove|resume|yield|" + + "status|wrap|create|running|" + + "__add|__sub|__mod|__unm|__concat|__lt|__index|__call|__gc|__metatable|" + + "__mul|__div|__pow|__len|__eq|__le|__newindex|__tostring|__mode|__tonumber"); + var stdLibaries = ("string|package|os|io|math|debug|table|coroutine"); + var deprecatedIn5152 = ("setn|foreach|foreachi|gcinfo|log10|maxn"); + var keywordMapper = this.createKeywordMapper({ + "keyword": keywords, + "support.function": functions, + "keyword.deprecated": deprecatedIn5152, + "constant.library": stdLibaries, + "constant.language": builtinConstants, + "variable.language": "self" + }, "identifier"); + var decimalInteger = "(?:(?:[1-9]\\d*)|(?:0))"; + var hexInteger = "(?:0[xX][\\dA-Fa-f]+)"; + var integer = "(?:" + decimalInteger + "|" + hexInteger + ")"; + var fraction = "(?:\\.\\d+)"; + var intPart = "(?:\\d+)"; + var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))"; + var floatNumber = "(?:" + pointFloat + ")"; + this.$rules = { + "start": [{ + stateName: "bracketedComment", + onMatch: function (value, currentState, stack) { + stack.unshift(this.next, value.length - 2, currentState); + return "comment"; + }, + regex: /\-\-\[=*\[/, + next: [ + { + onMatch: function (value, currentState, stack) { + if (value.length == stack[1]) { + stack.shift(); + stack.shift(); + this.next = stack.shift(); + } + else { + this.next = ""; + } + return "comment"; + }, + regex: /\]=*\]/, + next: "start" + }, { + defaultToken: "comment" + } + ] + }, + { + token: "comment", + regex: "\\-\\-.*$" + }, + { + stateName: "bracketedString", + onMatch: function (value, currentState, stack) { + stack.unshift(this.next, value.length, currentState); + return "string.start"; + }, + regex: /\[=*\[/, + next: [ + { + onMatch: function (value, currentState, stack) { + if (value.length == stack[1]) { + stack.shift(); + stack.shift(); + this.next = stack.shift(); + } + else { + this.next = ""; + } + return "string.end"; + }, + regex: /\]=*\]/, + next: "start" + }, { + defaultToken: "string" + } + ] + }, + { + token: "string", + regex: '"(?:[^\\\\]|\\\\.)*?"' + }, { + token: "string", + regex: "'(?:[^\\\\]|\\\\.)*?'" + }, { + token: "constant.numeric", + regex: floatNumber + }, { + token: "constant.numeric", + regex: integer + "\\b" + }, { + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token: "keyword.operator", + regex: "\\+|\\-|\\*|\\/|%|\\#|\\^|~|<|>|<=|=>|==|~=|=|\\:|\\.\\.\\.|\\.\\." + }, { + token: "paren.lparen", + regex: "[\\[\\(\\{]" + }, { + token: "paren.rparen", + regex: "[\\]\\)\\}]" + }, { + token: "text", + regex: "\\s+|\\w+" + }] + }; + this.normalizeRules(); +}; +oop.inherits(LuaHighlightRules, TextHighlightRules); +exports.LuaHighlightRules = LuaHighlightRules; + +}); + +ace.define("ace/mode/python_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){/* + * TODO: python delimiters + */ +"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var PythonHighlightRules = function () { + var keywords = ("and|as|assert|break|class|continue|def|del|elif|else|except|exec|" + + "finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|" + + "raise|return|try|while|with|yield|async|await|nonlocal"); + var builtinConstants = ("True|False|None|NotImplemented|Ellipsis|__debug__"); + var builtinFunctions = ("abs|divmod|input|open|staticmethod|all|enumerate|int|ord|str|any|" + + "eval|isinstance|pow|sum|basestring|execfile|issubclass|print|super|" + + "binfile|bin|iter|property|tuple|bool|filter|len|range|type|bytearray|" + + "float|list|raw_input|unichr|callable|format|locals|reduce|unicode|" + + "chr|frozenset|long|reload|vars|classmethod|getattr|map|repr|xrange|" + + "cmp|globals|max|reversed|zip|compile|hasattr|memoryview|round|" + + "__import__|complex|hash|min|apply|delattr|help|next|setattr|set|" + + "buffer|dict|hex|object|slice|coerce|dir|id|oct|sorted|intern|" + + "ascii|breakpoint|bytes"); + var keywordMapper = this.createKeywordMapper({ + "invalid.deprecated": "debugger", + "support.function": builtinFunctions, + "variable.language": "self|cls", + "constant.language": builtinConstants, + "keyword": keywords + }, "identifier"); + var strPre = "[uU]?"; + var strRawPre = "[rR]"; + var strFormatPre = "[fF]"; + var strRawFormatPre = "(?:[rR][fF]|[fF][rR])"; + var decimalInteger = "(?:(?:[1-9]\\d*)|(?:0))"; + var octInteger = "(?:0[oO]?[0-7]+)"; + var hexInteger = "(?:0[xX][\\dA-Fa-f]+)"; + var binInteger = "(?:0[bB][01]+)"; + var integer = "(?:" + decimalInteger + "|" + octInteger + "|" + hexInteger + "|" + binInteger + ")"; + var exponent = "(?:[eE][+-]?\\d+)"; + var fraction = "(?:\\.\\d+)"; + var intPart = "(?:\\d+)"; + var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))"; + var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + exponent + ")"; + var floatNumber = "(?:" + exponentFloat + "|" + pointFloat + ")"; + var stringEscape = "\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\abfnrtv'\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})"; + this.$rules = { + "start": [{ + token: "comment", + regex: "#.*$" + }, { + token: "string", + regex: strPre + '"{3}', + next: "qqstring3" + }, { + token: "string", + regex: strPre + '"(?=.)', + next: "qqstring" + }, { + token: "string", + regex: strPre + "'{3}", + next: "qstring3" + }, { + token: "string", + regex: strPre + "'(?=.)", + next: "qstring" + }, { + token: "string", + regex: strRawPre + '"{3}', + next: "rawqqstring3" + }, { + token: "string", + regex: strRawPre + '"(?=.)', + next: "rawqqstring" + }, { + token: "string", + regex: strRawPre + "'{3}", + next: "rawqstring3" + }, { + token: "string", + regex: strRawPre + "'(?=.)", + next: "rawqstring" + }, { + token: "string", + regex: strFormatPre + '"{3}', + next: "fqqstring3" + }, { + token: "string", + regex: strFormatPre + '"(?=.)', + next: "fqqstring" + }, { + token: "string", + regex: strFormatPre + "'{3}", + next: "fqstring3" + }, { + token: "string", + regex: strFormatPre + "'(?=.)", + next: "fqstring" + }, { + token: "string", + regex: strRawFormatPre + '"{3}', + next: "rfqqstring3" + }, { + token: "string", + regex: strRawFormatPre + '"(?=.)', + next: "rfqqstring" + }, { + token: "string", + regex: strRawFormatPre + "'{3}", + next: "rfqstring3" + }, { + token: "string", + regex: strRawFormatPre + "'(?=.)", + next: "rfqstring" + }, { + token: "keyword.operator", + regex: "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|%|@|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|=" + }, { + token: "punctuation", + regex: ",|:|;|\\->|\\+=|\\-=|\\*=|\\/=|\\/\\/=|%=|@=|&=|\\|=|^=|>>=|<<=|\\*\\*=" + }, { + token: "paren.lparen", + regex: "[\\[\\(\\{]" + }, { + token: "paren.rparen", + regex: "[\\]\\)\\}]" + }, { + token: ["keyword", "text", "entity.name.function"], + regex: "(def|class)(\\s+)([\\u00BF-\\u1FFF\\u2C00-\\uD7FF\\w]+)" + }, { + token: "text", + regex: "\\s+" + }, { + include: "constants" + }], + "qqstring3": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", + regex: '"{3}', + next: "start" + }, { + defaultToken: "string" + }], + "qstring3": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", + regex: "'{3}", + next: "start" + }, { + defaultToken: "string" + }], + "qqstring": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", + regex: "\\\\$", + next: "qqstring" + }, { + token: "string", + regex: '"|$', + next: "start" + }, { + defaultToken: "string" + }], + "qstring": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", + regex: "\\\\$", + next: "qstring" + }, { + token: "string", + regex: "'|$", + next: "start" + }, { + defaultToken: "string" + }], + "rawqqstring3": [{ + token: "string", + regex: '"{3}', + next: "start" + }, { + defaultToken: "string" + }], + "rawqstring3": [{ + token: "string", + regex: "'{3}", + next: "start" + }, { + defaultToken: "string" + }], + "rawqqstring": [{ + token: "string", + regex: "\\\\$", + next: "rawqqstring" + }, { + token: "string", + regex: '"|$', + next: "start" + }, { + defaultToken: "string" + }], + "rawqstring": [{ + token: "string", + regex: "\\\\$", + next: "rawqstring" + }, { + token: "string", + regex: "'|$", + next: "start" + }, { + defaultToken: "string" + }], + "fqqstring3": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", + regex: '"{3}', + next: "start" + }, { + token: "paren.lparen", + regex: "{", + push: "fqstringParRules" + }, { + defaultToken: "string" + }], + "fqstring3": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", + regex: "'{3}", + next: "start" + }, { + token: "paren.lparen", + regex: "{", + push: "fqstringParRules" + }, { + defaultToken: "string" + }], + "fqqstring": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", + regex: "\\\\$", + next: "fqqstring" + }, { + token: "string", + regex: '"|$', + next: "start" + }, { + token: "paren.lparen", + regex: "{", + push: "fqstringParRules" + }, { + defaultToken: "string" + }], + "fqstring": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", + regex: "'|$", + next: "start" + }, { + token: "paren.lparen", + regex: "{", + push: "fqstringParRules" + }, { + defaultToken: "string" + }], + "rfqqstring3": [{ + token: "string", + regex: '"{3}', + next: "start" + }, { + token: "paren.lparen", + regex: "{", + push: "fqstringParRules" + }, { + defaultToken: "string" + }], + "rfqstring3": [{ + token: "string", + regex: "'{3}", + next: "start" + }, { + token: "paren.lparen", + regex: "{", + push: "fqstringParRules" + }, { + defaultToken: "string" + }], + "rfqqstring": [{ + token: "string", + regex: "\\\\$", + next: "rfqqstring" + }, { + token: "string", + regex: '"|$', + next: "start" + }, { + token: "paren.lparen", + regex: "{", + push: "fqstringParRules" + }, { + defaultToken: "string" + }], + "rfqstring": [{ + token: "string", + regex: "'|$", + next: "start" + }, { + token: "paren.lparen", + regex: "{", + push: "fqstringParRules" + }, { + defaultToken: "string" + }], + "fqstringParRules": [{ + token: "paren.lparen", + regex: "[\\[\\(]" + }, { + token: "paren.rparen", + regex: "[\\]\\)]" + }, { + token: "string", + regex: "\\s+" + }, { + token: "string", + regex: "'[^']*'" + }, { + token: "string", + regex: '"[^"]*"' + }, { + token: "function.support", + regex: "(!s|!r|!a)" + }, { + include: "constants" + }, { + token: 'paren.rparen', + regex: "}", + next: 'pop' + }, { + token: 'paren.lparen', + regex: "{", + push: "fqstringParRules" + }], + "constants": [{ + token: "constant.numeric", + regex: "(?:" + floatNumber + "|\\d+)[jJ]\\b" + }, { + token: "constant.numeric", + regex: floatNumber + }, { + token: "constant.numeric", + regex: integer + "[lL]\\b" + }, { + token: "constant.numeric", + regex: integer + "\\b" + }, { + token: ["punctuation", "function.support"], + regex: "(\\.)([a-zA-Z_]+)\\b" + }, { + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }] + }; + this.normalizeRules(); +}; +oop.inherits(PythonHighlightRules, TextHighlightRules); +exports.PythonHighlightRules = PythonHighlightRules; + +}); + +ace.define("ace/mode/csound_orchestra_highlight_rules",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/mode/csound_preprocessor_highlight_rules","ace/mode/csound_score_highlight_rules","ace/mode/lua_highlight_rules","ace/mode/python_highlight_rules"], function(require, exports, module){"use strict"; +var lang = require("../lib/lang"); +var oop = require("../lib/oop"); +var CsoundPreprocessorHighlightRules = require("./csound_preprocessor_highlight_rules").CsoundPreprocessorHighlightRules; +var CsoundScoreHighlightRules = require("./csound_score_highlight_rules").CsoundScoreHighlightRules; +var LuaHighlightRules = require("./lua_highlight_rules").LuaHighlightRules; +var PythonHighlightRules = require("./python_highlight_rules").PythonHighlightRules; +var CsoundOrchestraHighlightRules = function (embeddedRulePrefix) { + CsoundPreprocessorHighlightRules.call(this, embeddedRulePrefix); + var opcodes = [ + "ATSadd", + "ATSaddnz", + "ATSbufread", + "ATScross", + "ATSinfo", + "ATSinterpread", + "ATSpartialtap", + "ATSread", + "ATSreadnz", + "ATSsinnoi", + "FLbox", + "FLbutBank", + "FLbutton", + "FLcloseButton", + "FLcolor", + "FLcolor2", + "FLcount", + "FLexecButton", + "FLgetsnap", + "FLgroup", + "FLgroupEnd", + "FLgroup_end", + "FLhide", + "FLhvsBox", + "FLhvsBoxSetValue", + "FLjoy", + "FLkeyIn", + "FLknob", + "FLlabel", + "FLloadsnap", + "FLmouse", + "FLpack", + "FLpackEnd", + "FLpack_end", + "FLpanel", + "FLpanelEnd", + "FLpanel_end", + "FLprintk", + "FLprintk2", + "FLroller", + "FLrun", + "FLsavesnap", + "FLscroll", + "FLscrollEnd", + "FLscroll_end", + "FLsetAlign", + "FLsetBox", + "FLsetColor", + "FLsetColor2", + "FLsetFont", + "FLsetPosition", + "FLsetSize", + "FLsetSnapGroup", + "FLsetText", + "FLsetTextColor", + "FLsetTextSize", + "FLsetTextType", + "FLsetVal", + "FLsetVal_i", + "FLsetVali", + "FLsetsnap", + "FLshow", + "FLslidBnk", + "FLslidBnk2", + "FLslidBnk2Set", + "FLslidBnk2Setk", + "FLslidBnkGetHandle", + "FLslidBnkSet", + "FLslidBnkSetk", + "FLslider", + "FLtabs", + "FLtabsEnd", + "FLtabs_end", + "FLtext", + "FLupdate", + "FLvalue", + "FLvkeybd", + "FLvslidBnk", + "FLvslidBnk2", + "FLxyin", + "JackoAudioIn", + "JackoAudioInConnect", + "JackoAudioOut", + "JackoAudioOutConnect", + "JackoFreewheel", + "JackoInfo", + "JackoInit", + "JackoMidiInConnect", + "JackoMidiOut", + "JackoMidiOutConnect", + "JackoNoteOut", + "JackoOn", + "JackoTransport", + "K35_hpf", + "K35_lpf", + "MixerClear", + "MixerGetLevel", + "MixerReceive", + "MixerSend", + "MixerSetLevel", + "MixerSetLevel_i", + "OSCbundle", + "OSCcount", + "OSCinit", + "OSCinitM", + "OSClisten", + "OSCraw", + "OSCsend", + "OSCsend_lo", + "S", + "STKBandedWG", + "STKBeeThree", + "STKBlowBotl", + "STKBlowHole", + "STKBowed", + "STKBrass", + "STKClarinet", + "STKDrummer", + "STKFMVoices", + "STKFlute", + "STKHevyMetl", + "STKMandolin", + "STKModalBar", + "STKMoog", + "STKPercFlut", + "STKPlucked", + "STKResonate", + "STKRhodey", + "STKSaxofony", + "STKShakers", + "STKSimple", + "STKSitar", + "STKStifKarp", + "STKTubeBell", + "STKVoicForm", + "STKWhistle", + "STKWurley", + "a", + "abs", + "active", + "adsr", + "adsyn", + "adsynt", + "adsynt2", + "aftouch", + "allpole", + "alpass", + "alwayson", + "ampdb", + "ampdbfs", + "ampmidi", + "ampmidicurve", + "ampmidid", + "apoleparams", + "arduinoRead", + "arduinoReadF", + "arduinoStart", + "arduinoStop", + "areson", + "aresonk", + "atone", + "atonek", + "atonex", + "autocorr", + "babo", + "balance", + "balance2", + "bamboo", + "barmodel", + "bbcutm", + "bbcuts", + "betarand", + "bexprnd", + "bformdec1", + "bformdec2", + "bformenc1", + "binit", + "biquad", + "biquada", + "birnd", + "bob", + "bpf", + "bpfcos", + "bqrez", + "butbp", + "butbr", + "buthp", + "butlp", + "butterbp", + "butterbr", + "butterhp", + "butterlp", + "button", + "buzz", + "c2r", + "cabasa", + "cauchy", + "cauchyi", + "cbrt", + "ceil", + "cell", + "cent", + "centroid", + "ceps", + "cepsinv", + "chanctrl", + "changed", + "changed2", + "chani", + "chano", + "chebyshevpoly", + "checkbox", + "chn_S", + "chn_a", + "chn_k", + "chnclear", + "chnexport", + "chnget", + "chngeta", + "chngeti", + "chngetk", + "chngetks", + "chngets", + "chnmix", + "chnparams", + "chnset", + "chnseta", + "chnseti", + "chnsetk", + "chnsetks", + "chnsets", + "chuap", + "clear", + "clfilt", + "clip", + "clockoff", + "clockon", + "cmp", + "cmplxprod", + "cntCreate", + "cntCycles", + "cntDelete", + "cntDelete_i", + "cntRead", + "cntReset", + "cntState", + "comb", + "combinv", + "compilecsd", + "compileorc", + "compilestr", + "compress", + "compress2", + "connect", + "control", + "convle", + "convolve", + "copya2ftab", + "copyf2array", + "cos", + "cosh", + "cosinv", + "cosseg", + "cossegb", + "cossegr", + "count", + "count_i", + "cps2pch", + "cpsmidi", + "cpsmidib", + "cpsmidinn", + "cpsoct", + "cpspch", + "cpstmid", + "cpstun", + "cpstuni", + "cpsxpch", + "cpumeter", + "cpuprc", + "cross2", + "crossfm", + "crossfmi", + "crossfmpm", + "crossfmpmi", + "crosspm", + "crosspmi", + "crunch", + "ctlchn", + "ctrl14", + "ctrl21", + "ctrl7", + "ctrlinit", + "ctrlpreset", + "ctrlprint", + "ctrlprintpresets", + "ctrlsave", + "ctrlselect", + "cuserrnd", + "dam", + "date", + "dates", + "db", + "dbamp", + "dbfsamp", + "dcblock", + "dcblock2", + "dconv", + "dct", + "dctinv", + "deinterleave", + "delay", + "delay1", + "delayk", + "delayr", + "delayw", + "deltap", + "deltap3", + "deltapi", + "deltapn", + "deltapx", + "deltapxw", + "denorm", + "diff", + "diode_ladder", + "directory", + "diskgrain", + "diskin", + "diskin2", + "dispfft", + "display", + "distort", + "distort1", + "divz", + "doppler", + "dot", + "downsamp", + "dripwater", + "dssiactivate", + "dssiaudio", + "dssictls", + "dssiinit", + "dssilist", + "dumpk", + "dumpk2", + "dumpk3", + "dumpk4", + "duserrnd", + "dust", + "dust2", + "elapsedcycles", + "elapsedtime", + "envlpx", + "envlpxr", + "ephasor", + "eqfil", + "evalstr", + "event", + "event_i", + "eventcycles", + "eventtime", + "exciter", + "exitnow", + "exp", + "expcurve", + "expon", + "exprand", + "exprandi", + "expseg", + "expsega", + "expsegb", + "expsegba", + "expsegr", + "fareylen", + "fareyleni", + "faustaudio", + "faustcompile", + "faustctl", + "faustdsp", + "faustgen", + "faustplay", + "fft", + "fftinv", + "ficlose", + "filebit", + "filelen", + "filenchnls", + "filepeak", + "filescal", + "filesr", + "filevalid", + "fillarray", + "filter2", + "fin", + "fini", + "fink", + "fiopen", + "flanger", + "flashtxt", + "flooper", + "flooper2", + "floor", + "fluidAllOut", + "fluidCCi", + "fluidCCk", + "fluidControl", + "fluidEngine", + "fluidInfo", + "fluidLoad", + "fluidNote", + "fluidOut", + "fluidProgramSelect", + "fluidSetInterpMethod", + "fmanal", + "fmax", + "fmb3", + "fmbell", + "fmin", + "fmmetal", + "fmod", + "fmpercfl", + "fmrhode", + "fmvoice", + "fmwurlie", + "fof", + "fof2", + "fofilter", + "fog", + "fold", + "follow", + "follow2", + "foscil", + "foscili", + "fout", + "fouti", + "foutir", + "foutk", + "fprintks", + "fprints", + "frac", + "fractalnoise", + "framebuffer", + "freeverb", + "ftaudio", + "ftchnls", + "ftconv", + "ftcps", + "ftexists", + "ftfree", + "ftgen", + "ftgenonce", + "ftgentmp", + "ftlen", + "ftload", + "ftloadk", + "ftlptim", + "ftmorf", + "ftom", + "ftprint", + "ftresize", + "ftresizei", + "ftsamplebank", + "ftsave", + "ftsavek", + "ftset", + "ftslice", + "ftslicei", + "ftsr", + "gain", + "gainslider", + "gauss", + "gaussi", + "gausstrig", + "gbuzz", + "genarray", + "genarray_i", + "gendy", + "gendyc", + "gendyx", + "getcfg", + "getcol", + "getftargs", + "getrow", + "getseed", + "gogobel", + "grain", + "grain2", + "grain3", + "granule", + "gtadsr", + "gtf", + "guiro", + "harmon", + "harmon2", + "harmon3", + "harmon4", + "hdf5read", + "hdf5write", + "hilbert", + "hilbert2", + "hrtfearly", + "hrtfmove", + "hrtfmove2", + "hrtfreverb", + "hrtfstat", + "hsboscil", + "hvs1", + "hvs2", + "hvs3", + "hypot", + "i", + "ihold", + "imagecreate", + "imagefree", + "imagegetpixel", + "imageload", + "imagesave", + "imagesetpixel", + "imagesize", + "in", + "in32", + "inch", + "inh", + "init", + "initc14", + "initc21", + "initc7", + "inleta", + "inletf", + "inletk", + "inletkid", + "inletv", + "ino", + "inq", + "inrg", + "ins", + "insglobal", + "insremot", + "int", + "integ", + "interleave", + "interp", + "invalue", + "inx", + "inz", + "jacktransport", + "jitter", + "jitter2", + "joystick", + "jspline", + "k", + "la_i_add_mc", + "la_i_add_mr", + "la_i_add_vc", + "la_i_add_vr", + "la_i_assign_mc", + "la_i_assign_mr", + "la_i_assign_t", + "la_i_assign_vc", + "la_i_assign_vr", + "la_i_conjugate_mc", + "la_i_conjugate_mr", + "la_i_conjugate_vc", + "la_i_conjugate_vr", + "la_i_distance_vc", + "la_i_distance_vr", + "la_i_divide_mc", + "la_i_divide_mr", + "la_i_divide_vc", + "la_i_divide_vr", + "la_i_dot_mc", + "la_i_dot_mc_vc", + "la_i_dot_mr", + "la_i_dot_mr_vr", + "la_i_dot_vc", + "la_i_dot_vr", + "la_i_get_mc", + "la_i_get_mr", + "la_i_get_vc", + "la_i_get_vr", + "la_i_invert_mc", + "la_i_invert_mr", + "la_i_lower_solve_mc", + "la_i_lower_solve_mr", + "la_i_lu_det_mc", + "la_i_lu_det_mr", + "la_i_lu_factor_mc", + "la_i_lu_factor_mr", + "la_i_lu_solve_mc", + "la_i_lu_solve_mr", + "la_i_mc_create", + "la_i_mc_set", + "la_i_mr_create", + "la_i_mr_set", + "la_i_multiply_mc", + "la_i_multiply_mr", + "la_i_multiply_vc", + "la_i_multiply_vr", + "la_i_norm1_mc", + "la_i_norm1_mr", + "la_i_norm1_vc", + "la_i_norm1_vr", + "la_i_norm_euclid_mc", + "la_i_norm_euclid_mr", + "la_i_norm_euclid_vc", + "la_i_norm_euclid_vr", + "la_i_norm_inf_mc", + "la_i_norm_inf_mr", + "la_i_norm_inf_vc", + "la_i_norm_inf_vr", + "la_i_norm_max_mc", + "la_i_norm_max_mr", + "la_i_print_mc", + "la_i_print_mr", + "la_i_print_vc", + "la_i_print_vr", + "la_i_qr_eigen_mc", + "la_i_qr_eigen_mr", + "la_i_qr_factor_mc", + "la_i_qr_factor_mr", + "la_i_qr_sym_eigen_mc", + "la_i_qr_sym_eigen_mr", + "la_i_random_mc", + "la_i_random_mr", + "la_i_random_vc", + "la_i_random_vr", + "la_i_size_mc", + "la_i_size_mr", + "la_i_size_vc", + "la_i_size_vr", + "la_i_subtract_mc", + "la_i_subtract_mr", + "la_i_subtract_vc", + "la_i_subtract_vr", + "la_i_t_assign", + "la_i_trace_mc", + "la_i_trace_mr", + "la_i_transpose_mc", + "la_i_transpose_mr", + "la_i_upper_solve_mc", + "la_i_upper_solve_mr", + "la_i_vc_create", + "la_i_vc_set", + "la_i_vr_create", + "la_i_vr_set", + "la_k_a_assign", + "la_k_add_mc", + "la_k_add_mr", + "la_k_add_vc", + "la_k_add_vr", + "la_k_assign_a", + "la_k_assign_f", + "la_k_assign_mc", + "la_k_assign_mr", + "la_k_assign_t", + "la_k_assign_vc", + "la_k_assign_vr", + "la_k_conjugate_mc", + "la_k_conjugate_mr", + "la_k_conjugate_vc", + "la_k_conjugate_vr", + "la_k_current_f", + "la_k_current_vr", + "la_k_distance_vc", + "la_k_distance_vr", + "la_k_divide_mc", + "la_k_divide_mr", + "la_k_divide_vc", + "la_k_divide_vr", + "la_k_dot_mc", + "la_k_dot_mc_vc", + "la_k_dot_mr", + "la_k_dot_mr_vr", + "la_k_dot_vc", + "la_k_dot_vr", + "la_k_f_assign", + "la_k_get_mc", + "la_k_get_mr", + "la_k_get_vc", + "la_k_get_vr", + "la_k_invert_mc", + "la_k_invert_mr", + "la_k_lower_solve_mc", + "la_k_lower_solve_mr", + "la_k_lu_det_mc", + "la_k_lu_det_mr", + "la_k_lu_factor_mc", + "la_k_lu_factor_mr", + "la_k_lu_solve_mc", + "la_k_lu_solve_mr", + "la_k_mc_set", + "la_k_mr_set", + "la_k_multiply_mc", + "la_k_multiply_mr", + "la_k_multiply_vc", + "la_k_multiply_vr", + "la_k_norm1_mc", + "la_k_norm1_mr", + "la_k_norm1_vc", + "la_k_norm1_vr", + "la_k_norm_euclid_mc", + "la_k_norm_euclid_mr", + "la_k_norm_euclid_vc", + "la_k_norm_euclid_vr", + "la_k_norm_inf_mc", + "la_k_norm_inf_mr", + "la_k_norm_inf_vc", + "la_k_norm_inf_vr", + "la_k_norm_max_mc", + "la_k_norm_max_mr", + "la_k_qr_eigen_mc", + "la_k_qr_eigen_mr", + "la_k_qr_factor_mc", + "la_k_qr_factor_mr", + "la_k_qr_sym_eigen_mc", + "la_k_qr_sym_eigen_mr", + "la_k_random_mc", + "la_k_random_mr", + "la_k_random_vc", + "la_k_random_vr", + "la_k_subtract_mc", + "la_k_subtract_mr", + "la_k_subtract_vc", + "la_k_subtract_vr", + "la_k_t_assign", + "la_k_trace_mc", + "la_k_trace_mr", + "la_k_upper_solve_mc", + "la_k_upper_solve_mr", + "la_k_vc_set", + "la_k_vr_set", + "lag", + "lagud", + "lastcycle", + "lenarray", + "lfo", + "lfsr", + "limit", + "limit1", + "lincos", + "line", + "linen", + "linenr", + "lineto", + "link_beat_force", + "link_beat_get", + "link_beat_request", + "link_create", + "link_enable", + "link_is_enabled", + "link_metro", + "link_peers", + "link_tempo_get", + "link_tempo_set", + "linlin", + "linrand", + "linseg", + "linsegb", + "linsegr", + "liveconv", + "locsend", + "locsig", + "log", + "log10", + "log2", + "logbtwo", + "logcurve", + "loopseg", + "loopsegp", + "looptseg", + "loopxseg", + "lorenz", + "loscil", + "loscil3", + "loscil3phs", + "loscilphs", + "loscilx", + "lowpass2", + "lowres", + "lowresx", + "lpcanal", + "lpcfilter", + "lpf18", + "lpform", + "lpfreson", + "lphasor", + "lpinterp", + "lposcil", + "lposcil3", + "lposcila", + "lposcilsa", + "lposcilsa2", + "lpread", + "lpreson", + "lpshold", + "lpsholdp", + "lpslot", + "lufs", + "mac", + "maca", + "madsr", + "mags", + "mandel", + "mandol", + "maparray", + "maparray_i", + "marimba", + "massign", + "max", + "max_k", + "maxabs", + "maxabsaccum", + "maxaccum", + "maxalloc", + "maxarray", + "mclock", + "mdelay", + "median", + "mediank", + "metro", + "metro2", + "metrobpm", + "mfb", + "midglobal", + "midiarp", + "midic14", + "midic21", + "midic7", + "midichannelaftertouch", + "midichn", + "midicontrolchange", + "midictrl", + "mididefault", + "midifilestatus", + "midiin", + "midinoteoff", + "midinoteoncps", + "midinoteonkey", + "midinoteonoct", + "midinoteonpch", + "midion", + "midion2", + "midiout", + "midiout_i", + "midipgm", + "midipitchbend", + "midipolyaftertouch", + "midiprogramchange", + "miditempo", + "midremot", + "min", + "minabs", + "minabsaccum", + "minaccum", + "minarray", + "mincer", + "mirror", + "mode", + "modmatrix", + "monitor", + "moog", + "moogladder", + "moogladder2", + "moogvcf", + "moogvcf2", + "moscil", + "mp3bitrate", + "mp3in", + "mp3len", + "mp3nchnls", + "mp3out", + "mp3scal", + "mp3sr", + "mpulse", + "mrtmsg", + "ms2st", + "mtof", + "mton", + "multitap", + "mute", + "mvchpf", + "mvclpf1", + "mvclpf2", + "mvclpf3", + "mvclpf4", + "mvmfilter", + "mxadsr", + "nchnls_hw", + "nestedap", + "nlalp", + "nlfilt", + "nlfilt2", + "noise", + "noteoff", + "noteon", + "noteondur", + "noteondur2", + "notnum", + "nreverb", + "nrpn", + "nsamp", + "nstance", + "nstrnum", + "nstrstr", + "ntof", + "ntom", + "ntrpol", + "nxtpow2", + "octave", + "octcps", + "octmidi", + "octmidib", + "octmidinn", + "octpch", + "olabuffer", + "oscbnk", + "oscil", + "oscil1", + "oscil1i", + "oscil3", + "oscili", + "oscilikt", + "osciliktp", + "oscilikts", + "osciln", + "oscils", + "oscilx", + "out", + "out32", + "outall", + "outc", + "outch", + "outh", + "outiat", + "outic", + "outic14", + "outipat", + "outipb", + "outipc", + "outkat", + "outkc", + "outkc14", + "outkpat", + "outkpb", + "outkpc", + "outleta", + "outletf", + "outletk", + "outletkid", + "outletv", + "outo", + "outq", + "outq1", + "outq2", + "outq3", + "outq4", + "outrg", + "outs", + "outs1", + "outs2", + "outvalue", + "outx", + "outz", + "p", + "p5gconnect", + "p5gdata", + "pan", + "pan2", + "pareq", + "part2txt", + "partials", + "partikkel", + "partikkelget", + "partikkelset", + "partikkelsync", + "passign", + "paulstretch", + "pcauchy", + "pchbend", + "pchmidi", + "pchmidib", + "pchmidinn", + "pchoct", + "pchtom", + "pconvolve", + "pcount", + "pdclip", + "pdhalf", + "pdhalfy", + "peak", + "pgmassign", + "pgmchn", + "phaser1", + "phaser2", + "phasor", + "phasorbnk", + "phs", + "pindex", + "pinker", + "pinkish", + "pitch", + "pitchac", + "pitchamdf", + "planet", + "platerev", + "plltrack", + "pluck", + "poisson", + "pol2rect", + "polyaft", + "polynomial", + "port", + "portk", + "poscil", + "poscil3", + "pow", + "powershape", + "powoftwo", + "pows", + "prealloc", + "prepiano", + "print", + "print_type", + "printarray", + "printf", + "printf_i", + "printk", + "printk2", + "printks", + "printks2", + "println", + "prints", + "printsk", + "product", + "pset", + "ptablew", + "ptrack", + "puts", + "pvadd", + "pvbufread", + "pvcross", + "pvinterp", + "pvoc", + "pvread", + "pvs2array", + "pvs2tab", + "pvsadsyn", + "pvsanal", + "pvsarp", + "pvsbandp", + "pvsbandr", + "pvsbandwidth", + "pvsbin", + "pvsblur", + "pvsbuffer", + "pvsbufread", + "pvsbufread2", + "pvscale", + "pvscent", + "pvsceps", + "pvscfs", + "pvscross", + "pvsdemix", + "pvsdiskin", + "pvsdisp", + "pvsenvftw", + "pvsfilter", + "pvsfread", + "pvsfreeze", + "pvsfromarray", + "pvsftr", + "pvsftw", + "pvsfwrite", + "pvsgain", + "pvsgendy", + "pvshift", + "pvsifd", + "pvsin", + "pvsinfo", + "pvsinit", + "pvslock", + "pvslpc", + "pvsmaska", + "pvsmix", + "pvsmooth", + "pvsmorph", + "pvsosc", + "pvsout", + "pvspitch", + "pvstanal", + "pvstencil", + "pvstrace", + "pvsvoc", + "pvswarp", + "pvsynth", + "pwd", + "pyassign", + "pyassigni", + "pyassignt", + "pycall", + "pycall1", + "pycall1i", + "pycall1t", + "pycall2", + "pycall2i", + "pycall2t", + "pycall3", + "pycall3i", + "pycall3t", + "pycall4", + "pycall4i", + "pycall4t", + "pycall5", + "pycall5i", + "pycall5t", + "pycall6", + "pycall6i", + "pycall6t", + "pycall7", + "pycall7i", + "pycall7t", + "pycall8", + "pycall8i", + "pycall8t", + "pycalli", + "pycalln", + "pycallni", + "pycallt", + "pyeval", + "pyevali", + "pyevalt", + "pyexec", + "pyexeci", + "pyexect", + "pyinit", + "pylassign", + "pylassigni", + "pylassignt", + "pylcall", + "pylcall1", + "pylcall1i", + "pylcall1t", + "pylcall2", + "pylcall2i", + "pylcall2t", + "pylcall3", + "pylcall3i", + "pylcall3t", + "pylcall4", + "pylcall4i", + "pylcall4t", + "pylcall5", + "pylcall5i", + "pylcall5t", + "pylcall6", + "pylcall6i", + "pylcall6t", + "pylcall7", + "pylcall7i", + "pylcall7t", + "pylcall8", + "pylcall8i", + "pylcall8t", + "pylcalli", + "pylcalln", + "pylcallni", + "pylcallt", + "pyleval", + "pylevali", + "pylevalt", + "pylexec", + "pylexeci", + "pylexect", + "pylrun", + "pylruni", + "pylrunt", + "pyrun", + "pyruni", + "pyrunt", + "qinf", + "qnan", + "r2c", + "rand", + "randc", + "randh", + "randi", + "random", + "randomh", + "randomi", + "rbjeq", + "readclock", + "readf", + "readfi", + "readk", + "readk2", + "readk3", + "readk4", + "readks", + "readscore", + "readscratch", + "rect2pol", + "release", + "remoteport", + "remove", + "repluck", + "reshapearray", + "reson", + "resonbnk", + "resonk", + "resonr", + "resonx", + "resonxk", + "resony", + "resonz", + "resyn", + "reverb", + "reverb2", + "reverbsc", + "rewindscore", + "rezzy", + "rfft", + "rifft", + "rms", + "rnd", + "rnd31", + "rndseed", + "round", + "rspline", + "rtclock", + "s16b14", + "s32b14", + "samphold", + "sandpaper", + "sc_lag", + "sc_lagud", + "sc_phasor", + "sc_trig", + "scale", + "scale2", + "scalearray", + "scanhammer", + "scanmap", + "scans", + "scansmap", + "scantable", + "scanu", + "scanu2", + "schedkwhen", + "schedkwhennamed", + "schedule", + "schedulek", + "schedwhen", + "scoreline", + "scoreline_i", + "seed", + "sekere", + "select", + "semitone", + "sense", + "sensekey", + "seqtime", + "seqtime2", + "sequ", + "sequstate", + "serialBegin", + "serialEnd", + "serialFlush", + "serialPrint", + "serialRead", + "serialWrite", + "serialWrite_i", + "setcol", + "setctrl", + "setksmps", + "setrow", + "setscorepos", + "sfilist", + "sfinstr", + "sfinstr3", + "sfinstr3m", + "sfinstrm", + "sfload", + "sflooper", + "sfpassign", + "sfplay", + "sfplay3", + "sfplay3m", + "sfplaym", + "sfplist", + "sfpreset", + "shaker", + "shiftin", + "shiftout", + "signum", + "sin", + "sinh", + "sininv", + "sinsyn", + "skf", + "sleighbells", + "slicearray", + "slicearray_i", + "slider16", + "slider16f", + "slider16table", + "slider16tablef", + "slider32", + "slider32f", + "slider32table", + "slider32tablef", + "slider64", + "slider64f", + "slider64table", + "slider64tablef", + "slider8", + "slider8f", + "slider8table", + "slider8tablef", + "sliderKawai", + "sndloop", + "sndwarp", + "sndwarpst", + "sockrecv", + "sockrecvs", + "socksend", + "socksends", + "sorta", + "sortd", + "soundin", + "space", + "spat3d", + "spat3di", + "spat3dt", + "spdist", + "spf", + "splitrig", + "sprintf", + "sprintfk", + "spsend", + "sqrt", + "squinewave", + "st2ms", + "statevar", + "sterrain", + "stix", + "strcat", + "strcatk", + "strchar", + "strchark", + "strcmp", + "strcmpk", + "strcpy", + "strcpyk", + "strecv", + "streson", + "strfromurl", + "strget", + "strindex", + "strindexk", + "string2array", + "strlen", + "strlenk", + "strlower", + "strlowerk", + "strrindex", + "strrindexk", + "strset", + "strstrip", + "strsub", + "strsubk", + "strtod", + "strtodk", + "strtol", + "strtolk", + "strupper", + "strupperk", + "stsend", + "subinstr", + "subinstrinit", + "sum", + "sumarray", + "svfilter", + "svn", + "syncgrain", + "syncloop", + "syncphasor", + "system", + "system_i", + "tab", + "tab2array", + "tab2pvs", + "tab_i", + "tabifd", + "table", + "table3", + "table3kt", + "tablecopy", + "tablefilter", + "tablefilteri", + "tablegpw", + "tablei", + "tableicopy", + "tableigpw", + "tableikt", + "tableimix", + "tablekt", + "tablemix", + "tableng", + "tablera", + "tableseg", + "tableshuffle", + "tableshufflei", + "tablew", + "tablewa", + "tablewkt", + "tablexkt", + "tablexseg", + "tabmorph", + "tabmorpha", + "tabmorphak", + "tabmorphi", + "tabplay", + "tabrec", + "tabsum", + "tabw", + "tabw_i", + "tambourine", + "tan", + "tanh", + "taninv", + "taninv2", + "tbvcf", + "tempest", + "tempo", + "temposcal", + "tempoval", + "timedseq", + "timeinstk", + "timeinsts", + "timek", + "times", + "tival", + "tlineto", + "tone", + "tonek", + "tonex", + "tradsyn", + "trandom", + "transeg", + "transegb", + "transegr", + "trcross", + "trfilter", + "trhighest", + "trigExpseg", + "trigLinseg", + "trigexpseg", + "trigger", + "trighold", + "triglinseg", + "trigphasor", + "trigseq", + "trim", + "trim_i", + "trirand", + "trlowest", + "trmix", + "trscale", + "trshift", + "trsplit", + "turnoff", + "turnoff2", + "turnoff2_i", + "turnoff3", + "turnon", + "tvconv", + "unirand", + "unwrap", + "upsamp", + "urandom", + "urd", + "vactrol", + "vadd", + "vadd_i", + "vaddv", + "vaddv_i", + "vaget", + "valpass", + "vaset", + "vbap", + "vbapg", + "vbapgmove", + "vbaplsinit", + "vbapmove", + "vbapz", + "vbapzmove", + "vcella", + "vclpf", + "vco", + "vco2", + "vco2ft", + "vco2ift", + "vco2init", + "vcomb", + "vcopy", + "vcopy_i", + "vdel_k", + "vdelay", + "vdelay3", + "vdelayk", + "vdelayx", + "vdelayxq", + "vdelayxs", + "vdelayxw", + "vdelayxwq", + "vdelayxws", + "vdivv", + "vdivv_i", + "vecdelay", + "veloc", + "vexp", + "vexp_i", + "vexpseg", + "vexpv", + "vexpv_i", + "vibes", + "vibr", + "vibrato", + "vincr", + "vlimit", + "vlinseg", + "vlowres", + "vmap", + "vmirror", + "vmult", + "vmult_i", + "vmultv", + "vmultv_i", + "voice", + "vosim", + "vphaseseg", + "vport", + "vpow", + "vpow_i", + "vpowv", + "vpowv_i", + "vps", + "vpvoc", + "vrandh", + "vrandi", + "vsubv", + "vsubv_i", + "vtaba", + "vtabi", + "vtabk", + "vtable1k", + "vtablea", + "vtablei", + "vtablek", + "vtablewa", + "vtablewi", + "vtablewk", + "vtabwa", + "vtabwi", + "vtabwk", + "vwrap", + "waveset", + "websocket", + "weibull", + "wgbow", + "wgbowedbar", + "wgbrass", + "wgclar", + "wgflute", + "wgpluck", + "wgpluck2", + "wguide1", + "wguide2", + "wiiconnect", + "wiidata", + "wiirange", + "wiisend", + "window", + "wrap", + "writescratch", + "wterrain", + "wterrain2", + "xadsr", + "xin", + "xout", + "xtratim", + "xyscale", + "zacl", + "zakinit", + "zamod", + "zar", + "zarg", + "zaw", + "zawm", + "zdf_1pole", + "zdf_1pole_mode", + "zdf_2pole", + "zdf_2pole_mode", + "zdf_ladder", + "zfilter2", + "zir", + "ziw", + "ziwm", + "zkcl", + "zkmod", + "zkr", + "zkw", + "zkwm" + ]; + var deprecatedOpcodes = [ + "OSCsendA", + "array", + "beadsynt", + "beosc", + "bformdec", + "bformenc", + "buchla", + "copy2ftab", + "copy2ttab", + "getrowlin", + "hrtfer", + "ktableseg", + "lentab", + "lua_exec", + "lua_iaopcall", + "lua_iaopcall_off", + "lua_ikopcall", + "lua_ikopcall_off", + "lua_iopcall", + "lua_iopcall_off", + "lua_opdef", + "maxtab", + "mintab", + "mp3scal_check", + "mp3scal_load", + "mp3scal_load2", + "mp3scal_play", + "mp3scal_play2", + "pop", + "pop_f", + "ptable", + "ptable3", + "ptablei", + "ptableiw", + "push", + "push_f", + "pvsgendy", + "scalet", + "signalflowgraph", + "sndload", + "socksend_k", + "soundout", + "soundouts", + "specaddm", + "specdiff", + "specdisp", + "specfilt", + "spechist", + "specptrk", + "specscal", + "specsum", + "spectrum", + "stack", + "sumTableFilter", + "sumtab", + "systime", + "tabgen", + "tableiw", + "tabmap", + "tabmap_i", + "tabrowlin", + "tabslice", + "tb0", + "tb0_init", + "tb1", + "tb10", + "tb10_init", + "tb11", + "tb11_init", + "tb12", + "tb12_init", + "tb13", + "tb13_init", + "tb14", + "tb14_init", + "tb15", + "tb15_init", + "tb1_init", + "tb2", + "tb2_init", + "tb3", + "tb3_init", + "tb4", + "tb4_init", + "tb5", + "tb5_init", + "tb6", + "tb6_init", + "tb7", + "tb7_init", + "tb8", + "tb8_init", + "tb9", + "tb9_init", + "vbap16", + "vbap1move", + "vbap4", + "vbap4move", + "vbap8", + "vbap8move", + "xscanmap", + "xscans", + "xscansmap", + "xscanu", + "xyin" + ]; + opcodes = lang.arrayToMap(opcodes); + deprecatedOpcodes = lang.arrayToMap(deprecatedOpcodes); + this.lineContinuations = [ + { + token: "constant.character.escape.line-continuation.csound", + regex: /\\$/ + }, this.pushRule({ + token: "constant.character.escape.line-continuation.csound", + regex: /\\/, + next: "line continuation" + }) + ]; + this.comments.push(this.lineContinuations); + this.quotedStringContents.push(this.lineContinuations, { + token: "invalid.illegal", + regex: /[^"\\]*$/ + }); + var start = this.$rules.start; + start.splice(1, 0, { + token: ["text.csound", "entity.name.label.csound", "entity.punctuation.label.csound", "text.csound"], + regex: /^([ \t]*)(\w+)(:)([ \t]+|$)/ + }); + start.push(this.pushRule({ + token: "keyword.function.csound", + regex: /\binstr\b/, + next: "instrument numbers and identifiers" + }), this.pushRule({ + token: "keyword.function.csound", + regex: /\bopcode\b/, + next: "after opcode keyword" + }), { + token: "keyword.other.csound", + regex: /\bend(?:in|op)\b/ + }, { + token: "variable.language.csound", + regex: /\b(?:0dbfs|A4|k(?:r|smps)|nchnls(?:_i)?|sr)\b/ + }, this.numbers, { + token: "keyword.operator.csound", + regex: "\\+=|-=|\\*=|/=|<<|>>|<=|>=|==|!=|&&|\\|\\||[~¬]|[=!+\\-*/^%&|<>#?:]" + }, this.pushRule({ + token: "punctuation.definition.string.begin.csound", + regex: /"/, + next: "quoted string" + }), this.pushRule({ + token: "punctuation.definition.string.begin.csound", + regex: /{{/, + next: "braced string" + }), { + token: "keyword.control.csound", + regex: /\b(?:do|else(?:if)?|end(?:if|until)|fi|i(?:f|then)|kthen|od|r(?:ir)?eturn|then|until|while)\b/ + }, this.pushRule({ + token: "keyword.control.csound", + regex: /\b[ik]?goto\b/, + next: "goto before label" + }), this.pushRule({ + token: "keyword.control.csound", + regex: /\b(?:r(?:einit|igoto)|tigoto)\b/, + next: "goto before label" + }), this.pushRule({ + token: "keyword.control.csound", + regex: /\bc(?:g|in?|k|nk?)goto\b/, + next: ["goto before label", "goto before argument"] + }), this.pushRule({ + token: "keyword.control.csound", + regex: /\btimout\b/, + next: ["goto before label", "goto before argument", "goto before argument"] + }), this.pushRule({ + token: "keyword.control.csound", + regex: /\bloop_[gl][et]\b/, + next: ["goto before label", "goto before argument", "goto before argument", "goto before argument"] + }), this.pushRule({ + token: "support.function.csound", + regex: /\b(?:readscore|scoreline(?:_i)?)\b/, + next: "Csound score opcode" + }), this.pushRule({ + token: "support.function.csound", + regex: /\bpyl?run[it]?\b(?!$)/, + next: "Python opcode" + }), this.pushRule({ + token: "support.function.csound", + regex: /\blua_(?:exec|opdef)\b(?!$)/, + next: "Lua opcode" + }), { + token: "support.variable.csound", + regex: /\bp\d+\b/ + }, { + regex: /\b([A-Z_a-z]\w*)(?:(:)([A-Za-z]))?\b/, onMatch: function (value, currentState, stack, line) { + var tokens = value.split(this.splitRegex); + var name = tokens[1]; + var type; + if (opcodes.hasOwnProperty(name)) + type = "support.function.csound"; + else if (deprecatedOpcodes.hasOwnProperty(name)) + type = "invalid.deprecated.csound"; + if (type) { + if (tokens[2]) { + return [ + { type: type, value: name }, + { type: "punctuation.type-annotation.csound", value: tokens[2] }, + { type: "type-annotation.storage.type.csound", value: tokens[3] } + ]; + } + return type; + } + return "text.csound"; + } + }); + this.$rules["macro parameter value list"].splice(2, 0, { + token: "punctuation.definition.string.begin.csound", + regex: /{{/, + next: "macro parameter value braced string" + }); + var scoreHighlightRules = new CsoundScoreHighlightRules("csound-score-"); + this.addRules({ + "macro parameter value braced string": [ + { + token: "constant.character.escape.csound", + regex: /\\[#'()]/ + }, { + token: "invalid.illegal.csound.csound", + regex: /[#'()]/ + }, { + token: "punctuation.definition.string.end.csound", + regex: /}}/, + next: "macro parameter value list" + }, { + defaultToken: "string.braced.csound" + } + ], + "instrument numbers and identifiers": [ + this.comments, + { + token: "entity.name.function.csound", + regex: /\d+|[A-Z_a-z]\w*/ + }, this.popRule({ + token: "empty", + regex: /$/ + }) + ], + "after opcode keyword": [ + this.comments, + this.popRule({ + token: "empty", + regex: /$/ + }), this.popRule({ + token: "entity.name.function.opcode.csound", + regex: /[A-Z_a-z]\w*/, + next: "opcode type signatures" + }) + ], + "opcode type signatures": [ + this.comments, + this.popRule({ + token: "empty", + regex: /$/ + }), { + token: "storage.type.csound", + regex: /\b(?:0|[afijkKoOpPStV\[\]]+)/ + } + ], + "quoted string": [ + this.popRule({ + token: "punctuation.definition.string.end.csound", + regex: /"/ + }), + this.quotedStringContents, + { + defaultToken: "string.quoted.csound" + } + ], + "braced string": [ + this.popRule({ + token: "punctuation.definition.string.end.csound", + regex: /}}/ + }), + this.bracedStringContents, + { + defaultToken: "string.braced.csound" + } + ], + "goto before argument": [ + this.popRule({ + token: "text.csound", + regex: /,/ + }), + start + ], + "goto before label": [ + { + token: "text.csound", + regex: /\s+/ + }, + this.comments, + this.popRule({ + token: "entity.name.label.csound", + regex: /\w+/ + }), this.popRule({ + token: "empty", + regex: /(?!\w)/ + }) + ], + "Csound score opcode": [ + this.comments, + { + token: "punctuation.definition.string.begin.csound", + regex: /{{/, + next: scoreHighlightRules.embeddedRulePrefix + "start" + }, this.popRule({ + token: "empty", + regex: /$/ + }) + ], + "Python opcode": [ + this.comments, + { + token: "punctuation.definition.string.begin.csound", + regex: /{{/, + next: "python-start" + }, this.popRule({ + token: "empty", + regex: /$/ + }) + ], + "Lua opcode": [ + this.comments, + { + token: "punctuation.definition.string.begin.csound", + regex: /{{/, + next: "lua-start" + }, this.popRule({ + token: "empty", + regex: /$/ + }) + ], + "line continuation": [ + this.popRule({ + token: "empty", + regex: /$/ + }), + this.semicolonComments, + { + token: "invalid.illegal.csound", + regex: /\S.*/ + } + ] + }); + var rules = [ + this.popRule({ + token: "punctuation.definition.string.end.csound", + regex: /}}/ + }) + ]; + this.embedRules(scoreHighlightRules.getRules(), scoreHighlightRules.embeddedRulePrefix, rules); + this.embedRules(PythonHighlightRules, "python-", rules); + this.embedRules(LuaHighlightRules, "lua-", rules); + this.normalizeRules(); +}; +oop.inherits(CsoundOrchestraHighlightRules, CsoundPreprocessorHighlightRules); +exports.CsoundOrchestraHighlightRules = CsoundOrchestraHighlightRules; + +}); + +ace.define("ace/mode/csound_orchestra",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/csound_orchestra_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var CsoundOrchestraHighlightRules = require("./csound_orchestra_highlight_rules").CsoundOrchestraHighlightRules; +var Mode = function () { + this.HighlightRules = CsoundOrchestraHighlightRules; +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = ";"; + this.blockComment = { start: "/*", end: "*/" }; + this.$id = "ace/mode/csound_orchestra"; + this.snippetFileId = "ace/snippets/csound_orchestra"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/csound_orchestra"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/07cd7a34f1a3637d07c8e69746490d8f.js.gz b/web/dist/07cd7a34f1a3637d07c8e69746490d8f.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..700e552e64b9eb331b7fc7314eef292f43debc22 GIT binary patch literal 13750 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\\+|\\*|-|/|~|%|\\?|!|\\^|\\.|\\:|\\,|" + + "»|«|\\||\\&|⚛|∘" }; + var constants_unicode = { token: "constant.language", regex: "𝑒|π|τ|∞" }; + var qstrings = { token: "string.quoted.single", regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" }; + var word_quoting = { token: "string.quoted.single", regex: "[<](?:[a-zA-Z0-9 ])*[>]" }; + var regexp = { + token: "string.regexp", + regex: "[m|rx]?[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)" + }; + this.$rules = { + "start": [ + { + token: "comment.block", + regex: "#[`|=]\\(.*\\)" + }, { + token: "comment.block", + regex: "#[`|=]\\[.*\\]" + }, { + token: "comment.doc", + regex: "^=(?:begin)\\b", + next: "block_comment" + }, { + token: "string.unquoted", + regex: "q[x|w]?\\:to/END/;", + next: "qheredoc" + }, { + token: "string.unquoted", + regex: "qq[x|w]?\\:to/END/;", + next: "qqheredoc" + }, + regexp, + qstrings, + { + token: "string.quoted.double", + regex: '"', + next: "qqstring" + }, + word_quoting, + { + token: ["keyword", "text", "variable.module"], + regex: "(use)(\\s+)((?:" + moduleName + "\\.?)*)" + }, + hex, + num_rat, + num_with_, + complex_numbers, + booleans, + versions, + lang_keywords, + variables, + vars_special, + ops_char, + constants_unicode, + { + token: "comment", + regex: "#.*$" + }, { + token: "lparen", + regex: "[[({]" + }, { + token: "rparen", + regex: "[\\])}]" + }, { + token: "text", + regex: "\\s+" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: '\\\\(?:[nrtef\\\\"$]|[0-7]{1,3}|x[0-9A-Fa-f]{1,2})' + }, + variables, + vars_special, + { + token: "lparen", + regex: "{", + next: "qqinterpolation" + }, { + token: "string.quoted.double", + regex: '"', + next: "start" + }, { + defaultToken: "string.quoted.double" + } + ], + "qqinterpolation": [ + hex, + num_rat, + num_with_, + complex_numbers, + booleans, + versions, + lang_keywords, + variables, + vars_special, + ops_char, + constants_unicode, + qstrings, + regexp, + { + token: "rparen", + regex: "}", + next: "qqstring" + } + ], + "block_comment": [ + { + token: "comment.doc", + regex: "^=end +[a-zA-Z_0-9]*", + next: "start" + }, + { + defaultToken: "comment.doc" + } + ], + "qheredoc": [ + { + token: "string.unquoted", + regex: "END$", + next: "start" + }, { + defaultToken: "string.unquoted" + } + ], + "qqheredoc": [ + variables, + vars_special, + { + token: "lparen", + regex: "{", + next: "qqheredocinterpolation" + }, { + token: "string.unquoted", + regex: "END$", + next: "start" + }, { + defaultToken: "string.unquoted" + } + ], + "qqheredocinterpolation": [ + hex, + num_rat, + num_with_, + complex_numbers, + booleans, + versions, + lang_keywords, + variables, + vars_special, + ops_char, + constants_unicode, + qstrings, + regexp, + { + token: "rparen", + regex: "}", + next: "qqheredoc" + } + ] + }; +}; +oop.inherits(RakuHighlightRules, TextHighlightRules); +exports.RakuHighlightRules = RakuHighlightRules; + +}); + +ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) + return false; + return /^\s*\}/.test(input); + }; + this.autoOutdent = function (doc, row) { + var line = doc.getLine(row); + var match = line.match(/^(\s*\})/); + if (!match) + return 0; + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; + var indent = this.$getIndent(doc.getLine(openBracePos.row)); + doc.replace(new Range(row, 0, row, column - 1), indent); + }; + this.$getIndent = function (line) { + return line.match(/^\s*/)[0]; + }; +}).call(MatchingBraceOutdent.prototype); +exports.MatchingBraceOutdent = MatchingBraceOutdent; + +}); + +ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/raku",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/raku_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var RakuHighlightRules = require("./raku_highlight_rules").RakuHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = RakuHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.foldingRules = new CStyleFoldMode({ start: "^=(begin)\\b", end: "^=(end)\\b" }); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "#"; + this.blockComment = [ + { start: "=begin", end: "=end", lineStartOnly: true }, + { start: "=item", end: "=end", lineStartOnly: true } + ]; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + if (state == "start") { + var match = line.match(/^.*[\{\(\[:]\s*$/); + if (match) { + indent += tab; + } + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.$id = "ace/mode/raku"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/raku"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/082d72cee51411d39d52d3f0e06eca3b.js.gz b/web/dist/082d72cee51411d39d52d3f0e06eca3b.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..124f76a64624718cccf715a637922cf4fc4bf533 GIT binary patch literal 8278 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 U%e*nYwMOp$199oe?-XbN09wQ=TL1t6 literal 0 HcmV?d00001 diff --git a/web/dist/08ead5ce2617fb6ce642b5ba343bd62c.js b/web/dist/08ead5ce2617fb6ce642b5ba343bd62c.js new file mode 100644 index 00000000..3522c835 --- /dev/null +++ b/web/dist/08ead5ce2617fb6ce642b5ba343bd62c.js @@ -0,0 +1,9 @@ + +; (function() { + ace.require(["ace/snippets/bibtex"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/08f2ebda31cf24e86831115fde674fad.js b/web/dist/08f2ebda31cf24e86831115fde674fad.js new file mode 100644 index 00000000..917445a8 --- /dev/null +++ b/web/dist/08f2ebda31cf24e86831115fde674fad.js @@ -0,0 +1,16 @@ +ace.define("ace/snippets/csound_document.snippets",["require","exports","module"], function(require, exports, module){module.exports = "# \nsnippet synth\n\t\n\t\n\t${1}\n\t\n\t\n\te\n\t\n\t\n"; + +}); + +ace.define("ace/snippets/csound_document",["require","exports","module","ace/snippets/csound_document.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./csound_document.snippets"); +exports.scope = "csound_document"; + +}); (function() { + ace.require(["ace/snippets/csound_document"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/097c060d70c9752bce90a4a814f1f161.js b/web/dist/097c060d70c9752bce90a4a814f1f161.js new file mode 100644 index 00000000..816602ef --- /dev/null +++ b/web/dist/097c060d70c9752bce90a4a814f1f161.js @@ -0,0 +1,3779 @@ +"no use strict"; +!(function(window) { +if (typeof window.window != "undefined" && window.document) + return; +if (window.require && window.define) + return; + +if (!window.console) { + window.console = function() { + var msgs = Array.prototype.slice.call(arguments, 0); + postMessage({type: "log", data: msgs}); + }; + window.console.error = + window.console.warn = + window.console.log = + window.console.trace = window.console; +} +window.window = window; +window.ace = window; + +window.onerror = function(message, file, line, col, err) { + postMessage({type: "error", data: { + message: message, + data: err && err.data, + file: file, + line: line, + col: col, + stack: err && err.stack + }}); +}; + +window.normalizeModule = function(parentId, moduleName) { + // normalize plugin requires + if (moduleName.indexOf("!") !== -1) { + var chunks = moduleName.split("!"); + return window.normalizeModule(parentId, chunks[0]) + "!" + window.normalizeModule(parentId, chunks[1]); + } + // normalize relative requires + if (moduleName.charAt(0) == ".") { + var base = parentId.split("/").slice(0, -1).join("/"); + moduleName = (base ? base + "/" : "") + moduleName; + + while (moduleName.indexOf(".") !== -1 && previous != moduleName) { + var previous = moduleName; + moduleName = moduleName.replace(/^\.\//, "").replace(/\/\.\//, "/").replace(/[^\/]+\/\.\.\//, ""); + } + } + + return moduleName; +}; + +window.require = function require(parentId, id) { + if (!id) { + id = parentId; + parentId = null; + } + if (!id.charAt) + throw new Error("worker.js require() accepts only (parentId, id) as arguments"); + + id = window.normalizeModule(parentId, id); + + var module = window.require.modules[id]; + if (module) { + if (!module.initialized) { + module.initialized = true; + module.exports = module.factory().exports; + } + return module.exports; + } + + if (!window.require.tlns) + return console.log("unable to load " + id); + + var path = resolveModuleId(id, window.require.tlns); + if (path.slice(-3) != ".js") path += ".js"; + + window.require.id = id; + window.require.modules[id] = {}; // prevent infinite loop on broken modules + importScripts(path); + return window.require(parentId, id); +}; +function resolveModuleId(id, paths) { + var testPath = id, tail = ""; + while (testPath) { + var alias = paths[testPath]; + if (typeof alias == "string") { + return alias + tail; + } else if (alias) { + return alias.location.replace(/\/*$/, "/") + (tail || alias.main || alias.name); + } else if (alias === false) { + return ""; + } + var i = testPath.lastIndexOf("/"); + if (i === -1) break; + tail = testPath.substr(i) + tail; + testPath = testPath.slice(0, i); + } + return id; +} +window.require.modules = {}; +window.require.tlns = {}; + +window.define = function(id, deps, factory) { + if (arguments.length == 2) { + factory = deps; + if (typeof id != "string") { + deps = id; + id = window.require.id; + } + } else if (arguments.length == 1) { + factory = id; + deps = []; + id = window.require.id; + } + + if (typeof factory != "function") { + window.require.modules[id] = { + exports: factory, + initialized: true + }; + return; + } + + if (!deps.length) + // If there is no dependencies, we inject "require", "exports" and + // "module" as dependencies, to provide CommonJS compatibility. + deps = ["require", "exports", "module"]; + + var req = function(childId) { + return window.require(id, childId); + }; + + window.require.modules[id] = { + exports: {}, + factory: function() { + var module = this; + var returnExports = factory.apply(this, deps.slice(0, factory.length).map(function(dep) { + switch (dep) { + // Because "require", "exports" and "module" aren't actual + // dependencies, we must handle them seperately. + case "require": return req; + case "exports": return module.exports; + case "module": return module; + // But for all other dependencies, we can just go ahead and + // require them. + default: return req(dep); + } + })); + if (returnExports) + module.exports = returnExports; + return module; + } + }; +}; +window.define.amd = {}; +window.require.tlns = {}; +window.initBaseUrls = function initBaseUrls(topLevelNamespaces) { + for (var i in topLevelNamespaces) + this.require.tlns[i] = topLevelNamespaces[i]; +}; + +window.initSender = function initSender() { + + var EventEmitter = window.require("ace/lib/event_emitter").EventEmitter; + var oop = window.require("ace/lib/oop"); + + var Sender = function() {}; + + (function() { + + oop.implement(this, EventEmitter); + + this.callback = function(data, callbackId) { + postMessage({ + type: "call", + id: callbackId, + data: data + }); + }; + + this.emit = function(name, data) { + postMessage({ + type: "event", + name: name, + data: data + }); + }; + + }).call(Sender.prototype); + + return new Sender(); +}; + +var main = window.main = null; +var sender = window.sender = null; + +window.onmessage = function(e) { + var msg = e.data; + if (msg.event && sender) { + sender._signal(msg.event, msg.data); + } + else if (msg.command) { + if (main[msg.command]) + main[msg.command].apply(main, msg.args); + else if (window[msg.command]) + window[msg.command].apply(window, msg.args); + else + throw new Error("Unknown command:" + msg.command); + } + else if (msg.init) { + window.initBaseUrls(msg.tlns); + sender = window.sender = window.initSender(); + var clazz = this.require(msg.module)[msg.classname]; + main = window.main = new clazz(sender); + } +}; +})(this); + +ace.define("ace/lib/oop",[], function(require, exports, module){"use strict"; +exports.inherits = function (ctor, superCtor) { + ctor.super_ = superCtor; + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }); +}; +exports.mixin = function (obj, mixin) { + for (var key in mixin) { + obj[key] = mixin[key]; + } + return obj; +}; +exports.implement = function (proto, mixin) { + exports.mixin(proto, mixin); +}; + +}); + +ace.define("ace/apply_delta",[], function(require, exports, module){"use strict"; +function throwDeltaError(delta, errorText) { + console.log("Invalid Delta:", delta); + throw "Invalid Delta: " + errorText; +} +function positionInDocument(docLines, position) { + return position.row >= 0 && position.row < docLines.length && + position.column >= 0 && position.column <= docLines[position.row].length; +} +function validateDelta(docLines, delta) { + if (delta.action != "insert" && delta.action != "remove") + throwDeltaError(delta, "delta.action must be 'insert' or 'remove'"); + if (!(delta.lines instanceof Array)) + throwDeltaError(delta, "delta.lines must be an Array"); + if (!delta.start || !delta.end) + throwDeltaError(delta, "delta.start/end must be an present"); + var start = delta.start; + if (!positionInDocument(docLines, delta.start)) + throwDeltaError(delta, "delta.start must be contained in document"); + var end = delta.end; + if (delta.action == "remove" && !positionInDocument(docLines, end)) + throwDeltaError(delta, "delta.end must contained in document for 'remove' actions"); + var numRangeRows = end.row - start.row; + var numRangeLastLineChars = (end.column - (numRangeRows == 0 ? start.column : 0)); + if (numRangeRows != delta.lines.length - 1 || delta.lines[numRangeRows].length != numRangeLastLineChars) + throwDeltaError(delta, "delta.range must match delta lines"); +} +exports.applyDelta = function (docLines, delta, doNotValidate) { + var row = delta.start.row; + var startColumn = delta.start.column; + var line = docLines[row] || ""; + switch (delta.action) { + case "insert": + var lines = delta.lines; + if (lines.length === 1) { + docLines[row] = line.substring(0, startColumn) + delta.lines[0] + line.substring(startColumn); + } + else { + var args = [row, 1].concat(delta.lines); + docLines.splice.apply(docLines, args); + docLines[row] = line.substring(0, startColumn) + docLines[row]; + docLines[row + delta.lines.length - 1] += line.substring(startColumn); + } + break; + case "remove": + var endColumn = delta.end.column; + var endRow = delta.end.row; + if (row === endRow) { + docLines[row] = line.substring(0, startColumn) + line.substring(endColumn); + } + else { + docLines.splice(row, endRow - row + 1, line.substring(0, startColumn) + docLines[endRow].substring(endColumn)); + } + break; + } +}; + +}); + +ace.define("ace/lib/event_emitter",[], function(require, exports, module){"use strict"; +var EventEmitter = {}; +var stopPropagation = function () { this.propagationStopped = true; }; +var preventDefault = function () { this.defaultPrevented = true; }; +EventEmitter._emit = + EventEmitter._dispatchEvent = function (eventName, e) { + this._eventRegistry || (this._eventRegistry = {}); + this._defaultHandlers || (this._defaultHandlers = {}); + var listeners = this._eventRegistry[eventName] || []; + var defaultHandler = this._defaultHandlers[eventName]; + if (!listeners.length && !defaultHandler) + return; + if (typeof e != "object" || !e) + e = {}; + if (!e.type) + e.type = eventName; + if (!e.stopPropagation) + e.stopPropagation = stopPropagation; + if (!e.preventDefault) + e.preventDefault = preventDefault; + listeners = listeners.slice(); + for (var i = 0; i < listeners.length; i++) { + listeners[i](e, this); + if (e.propagationStopped) + break; + } + if (defaultHandler && !e.defaultPrevented) + return defaultHandler(e, this); + }; +EventEmitter._signal = function (eventName, e) { + var listeners = (this._eventRegistry || {})[eventName]; + if (!listeners) + return; + listeners = listeners.slice(); + for (var i = 0; i < listeners.length; i++) + listeners[i](e, this); +}; +EventEmitter.once = function (eventName, callback) { + var _self = this; + this.on(eventName, function newCallback() { + _self.off(eventName, newCallback); + callback.apply(null, arguments); + }); + if (!callback) { + return new Promise(function (resolve) { + callback = resolve; + }); + } +}; +EventEmitter.setDefaultHandler = function (eventName, callback) { + var handlers = this._defaultHandlers; + if (!handlers) + handlers = this._defaultHandlers = { _disabled_: {} }; + if (handlers[eventName]) { + var old = handlers[eventName]; + var disabled = handlers._disabled_[eventName]; + if (!disabled) + handlers._disabled_[eventName] = disabled = []; + disabled.push(old); + var i = disabled.indexOf(callback); + if (i != -1) + disabled.splice(i, 1); + } + handlers[eventName] = callback; +}; +EventEmitter.removeDefaultHandler = function (eventName, callback) { + var handlers = this._defaultHandlers; + if (!handlers) + return; + var disabled = handlers._disabled_[eventName]; + if (handlers[eventName] == callback) { + if (disabled) + this.setDefaultHandler(eventName, disabled.pop()); + } + else if (disabled) { + var i = disabled.indexOf(callback); + if (i != -1) + disabled.splice(i, 1); + } +}; +EventEmitter.on = + EventEmitter.addEventListener = function (eventName, callback, capturing) { + this._eventRegistry = this._eventRegistry || {}; + var listeners = this._eventRegistry[eventName]; + if (!listeners) + listeners = this._eventRegistry[eventName] = []; + if (listeners.indexOf(callback) == -1) + listeners[capturing ? "unshift" : "push"](callback); + return callback; + }; +EventEmitter.off = + EventEmitter.removeListener = + EventEmitter.removeEventListener = function (eventName, callback) { + this._eventRegistry = this._eventRegistry || {}; + var listeners = this._eventRegistry[eventName]; + if (!listeners) + return; + var index = listeners.indexOf(callback); + if (index !== -1) + listeners.splice(index, 1); + }; +EventEmitter.removeAllListeners = function (eventName) { + if (!eventName) + this._eventRegistry = this._defaultHandlers = undefined; + if (this._eventRegistry) + this._eventRegistry[eventName] = undefined; + if (this._defaultHandlers) + this._defaultHandlers[eventName] = undefined; +}; +exports.EventEmitter = EventEmitter; + +}); + +ace.define("ace/range",[], function(require, exports, module){"use strict"; +var comparePoints = function (p1, p2) { + return p1.row - p2.row || p1.column - p2.column; +}; +var Range = function (startRow, startColumn, endRow, endColumn) { + this.start = { + row: startRow, + column: startColumn + }; + this.end = { + row: endRow, + column: endColumn + }; +}; +(function () { + this.isEqual = function (range) { + return this.start.row === range.start.row && + this.end.row === range.end.row && + this.start.column === range.start.column && + this.end.column === range.end.column; + }; + this.toString = function () { + return ("Range: [" + this.start.row + "/" + this.start.column + + "] -> [" + this.end.row + "/" + this.end.column + "]"); + }; + this.contains = function (row, column) { + return this.compare(row, column) == 0; + }; + this.compareRange = function (range) { + var cmp, end = range.end, start = range.start; + cmp = this.compare(end.row, end.column); + if (cmp == 1) { + cmp = this.compare(start.row, start.column); + if (cmp == 1) { + return 2; + } + else if (cmp == 0) { + return 1; + } + else { + return 0; + } + } + else if (cmp == -1) { + return -2; + } + else { + cmp = this.compare(start.row, start.column); + if (cmp == -1) { + return -1; + } + else if (cmp == 1) { + return 42; + } + else { + return 0; + } + } + }; + this.comparePoint = function (p) { + return this.compare(p.row, p.column); + }; + this.containsRange = function (range) { + return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0; + }; + this.intersects = function (range) { + var cmp = this.compareRange(range); + return (cmp == -1 || cmp == 0 || cmp == 1); + }; + this.isEnd = function (row, column) { + return this.end.row == row && this.end.column == column; + }; + this.isStart = function (row, column) { + return this.start.row == row && this.start.column == column; + }; + this.setStart = function (row, column) { + if (typeof row == "object") { + this.start.column = row.column; + this.start.row = row.row; + } + else { + this.start.row = row; + this.start.column = column; + } + }; + this.setEnd = function (row, column) { + if (typeof row == "object") { + this.end.column = row.column; + this.end.row = row.row; + } + else { + this.end.row = row; + this.end.column = column; + } + }; + this.inside = function (row, column) { + if (this.compare(row, column) == 0) { + if (this.isEnd(row, column) || this.isStart(row, column)) { + return false; + } + else { + return true; + } + } + return false; + }; + this.insideStart = function (row, column) { + if (this.compare(row, column) == 0) { + if (this.isEnd(row, column)) { + return false; + } + else { + return true; + } + } + return false; + }; + this.insideEnd = function (row, column) { + if (this.compare(row, column) == 0) { + if (this.isStart(row, column)) { + return false; + } + else { + return true; + } + } + return false; + }; + this.compare = function (row, column) { + if (!this.isMultiLine()) { + if (row === this.start.row) { + return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0); + } + } + if (row < this.start.row) + return -1; + if (row > this.end.row) + return 1; + if (this.start.row === row) + return column >= this.start.column ? 0 : -1; + if (this.end.row === row) + return column <= this.end.column ? 0 : 1; + return 0; + }; + this.compareStart = function (row, column) { + if (this.start.row == row && this.start.column == column) { + return -1; + } + else { + return this.compare(row, column); + } + }; + this.compareEnd = function (row, column) { + if (this.end.row == row && this.end.column == column) { + return 1; + } + else { + return this.compare(row, column); + } + }; + this.compareInside = function (row, column) { + if (this.end.row == row && this.end.column == column) { + return 1; + } + else if (this.start.row == row && this.start.column == column) { + return -1; + } + else { + return this.compare(row, column); + } + }; + this.clipRows = function (firstRow, lastRow) { + if (this.end.row > lastRow) + var end = { row: lastRow + 1, column: 0 }; + else if (this.end.row < firstRow) + var end = { row: firstRow, column: 0 }; + if (this.start.row > lastRow) + var start = { row: lastRow + 1, column: 0 }; + else if (this.start.row < firstRow) + var start = { row: firstRow, column: 0 }; + return Range.fromPoints(start || this.start, end || this.end); + }; + this.extend = function (row, column) { + var cmp = this.compare(row, column); + if (cmp == 0) + return this; + else if (cmp == -1) + var start = { row: row, column: column }; + else + var end = { row: row, column: column }; + return Range.fromPoints(start || this.start, end || this.end); + }; + this.isEmpty = function () { + return (this.start.row === this.end.row && this.start.column === this.end.column); + }; + this.isMultiLine = function () { + return (this.start.row !== this.end.row); + }; + this.clone = function () { + return Range.fromPoints(this.start, this.end); + }; + this.collapseRows = function () { + if (this.end.column == 0) + return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row - 1), 0); + else + return new Range(this.start.row, 0, this.end.row, 0); + }; + this.toScreenRange = function (session) { + var screenPosStart = session.documentToScreenPosition(this.start); + var screenPosEnd = session.documentToScreenPosition(this.end); + return new Range(screenPosStart.row, screenPosStart.column, screenPosEnd.row, screenPosEnd.column); + }; + this.moveBy = function (row, column) { + this.start.row += row; + this.start.column += column; + this.end.row += row; + this.end.column += column; + }; +}).call(Range.prototype); +Range.fromPoints = function (start, end) { + return new Range(start.row, start.column, end.row, end.column); +}; +Range.comparePoints = comparePoints; +Range.comparePoints = function (p1, p2) { + return p1.row - p2.row || p1.column - p2.column; +}; +exports.Range = Range; + +}); + +ace.define("ace/anchor",[], function(require, exports, module){"use strict"; +var oop = require("./lib/oop"); +var EventEmitter = require("./lib/event_emitter").EventEmitter; +var Anchor = exports.Anchor = function (doc, row, column) { + this.$onChange = this.onChange.bind(this); + this.attach(doc); + if (typeof column == "undefined") + this.setPosition(row.row, row.column); + else + this.setPosition(row, column); +}; +(function () { + oop.implement(this, EventEmitter); + this.getPosition = function () { + return this.$clipPositionToDocument(this.row, this.column); + }; + this.getDocument = function () { + return this.document; + }; + this.$insertRight = false; + this.onChange = function (delta) { + if (delta.start.row == delta.end.row && delta.start.row != this.row) + return; + if (delta.start.row > this.row) + return; + var point = $getTransformedPoint(delta, { row: this.row, column: this.column }, this.$insertRight); + this.setPosition(point.row, point.column, true); + }; + function $pointsInOrder(point1, point2, equalPointsInOrder) { + var bColIsAfter = equalPointsInOrder ? point1.column <= point2.column : point1.column < point2.column; + return (point1.row < point2.row) || (point1.row == point2.row && bColIsAfter); + } + function $getTransformedPoint(delta, point, moveIfEqual) { + var deltaIsInsert = delta.action == "insert"; + var deltaRowShift = (deltaIsInsert ? 1 : -1) * (delta.end.row - delta.start.row); + var deltaColShift = (deltaIsInsert ? 1 : -1) * (delta.end.column - delta.start.column); + var deltaStart = delta.start; + var deltaEnd = deltaIsInsert ? deltaStart : delta.end; // Collapse insert range. + if ($pointsInOrder(point, deltaStart, moveIfEqual)) { + return { + row: point.row, + column: point.column + }; + } + if ($pointsInOrder(deltaEnd, point, !moveIfEqual)) { + return { + row: point.row + deltaRowShift, + column: point.column + (point.row == deltaEnd.row ? deltaColShift : 0) + }; + } + return { + row: deltaStart.row, + column: deltaStart.column + }; + } + this.setPosition = function (row, column, noClip) { + var pos; + if (noClip) { + pos = { + row: row, + column: column + }; + } + else { + pos = this.$clipPositionToDocument(row, column); + } + if (this.row == pos.row && this.column == pos.column) + return; + var old = { + row: this.row, + column: this.column + }; + this.row = pos.row; + this.column = pos.column; + this._signal("change", { + old: old, + value: pos + }); + }; + this.detach = function () { + this.document.off("change", this.$onChange); + }; + this.attach = function (doc) { + this.document = doc || this.document; + this.document.on("change", this.$onChange); + }; + this.$clipPositionToDocument = function (row, column) { + var pos = {}; + if (row >= this.document.getLength()) { + pos.row = Math.max(0, this.document.getLength() - 1); + pos.column = this.document.getLine(pos.row).length; + } + else if (row < 0) { + pos.row = 0; + pos.column = 0; + } + else { + pos.row = row; + pos.column = Math.min(this.document.getLine(pos.row).length, Math.max(0, column)); + } + if (column < 0) + pos.column = 0; + return pos; + }; +}).call(Anchor.prototype); + +}); + +ace.define("ace/document",[], function(require, exports, module){"use strict"; +var oop = require("./lib/oop"); +var applyDelta = require("./apply_delta").applyDelta; +var EventEmitter = require("./lib/event_emitter").EventEmitter; +var Range = require("./range").Range; +var Anchor = require("./anchor").Anchor; +var Document = function (textOrLines) { + this.$lines = [""]; + if (textOrLines.length === 0) { + this.$lines = [""]; + } + else if (Array.isArray(textOrLines)) { + this.insertMergedLines({ row: 0, column: 0 }, textOrLines); + } + else { + this.insert({ row: 0, column: 0 }, textOrLines); + } +}; +(function () { + oop.implement(this, EventEmitter); + this.setValue = function (text) { + var len = this.getLength() - 1; + this.remove(new Range(0, 0, len, this.getLine(len).length)); + this.insert({ row: 0, column: 0 }, text || ""); + }; + this.getValue = function () { + return this.getAllLines().join(this.getNewLineCharacter()); + }; + this.createAnchor = function (row, column) { + return new Anchor(this, row, column); + }; + if ("aaa".split(/a/).length === 0) { + this.$split = function (text) { + return text.replace(/\r\n|\r/g, "\n").split("\n"); + }; + } + else { + this.$split = function (text) { + return text.split(/\r\n|\r|\n/); + }; + } + this.$detectNewLine = function (text) { + var match = text.match(/^.*?(\r\n|\r|\n)/m); + this.$autoNewLine = match ? match[1] : "\n"; + this._signal("changeNewLineMode"); + }; + this.getNewLineCharacter = function () { + switch (this.$newLineMode) { + case "windows": + return "\r\n"; + case "unix": + return "\n"; + default: + return this.$autoNewLine || "\n"; + } + }; + this.$autoNewLine = ""; + this.$newLineMode = "auto"; + this.setNewLineMode = function (newLineMode) { + if (this.$newLineMode === newLineMode) + return; + this.$newLineMode = newLineMode; + this._signal("changeNewLineMode"); + }; + this.getNewLineMode = function () { + return this.$newLineMode; + }; + this.isNewLine = function (text) { + return (text == "\r\n" || text == "\r" || text == "\n"); + }; + this.getLine = function (row) { + return this.$lines[row] || ""; + }; + this.getLines = function (firstRow, lastRow) { + return this.$lines.slice(firstRow, lastRow + 1); + }; + this.getAllLines = function () { + return this.getLines(0, this.getLength()); + }; + this.getLength = function () { + return this.$lines.length; + }; + this.getTextRange = function (range) { + return this.getLinesForRange(range).join(this.getNewLineCharacter()); + }; + this.getLinesForRange = function (range) { + var lines; + if (range.start.row === range.end.row) { + lines = [this.getLine(range.start.row).substring(range.start.column, range.end.column)]; + } + else { + lines = this.getLines(range.start.row, range.end.row); + lines[0] = (lines[0] || "").substring(range.start.column); + var l = lines.length - 1; + if (range.end.row - range.start.row == l) + lines[l] = lines[l].substring(0, range.end.column); + } + return lines; + }; + this.insertLines = function (row, lines) { + console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."); + return this.insertFullLines(row, lines); + }; + this.removeLines = function (firstRow, lastRow) { + console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."); + return this.removeFullLines(firstRow, lastRow); + }; + this.insertNewLine = function (position) { + console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."); + return this.insertMergedLines(position, ["", ""]); + }; + this.insert = function (position, text) { + if (this.getLength() <= 1) + this.$detectNewLine(text); + return this.insertMergedLines(position, this.$split(text)); + }; + this.insertInLine = function (position, text) { + var start = this.clippedPos(position.row, position.column); + var end = this.pos(position.row, position.column + text.length); + this.applyDelta({ + start: start, + end: end, + action: "insert", + lines: [text] + }, true); + return this.clonePos(end); + }; + this.clippedPos = function (row, column) { + var length = this.getLength(); + if (row === undefined) { + row = length; + } + else if (row < 0) { + row = 0; + } + else if (row >= length) { + row = length - 1; + column = undefined; + } + var line = this.getLine(row); + if (column == undefined) + column = line.length; + column = Math.min(Math.max(column, 0), line.length); + return { row: row, column: column }; + }; + this.clonePos = function (pos) { + return { row: pos.row, column: pos.column }; + }; + this.pos = function (row, column) { + return { row: row, column: column }; + }; + this.$clipPosition = function (position) { + var length = this.getLength(); + if (position.row >= length) { + position.row = Math.max(0, length - 1); + position.column = this.getLine(length - 1).length; + } + else { + position.row = Math.max(0, position.row); + position.column = Math.min(Math.max(position.column, 0), this.getLine(position.row).length); + } + return position; + }; + this.insertFullLines = function (row, lines) { + row = Math.min(Math.max(row, 0), this.getLength()); + var column = 0; + if (row < this.getLength()) { + lines = lines.concat([""]); + column = 0; + } + else { + lines = [""].concat(lines); + row--; + column = this.$lines[row].length; + } + this.insertMergedLines({ row: row, column: column }, lines); + }; + this.insertMergedLines = function (position, lines) { + var start = this.clippedPos(position.row, position.column); + var end = { + row: start.row + lines.length - 1, + column: (lines.length == 1 ? start.column : 0) + lines[lines.length - 1].length + }; + this.applyDelta({ + start: start, + end: end, + action: "insert", + lines: lines + }); + return this.clonePos(end); + }; + this.remove = function (range) { + var start = this.clippedPos(range.start.row, range.start.column); + var end = this.clippedPos(range.end.row, range.end.column); + this.applyDelta({ + start: start, + end: end, + action: "remove", + lines: this.getLinesForRange({ start: start, end: end }) + }); + return this.clonePos(start); + }; + this.removeInLine = function (row, startColumn, endColumn) { + var start = this.clippedPos(row, startColumn); + var end = this.clippedPos(row, endColumn); + this.applyDelta({ + start: start, + end: end, + action: "remove", + lines: this.getLinesForRange({ start: start, end: end }) + }, true); + return this.clonePos(start); + }; + this.removeFullLines = function (firstRow, lastRow) { + firstRow = Math.min(Math.max(0, firstRow), this.getLength() - 1); + lastRow = Math.min(Math.max(0, lastRow), this.getLength() - 1); + var deleteFirstNewLine = lastRow == this.getLength() - 1 && firstRow > 0; + var deleteLastNewLine = lastRow < this.getLength() - 1; + var startRow = (deleteFirstNewLine ? firstRow - 1 : firstRow); + var startCol = (deleteFirstNewLine ? this.getLine(startRow).length : 0); + var endRow = (deleteLastNewLine ? lastRow + 1 : lastRow); + var endCol = (deleteLastNewLine ? 0 : this.getLine(endRow).length); + var range = new Range(startRow, startCol, endRow, endCol); + var deletedLines = this.$lines.slice(firstRow, lastRow + 1); + this.applyDelta({ + start: range.start, + end: range.end, + action: "remove", + lines: this.getLinesForRange(range) + }); + return deletedLines; + }; + this.removeNewLine = function (row) { + if (row < this.getLength() - 1 && row >= 0) { + this.applyDelta({ + start: this.pos(row, this.getLine(row).length), + end: this.pos(row + 1, 0), + action: "remove", + lines: ["", ""] + }); + } + }; + this.replace = function (range, text) { + if (!(range instanceof Range)) + range = Range.fromPoints(range.start, range.end); + if (text.length === 0 && range.isEmpty()) + return range.start; + if (text == this.getTextRange(range)) + return range.end; + this.remove(range); + var end; + if (text) { + end = this.insert(range.start, text); + } + else { + end = range.start; + } + return end; + }; + this.applyDeltas = function (deltas) { + for (var i = 0; i < deltas.length; i++) { + this.applyDelta(deltas[i]); + } + }; + this.revertDeltas = function (deltas) { + for (var i = deltas.length - 1; i >= 0; i--) { + this.revertDelta(deltas[i]); + } + }; + this.applyDelta = function (delta, doNotValidate) { + var isInsert = delta.action == "insert"; + if (isInsert ? delta.lines.length <= 1 && !delta.lines[0] + : !Range.comparePoints(delta.start, delta.end)) { + return; + } + if (isInsert && delta.lines.length > 20000) { + this.$splitAndapplyLargeDelta(delta, 20000); + } + else { + applyDelta(this.$lines, delta, doNotValidate); + this._signal("change", delta); + } + }; + this.$safeApplyDelta = function (delta) { + var docLength = this.$lines.length; + if (delta.action == "remove" && delta.start.row < docLength && delta.end.row < docLength + || delta.action == "insert" && delta.start.row <= docLength) { + this.applyDelta(delta); + } + }; + this.$splitAndapplyLargeDelta = function (delta, MAX) { + var lines = delta.lines; + var l = lines.length - MAX + 1; + var row = delta.start.row; + var column = delta.start.column; + for (var from = 0, to = 0; from < l; from = to) { + to += MAX - 1; + var chunk = lines.slice(from, to); + chunk.push(""); + this.applyDelta({ + start: this.pos(row + from, column), + end: this.pos(row + to, column = 0), + action: delta.action, + lines: chunk + }, true); + } + delta.lines = lines.slice(from); + delta.start.row = row + from; + delta.start.column = column; + this.applyDelta(delta, true); + }; + this.revertDelta = function (delta) { + this.$safeApplyDelta({ + start: this.clonePos(delta.start), + end: this.clonePos(delta.end), + action: (delta.action == "insert" ? "remove" : "insert"), + lines: delta.lines.slice() + }); + }; + this.indexToPosition = function (index, startRow) { + var lines = this.$lines || this.getAllLines(); + var newlineLength = this.getNewLineCharacter().length; + for (var i = startRow || 0, l = lines.length; i < l; i++) { + index -= lines[i].length + newlineLength; + if (index < 0) + return { row: i, column: index + lines[i].length + newlineLength }; + } + return { row: l - 1, column: index + lines[l - 1].length + newlineLength }; + }; + this.positionToIndex = function (pos, startRow) { + var lines = this.$lines || this.getAllLines(); + var newlineLength = this.getNewLineCharacter().length; + var index = 0; + var row = Math.min(pos.row, lines.length); + for (var i = startRow || 0; i < row; ++i) + index += lines[i].length + newlineLength; + return index + pos.column; + }; +}).call(Document.prototype); +exports.Document = Document; + +}); + +ace.define("ace/lib/lang",[], function(require, exports, module){"use strict"; +exports.last = function (a) { + return a[a.length - 1]; +}; +exports.stringReverse = function (string) { + return string.split("").reverse().join(""); +}; +exports.stringRepeat = function (string, count) { + var result = ''; + while (count > 0) { + if (count & 1) + result += string; + if (count >>= 1) + string += string; + } + return result; +}; +var trimBeginRegexp = /^\s\s*/; +var trimEndRegexp = /\s\s*$/; +exports.stringTrimLeft = function (string) { + return string.replace(trimBeginRegexp, ''); +}; +exports.stringTrimRight = function (string) { + return string.replace(trimEndRegexp, ''); +}; +exports.copyObject = function (obj) { + var copy = {}; + for (var key in obj) { + copy[key] = obj[key]; + } + return copy; +}; +exports.copyArray = function (array) { + var copy = []; + for (var i = 0, l = array.length; i < l; i++) { + if (array[i] && typeof array[i] == "object") + copy[i] = this.copyObject(array[i]); + else + copy[i] = array[i]; + } + return copy; +}; +exports.deepCopy = function deepCopy(obj) { + if (typeof obj !== "object" || !obj) + return obj; + var copy; + if (Array.isArray(obj)) { + copy = []; + for (var key = 0; key < obj.length; key++) { + copy[key] = deepCopy(obj[key]); + } + return copy; + } + if (Object.prototype.toString.call(obj) !== "[object Object]") + return obj; + copy = {}; + for (var key in obj) + copy[key] = deepCopy(obj[key]); + return copy; +}; +exports.arrayToMap = function (arr) { + var map = {}; + for (var i = 0; i < arr.length; i++) { + map[arr[i]] = 1; + } + return map; +}; +exports.createMap = function (props) { + var map = Object.create(null); + for (var i in props) { + map[i] = props[i]; + } + return map; +}; +exports.arrayRemove = function (array, value) { + for (var i = 0; i <= array.length; i++) { + if (value === array[i]) { + array.splice(i, 1); + } + } +}; +exports.escapeRegExp = function (str) { + return str.replace(/([.*+?^${}()|[\]\/\\])/g, '\\$1'); +}; +exports.escapeHTML = function (str) { + return ("" + str).replace(/&/g, "&").replace(/"/g, """).replace(/'/g, "'").replace(/= doc.$lines.length) { + err = new Error("Invalid delta"); + err.data = { + path: _self.$path, + linesLength: doc.$lines.length, + start: d.start, + end: d.end + }; + throw err; + } + + doc.applyDelta(d, true); + } + } + if (_self.$timeout) + return deferredUpdate.schedule(_self.$timeout); + _self.onUpdate(); + }); +}; + +(function() { + + this.$timeout = 500; + + this.setTimeout = function(timeout) { + this.$timeout = timeout; + }; + + this.setValue = function(value) { + this.doc.setValue(value); + this.deferredUpdate.schedule(this.$timeout); + }; + + this.getValue = function(callbackId) { + this.sender.callback(this.doc.getValue(), callbackId); + }; + + this.onUpdate = function() { + }; + + this.isPending = function() { + return this.deferredUpdate.isPending(); + }; + +}).call(Mirror.prototype); + +}); + +ace.define("ace/mode/php/php",[], function (require, exports, module) { + + var PHP = {Constants: {}}; + + PHP.Constants.T_THROW = 317 + PHP.Constants.T_INCLUDE = 272 + PHP.Constants.T_INCLUDE_ONCE = 273 + PHP.Constants.T_EVAL = 274 + PHP.Constants.T_REQUIRE = 275 + PHP.Constants.T_REQUIRE_ONCE = 276 + PHP.Constants.T_LOGICAL_OR = 277 + PHP.Constants.T_LOGICAL_XOR = 278 + PHP.Constants.T_LOGICAL_AND = 279 + PHP.Constants.T_PRINT = 280 + PHP.Constants.T_YIELD = 281 + PHP.Constants.T_DOUBLE_ARROW = 386 + PHP.Constants.T_YIELD_FROM = 282 + PHP.Constants.T_PLUS_EQUAL = 352 + PHP.Constants.T_MINUS_EQUAL = 353 + PHP.Constants.T_MUL_EQUAL = 354 + PHP.Constants.T_DIV_EQUAL = 355 + PHP.Constants.T_CONCAT_EQUAL = 356 + PHP.Constants.T_MOD_EQUAL = 357 + PHP.Constants.T_AND_EQUAL = 358 + PHP.Constants.T_OR_EQUAL = 359 + PHP.Constants.T_XOR_EQUAL = 360 + PHP.Constants.T_SL_EQUAL = 361 + PHP.Constants.T_SR_EQUAL = 362 + PHP.Constants.T_POW_EQUAL = 402 + PHP.Constants.T_COALESCE_EQUAL = 363 + PHP.Constants.T_COALESCE = 400 + PHP.Constants.T_BOOLEAN_OR = 364 + PHP.Constants.T_BOOLEAN_AND = 365 + PHP.Constants.T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG = 404 + PHP.Constants.T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG = 403 + PHP.Constants.T_IS_EQUAL = 366 + PHP.Constants.T_IS_NOT_EQUAL = 367 + PHP.Constants.T_IS_IDENTICAL = 368 + PHP.Constants.T_IS_NOT_IDENTICAL = 369 + PHP.Constants.T_SPACESHIP = 372 + PHP.Constants.T_IS_SMALLER_OR_EQUAL = 370 + PHP.Constants.T_IS_GREATER_OR_EQUAL = 371 + PHP.Constants.T_SL = 373 + PHP.Constants.T_SR = 374 + PHP.Constants.T_INSTANCEOF = 283 + PHP.Constants.T_INC = 375 + PHP.Constants.T_DEC = 376 + PHP.Constants.T_INT_CAST = 377 + PHP.Constants.T_DOUBLE_CAST = 378 + PHP.Constants.T_STRING_CAST = 379 + PHP.Constants.T_ARRAY_CAST = 380 + PHP.Constants.T_OBJECT_CAST = 381 + PHP.Constants.T_BOOL_CAST = 382 + PHP.Constants.T_UNSET_CAST = 383 + PHP.Constants.T_POW = 401 + PHP.Constants.T_NEW = 284 + PHP.Constants.T_CLONE = 285 + PHP.Constants.T_EXIT = 286 + PHP.Constants.T_IF = 287 + PHP.Constants.T_ELSEIF = 288 + PHP.Constants.T_ELSE = 289 + PHP.Constants.T_ENDIF = 290 + PHP.Constants.T_LNUMBER = 260 + PHP.Constants.T_DNUMBER = 261 + PHP.Constants.T_STRING = 262 + PHP.Constants.T_STRING_VARNAME = 270 + PHP.Constants.T_VARIABLE = 266 + PHP.Constants.T_NUM_STRING = 271 + PHP.Constants.T_INLINE_HTML = 267 + PHP.Constants.T_ENCAPSED_AND_WHITESPACE = 268 + PHP.Constants.T_CONSTANT_ENCAPSED_STRING = 269 + PHP.Constants.T_ECHO = 291 + PHP.Constants.T_DO = 292 + PHP.Constants.T_WHILE = 293 + PHP.Constants.T_ENDWHILE = 294 + PHP.Constants.T_FOR = 295 + PHP.Constants.T_ENDFOR = 296 + PHP.Constants.T_FOREACH = 297 + PHP.Constants.T_ENDFOREACH = 298 + PHP.Constants.T_DECLARE = 299 + PHP.Constants.T_ENDDECLARE = 300 + PHP.Constants.T_AS = 301 + PHP.Constants.T_SWITCH = 302 + PHP.Constants.T_MATCH = 306 + PHP.Constants.T_ENDSWITCH = 303 + PHP.Constants.T_CASE = 304 + PHP.Constants.T_DEFAULT = 305 + PHP.Constants.T_BREAK = 307 + PHP.Constants.T_CONTINUE = 308 + PHP.Constants.T_GOTO = 309 + PHP.Constants.T_FUNCTION = 310 + PHP.Constants.T_FN = 311 + PHP.Constants.T_CONST = 312 + PHP.Constants.T_RETURN = 313 + PHP.Constants.T_TRY = 314 + PHP.Constants.T_CATCH = 315 + PHP.Constants.T_FINALLY = 316 + PHP.Constants.T_THROW = 317 + PHP.Constants.T_USE = 318 + PHP.Constants.T_INSTEADOF = 319 + PHP.Constants.T_GLOBAL = 320 + PHP.Constants.T_STATIC = 321 + PHP.Constants.T_ABSTRACT = 322 + PHP.Constants.T_FINAL = 323 + PHP.Constants.T_PRIVATE = 324 + PHP.Constants.T_PROTECTED = 325 + PHP.Constants.T_PUBLIC = 326 + PHP.Constants.T_READONLY = 327 + PHP.Constants.T_VAR = 328 + PHP.Constants.T_UNSET = 329 + PHP.Constants.T_ISSET = 330 + PHP.Constants.T_EMPTY = 331 + PHP.Constants.T_HALT_COMPILER = 332 + PHP.Constants.T_CLASS = 333 + PHP.Constants.T_TRAIT = 334 + PHP.Constants.T_INTERFACE = 335 + PHP.Constants.T_ENUM = 336 + PHP.Constants.T_EXTENDS = 337 + PHP.Constants.T_IMPLEMENTS = 338 + PHP.Constants.T_OBJECT_OPERATOR = 384 + PHP.Constants.T_NULLSAFE_OBJECT_OPERATOR = 385 + PHP.Constants.T_DOUBLE_ARROW = 386 + PHP.Constants.T_LIST = 340 + PHP.Constants.T_ARRAY = 341 + PHP.Constants.T_CALLABLE = 342 + PHP.Constants.T_CLASS_C = 346 + PHP.Constants.T_TRAIT_C = 347 + PHP.Constants.T_METHOD_C = 348 + PHP.Constants.T_FUNC_C = 349 + PHP.Constants.T_LINE = 343 + PHP.Constants.T_FILE = 344 + PHP.Constants.T_START_HEREDOC = 393 + PHP.Constants.T_END_HEREDOC = 394 + PHP.Constants.T_DOLLAR_OPEN_CURLY_BRACES = 395 + PHP.Constants.T_CURLY_OPEN = 396 + PHP.Constants.T_PAAMAYIM_NEKUDOTAYIM = 397 + PHP.Constants.T_NAMESPACE = 339 + PHP.Constants.T_NS_C = 350 + PHP.Constants.T_DIR = 345 + PHP.Constants.T_NS_SEPARATOR = 398 + PHP.Constants.T_ELLIPSIS = 399 + PHP.Constants.T_NAME_FULLY_QUALIFIED = 263 + PHP.Constants.T_NAME_QUALIFIED = 265 + PHP.Constants.T_NAME_RELATIVE = 264 + PHP.Constants.T_ATTRIBUTE = 351 + PHP.Constants.T_ENUM = 336 + PHP.Constants.T_BAD_CHARACTER = 405 + PHP.Constants.T_COMMENT = 387 + PHP.Constants.T_DOC_COMMENT = 388 + PHP.Constants.T_OPEN_TAG = 389 + PHP.Constants.T_OPEN_TAG_WITH_ECHO = 390 + PHP.Constants.T_CLOSE_TAG = 391 + PHP.Constants.T_WHITESPACE = 392 + + PHP.Lexer = function (src, ini) { + var heredoc, heredocEndAllowed, + + stateStack = ['INITIAL'], stackPos = 0, + swapState = function (state) { + stateStack[stackPos] = state; + }, + pushState = function (state) { + stateStack[++stackPos] = state; + }, + popState = function () { + --stackPos; + }, + + shortOpenTag = ini === undefined || /^(on|true|1)$/i.test(ini.short_open_tag), + openTag = shortOpenTag + ? /^(\<\?php(?:\r\n|[ \t\r\n])|<\?|\\nsnippet scriptsrc\n\t\nsnippet newscript\n\t\nsnippet newscriptsrc\n\t\nsnippet section\n\t

    \n\t\t${1}\n\t
    \nsnippet section.\n\t
    \n\t\t${2}\n\t
    \nsnippet section#\n\t
    \n\t\t${2}\n\t
    \nsnippet select\n\t\nsnippet select.\n\t\nsnippet select+\n\t\nsnippet small\n\t${1}\nsnippet source\n\t\nsnippet span\n\t${1}\nsnippet strong\n\t${1}\nsnippet style\n\t\nsnippet sub\n\t${1}\nsnippet summary\n\t\n\t\t${1}\n\t\nsnippet sup\n\t${1}\nsnippet table\n\t\n\t\t${2}\n\t
    \nsnippet table.\n\t\n\t\t${3}\n\t
    \nsnippet table#\n\t\n\t\t${3}\n\t
    \nsnippet tbody\n\t\n\t\t${1}\n\t\nsnippet td\n\t${1}\nsnippet td.\n\t${2}\nsnippet td#\n\t${2}\nsnippet td+\n\t${1}\n\ttd+${2}\nsnippet textarea\n\t${6}\nsnippet tfoot\n\t\n\t\t${1}\n\t\nsnippet th\n\t${1}\nsnippet th.\n\t${2}\nsnippet th#\n\t${2}\nsnippet th+\n\t${1}\n\tth+${2}\nsnippet thead\n\t\n\t\t${1}\n\t\nsnippet time\n\t\nsnippet title\n\t${1:`substitute(Filename('', 'Page Title'), '^.', '\\u&', '')`}\nsnippet tr\n\t\n\t\t${1}\n\t\nsnippet tr+\n\t\n\t\t${1}\n\t\ttd+${2}\n\t\nsnippet track\n\t${5}${6}\nsnippet ul\n\t
      \n\t\t${1}\n\t
    \nsnippet ul.\n\t
      \n\t\t${2}\n\t
    \nsnippet ul#\n\t
      \n\t\t${2}\n\t
    \nsnippet ul+\n\t
      \n\t\t
    • ${1}
    • \n\t\tli+${2}\n\t
    \nsnippet var\n\t${1}\nsnippet video\n\t${8}\nsnippet wbr\n\t${1}\n"; + +}); + +ace.define("ace/snippets/html",["require","exports","module","ace/snippets/html.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./html.snippets"); +exports.scope = "html"; + +}); (function() { + ace.require(["ace/snippets/html"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/9aafe4a55ece5a23a8c7658cc25325fc.js.gz b/web/dist/9aafe4a55ece5a23a8c7658cc25325fc.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..e4026b31eca344821cf28f0630a3564cb0852731 GIT binary patch literal 4503 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 literal 0 HcmV?d00001 diff --git a/web/dist/9ad12abef8b90e7454d08765187eeb90.js b/web/dist/9ad12abef8b90e7454d08765187eeb90.js new file mode 100644 index 00000000..2a537f6c --- /dev/null +++ b/web/dist/9ad12abef8b90e7454d08765187eeb90.js @@ -0,0 +1,185 @@ +ace.define("ace/split",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter","ace/editor","ace/virtual_renderer","ace/edit_session"], function(require, exports, module){"use strict"; +var oop = require("./lib/oop"); +var lang = require("./lib/lang"); +var EventEmitter = require("./lib/event_emitter").EventEmitter; +var Editor = require("./editor").Editor; +var Renderer = require("./virtual_renderer").VirtualRenderer; +var EditSession = require("./edit_session").EditSession; +var Split = function (container, theme, splits) { + this.BELOW = 1; + this.BESIDE = 0; + this.$container = container; + this.$theme = theme; + this.$splits = 0; + this.$editorCSS = ""; + this.$editors = []; + this.$orientation = this.BESIDE; + this.setSplits(splits || 1); + this.$cEditor = this.$editors[0]; + this.on("focus", function (editor) { + this.$cEditor = editor; + }.bind(this)); +}; +(function () { + oop.implement(this, EventEmitter); + this.$createEditor = function () { + var el = document.createElement("div"); + el.className = this.$editorCSS; + el.style.cssText = "position: absolute; top:0px; bottom:0px"; + this.$container.appendChild(el); + var editor = new Editor(new Renderer(el, this.$theme)); + editor.on("focus", function () { + this._emit("focus", editor); + }.bind(this)); + this.$editors.push(editor); + editor.setFontSize(this.$fontSize); + return editor; + }; + this.setSplits = function (splits) { + var editor; + if (splits < 1) { + throw "The number of splits have to be > 0!"; + } + if (splits == this.$splits) { + return; + } + else if (splits > this.$splits) { + while (this.$splits < this.$editors.length && this.$splits < splits) { + editor = this.$editors[this.$splits]; + this.$container.appendChild(editor.container); + editor.setFontSize(this.$fontSize); + this.$splits++; + } + while (this.$splits < splits) { + this.$createEditor(); + this.$splits++; + } + } + else { + while (this.$splits > splits) { + editor = this.$editors[this.$splits - 1]; + this.$container.removeChild(editor.container); + this.$splits--; + } + } + this.resize(); + }; + this.getSplits = function () { + return this.$splits; + }; + this.getEditor = function (idx) { + return this.$editors[idx]; + }; + this.getCurrentEditor = function () { + return this.$cEditor; + }; + this.focus = function () { + this.$cEditor.focus(); + }; + this.blur = function () { + this.$cEditor.blur(); + }; + this.setTheme = function (theme) { + this.$editors.forEach(function (editor) { + editor.setTheme(theme); + }); + }; + this.setKeyboardHandler = function (keybinding) { + this.$editors.forEach(function (editor) { + editor.setKeyboardHandler(keybinding); + }); + }; + this.forEach = function (callback, scope) { + this.$editors.forEach(callback, scope); + }; + this.$fontSize = ""; + this.setFontSize = function (size) { + this.$fontSize = size; + this.forEach(function (editor) { + editor.setFontSize(size); + }); + }; + this.$cloneSession = function (session) { + var s = new EditSession(session.getDocument(), session.getMode()); + var undoManager = session.getUndoManager(); + s.setUndoManager(undoManager); + s.setTabSize(session.getTabSize()); + s.setUseSoftTabs(session.getUseSoftTabs()); + s.setOverwrite(session.getOverwrite()); + s.setBreakpoints(session.getBreakpoints()); + s.setUseWrapMode(session.getUseWrapMode()); + s.setUseWorker(session.getUseWorker()); + s.setWrapLimitRange(session.$wrapLimitRange.min, session.$wrapLimitRange.max); + s.$foldData = session.$cloneFoldData(); + return s; + }; + this.setSession = function (session, idx) { + var editor; + if (idx == null) { + editor = this.$cEditor; + } + else { + editor = this.$editors[idx]; + } + var isUsed = this.$editors.some(function (editor) { + return editor.session === session; + }); + if (isUsed) { + session = this.$cloneSession(session); + } + editor.setSession(session); + return session; + }; + this.getOrientation = function () { + return this.$orientation; + }; + this.setOrientation = function (orientation) { + if (this.$orientation == orientation) { + return; + } + this.$orientation = orientation; + this.resize(); + }; + this.resize = function () { + var width = this.$container.clientWidth; + var height = this.$container.clientHeight; + var editor; + if (this.$orientation == this.BESIDE) { + var editorWidth = width / this.$splits; + for (var i = 0; i < this.$splits; i++) { + editor = this.$editors[i]; + editor.container.style.width = editorWidth + "px"; + editor.container.style.top = "0px"; + editor.container.style.left = i * editorWidth + "px"; + editor.container.style.height = height + "px"; + editor.resize(); + } + } + else { + var editorHeight = height / this.$splits; + for (var i = 0; i < this.$splits; i++) { + editor = this.$editors[i]; + editor.container.style.width = width + "px"; + editor.container.style.top = i * editorHeight + "px"; + editor.container.style.left = "0px"; + editor.container.style.height = editorHeight + "px"; + editor.resize(); + } + } + }; +}).call(Split.prototype); +exports.Split = Split; + +}); + +ace.define("ace/ext/split",["require","exports","module","ace/split"], function(require, exports, module){"use strict"; +module.exports = require("../split"); + +}); (function() { + ace.require(["ace/ext/split"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/9b24c141c4ab1fb899b2b0f1b8ee33ac.js b/web/dist/9b24c141c4ab1fb899b2b0f1b8ee33ac.js new file mode 100644 index 00000000..30e57fd6 --- /dev/null +++ b/web/dist/9b24c141c4ab1fb899b2b0f1b8ee33ac.js @@ -0,0 +1,16 @@ +ace.define("ace/snippets/lua.snippets",["require","exports","module"], function(require, exports, module){module.exports = "snippet #!\n\t#!/usr/bin/env lua\n\t$1\nsnippet local\n\tlocal ${1:x} = ${2:1}\nsnippet fun\n\tfunction ${1:fname}(${2:...})\n\t\t${3:-- body}\n\tend\nsnippet for\n\tfor ${1:i}=${2:1},${3:10} do\n\t\t${4:print(i)}\n\tend\nsnippet forp\n\tfor ${1:i},${2:v} in pairs(${3:table_name}) do\n\t ${4:-- body}\n\tend\nsnippet fori\n\tfor ${1:i},${2:v} in ipairs(${3:table_name}) do\n\t ${4:-- body}\n\tend\n"; + +}); + +ace.define("ace/snippets/lua",["require","exports","module","ace/snippets/lua.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./lua.snippets"); +exports.scope = "lua"; + +}); (function() { + ace.require(["ace/snippets/lua"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/9b847edd56886a180bb29d04b8bece7e.js b/web/dist/9b847edd56886a180bb29d04b8bece7e.js new file mode 100644 index 00000000..186a24e3 --- /dev/null +++ b/web/dist/9b847edd56886a180bb29d04b8bece7e.js @@ -0,0 +1,18 @@ +ace.define("ace/theme/one_dark.css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-one-dark .ace_gutter {\n background: #282c34;\n color: #6a6f7a\n}\n\n.ace-one-dark .ace_print-margin {\n width: 1px;\n background: #e8e8e8\n}\n\n.ace-one-dark {\n background-color: #282c34;\n color: #abb2bf\n}\n\n.ace-one-dark .ace_cursor {\n color: #528bff\n}\n\n.ace-one-dark .ace_marker-layer .ace_selection {\n background: #3d4350\n}\n\n.ace-one-dark.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0 #282c34;\n border-radius: 2px\n}\n\n.ace-one-dark .ace_marker-layer .ace_step {\n background: #c6dbae\n}\n\n.ace-one-dark .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid #747369\n}\n\n.ace-one-dark .ace_marker-layer .ace_active-line {\n background: rgba(76, 87, 103, .19)\n}\n\n.ace-one-dark .ace_gutter-active-line {\n background-color: rgba(76, 87, 103, .19)\n}\n\n.ace-one-dark .ace_marker-layer .ace_selected-word {\n border: 1px solid #3d4350\n}\n\n.ace-one-dark .ace_fold {\n background-color: #61afef;\n border-color: #abb2bf\n}\n\n.ace-one-dark .ace_keyword {\n color: #c678dd\n}\n\n.ace-one-dark .ace_keyword.ace_operator {\n color: #c678dd\n}\n\n.ace-one-dark .ace_keyword.ace_other.ace_unit {\n color: #d19a66\n}\n\n.ace-one-dark .ace_constant.ace_language {\n color: #d19a66\n}\n\n.ace-one-dark .ace_constant.ace_numeric {\n color: #d19a66\n}\n\n.ace-one-dark .ace_constant.ace_character {\n color: #56b6c2\n}\n\n.ace-one-dark .ace_constant.ace_other {\n color: #56b6c2\n}\n\n.ace-one-dark .ace_support.ace_function {\n color: #61afef\n}\n\n.ace-one-dark .ace_support.ace_constant {\n color: #d19a66\n}\n\n.ace-one-dark .ace_support.ace_class {\n color: #e5c07b\n}\n\n.ace-one-dark .ace_support.ace_type {\n color: #e5c07b\n}\n\n.ace-one-dark .ace_storage {\n color: #c678dd\n}\n\n.ace-one-dark .ace_storage.ace_type {\n color: #c678dd\n}\n\n.ace-one-dark .ace_invalid {\n color: #fff;\n background-color: #f2777a\n}\n\n.ace-one-dark .ace_invalid.ace_deprecated {\n color: #272b33;\n background-color: #d27b53\n}\n\n.ace-one-dark .ace_string {\n color: #98c379\n}\n\n.ace-one-dark .ace_string.ace_regexp {\n color: #e06c75\n}\n\n.ace-one-dark .ace_comment {\n font-style: italic;\n color: #5c6370\n}\n\n.ace-one-dark .ace_variable {\n color: #e06c75\n}\n\n.ace-one-dark .ace_variable.ace_parameter {\n color: #d19a66\n}\n\n.ace-one-dark .ace_meta.ace_tag {\n color: #e06c75\n}\n\n.ace-one-dark .ace_entity.ace_other.ace_attribute-name {\n color: #e06c75\n}\n\n.ace-one-dark .ace_entity.ace_name.ace_function {\n color: #61afef\n}\n\n.ace-one-dark .ace_entity.ace_name.ace_tag {\n color: #e06c75\n}\n\n.ace-one-dark .ace_markup.ace_heading {\n color: #98c379\n}\n\n.ace-one-dark .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWPQ09NrYAgMjP4PAAtGAwchHMyAAAAAAElFTkSuQmCC) right repeat-y\n}\n\n.ace-one-dark .ace_indent-guide-active {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y;\n}\n"; + +}); + +ace.define("ace/theme/one_dark",["require","exports","module","ace/theme/one_dark.css","ace/lib/dom"], function(require, exports, module){exports.isDark = true; +exports.cssClass = "ace-one-dark"; +exports.cssText = require("./one_dark.css"); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass, false); + +}); (function() { + ace.require(["ace/theme/one_dark"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/9c202aefac35a5ff49d3d3795e9932bc.js b/web/dist/9c202aefac35a5ff49d3d3795e9932bc.js new file mode 100644 index 00000000..51709c48 --- /dev/null +++ b/web/dist/9c202aefac35a5ff49d3d3795e9932bc.js @@ -0,0 +1,9 @@ + +; (function() { + ace.require(["ace/snippets/html_ruby"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/9d0f4f65be2f50ad54488089f126feda.js b/web/dist/9d0f4f65be2f50ad54488089f126feda.js new file mode 100644 index 00000000..5437de0c --- /dev/null +++ b/web/dist/9d0f4f65be2f50ad54488089f126feda.js @@ -0,0 +1,9 @@ + +; (function() { + ace.require(["ace/snippets/eiffel"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/9e357a97da26127713394684a51946b8.js b/web/dist/9e357a97da26127713394684a51946b8.js new file mode 100644 index 00000000..7a4466bc --- /dev/null +++ b/web/dist/9e357a97da26127713394684a51946b8.js @@ -0,0 +1,9 @@ + +; (function() { + ace.require(["ace/snippets/nunjucks"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/9e4ae76ef90073c3837eb8383972017d.js b/web/dist/9e4ae76ef90073c3837eb8383972017d.js new file mode 100644 index 00000000..54146f74 --- /dev/null +++ b/web/dist/9e4ae76ef90073c3837eb8383972017d.js @@ -0,0 +1,18 @@ +ace.define("ace/theme/dreamweaver.css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-dreamweaver .ace_gutter {\n background: #e8e8e8;\n color: #333;\n}\n\n.ace-dreamweaver .ace_print-margin {\n width: 1px;\n background: #e8e8e8;\n}\n\n.ace-dreamweaver {\n background-color: #FFFFFF;\n color: black;\n}\n\n.ace-dreamweaver .ace_fold {\n background-color: #757AD8;\n}\n\n.ace-dreamweaver .ace_cursor {\n color: black;\n}\n \n.ace-dreamweaver .ace_invisible {\n color: rgb(191, 191, 191);\n}\n\n.ace-dreamweaver .ace_storage,\n.ace-dreamweaver .ace_keyword {\n color: blue;\n}\n\n.ace-dreamweaver .ace_constant.ace_buildin {\n color: rgb(88, 72, 246);\n}\n\n.ace-dreamweaver .ace_constant.ace_language {\n color: rgb(88, 92, 246);\n}\n\n.ace-dreamweaver .ace_constant.ace_library {\n color: rgb(6, 150, 14);\n}\n\n.ace-dreamweaver .ace_invalid {\n background-color: rgb(153, 0, 0);\n color: white;\n}\n\n.ace-dreamweaver .ace_support.ace_function {\n color: rgb(60, 76, 114);\n}\n\n.ace-dreamweaver .ace_support.ace_constant {\n color: rgb(6, 150, 14);\n}\n\n.ace-dreamweaver .ace_support.ace_type,\n.ace-dreamweaver .ace_support.ace_class {\n color: #009;\n}\n\n.ace-dreamweaver .ace_support.ace_php_tag {\n color: #f00;\n}\n\n.ace-dreamweaver .ace_keyword.ace_operator {\n color: rgb(104, 118, 135);\n}\n\n.ace-dreamweaver .ace_string {\n color: #00F;\n}\n\n.ace-dreamweaver .ace_comment {\n color: rgb(76, 136, 107);\n}\n\n.ace-dreamweaver .ace_comment.ace_doc {\n color: rgb(0, 102, 255);\n}\n\n.ace-dreamweaver .ace_comment.ace_doc.ace_tag {\n color: rgb(128, 159, 191);\n}\n\n.ace-dreamweaver .ace_constant.ace_numeric {\n color: rgb(0, 0, 205);\n}\n\n.ace-dreamweaver .ace_variable {\n color: #06F\n}\n\n.ace-dreamweaver .ace_xml-pe {\n color: rgb(104, 104, 91);\n}\n\n.ace-dreamweaver .ace_entity.ace_name.ace_function {\n color: #00F;\n}\n\n\n.ace-dreamweaver .ace_heading {\n color: rgb(12, 7, 255);\n}\n\n.ace-dreamweaver .ace_list {\n color:rgb(185, 6, 144);\n}\n\n.ace-dreamweaver .ace_marker-layer .ace_selection {\n background: rgb(181, 213, 255);\n}\n\n.ace-dreamweaver .ace_marker-layer .ace_step {\n background: rgb(252, 255, 0);\n}\n\n.ace-dreamweaver .ace_marker-layer .ace_stack {\n background: rgb(164, 229, 101);\n}\n\n.ace-dreamweaver .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgb(192, 192, 192);\n}\n\n.ace-dreamweaver .ace_marker-layer .ace_active-line {\n background: rgba(0, 0, 0, 0.07);\n}\n\n.ace-dreamweaver .ace_gutter-active-line {\n background-color : #DCDCDC;\n}\n\n.ace-dreamweaver .ace_marker-layer .ace_selected-word {\n background: rgb(250, 250, 255);\n border: 1px solid rgb(200, 200, 250);\n}\n\n.ace-dreamweaver .ace_meta.ace_tag {\n color:#009;\n}\n\n.ace-dreamweaver .ace_meta.ace_tag.ace_anchor {\n color:#060;\n}\n\n.ace-dreamweaver .ace_meta.ace_tag.ace_form {\n color:#F90;\n}\n\n.ace-dreamweaver .ace_meta.ace_tag.ace_image {\n color:#909;\n}\n\n.ace-dreamweaver .ace_meta.ace_tag.ace_script {\n color:#900;\n}\n\n.ace-dreamweaver .ace_meta.ace_tag.ace_style {\n color:#909;\n}\n\n.ace-dreamweaver .ace_meta.ace_tag.ace_table {\n color:#099;\n}\n\n.ace-dreamweaver .ace_string.ace_regex {\n color: rgb(255, 0, 0)\n}\n\n.ace-dreamweaver .ace_indent-guide {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;\n}\n\n.ace-dreamweaver .ace_indent-guide-active {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC\") right repeat-y;\n} \n"; + +}); + +ace.define("ace/theme/dreamweaver",["require","exports","module","ace/theme/dreamweaver.css","ace/lib/dom"], function(require, exports, module){exports.isDark = false; +exports.cssClass = "ace-dreamweaver"; +exports.cssText = require("./dreamweaver.css"); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass, false); + +}); (function() { + ace.require(["ace/theme/dreamweaver"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/9e69cb39701c3578226b39536edd4dd7.js b/web/dist/9e69cb39701c3578226b39536edd4dd7.js new file mode 100644 index 00000000..89fd77de --- /dev/null +++ b/web/dist/9e69cb39701c3578226b39536edd4dd7.js @@ -0,0 +1,9 @@ + +; (function() { + ace.require(["ace/snippets/twig"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/9e7b410d51fc77840842aea653f8aee1.js b/web/dist/9e7b410d51fc77840842aea653f8aee1.js new file mode 100644 index 00000000..5a391c2e --- /dev/null +++ b/web/dist/9e7b410d51fc77840842aea653f8aee1.js @@ -0,0 +1,312 @@ +ace.define("ace/mode/logtalk_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){/* THIS FILE WAS AUTOGENERATED FROM Logtalk.tmLanguage (UUID: C11FA1F2-6EDB-11D9-8798-000A95DAA580) */ +"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var LogtalkHighlightRules = function () { + this.$rules = { start: [{ token: 'punctuation.definition.comment.logtalk', + regex: '/\\*', + push: [{ token: 'punctuation.definition.comment.logtalk', + regex: '\\*/', + next: 'pop' }, + { defaultToken: 'comment.block.logtalk' }] }, + { todo: 'fix grouping', + token: ['comment.line.percentage.logtalk', + 'punctuation.definition.comment.logtalk'], + regex: '%.*$\\n?' }, + { todo: 'fix grouping', + token: ['storage.type.opening.logtalk', + 'punctuation.definition.storage.type.logtalk'], + regex: ':-\\s(?:object|protocol|category|module)(?=[(])' }, + { todo: 'fix grouping', + token: ['storage.type.closing.logtalk', + 'punctuation.definition.storage.type.logtalk'], + regex: ':-\\send_(?:object|protocol|category)(?=[.])' }, + { caseInsensitive: false, + token: 'storage.type.relations.logtalk', + regex: '\\b(?:complements|extends|i(?:nstantiates|mp(?:orts|lements))|specializes)(?=[(])' }, + { caseInsensitive: false, + todo: 'fix grouping', + token: ['storage.modifier.others.logtalk', + 'punctuation.definition.storage.modifier.logtalk'], + regex: ':-\\s(?:e(?:lse|ndif)|built_in|dynamic|synchronized|threaded)(?=[.])' }, + { caseInsensitive: false, + todo: 'fix grouping', + token: ['storage.modifier.others.logtalk', + 'punctuation.definition.storage.modifier.logtalk'], + regex: ':-\\s(?:c(?:alls|oinductive)|e(?:lif|n(?:coding|sure_loaded)|xport)|i(?:f|n(?:clude|itialization|fo))|reexport|set_(?:logtalk|prolog)_flag|uses)(?=[(])' }, + { caseInsensitive: false, + todo: 'fix grouping', + token: ['storage.modifier.others.logtalk', + 'punctuation.definition.storage.modifier.logtalk'], + regex: ':-\\s(?:alias|info|d(?:ynamic|iscontiguous)|m(?:eta_(?:non_terminal|predicate)|ode|ultifile)|p(?:ublic|r(?:otected|ivate))|op|use(?:s|_module)|synchronized)(?=[(])' }, + { token: 'keyword.operator.message-sending.logtalk', + regex: '(:|::|\\^\\^)' }, + { token: 'keyword.operator.external-call.logtalk', + regex: '([{}])' }, + { token: 'keyword.operator.mode.logtalk', regex: '(\\?|@)' }, + { token: 'keyword.operator.comparison.term.logtalk', + regex: '(@=<|@<|@>|@>=|==|\\\\==)' }, + { token: 'keyword.operator.comparison.arithmetic.logtalk', + regex: '(=<|<|>|>=|=:=|=\\\\=)' }, + { token: 'keyword.operator.bitwise.logtalk', + regex: '(<<|>>|/\\\\|\\\\/|\\\\)' }, + { token: 'keyword.operator.evaluable.logtalk', + regex: '\\b(?:e|pi|div|mod|rem)\\b(?![-!(^~])' }, + { token: 'keyword.operator.evaluable.logtalk', + regex: '(\\*\\*|\\+|-|\\*|/|//)' }, + { token: 'keyword.operator.misc.logtalk', + regex: '(:-|!|\\\\+|,|;|-->|->|=|\\=|\\.|=\\.\\.|\\^|\\bas\\b|\\bis\\b)' }, + { caseInsensitive: false, + token: 'support.function.evaluable.logtalk', + regex: '\\b(a(bs|cos|sin|tan|tan2)|c(eiling|os)|div|exp|flo(at(_(integer|fractional)_part)?|or)|log|m(ax|in|od)|r(em|ound)|s(i(n|gn)|qrt)|t(an|runcate)|xor)(?=[(])' }, + { token: 'support.function.control.logtalk', + regex: '\\b(?:true|fa(?:il|lse)|repeat|(?:instantiation|system)_error)\\b(?![-!(^~])' }, + { token: 'support.function.control.logtalk', + regex: '\\b((?:type|domain|existence|permission|representation|evaluation|resource|syntax)_error)(?=[(])' }, + { token: 'support.function.control.logtalk', + regex: '\\b(?:ca(?:ll|tch)|ignore|throw|once)(?=[(])' }, + { token: 'support.function.chars-and-bytes-io.logtalk', + regex: '\\b(?:(?:get|p(?:eek|ut))_(c(?:har|ode)|byte)|nl)(?=[(])' }, + { token: 'support.function.chars-and-bytes-io.logtalk', + regex: '\\bnl\\b' }, + { token: 'support.function.atom-term-processing.logtalk', + regex: '\\b(?:atom_(?:length|c(?:hars|o(?:ncat|des)))|sub_atom|char_code|number_c(?:har|ode)s)(?=[(])' }, + { caseInsensitive: false, + token: 'support.function.term-testing.logtalk', + regex: '\\b(?:var|atom(ic)?|integer|float|c(?:allable|ompound)|n(?:onvar|umber)|ground|acyclic_term)(?=[(])' }, + { token: 'support.function.term-comparison.logtalk', + regex: '\\b(compare)(?=[(])' }, + { token: 'support.function.term-io.logtalk', + regex: '\\b(?:read(_term)?|write(?:q|_(?:canonical|term))?|(current_)?(?:char_conversion|op))(?=[(])' }, + { caseInsensitive: false, + token: 'support.function.term-creation-and-decomposition.logtalk', + regex: '\\b(arg|copy_term|functor|numbervars|term_variables)(?=[(])' }, + { caseInsensitive: false, + token: 'support.function.term-unification.logtalk', + regex: '\\b(subsumes_term|unify_with_occurs_check)(?=[(])' }, + { caseInsensitive: false, + token: 'support.function.stream-selection-and-control.logtalk', + regex: '\\b(?:(?:se|curren)t_(?:in|out)put|open|close|flush_output|stream_property|at_end_of_stream|set_stream_position)(?=[(])' }, + { token: 'support.function.stream-selection-and-control.logtalk', + regex: '\\b(?:flush_output|at_end_of_stream)\\b' }, + { token: 'support.function.prolog-flags.logtalk', + regex: '\\b((?:se|curren)t_prolog_flag)(?=[(])' }, + { token: 'support.function.compiling-and-loading.logtalk', + regex: '\\b(logtalk_(?:compile|l(?:ibrary_path|oad|oad_context)|make(_target_action)?))(?=[(])' }, + { token: 'support.function.compiling-and-loading.logtalk', + regex: '\\b(logtalk_make)\\b' }, + { caseInsensitive: false, + token: 'support.function.event-handling.logtalk', + regex: '\\b(?:(?:abolish|define)_events|current_event)(?=[(])' }, + { token: 'support.function.implementation-defined-hooks.logtalk', + regex: '\\b(?:(?:create|current|set)_logtalk_flag|halt)(?=[(])' }, + { token: 'support.function.implementation-defined-hooks.logtalk', + regex: '\\b(halt)\\b' }, + { token: 'support.function.sorting.logtalk', + regex: '\\b((key)?(sort))(?=[(])' }, + { caseInsensitive: false, + token: 'support.function.entity-creation-and-abolishing.logtalk', + regex: '\\b((c(?:reate|urrent)|abolish)_(?:object|protocol|category))(?=[(])' }, + { caseInsensitive: false, + token: 'support.function.reflection.logtalk', + regex: '\\b((object|protocol|category)_property|co(mplements_object|nforms_to_protocol)|extends_(object|protocol|category)|imp(orts_category|lements_protocol)|(instantiat|specializ)es_class)(?=[(])' }, + { token: 'support.function.logtalk', + regex: '\\b((?:for|retract)all)(?=[(])' }, + { caseInsensitive: false, + token: 'support.function.execution-context.logtalk', + regex: '\\b(?:context|parameter|se(?:lf|nder)|this)(?=[(])' }, + { token: 'support.function.database.logtalk', + regex: '\\b(?:a(?:bolish|ssert(?:a|z))|clause|retract(all)?)(?=[(])' }, + { token: 'support.function.all-solutions.logtalk', + regex: '\\b((?:bag|set)of|f(?:ind|or)all)(?=[(])' }, + { caseInsensitive: false, + token: 'support.function.multi-threading.logtalk', + regex: '\\b(threaded(_(call|once|ignore|exit|peek|wait|notify))?)(?=[(])' }, + { caseInsensitive: false, + token: 'support.function.engines.logtalk', + regex: '\\b(threaded_engine(_(create|destroy|self|next(?:_reified)?|yield|post|fetch))?)(?=[(])' }, + { caseInsensitive: false, + token: 'support.function.reflection.logtalk', + regex: '\\b(?:current_predicate|predicate_property)(?=[(])' }, + { token: 'support.function.event-handler.logtalk', + regex: '\\b(?:before|after)(?=[(])' }, + { token: 'support.function.message-forwarding-handler.logtalk', + regex: '\\b(forward)(?=[(])' }, + { token: 'support.function.grammar-rule.logtalk', + regex: '\\b(?:expand_(?:goal|term)|(?:goal|term)_expansion|phrase)(?=[(])' }, + { token: 'punctuation.definition.string.begin.logtalk', + regex: '\'', + push: [{ token: 'constant.character.escape.logtalk', + regex: '\\\\([\\\\abfnrtv"\']|(x[a-fA-F0-9]+|[0-7]+)\\\\)' }, + { token: 'punctuation.definition.string.end.logtalk', + regex: '\'', + next: 'pop' }, + { defaultToken: 'string.quoted.single.logtalk' }] }, + { token: 'punctuation.definition.string.begin.logtalk', + regex: '"', + push: [{ token: 'constant.character.escape.logtalk', regex: '\\\\.' }, + { token: 'punctuation.definition.string.end.logtalk', + regex: '"', + next: 'pop' }, + { defaultToken: 'string.quoted.double.logtalk' }] }, + { token: 'constant.numeric.logtalk', + regex: '\\b(0b[0-1]+|0o[0-7]+|0x[0-9a-fA-F]+)\\b' }, + { token: 'constant.numeric.logtalk', + regex: '\\b(0\'\\\\.|0\'.|0\'\'|0\'")' }, + { token: 'constant.numeric.logtalk', + regex: '\\b(\\d+\\.?\\d*((e|E)(\\+|-)?\\d+)?)\\b' }, + { token: 'variable.other.logtalk', + regex: '\\b([A-Z_][A-Za-z0-9_]*)\\b' }] }; + this.normalizeRules(); +}; +oop.inherits(LogtalkHighlightRules, TextHighlightRules); +exports.LogtalkHighlightRules = LogtalkHighlightRules; + +}); + +ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/logtalk",["require","exports","module","ace/lib/oop","ace/mode/text","ace/tokenizer","ace/mode/logtalk_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ +"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var Tokenizer = require("../tokenizer").Tokenizer; +var LogtalkHighlightRules = require("./logtalk_highlight_rules").LogtalkHighlightRules; +var FoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = LogtalkHighlightRules; + this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "%"; + this.blockComment = { start: "/*", end: "*/" }; + this.$id = "ace/mode/logtalk"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/logtalk"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/9e7b410d51fc77840842aea653f8aee1.js.gz b/web/dist/9e7b410d51fc77840842aea653f8aee1.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..b99c5efd9034cb189639e8900295bc1c85d7d029 GIT binary patch literal 3809 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 X?b4RpWfMHdo_qRV7i|tr5J3O{SkQ35 literal 0 HcmV?d00001 diff --git a/web/dist/9e7dd08cf78e118b417094343686cda8.js b/web/dist/9e7dd08cf78e118b417094343686cda8.js new file mode 100644 index 00000000..1839f01a --- /dev/null +++ b/web/dist/9e7dd08cf78e118b417094343686cda8.js @@ -0,0 +1,739 @@ +ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; +var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; +var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; +var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; +var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; +var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; +var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; +var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; +var CssHighlightRules = function () { + var keywordMapper = this.createKeywordMapper({ + "support.function": supportFunction, + "support.constant": supportConstant, + "support.type": supportType, + "support.constant.color": supportConstantColor, + "support.constant.fonts": supportConstantFonts + }, "text", true); + this.$rules = { + "start": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" + }, { + token: "string", + regex: "@(?!viewport)", + next: "media" + }, { + token: "keyword", + regex: "#[a-z0-9-_]+" + }, { + token: "keyword", + regex: "%" + }, { + token: "variable", + regex: "\\.[a-z0-9-_]+" + }, { + token: "string", + regex: ":[a-z0-9-_]+" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant", + regex: "[a-z0-9-_]+" + }, { + caseInsensitive: true + }], + "media": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "start" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + token: "string", + regex: ";", + next: "start" + }, { + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" + }], + "comments": [{ + token: "comment", + regex: "\\/\\*", + push: [{ + token: "comment", + regex: "\\*\\/", + next: "pop" + }, { + defaultToken: "comment" + }] + }], + "ruleset": [{ + regex: "-(webkit|ms|moz|o)-", + token: "text" + }, { + token: "punctuation.operator", + regex: "[:;]" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + include: ["strings", "url", "comments"] + }, { + token: ["constant.numeric", "keyword"], + regex: "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant.numeric", + regex: "#[a-f0-9]{6}" + }, { + token: "constant.numeric", + regex: "#[a-f0-9]{3}" + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"], + regex: pseudoElements + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"], + regex: pseudoClasses + }, { + include: "url" + }, { + token: keywordMapper, + regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" + }, { + caseInsensitive: true + }], + url: [{ + token: "support.function", + regex: "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token: "support.function", + regex: "\\)", + next: "pop" + }, { + defaultToken: "string" + }] + }], + strings: [{ + token: "string.start", + regex: "'", + push: [{ + token: "string.end", + regex: "'|$", + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }, { + token: "string.start", + regex: '"', + push: [{ + token: "string.end", + regex: '"|$', + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], + escapes: [{ + token: "constant.language.escape", + regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ + }] + }; + this.normalizeRules(); +}; +oop.inherits(CssHighlightRules, TextHighlightRules); +exports.CssHighlightRules = CssHighlightRules; + +}); + +ace.define("ace/mode/less_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/css_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var CssHighlightRules = require('./css_highlight_rules'); +var LessHighlightRules = function () { + var keywordList = "@import|@media|@font-face|@keyframes|@-webkit-keyframes|@supports|" + + "@charset|@plugin|@namespace|@document|@page|@viewport|@-ms-viewport|" + + "or|and|when|not"; + var keywords = keywordList.split('|'); + var properties = CssHighlightRules.supportType.split('|'); + var keywordMapper = this.createKeywordMapper({ + "support.constant": CssHighlightRules.supportConstant, + "keyword": keywordList, + "support.constant.color": CssHighlightRules.supportConstantColor, + "support.constant.fonts": CssHighlightRules.supportConstantFonts + }, "identifier", true); + var numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"; + this.$rules = { + "start": [ + { + token: "comment", + regex: "\\/\\/.*$" + }, + { + token: "comment", + regex: "\\/\\*", + next: "comment" + }, { + token: "string", + regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + }, { + token: "string", + regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + }, { + token: ["constant.numeric", "keyword"], + regex: "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" + }, { + token: "constant.numeric", + regex: "#[a-f0-9]{6}" + }, { + token: "constant.numeric", + regex: "#[a-f0-9]{3}" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: ["support.function", "paren.lparen", "string", "paren.rparen"], + regex: "(url)(\\()(.*)(\\))" + }, { + token: ["support.function", "paren.lparen"], + regex: "(:extend|[a-z0-9_\\-]+)(\\()" + }, { + token: function (value) { + if (keywords.indexOf(value.toLowerCase()) > -1) + return "keyword"; + else + return "variable"; + }, + regex: "[@\\$][a-z0-9_\\-@\\$]*\\b" + }, { + token: "variable", + regex: "[@\\$]\\{[a-z0-9_\\-@\\$]*\\}" + }, { + token: function (first, second) { + if (properties.indexOf(first.toLowerCase()) > -1) { + return ["support.type.property", "text"]; + } + else { + return ["support.type.unknownProperty", "text"]; + } + }, + regex: "([a-z0-9-_]+)(\\s*:)" + }, { + token: "keyword", + regex: "&" // special case - always treat as keyword + }, { + token: keywordMapper, + regex: "\\-?[@a-z_][@a-z0-9_\\-]*" + }, { + token: "variable.language", + regex: "#[a-z0-9-_]+" + }, { + token: "variable.language", + regex: "\\.[a-z0-9-_]+" + }, { + token: "variable.language", + regex: ":[a-z_][a-z0-9-_]*" + }, { + token: "constant", + regex: "[a-z0-9-_]+" + }, { + token: "keyword.operator", + regex: "<|>|<=|>=|=|!=|-|%|\\+|\\*" + }, { + token: "paren.lparen", + regex: "[[({]" + }, { + token: "paren.rparen", + regex: "[\\])}]" + }, { + token: "text", + regex: "\\s+" + }, { + caseInsensitive: true + } + ], + "comment": [ + { + token: "comment", + regex: "\\*\\/", + next: "start" + }, { + defaultToken: "comment" + } + ] + }; + this.normalizeRules(); +}; +oop.inherits(LessHighlightRules, TextHighlightRules); +exports.LessHighlightRules = LessHighlightRules; + +}); + +ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) + return false; + return /^\s*\}/.test(input); + }; + this.autoOutdent = function (doc, row) { + var line = doc.getLine(row); + var match = line.match(/^(\s*\})/); + if (!match) + return 0; + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; + var indent = this.$getIndent(doc.getLine(openBracePos.row)); + doc.replace(new Range(row, 0, row, column - 1), indent); + }; + this.$getIndent = function (line) { + return line.match(/^\s*/)[0]; + }; +}).call(MatchingBraceOutdent.prototype); +exports.MatchingBraceOutdent = MatchingBraceOutdent; + +}); + +ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Behaviour = require("../behaviour").Behaviour; +var CstyleBehaviour = require("./cstyle").CstyleBehaviour; +var TokenIterator = require("../../token_iterator").TokenIterator; +var CssBehaviour = function () { + this.inherit(CstyleBehaviour); + this.add("colon", "insertion", function (state, action, editor, session, text) { + if (text === ':' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.value.match(/\s+/)) { + token = iterator.stepBackward(); + } + if (token && token.type === 'support.type') { + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + if (rightChar === ':') { + return { + text: '', + selection: [1, 1] + }; + } + if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { + return { + text: ':;', + selection: [1, 1] + }; + } + } + } + }); + this.add("colon", "deletion", function (state, action, editor, session, range) { + var selected = session.doc.getTextRange(range); + if (!range.isMultiLine() && selected === ':') { + var cursor = editor.getCursorPosition(); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.value.match(/\s+/)) { + token = iterator.stepBackward(); + } + if (token && token.type === 'support.type') { + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.end.column, range.end.column + 1); + if (rightChar === ';') { + range.end.column++; + return range; + } + } + } + }); + this.add("semicolon", "insertion", function (state, action, editor, session, text) { + if (text === ';' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + if (rightChar === ';') { + return { + text: '', + selection: [1, 1] + }; + } + } + }); + this.add("!important", "insertion", function (state, action, editor, session, text) { + if (text === '!' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { + return { + text: '!important', + selection: [10, 10] + }; + } + } + }); +}; +oop.inherits(CssBehaviour, CstyleBehaviour); +exports.CssBehaviour = CssBehaviour; + +}); + +ace.define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module){"use strict"; +var propertyMap = { + "background": { "#$0": 1 }, + "background-color": { "#$0": 1, "transparent": 1, "fixed": 1 }, + "background-image": { "url('/$0')": 1 }, + "background-repeat": { "repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1 }, + "background-position": { "bottom": 2, "center": 2, "left": 2, "right": 2, "top": 2, "inherit": 2 }, + "background-attachment": { "scroll": 1, "fixed": 1 }, + "background-size": { "cover": 1, "contain": 1 }, + "background-clip": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "background-origin": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "border": { "solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1 }, + "border-color": { "#$0": 1 }, + "border-style": { "solid": 2, "dashed": 2, "dotted": 2, "double": 2, "groove": 2, "hidden": 2, "inherit": 2, "inset": 2, "none": 2, "outset": 2, "ridged": 2 }, + "border-collapse": { "collapse": 1, "separate": 1 }, + "bottom": { "px": 1, "em": 1, "%": 1 }, + "clear": { "left": 1, "right": 1, "both": 1, "none": 1 }, + "color": { "#$0": 1, "rgb(#$00,0,0)": 1 }, + "cursor": { "default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1 }, + "display": { "none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1 }, + "empty-cells": { "show": 1, "hide": 1 }, + "float": { "left": 1, "right": 1, "none": 1 }, + "font-family": { "Arial": 2, "Comic Sans MS": 2, "Consolas": 2, "Courier New": 2, "Courier": 2, "Georgia": 2, "Monospace": 2, "Sans-Serif": 2, "Segoe UI": 2, "Tahoma": 2, "Times New Roman": 2, "Trebuchet MS": 2, "Verdana": 1 }, + "font-size": { "px": 1, "em": 1, "%": 1 }, + "font-weight": { "bold": 1, "normal": 1 }, + "font-style": { "italic": 1, "normal": 1 }, + "font-variant": { "normal": 1, "small-caps": 1 }, + "height": { "px": 1, "em": 1, "%": 1 }, + "left": { "px": 1, "em": 1, "%": 1 }, + "letter-spacing": { "normal": 1 }, + "line-height": { "normal": 1 }, + "list-style-type": { "none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1 }, + "margin": { "px": 1, "em": 1, "%": 1 }, + "margin-right": { "px": 1, "em": 1, "%": 1 }, + "margin-left": { "px": 1, "em": 1, "%": 1 }, + "margin-top": { "px": 1, "em": 1, "%": 1 }, + "margin-bottom": { "px": 1, "em": 1, "%": 1 }, + "max-height": { "px": 1, "em": 1, "%": 1 }, + "max-width": { "px": 1, "em": 1, "%": 1 }, + "min-height": { "px": 1, "em": 1, "%": 1 }, + "min-width": { "px": 1, "em": 1, "%": 1 }, + "overflow": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-x": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-y": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "padding": { "px": 1, "em": 1, "%": 1 }, + "padding-top": { "px": 1, "em": 1, "%": 1 }, + "padding-right": { "px": 1, "em": 1, "%": 1 }, + "padding-bottom": { "px": 1, "em": 1, "%": 1 }, + "padding-left": { "px": 1, "em": 1, "%": 1 }, + "page-break-after": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "page-break-before": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "position": { "absolute": 1, "relative": 1, "fixed": 1, "static": 1 }, + "right": { "px": 1, "em": 1, "%": 1 }, + "table-layout": { "fixed": 1, "auto": 1 }, + "text-decoration": { "none": 1, "underline": 1, "line-through": 1, "blink": 1 }, + "text-align": { "left": 1, "right": 1, "center": 1, "justify": 1 }, + "text-transform": { "capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1 }, + "top": { "px": 1, "em": 1, "%": 1 }, + "vertical-align": { "top": 1, "bottom": 1 }, + "visibility": { "hidden": 1, "visible": 1 }, + "white-space": { "nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1 }, + "width": { "px": 1, "em": 1, "%": 1 }, + "word-spacing": { "normal": 1 }, + "filter": { "alpha(opacity=$0100)": 1 }, + "text-shadow": { "$02px 2px 2px #777": 1 }, + "text-overflow": { "ellipsis-word": 1, "clip": 1, "ellipsis": 1 }, + "-moz-border-radius": 1, + "-moz-border-radius-topright": 1, + "-moz-border-radius-bottomright": 1, + "-moz-border-radius-topleft": 1, + "-moz-border-radius-bottomleft": 1, + "-webkit-border-radius": 1, + "-webkit-border-top-right-radius": 1, + "-webkit-border-top-left-radius": 1, + "-webkit-border-bottom-right-radius": 1, + "-webkit-border-bottom-left-radius": 1, + "-moz-box-shadow": 1, + "-webkit-box-shadow": 1, + "transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-moz-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-webkit-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 } +}; +var CssCompletions = function () { +}; +(function () { + this.completionsDefined = false; + this.defineCompletions = function () { + if (document) { + var style = document.createElement('c').style; + for (var i in style) { + if (typeof style[i] !== 'string') + continue; + var name = i.replace(/[A-Z]/g, function (x) { + return '-' + x.toLowerCase(); + }); + if (!propertyMap.hasOwnProperty(name)) + propertyMap[name] = 1; + } + } + this.completionsDefined = true; + }; + this.getCompletions = function (state, session, pos, prefix) { + if (!this.completionsDefined) { + this.defineCompletions(); + } + if (state === 'ruleset' || session.$mode.$id == "ace/mode/scss") { + var line = session.getLine(pos.row).substr(0, pos.column); + var inParens = /\([^)]*$/.test(line); + if (inParens) { + line = line.substr(line.lastIndexOf('(') + 1); + } + if (/:[^;]+$/.test(line)) { + /([\w\-]+):[^:]*$/.test(line); + return this.getPropertyValueCompletions(state, session, pos, prefix); + } + else { + return this.getPropertyCompletions(state, session, pos, prefix, inParens); + } + } + return []; + }; + this.getPropertyCompletions = function (state, session, pos, prefix, skipSemicolon) { + skipSemicolon = skipSemicolon || false; + var properties = Object.keys(propertyMap); + return properties.map(function (property) { + return { + caption: property, + snippet: property + ': $0' + (skipSemicolon ? '' : ';'), + meta: "property", + score: 1000000 + }; + }); + }; + this.getPropertyValueCompletions = function (state, session, pos, prefix) { + var line = session.getLine(pos.row).substr(0, pos.column); + var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; + if (!property) + return []; + var values = []; + if (property in propertyMap && typeof propertyMap[property] === "object") { + values = Object.keys(propertyMap[property]); + } + return values.map(function (value) { + return { + caption: value, + snippet: value, + meta: "property value", + score: 1000000 + }; + }); + }; +}).call(CssCompletions.prototype); +exports.CssCompletions = CssCompletions; + +}); + +ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/less",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/less_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/css","ace/mode/css_completions","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var LessHighlightRules = require("./less_highlight_rules").LessHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var CssBehaviour = require("./behaviour/css").CssBehaviour; +var CssCompletions = require("./css_completions").CssCompletions; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = LessHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CssBehaviour(); + this.$completer = new CssCompletions(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "//"; + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokens = this.getTokenizer().getLineTokens(line, state).tokens; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + var match = line.match(/^.*\{\s*$/); + if (match) { + indent += tab; + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.getCompletions = function (state, session, pos, prefix) { + return this.$completer.getCompletions("ruleset", session, pos, prefix); + }; + this.$id = "ace/mode/less"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/less"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/9e7dd08cf78e118b417094343686cda8.js.gz b/web/dist/9e7dd08cf78e118b417094343686cda8.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..cbc85a768cb07409e95c0923e63eec5d1105f23b GIT binary patch literal 8510 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 0 && position.row < docLines.length && + position.column >= 0 && position.column <= docLines[position.row].length; +} +function validateDelta(docLines, delta) { + if (delta.action != "insert" && delta.action != "remove") + throwDeltaError(delta, "delta.action must be 'insert' or 'remove'"); + if (!(delta.lines instanceof Array)) + throwDeltaError(delta, "delta.lines must be an Array"); + if (!delta.start || !delta.end) + throwDeltaError(delta, "delta.start/end must be an present"); + var start = delta.start; + if (!positionInDocument(docLines, delta.start)) + throwDeltaError(delta, "delta.start must be contained in document"); + var end = delta.end; + if (delta.action == "remove" && !positionInDocument(docLines, end)) + throwDeltaError(delta, "delta.end must contained in document for 'remove' actions"); + var numRangeRows = end.row - start.row; + var numRangeLastLineChars = (end.column - (numRangeRows == 0 ? start.column : 0)); + if (numRangeRows != delta.lines.length - 1 || delta.lines[numRangeRows].length != numRangeLastLineChars) + throwDeltaError(delta, "delta.range must match delta lines"); +} +exports.applyDelta = function (docLines, delta, doNotValidate) { + var row = delta.start.row; + var startColumn = delta.start.column; + var line = docLines[row] || ""; + switch (delta.action) { + case "insert": + var lines = delta.lines; + if (lines.length === 1) { + docLines[row] = line.substring(0, startColumn) + delta.lines[0] + line.substring(startColumn); + } + else { + var args = [row, 1].concat(delta.lines); + docLines.splice.apply(docLines, args); + docLines[row] = line.substring(0, startColumn) + docLines[row]; + docLines[row + delta.lines.length - 1] += line.substring(startColumn); + } + break; + case "remove": + var endColumn = delta.end.column; + var endRow = delta.end.row; + if (row === endRow) { + docLines[row] = line.substring(0, startColumn) + line.substring(endColumn); + } + else { + docLines.splice(row, endRow - row + 1, line.substring(0, startColumn) + docLines[endRow].substring(endColumn)); + } + break; + } +}; + +}); + +ace.define("ace/lib/event_emitter",[], function(require, exports, module){"use strict"; +var EventEmitter = {}; +var stopPropagation = function () { this.propagationStopped = true; }; +var preventDefault = function () { this.defaultPrevented = true; }; +EventEmitter._emit = + EventEmitter._dispatchEvent = function (eventName, e) { + this._eventRegistry || (this._eventRegistry = {}); + this._defaultHandlers || (this._defaultHandlers = {}); + var listeners = this._eventRegistry[eventName] || []; + var defaultHandler = this._defaultHandlers[eventName]; + if (!listeners.length && !defaultHandler) + return; + if (typeof e != "object" || !e) + e = {}; + if (!e.type) + e.type = eventName; + if (!e.stopPropagation) + e.stopPropagation = stopPropagation; + if (!e.preventDefault) + e.preventDefault = preventDefault; + listeners = listeners.slice(); + for (var i = 0; i < listeners.length; i++) { + listeners[i](e, this); + if (e.propagationStopped) + break; + } + if (defaultHandler && !e.defaultPrevented) + return defaultHandler(e, this); + }; +EventEmitter._signal = function (eventName, e) { + var listeners = (this._eventRegistry || {})[eventName]; + if (!listeners) + return; + listeners = listeners.slice(); + for (var i = 0; i < listeners.length; i++) + listeners[i](e, this); +}; +EventEmitter.once = function (eventName, callback) { + var _self = this; + this.on(eventName, function newCallback() { + _self.off(eventName, newCallback); + callback.apply(null, arguments); + }); + if (!callback) { + return new Promise(function (resolve) { + callback = resolve; + }); + } +}; +EventEmitter.setDefaultHandler = function (eventName, callback) { + var handlers = this._defaultHandlers; + if (!handlers) + handlers = this._defaultHandlers = { _disabled_: {} }; + if (handlers[eventName]) { + var old = handlers[eventName]; + var disabled = handlers._disabled_[eventName]; + if (!disabled) + handlers._disabled_[eventName] = disabled = []; + disabled.push(old); + var i = disabled.indexOf(callback); + if (i != -1) + disabled.splice(i, 1); + } + handlers[eventName] = callback; +}; +EventEmitter.removeDefaultHandler = function (eventName, callback) { + var handlers = this._defaultHandlers; + if (!handlers) + return; + var disabled = handlers._disabled_[eventName]; + if (handlers[eventName] == callback) { + if (disabled) + this.setDefaultHandler(eventName, disabled.pop()); + } + else if (disabled) { + var i = disabled.indexOf(callback); + if (i != -1) + disabled.splice(i, 1); + } +}; +EventEmitter.on = + EventEmitter.addEventListener = function (eventName, callback, capturing) { + this._eventRegistry = this._eventRegistry || {}; + var listeners = this._eventRegistry[eventName]; + if (!listeners) + listeners = this._eventRegistry[eventName] = []; + if (listeners.indexOf(callback) == -1) + listeners[capturing ? "unshift" : "push"](callback); + return callback; + }; +EventEmitter.off = + EventEmitter.removeListener = + EventEmitter.removeEventListener = function (eventName, callback) { + this._eventRegistry = this._eventRegistry || {}; + var listeners = this._eventRegistry[eventName]; + if (!listeners) + return; + var index = listeners.indexOf(callback); + if (index !== -1) + listeners.splice(index, 1); + }; +EventEmitter.removeAllListeners = function (eventName) { + if (!eventName) + this._eventRegistry = this._defaultHandlers = undefined; + if (this._eventRegistry) + this._eventRegistry[eventName] = undefined; + if (this._defaultHandlers) + this._defaultHandlers[eventName] = undefined; +}; +exports.EventEmitter = EventEmitter; + +}); + +ace.define("ace/range",[], function(require, exports, module){"use strict"; +var comparePoints = function (p1, p2) { + return p1.row - p2.row || p1.column - p2.column; +}; +var Range = function (startRow, startColumn, endRow, endColumn) { + this.start = { + row: startRow, + column: startColumn + }; + this.end = { + row: endRow, + column: endColumn + }; +}; +(function () { + this.isEqual = function (range) { + return this.start.row === range.start.row && + this.end.row === range.end.row && + this.start.column === range.start.column && + this.end.column === range.end.column; + }; + this.toString = function () { + return ("Range: [" + this.start.row + "/" + this.start.column + + "] -> [" + this.end.row + "/" + this.end.column + "]"); + }; + this.contains = function (row, column) { + return this.compare(row, column) == 0; + }; + this.compareRange = function (range) { + var cmp, end = range.end, start = range.start; + cmp = this.compare(end.row, end.column); + if (cmp == 1) { + cmp = this.compare(start.row, start.column); + if (cmp == 1) { + return 2; + } + else if (cmp == 0) { + return 1; + } + else { + return 0; + } + } + else if (cmp == -1) { + return -2; + } + else { + cmp = this.compare(start.row, start.column); + if (cmp == -1) { + return -1; + } + else if (cmp == 1) { + return 42; + } + else { + return 0; + } + } + }; + this.comparePoint = function (p) { + return this.compare(p.row, p.column); + }; + this.containsRange = function (range) { + return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0; + }; + this.intersects = function (range) { + var cmp = this.compareRange(range); + return (cmp == -1 || cmp == 0 || cmp == 1); + }; + this.isEnd = function (row, column) { + return this.end.row == row && this.end.column == column; + }; + this.isStart = function (row, column) { + return this.start.row == row && this.start.column == column; + }; + this.setStart = function (row, column) { + if (typeof row == "object") { + this.start.column = row.column; + this.start.row = row.row; + } + else { + this.start.row = row; + this.start.column = column; + } + }; + this.setEnd = function (row, column) { + if (typeof row == "object") { + this.end.column = row.column; + this.end.row = row.row; + } + else { + this.end.row = row; + this.end.column = column; + } + }; + this.inside = function (row, column) { + if (this.compare(row, column) == 0) { + if (this.isEnd(row, column) || this.isStart(row, column)) { + return false; + } + else { + return true; + } + } + return false; + }; + this.insideStart = function (row, column) { + if (this.compare(row, column) == 0) { + if (this.isEnd(row, column)) { + return false; + } + else { + return true; + } + } + return false; + }; + this.insideEnd = function (row, column) { + if (this.compare(row, column) == 0) { + if (this.isStart(row, column)) { + return false; + } + else { + return true; + } + } + return false; + }; + this.compare = function (row, column) { + if (!this.isMultiLine()) { + if (row === this.start.row) { + return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0); + } + } + if (row < this.start.row) + return -1; + if (row > this.end.row) + return 1; + if (this.start.row === row) + return column >= this.start.column ? 0 : -1; + if (this.end.row === row) + return column <= this.end.column ? 0 : 1; + return 0; + }; + this.compareStart = function (row, column) { + if (this.start.row == row && this.start.column == column) { + return -1; + } + else { + return this.compare(row, column); + } + }; + this.compareEnd = function (row, column) { + if (this.end.row == row && this.end.column == column) { + return 1; + } + else { + return this.compare(row, column); + } + }; + this.compareInside = function (row, column) { + if (this.end.row == row && this.end.column == column) { + return 1; + } + else if (this.start.row == row && this.start.column == column) { + return -1; + } + else { + return this.compare(row, column); + } + }; + this.clipRows = function (firstRow, lastRow) { + if (this.end.row > lastRow) + var end = { row: lastRow + 1, column: 0 }; + else if (this.end.row < firstRow) + var end = { row: firstRow, column: 0 }; + if (this.start.row > lastRow) + var start = { row: lastRow + 1, column: 0 }; + else if (this.start.row < firstRow) + var start = { row: firstRow, column: 0 }; + return Range.fromPoints(start || this.start, end || this.end); + }; + this.extend = function (row, column) { + var cmp = this.compare(row, column); + if (cmp == 0) + return this; + else if (cmp == -1) + var start = { row: row, column: column }; + else + var end = { row: row, column: column }; + return Range.fromPoints(start || this.start, end || this.end); + }; + this.isEmpty = function () { + return (this.start.row === this.end.row && this.start.column === this.end.column); + }; + this.isMultiLine = function () { + return (this.start.row !== this.end.row); + }; + this.clone = function () { + return Range.fromPoints(this.start, this.end); + }; + this.collapseRows = function () { + if (this.end.column == 0) + return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row - 1), 0); + else + return new Range(this.start.row, 0, this.end.row, 0); + }; + this.toScreenRange = function (session) { + var screenPosStart = session.documentToScreenPosition(this.start); + var screenPosEnd = session.documentToScreenPosition(this.end); + return new Range(screenPosStart.row, screenPosStart.column, screenPosEnd.row, screenPosEnd.column); + }; + this.moveBy = function (row, column) { + this.start.row += row; + this.start.column += column; + this.end.row += row; + this.end.column += column; + }; +}).call(Range.prototype); +Range.fromPoints = function (start, end) { + return new Range(start.row, start.column, end.row, end.column); +}; +Range.comparePoints = comparePoints; +Range.comparePoints = function (p1, p2) { + return p1.row - p2.row || p1.column - p2.column; +}; +exports.Range = Range; + +}); + +ace.define("ace/anchor",[], function(require, exports, module){"use strict"; +var oop = require("./lib/oop"); +var EventEmitter = require("./lib/event_emitter").EventEmitter; +var Anchor = exports.Anchor = function (doc, row, column) { + this.$onChange = this.onChange.bind(this); + this.attach(doc); + if (typeof column == "undefined") + this.setPosition(row.row, row.column); + else + this.setPosition(row, column); +}; +(function () { + oop.implement(this, EventEmitter); + this.getPosition = function () { + return this.$clipPositionToDocument(this.row, this.column); + }; + this.getDocument = function () { + return this.document; + }; + this.$insertRight = false; + this.onChange = function (delta) { + if (delta.start.row == delta.end.row && delta.start.row != this.row) + return; + if (delta.start.row > this.row) + return; + var point = $getTransformedPoint(delta, { row: this.row, column: this.column }, this.$insertRight); + this.setPosition(point.row, point.column, true); + }; + function $pointsInOrder(point1, point2, equalPointsInOrder) { + var bColIsAfter = equalPointsInOrder ? point1.column <= point2.column : point1.column < point2.column; + return (point1.row < point2.row) || (point1.row == point2.row && bColIsAfter); + } + function $getTransformedPoint(delta, point, moveIfEqual) { + var deltaIsInsert = delta.action == "insert"; + var deltaRowShift = (deltaIsInsert ? 1 : -1) * (delta.end.row - delta.start.row); + var deltaColShift = (deltaIsInsert ? 1 : -1) * (delta.end.column - delta.start.column); + var deltaStart = delta.start; + var deltaEnd = deltaIsInsert ? deltaStart : delta.end; // Collapse insert range. + if ($pointsInOrder(point, deltaStart, moveIfEqual)) { + return { + row: point.row, + column: point.column + }; + } + if ($pointsInOrder(deltaEnd, point, !moveIfEqual)) { + return { + row: point.row + deltaRowShift, + column: point.column + (point.row == deltaEnd.row ? deltaColShift : 0) + }; + } + return { + row: deltaStart.row, + column: deltaStart.column + }; + } + this.setPosition = function (row, column, noClip) { + var pos; + if (noClip) { + pos = { + row: row, + column: column + }; + } + else { + pos = this.$clipPositionToDocument(row, column); + } + if (this.row == pos.row && this.column == pos.column) + return; + var old = { + row: this.row, + column: this.column + }; + this.row = pos.row; + this.column = pos.column; + this._signal("change", { + old: old, + value: pos + }); + }; + this.detach = function () { + this.document.off("change", this.$onChange); + }; + this.attach = function (doc) { + this.document = doc || this.document; + this.document.on("change", this.$onChange); + }; + this.$clipPositionToDocument = function (row, column) { + var pos = {}; + if (row >= this.document.getLength()) { + pos.row = Math.max(0, this.document.getLength() - 1); + pos.column = this.document.getLine(pos.row).length; + } + else if (row < 0) { + pos.row = 0; + pos.column = 0; + } + else { + pos.row = row; + pos.column = Math.min(this.document.getLine(pos.row).length, Math.max(0, column)); + } + if (column < 0) + pos.column = 0; + return pos; + }; +}).call(Anchor.prototype); + +}); + +ace.define("ace/document",[], function(require, exports, module){"use strict"; +var oop = require("./lib/oop"); +var applyDelta = require("./apply_delta").applyDelta; +var EventEmitter = require("./lib/event_emitter").EventEmitter; +var Range = require("./range").Range; +var Anchor = require("./anchor").Anchor; +var Document = function (textOrLines) { + this.$lines = [""]; + if (textOrLines.length === 0) { + this.$lines = [""]; + } + else if (Array.isArray(textOrLines)) { + this.insertMergedLines({ row: 0, column: 0 }, textOrLines); + } + else { + this.insert({ row: 0, column: 0 }, textOrLines); + } +}; +(function () { + oop.implement(this, EventEmitter); + this.setValue = function (text) { + var len = this.getLength() - 1; + this.remove(new Range(0, 0, len, this.getLine(len).length)); + this.insert({ row: 0, column: 0 }, text || ""); + }; + this.getValue = function () { + return this.getAllLines().join(this.getNewLineCharacter()); + }; + this.createAnchor = function (row, column) { + return new Anchor(this, row, column); + }; + if ("aaa".split(/a/).length === 0) { + this.$split = function (text) { + return text.replace(/\r\n|\r/g, "\n").split("\n"); + }; + } + else { + this.$split = function (text) { + return text.split(/\r\n|\r|\n/); + }; + } + this.$detectNewLine = function (text) { + var match = text.match(/^.*?(\r\n|\r|\n)/m); + this.$autoNewLine = match ? match[1] : "\n"; + this._signal("changeNewLineMode"); + }; + this.getNewLineCharacter = function () { + switch (this.$newLineMode) { + case "windows": + return "\r\n"; + case "unix": + return "\n"; + default: + return this.$autoNewLine || "\n"; + } + }; + this.$autoNewLine = ""; + this.$newLineMode = "auto"; + this.setNewLineMode = function (newLineMode) { + if (this.$newLineMode === newLineMode) + return; + this.$newLineMode = newLineMode; + this._signal("changeNewLineMode"); + }; + this.getNewLineMode = function () { + return this.$newLineMode; + }; + this.isNewLine = function (text) { + return (text == "\r\n" || text == "\r" || text == "\n"); + }; + this.getLine = function (row) { + return this.$lines[row] || ""; + }; + this.getLines = function (firstRow, lastRow) { + return this.$lines.slice(firstRow, lastRow + 1); + }; + this.getAllLines = function () { + return this.getLines(0, this.getLength()); + }; + this.getLength = function () { + return this.$lines.length; + }; + this.getTextRange = function (range) { + return this.getLinesForRange(range).join(this.getNewLineCharacter()); + }; + this.getLinesForRange = function (range) { + var lines; + if (range.start.row === range.end.row) { + lines = [this.getLine(range.start.row).substring(range.start.column, range.end.column)]; + } + else { + lines = this.getLines(range.start.row, range.end.row); + lines[0] = (lines[0] || "").substring(range.start.column); + var l = lines.length - 1; + if (range.end.row - range.start.row == l) + lines[l] = lines[l].substring(0, range.end.column); + } + return lines; + }; + this.insertLines = function (row, lines) { + console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."); + return this.insertFullLines(row, lines); + }; + this.removeLines = function (firstRow, lastRow) { + console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."); + return this.removeFullLines(firstRow, lastRow); + }; + this.insertNewLine = function (position) { + console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."); + return this.insertMergedLines(position, ["", ""]); + }; + this.insert = function (position, text) { + if (this.getLength() <= 1) + this.$detectNewLine(text); + return this.insertMergedLines(position, this.$split(text)); + }; + this.insertInLine = function (position, text) { + var start = this.clippedPos(position.row, position.column); + var end = this.pos(position.row, position.column + text.length); + this.applyDelta({ + start: start, + end: end, + action: "insert", + lines: [text] + }, true); + return this.clonePos(end); + }; + this.clippedPos = function (row, column) { + var length = this.getLength(); + if (row === undefined) { + row = length; + } + else if (row < 0) { + row = 0; + } + else if (row >= length) { + row = length - 1; + column = undefined; + } + var line = this.getLine(row); + if (column == undefined) + column = line.length; + column = Math.min(Math.max(column, 0), line.length); + return { row: row, column: column }; + }; + this.clonePos = function (pos) { + return { row: pos.row, column: pos.column }; + }; + this.pos = function (row, column) { + return { row: row, column: column }; + }; + this.$clipPosition = function (position) { + var length = this.getLength(); + if (position.row >= length) { + position.row = Math.max(0, length - 1); + position.column = this.getLine(length - 1).length; + } + else { + position.row = Math.max(0, position.row); + position.column = Math.min(Math.max(position.column, 0), this.getLine(position.row).length); + } + return position; + }; + this.insertFullLines = function (row, lines) { + row = Math.min(Math.max(row, 0), this.getLength()); + var column = 0; + if (row < this.getLength()) { + lines = lines.concat([""]); + column = 0; + } + else { + lines = [""].concat(lines); + row--; + column = this.$lines[row].length; + } + this.insertMergedLines({ row: row, column: column }, lines); + }; + this.insertMergedLines = function (position, lines) { + var start = this.clippedPos(position.row, position.column); + var end = { + row: start.row + lines.length - 1, + column: (lines.length == 1 ? start.column : 0) + lines[lines.length - 1].length + }; + this.applyDelta({ + start: start, + end: end, + action: "insert", + lines: lines + }); + return this.clonePos(end); + }; + this.remove = function (range) { + var start = this.clippedPos(range.start.row, range.start.column); + var end = this.clippedPos(range.end.row, range.end.column); + this.applyDelta({ + start: start, + end: end, + action: "remove", + lines: this.getLinesForRange({ start: start, end: end }) + }); + return this.clonePos(start); + }; + this.removeInLine = function (row, startColumn, endColumn) { + var start = this.clippedPos(row, startColumn); + var end = this.clippedPos(row, endColumn); + this.applyDelta({ + start: start, + end: end, + action: "remove", + lines: this.getLinesForRange({ start: start, end: end }) + }, true); + return this.clonePos(start); + }; + this.removeFullLines = function (firstRow, lastRow) { + firstRow = Math.min(Math.max(0, firstRow), this.getLength() - 1); + lastRow = Math.min(Math.max(0, lastRow), this.getLength() - 1); + var deleteFirstNewLine = lastRow == this.getLength() - 1 && firstRow > 0; + var deleteLastNewLine = lastRow < this.getLength() - 1; + var startRow = (deleteFirstNewLine ? firstRow - 1 : firstRow); + var startCol = (deleteFirstNewLine ? this.getLine(startRow).length : 0); + var endRow = (deleteLastNewLine ? lastRow + 1 : lastRow); + var endCol = (deleteLastNewLine ? 0 : this.getLine(endRow).length); + var range = new Range(startRow, startCol, endRow, endCol); + var deletedLines = this.$lines.slice(firstRow, lastRow + 1); + this.applyDelta({ + start: range.start, + end: range.end, + action: "remove", + lines: this.getLinesForRange(range) + }); + return deletedLines; + }; + this.removeNewLine = function (row) { + if (row < this.getLength() - 1 && row >= 0) { + this.applyDelta({ + start: this.pos(row, this.getLine(row).length), + end: this.pos(row + 1, 0), + action: "remove", + lines: ["", ""] + }); + } + }; + this.replace = function (range, text) { + if (!(range instanceof Range)) + range = Range.fromPoints(range.start, range.end); + if (text.length === 0 && range.isEmpty()) + return range.start; + if (text == this.getTextRange(range)) + return range.end; + this.remove(range); + var end; + if (text) { + end = this.insert(range.start, text); + } + else { + end = range.start; + } + return end; + }; + this.applyDeltas = function (deltas) { + for (var i = 0; i < deltas.length; i++) { + this.applyDelta(deltas[i]); + } + }; + this.revertDeltas = function (deltas) { + for (var i = deltas.length - 1; i >= 0; i--) { + this.revertDelta(deltas[i]); + } + }; + this.applyDelta = function (delta, doNotValidate) { + var isInsert = delta.action == "insert"; + if (isInsert ? delta.lines.length <= 1 && !delta.lines[0] + : !Range.comparePoints(delta.start, delta.end)) { + return; + } + if (isInsert && delta.lines.length > 20000) { + this.$splitAndapplyLargeDelta(delta, 20000); + } + else { + applyDelta(this.$lines, delta, doNotValidate); + this._signal("change", delta); + } + }; + this.$safeApplyDelta = function (delta) { + var docLength = this.$lines.length; + if (delta.action == "remove" && delta.start.row < docLength && delta.end.row < docLength + || delta.action == "insert" && delta.start.row <= docLength) { + this.applyDelta(delta); + } + }; + this.$splitAndapplyLargeDelta = function (delta, MAX) { + var lines = delta.lines; + var l = lines.length - MAX + 1; + var row = delta.start.row; + var column = delta.start.column; + for (var from = 0, to = 0; from < l; from = to) { + to += MAX - 1; + var chunk = lines.slice(from, to); + chunk.push(""); + this.applyDelta({ + start: this.pos(row + from, column), + end: this.pos(row + to, column = 0), + action: delta.action, + lines: chunk + }, true); + } + delta.lines = lines.slice(from); + delta.start.row = row + from; + delta.start.column = column; + this.applyDelta(delta, true); + }; + this.revertDelta = function (delta) { + this.$safeApplyDelta({ + start: this.clonePos(delta.start), + end: this.clonePos(delta.end), + action: (delta.action == "insert" ? "remove" : "insert"), + lines: delta.lines.slice() + }); + }; + this.indexToPosition = function (index, startRow) { + var lines = this.$lines || this.getAllLines(); + var newlineLength = this.getNewLineCharacter().length; + for (var i = startRow || 0, l = lines.length; i < l; i++) { + index -= lines[i].length + newlineLength; + if (index < 0) + return { row: i, column: index + lines[i].length + newlineLength }; + } + return { row: l - 1, column: index + lines[l - 1].length + newlineLength }; + }; + this.positionToIndex = function (pos, startRow) { + var lines = this.$lines || this.getAllLines(); + var newlineLength = this.getNewLineCharacter().length; + var index = 0; + var row = Math.min(pos.row, lines.length); + for (var i = startRow || 0; i < row; ++i) + index += lines[i].length + newlineLength; + return index + pos.column; + }; +}).call(Document.prototype); +exports.Document = Document; + +}); + +ace.define("ace/lib/lang",[], function(require, exports, module){"use strict"; +exports.last = function (a) { + return a[a.length - 1]; +}; +exports.stringReverse = function (string) { + return string.split("").reverse().join(""); +}; +exports.stringRepeat = function (string, count) { + var result = ''; + while (count > 0) { + if (count & 1) + result += string; + if (count >>= 1) + string += string; + } + return result; +}; +var trimBeginRegexp = /^\s\s*/; +var trimEndRegexp = /\s\s*$/; +exports.stringTrimLeft = function (string) { + return string.replace(trimBeginRegexp, ''); +}; +exports.stringTrimRight = function (string) { + return string.replace(trimEndRegexp, ''); +}; +exports.copyObject = function (obj) { + var copy = {}; + for (var key in obj) { + copy[key] = obj[key]; + } + return copy; +}; +exports.copyArray = function (array) { + var copy = []; + for (var i = 0, l = array.length; i < l; i++) { + if (array[i] && typeof array[i] == "object") + copy[i] = this.copyObject(array[i]); + else + copy[i] = array[i]; + } + return copy; +}; +exports.deepCopy = function deepCopy(obj) { + if (typeof obj !== "object" || !obj) + return obj; + var copy; + if (Array.isArray(obj)) { + copy = []; + for (var key = 0; key < obj.length; key++) { + copy[key] = deepCopy(obj[key]); + } + return copy; + } + if (Object.prototype.toString.call(obj) !== "[object Object]") + return obj; + copy = {}; + for (var key in obj) + copy[key] = deepCopy(obj[key]); + return copy; +}; +exports.arrayToMap = function (arr) { + var map = {}; + for (var i = 0; i < arr.length; i++) { + map[arr[i]] = 1; + } + return map; +}; +exports.createMap = function (props) { + var map = Object.create(null); + for (var i in props) { + map[i] = props[i]; + } + return map; +}; +exports.arrayRemove = function (array, value) { + for (var i = 0; i <= array.length; i++) { + if (value === array[i]) { + array.splice(i, 1); + } + } +}; +exports.escapeRegExp = function (str) { + return str.replace(/([.*+?^${}()|[\]\/\\])/g, '\\$1'); +}; +exports.escapeHTML = function (str) { + return ("" + str).replace(/&/g, "&").replace(/"/g, """).replace(/'/g, "'").replace(/= doc.$lines.length) { + err = new Error("Invalid delta"); + err.data = { + path: _self.$path, + linesLength: doc.$lines.length, + start: d.start, + end: d.end + }; + throw err; + } + + doc.applyDelta(d, true); + } + } + if (_self.$timeout) + return deferredUpdate.schedule(_self.$timeout); + _self.onUpdate(); + }); +}; + +(function() { + + this.$timeout = 500; + + this.setTimeout = function(timeout) { + this.$timeout = timeout; + }; + + this.setValue = function(value) { + this.doc.setValue(value); + this.deferredUpdate.schedule(this.$timeout); + }; + + this.getValue = function(callbackId) { + this.sender.callback(this.doc.getValue(), callbackId); + }; + + this.onUpdate = function() { + }; + + this.isPending = function() { + return this.deferredUpdate.isPending(); + }; + +}).call(Mirror.prototype); + +}); + +ace.define("ace/mode/xquery/xqlint",[], function(require, exports, module) { +module.exports = (function outer (modules, cache, entry) { + var previousRequire = typeof require == "function" && require; + function newRequire(name, jumped){ + if(!cache[name]) { + if(!modules[name]) { + var currentRequire = typeof require == "function" && require; + if (!jumped && currentRequire) return currentRequire(name, true); + if (previousRequire) return previousRequire(name, true); + var err = new Error('Cannot find module \'' + name + '\''); + err.code = 'MODULE_NOT_FOUND'; + throw err; + } + var m = cache[name] = {exports:{}}; + modules[name][0].call(m.exports, function(x){ + var id = modules[name][1][x]; + return newRequire(id ? id : x); + },m,m.exports,outer,modules,cache,entry); + } + return cache[name].exports; + } + for(var i=0;i 1) { + result = get(child, path.slice(1)); + } else if(child.name === path[0]) { + result.push(child); + } + }); + return result; + }; + + var markers = []; + this.apply = function(fn) { + try { + fn(); + } catch(e) { + if(e instanceof StaticError) { + addStaticError(e); + } else if(e instanceof StaticWarning) { + addWarning(e.getCode(), e.getMessage(), e.getPos()); + } else { + throw e; + } + } + }; + + var addStaticError = function(e){ + markers.push({ + pos: e.getPos(), + type: 'error', + level: 'error', + message: '[' + e.getCode() + '] ' + e.getMessage() + }); + }; + + var addWarning = function(code, message, pos) { + markers.push({ + pos: pos, + type: 'warning', + level: 'warning', + message: '[' + code + '] ' + message + }); + }; + + this.getMarkers = function(){ + return markers; + }; + + var translator = this; + + rootStcx.pos = ast.pos; + var sctx = rootStcx; + var pushSctx = function(pos){ + sctx = new StaticContext(sctx, pos); + sctx.parent.children.push(sctx); + }; + + var popSctx = function(pos){ + if (pos !== undefined) { + sctx.pos.el = pos.el; + sctx.pos.ec = pos.ec; + } + + Object.keys(sctx.varRefs).forEach(function(key){ + if(!sctx.variables[key]) { + sctx.parent.varRefs[key] = true; + } + }); + Object.keys(sctx.variables).forEach(function(key){ + if(!sctx.varRefs[key] && sctx.variables[key].type !== 'GroupingVariable' && sctx.variables[key].type !== 'CatchVar') { + addWarning('W03', 'Unused variable "$' + sctx.variables[key].qname.name + '"', sctx.variables[key].pos); + } + }); + + sctx = sctx.parent; + }; + + this.visitOnly = function(node, names) { + node.children.forEach(function(child){ + if (names.indexOf(child.name) !== -1){ + translator.visit(child); + } + }); + }; + + this.getFirstChild = function(node, name) { + var result; + node.children.forEach(function(child){ + if(child.name === name && result === undefined){ + result = child; + } + }); + return result; + }; + + this.XQuery = function(node) { + rootStcx.description = node.comment ? node.comment.description : undefined; + }; + + this.ModuleDecl = function(node){ + this.visitChildren(node, Handlers.ModuleDecl(translator, rootStcx, node)); + return true; + }; + + this.Prolog = function(node){ + this.visitOnly(node, ['DefaultNamespaceDecl', 'Setter', 'NamespaceDecl', 'Import']); + ast.index.forEach(function(node){ + if(node.name === 'VarDecl') { + node.children.forEach(function(child){ + if(child.name === 'VarName') { + translator.apply(function(){ + var value = TreeOps.flatten(child); + var qname = rootStcx.resolveQName(value, child.pos); + rootStcx.addVariable(qname, node.name, child.pos); + }); + } + }); + } else if(node.name === 'FunctionDecl') { + var qname, pos, params = []; + node.children.forEach(function(child){ + if(child.name === 'EQName') { + qname = child; + pos = child.pos; + } else if(child.name === 'ParamList'){ + child.children.forEach(function(c){ + if(c.name === 'Param') { + params.push(TreeOps.flatten(c)); + } + }); + } + }); + translator.apply(function(){ + qname = TreeOps.flatten(qname); + qname = rootStcx.resolveQName(qname, pos); + rootStcx.addFunction(qname, pos, params); + }); + } + }); + this.visitOnly(node, ['ContextItemDecl', 'AnnotatedDecl', 'OptionDecl']); + return true; + }; + + this.ModuleImport = function (node) { + this.visitChildren(node, Handlers.ModuleImport(translator, rootStcx, node)); + return true; + }; + + this.SchemaImport = function (node) { + this.visitChildren(node, Handlers.SchemaImport(translator, rootStcx, node)); + return true; + }; + + this.DefaultNamespaceDecl = function(node){ + this.visitChildren(node, Handlers.DefaultNamespaceDecl(translator, rootStcx, node)); + return true; + }; + + this.NamespaceDecl = function (node) { + this.visitChildren(node, Handlers.NamespaceDecl(translator, rootStcx, node)); + return true; + }; + + var annotations = {}; + this.AnnotatedDecl = function(node) { + annotations = {}; + this.visitChildren(node, Handlers.NamespaceDecl(translator, rootStcx, node)); + return true; + }; + + this.CompatibilityAnnotation = function(){ + annotations['http://www.w3.org/2012/xquery#updating'] = []; + return true; + }; + + this.Annotation = function(node){ + this.visitChildren(node, { + EQName: function(eqname){ + var value = TreeOps.flatten(eqname); + translator.apply(function(){ + var qname = sctx.resolveQName(value, eqname.pos); + annotations[qname.uri + '#' + qname.name] = []; + }); + } + }); + return true; + }; + + this.VarDecl = function(node){ + try { + var varname = translator.getFirstChild(node, 'VarName'); + var value = TreeOps.flatten(varname); + var qname = sctx.resolveQName(value, varname.pos); + var variable = rootStcx.getVariable(qname); + if(variable) { + variable.annotations = annotations; + variable.description = node.getParent.comment ? node.getParent.comment.description : undefined; + variable.type = TreeOps.flatten(get(node, ['TypeDeclaration'])[0]).substring(2).trim(); + var last = variable.type.substring(variable.type.length - 1); + if(last === '?') { + variable.occurrence = 0; + variable.type = variable.type.substring(0, variable.type.length - 1); + } else if(last === '*') { + variable.occurrence = -1; + variable.type = variable.type.substring(0, variable.type.length - 1); + } else if(last === '+') { + variable.occurrence = 2; + variable.type = variable.type.substring(0, variable.type.length - 1); + } else { + variable.occurrence = 1; + } + } + } catch(e) { + } + this.visitOnly(node, ['ExprSingle', 'VarValue', 'VarDefaultValue']); + return true; + }; + + this.FunctionDecl = function(node) { + var isUpdating = annotations['http://www.w3.org/2012/xquery#updating'] !== undefined; + var typeDecl = get(node, ['ReturnType'])[0]; + var name = get(node, ['EQName'])[0]; + if(!typeDecl && !isUpdating){ + addWarning('W05', 'Untyped return value', name.pos); + } + var isExternal = false; + node.children.forEach(function(child){ + if(child.name === 'TOKEN' && child.value === 'external') { + isExternal = true; + return false; + } + }); + if(!isExternal) { + pushSctx(node.pos); + this.visitChildren(node); + popSctx(); + } + return true; + }; + + this.VarRef = function(node) { + this.visitChildren(node, Handlers.VarRefHandler(translator, sctx, node)); + return true; + }; + + this.Param = function(node){ + var typeDecl = get(node, ['TypeDeclaration'])[0]; + if(!typeDecl){ + addWarning('W05', 'Untyped function parameter', node.pos); + } + this.visitChildren(node, Handlers.VarHandler(translator, sctx, node)); + return true; + }; + + this.InlineFunctionExpr = function(node) { + pushSctx(node.pos); + this.visitChildren(node); + popSctx(); + return true; + }; + var statementCount = []; + var handleStatements = function(node) { + pushSctx(node.pos); + statementCount.push(0); + translator.visitChildren(node); + for (var i = 1; i <= statementCount[statementCount.length - 1]; i++) { + popSctx(node.pos); + } + statementCount.pop(); + popSctx(); + }; + + this.StatementsAndOptionalExpr = function (node) { + handleStatements(node); + return true; + }; + + this.StatementsAndExpr = function (node) { + handleStatements(node); + return true; + }; + + this.BlockStatement = function (node) { + handleStatements(node); + return true; + }; + + this.VarDeclStatement = function(node){ + pushSctx(node.pos); + statementCount[statementCount.length - 1]++; + this.visitChildren(node, Handlers.VarHandler(translator, sctx, node)); + }; + var clauses = []; + this.FLWORExpr = this.FLWORStatement = function (node) { + pushSctx(node.pos); + clauses.push(0); + this.visitChildren(node); + for(var i=1; i <= clauses[clauses.length - 1]; i++) { + popSctx(node.pos); + } + clauses.pop(); + popSctx(); + return true; + }; + + this.ForBinding = function (node) { + this.visitOnly(node, ['ExprSingle', 'VarValue', 'VarDefaultValue']); + pushSctx(node.pos); + clauses[clauses.length - 1]++; + this.visitChildren(node, Handlers.VarHandler(translator, sctx, node)); + return true; + }; + + this.LetBinding = function(node){ + this.visitOnly(node, ['ExprSingle', 'VarValue', 'VarDefaultValue']); + pushSctx(node.pos); + clauses[clauses.length - 1]++; + this.visitChildren(node, Handlers.VarHandler(translator, sctx, node)); + return true; + }; + + this.GroupingSpec = function(node){ + var isVarDecl = false; + node.children.forEach(function(child){ + if(child.value === ':=') { + isVarDecl = true; + return false; + } + }); + if(isVarDecl) { + var groupingVariable = node.children[0]; + this.visitOnly(node, ['ExprSingle', 'VarValue', 'VarDefaultValue']); + pushSctx(node.pos); + clauses[clauses.length - 1]++; + this.visitChildren(groupingVariable, Handlers.VarHandler(translator, sctx, groupingVariable)); + return true; + } else { + + } + }; + + this.TumblingWindowClause = function (node) { + this.visitOnly(node, ['ExprSingle']); + pushSctx(node.pos); + clauses[clauses.length - 1]++; + this.visitChildren(node, Handlers.VarHandler(translator, sctx, node)); + this.visitOnly(node, ['WindowStartCondition', 'WindowEndCondition']); + return true; + }; + + this.WindowVars = function (node) { + pushSctx(node.pos); + clauses[clauses.length - 1]++; + this.visitChildren(node, Handlers.VarHandler(translator, sctx, node)); + return true; + }; + + this.SlidingWindowClause = function (node) { + this.visitOnly(node, ['ExprSingle', 'VarValue', 'VarDefaultValue']); + pushSctx(node.pos); + clauses[clauses.length - 1]++; + this.visitChildren(node, Handlers.VarHandler(translator, sctx, node)); + this.visitOnly(node, ['WindowStartCondition', 'WindowEndCondition']); + return true; + }; + + this.PositionalVar = function (node) { + this.visitChildren(node, Handlers.VarHandler(translator, sctx, node)); + return true; + }; + + this.PositionalVar = function (node) { + this.visitChildren(node, Handlers.VarHandler(translator, sctx, node)); + return true; + }; + + this.CurrentItem = function (node) { + this.visitChildren(node, Handlers.VarHandler(translator, sctx, node)); + return true; + }; + + this.PreviousItem = function (node) { + this.visitChildren(node, Handlers.VarHandler(translator, sctx, node)); + return true; + }; + + this.NextItem = function (node) { + this.visitChildren(node, Handlers.VarHandler(translator, sctx, node)); + return true; + }; + + this.CountClause = function (node) { + pushSctx(node.pos); + clauses[clauses.length - 1]++; + this.visitChildren(node, Handlers.VarHandler(translator, sctx, node)); + return true; + }; + + this.CaseClause = function(node) { + pushSctx(node.pos); + this.visitChildren(node, Handlers.VarHandler(translator, sctx, node)); + this.visitOnly(node, ['ExprSingle']); + popSctx(); + return true; + }; + var copies = []; + this.TransformExpr = function (node) { + pushSctx(node.pos); + copies.push(0); + this.visitChildren(node); + for(var i=1; i <= copies[copies.length - 1]; i++) { + popSctx(node.pos); + } + copies.pop(); + popSctx(); + return true; + }; + + this.TransformSpec = function(node) { + this.visitOnly(node, ['ExprSingle']); + pushSctx(node.pos); + copies[copies.length-1] += 1; + this.visitChildren(node, Handlers.VarHandler(translator, sctx, node)); + return true; + }; + var quantifiedDecls = []; + this.QuantifiedExpr = function (node) { + pushSctx(node.pos); + quantifiedDecls.push(0); + this.visitChildren(node); + for(var i=1; i <= quantifiedDecls[quantifiedDecls.length - 1]; i++) { + popSctx(node.pos); + } + quantifiedDecls.pop(); + popSctx(); + return true; + }; + + this.QuantifiedVarDecl = function(node) { + this.visitOnly(node, ['ExprSingle']); + pushSctx(node.pos); + quantifiedDecls[quantifiedDecls.length - 1]++; + this.visitChildren(node, Handlers.VarHandler(translator, sctx, node)); + return true; + }; + + this.FunctionCall = function(node){ + this.visitOnly(node, ['ArgumentList']); + var name = translator.getFirstChild(node, 'EQName'); + var eqname = TreeOps.flatten(name); + var arity = get(node, ['ArgumentList', 'Argument']).length; + translator.apply(function(){ + var qname = sctx.resolveQName(eqname, node.pos); + try { + if(qname.uri !== '') { + sctx.root.namespaces[qname.uri].used = true; + } + } catch(e){ + } + sctx.addFunctionCall(qname, arity, name.pos); + }); + return true; + }; + + this.TryClause = function(node){ + pushSctx(node.pos); + this.visitChildren(node); + popSctx(); + return true; + }; + + this.CatchClause = function(node){ + pushSctx(node.pos); + var prefix = 'err'; + var uri = 'http://www.w3.org/2005/xqt-errors'; + var emptyPos = { sl: 0, sc: 0, el: 0, ec: 0 }; + sctx.addVariable({ prefix: prefix, uri: uri, name: 'code' }, 'CatchVar', emptyPos); + sctx.addVariable({ prefix: prefix, uri: uri, name: 'description' }, 'CatchVar', emptyPos); + sctx.addVariable({ prefix: prefix, uri: uri, name: 'value' }, 'CatchVar', emptyPos); + sctx.addVariable({ prefix: prefix, uri: uri, name: 'module' }, 'CatchVar', emptyPos); + sctx.addVariable({ prefix: prefix, uri: uri, name: 'line-number' }, 'CatchVar', emptyPos); + sctx.addVariable({ prefix: prefix, uri: uri, name: 'column-number' }, 'CatchVar', emptyPos); + sctx.addVariable({ prefix: prefix, uri: uri, name: 'additional' }, 'CatchVar', emptyPos); + this.visitChildren(node); + popSctx(); + return true; + }; + + this.Pragma = function(node){ + var qname = TreeOps.flatten(get(node, ['EQName'])[0]); + qname = rootStcx.resolveQName(qname, node); + var value = TreeOps.flatten(get(node, ['PragmaContents'])[0]); + if (qname.name === 'xqlint' && qname.uri === 'http://xqlint.io') { + pushSctx(node.pos); + var commands = value.match(/[a-zA-Z]+\(([^)]+)\)/g); + commands.forEach(function (command) { + var name = command.substring(0, command.indexOf('(')); + var args = command.substring(0, command.length - 1).substring(command.indexOf('(') + 1).split(',').map(function (val) { + return val.trim(); + }); + if (name === 'varrefs') { + args.forEach(function (arg) { + var qname = sctx.resolveQName(arg.substring(1), node.pos); + if (qname.uri !== '') { + sctx.root.namespaces[qname.uri].used = true; + } + sctx.addVarRef(qname, node.pos); + }); + } + }); + this.visitChildren(node); + popSctx(); + return true; + } + }; + + this.visit = function (node) { + var name = node.name; + var skip = false; + + if (typeof this[name] === 'function') { + skip = this[name](node) === true; + } + + if (!skip) { + this.visitChildren(node); + } + }; + + this.visitChildren = function (node, handler) { + for (var i = 0; i < node.children.length; i++) { + var child = node.children[i]; + if (handler !== undefined && typeof handler[child.name] === 'function') { + handler[child.name](child); + } else { + this.visit(child); + } + } + }; + + this.visit(ast); + Object.keys(rootStcx.variables).forEach(function(key){ + if(!rootStcx.varRefs[key] && (rootStcx.variables[key].annotations['http://www.w3.org/2005/xpath-functions#private'] || rootStcx.moduleNamespace === '') && rootStcx.variables[key].pos) { + addWarning('W03', 'Unused variable "' + rootStcx.variables[key].qname.name + '"', rootStcx.variables[key].pos); + } + }); + Object.keys(rootStcx.namespaces).forEach(function(uri){ + var namespace = rootStcx.namespaces[uri]; + if(namespace.used === undefined && !namespace.override && namespace.type === 'module') { + addWarning('W04', 'Unused module "' + uri + '"', namespace.pos); + } + }); +}; + +},{"../tree_ops":"/node_modules/xqlint/lib/tree_ops.js","./errors":"/node_modules/xqlint/lib/compiler/errors.js","./handlers":"/node_modules/xqlint/lib/compiler/handlers.js","./static_context":"/node_modules/xqlint/lib/compiler/static_context.js"}],"/node_modules/xqlint/lib/completion/completer.js":[function(_dereq_,module,exports){ +'use strict'; + +var TreeOps = _dereq_('../tree_ops').TreeOps; + +var ID_REGEX = /[a-zA-Z_0-9\$]/; + +function retrievePrecedingIdentifier(text, pos, regex) { + regex = regex || ID_REGEX; + var buf = []; + for (var i = pos-1; i >= 0; i--) { + if (regex.test(text[i])) { + buf.push(text[i]); + } else { + break; + } + } + return buf.reverse().join(''); +} + +function prefixBinarySearch(items, prefix) { + var startIndex = 0; + var stopIndex = items.length - 1; + var middle = Math.floor((stopIndex + startIndex) / 2); + + while (stopIndex > startIndex && middle >= 0 && items[middle].indexOf(prefix) !== 0) { + if (prefix < items[middle]) { + stopIndex = middle - 1; + } else if (prefix > items[middle]) { + startIndex = middle + 1; + } + middle = Math.floor((stopIndex + startIndex) / 2); + } + while (middle > 0 && items[middle-1].indexOf(prefix) === 0) { + middle--; + } + return middle >= 0 ? middle : 0; // ensure we're not returning a negative index +} + +var uriRegex = /[a-zA-Z_0-9\/\.:\-#]/; +var char = '-._A-Za-z0-9:\u00B7\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02ff\u0300-\u037D\u037F-\u1FFF\u200C\u200D\u203f\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD'; +var nameChar = '[' + char + ']'; +var varChar = '[' + char + '\\$]'; +var nameCharRegExp = new RegExp(nameChar); +var varCharRegExp = new RegExp(varChar); + +var varDeclLabels = { + 'LetBinding': 'Let binding', + 'Param': 'Function parameter', + 'QuantifiedExpr': 'Quantified expression binding', + 'VarDeclStatement': 'Local variable', + 'ForBinding': 'For binding', + 'TumblingWindowClause': 'Tumbling window binding', + 'WindowVars': 'Window variable', + 'SlidingWindowClause': 'Sliding window binding', + 'PositionalVar': 'Positional variable', + 'CurrentItem': 'Current item', + 'PreviousItem': 'Previous item', + 'NextItem': 'Next item', + 'CountClause': 'Count binding', + 'GroupingVariable': 'Grouping variable', + 'VarDecl': 'Module variable' +}; + +var findCompletions = function(prefix, allIdentifiers) { + allIdentifiers.sort(); + var startIdx = prefixBinarySearch(allIdentifiers, prefix); + var matches = []; + for (var i = startIdx; i < allIdentifiers.length && allIdentifiers[i].indexOf(prefix) === 0; i++) { + matches.push(allIdentifiers[i]); + } + return matches; +}; + + +var completePrefix = function(identifier, pos, sctx){ + var idx = identifier.indexOf(':'); + if(idx === -1) { + var prefixes = []; + var namespaces = sctx.getNamespaces(); + Object.keys(namespaces).forEach(function(key){ + if(namespaces[key].type === 'module' || key === 'http://www.w3.org/2005/xquery-local-functions') { + prefixes.push(namespaces[key].prefixes[0]); + } + }); + var matches = findCompletions(identifier, prefixes); + var match = function(name) { + return { + name: name + ':', + value: name + ':', + meta: 'prefix' + }; + }; + return matches.map(match); + } else { + return []; + } +}; + +var completeFunction = function(identifier, pos, sctx){ + var names = []; + var snippets = {}; + var functions = sctx.getFunctions(); + var uri = ''; + var prefix = ''; + var name = identifier; + var idx = identifier.indexOf(':'); + var defaultNamespace = false; + if(idx !== -1){ + prefix = identifier.substring(0, idx); + name = identifier.substring(idx + 1); + var ns = sctx.getNamespaceByPrefix(prefix); + if(ns){ + uri = sctx.getNamespaceByPrefix(prefix).uri; + } + } else { + defaultNamespace = true; + uri = sctx.root.defaultFunctionNamespace; + } + Object.keys(functions).forEach(function(key){ + var fn = functions[key]; + var ns = key.substring(0, key.indexOf('#')); + var name = key.substring(key.indexOf('#') + 1); + name = name.substring(0, name.indexOf('#')); + if(ns !== uri) { + return; + } + if(!defaultNamespace){ + name = sctx.getNamespaces()[ns].prefixes[0] + ':' + name; + } + name += '('; + var snippet = name; + snippet += fn.params.map(function(param, index){ + return '${' + (index + 1) + ':\\' + param.split(' ')[0] + '}'; + }).join(', '); + name += fn.params.join(', '); + name += ')'; + snippet += ')'; + names.push(name); + snippets[name] = snippet; + }); + var matches = findCompletions(identifier, names); + var match = function(name) { + return { + name: name, + value: name, + meta: 'function', + priority: 4, + identifierRegex: nameCharRegExp, + snippet: snippets[name] + }; + }; + return matches.map(match); +}; + +var completeVariable = function(identifier, pos, sctx){ + var uri = ''; + var prefix = ''; + var idx = identifier.indexOf(':'); + if(idx !== -1){ + prefix = identifier.substring(0, idx); + uri = sctx.getNamespaceByPrefix(prefix).uri; + } + var decls = sctx.getVariables(); + var names = []; + var types = {}; + Object.keys(decls).forEach(function(key){ + var i = key.indexOf('#'); + var ns = key.substring(0, i); + var name = key.substring(i+1); + if(ns !== ''){ + names.push(sctx.getPrefixesByNamespace(ns)[0] + ':' + name); + types[sctx.getPrefixesByNamespace(ns)[0] + ':' + name] = decls[key].type; + } else { + names.push(name); + types[name] = decls[key].type; + } + }); + + var matches = findCompletions(identifier, names); + var match = function(name) { + return { + name: '$' + name, + value: '$' + name, + meta: varDeclLabels[types[name]], + priority: 4, + identifierRegex: varCharRegExp + }; + }; + return matches.map(match); +}; + +var completeExpr = function(line, pos, sctx){ + var identifier = retrievePrecedingIdentifier(line, pos.col, nameCharRegExp); + var before = line.substring(0, pos.col - (identifier.length === 0 ? 0 : identifier.length)); + var isVar = before[before.length - 1] === '$'; + if(isVar) { + return completeVariable(identifier, pos, sctx); + } else if(identifier !== '') { + return completeFunction(identifier, pos, sctx).concat(completePrefix(identifier, pos, sctx)); + } else { + return completeVariable(identifier, pos, sctx).concat(completeFunction(identifier, pos, sctx)).concat(completePrefix(identifier, pos, sctx)); + } +}; + +var completeModuleUri = function(line, pos, sctx){ + var identifier = retrievePrecedingIdentifier(line, pos.col, uriRegex); + var matches = findCompletions(identifier, sctx.getAvailableModuleNamespaces()); + var match = function(uri) { + return { + name: uri, + value: uri, + meta: 'module', + priority: 4, + identifierRegex: uriRegex + }; + }; + return matches.map(match); +}; + +exports.complete = function(source, ast, rootSctx, pos){ + var line = source.split('\n')[pos.line]; + var node = TreeOps.findNode(ast, pos); + var sctx = TreeOps.findNode(rootSctx, pos); + sctx = sctx ? sctx : rootSctx; + if(node && node.name === 'URILiteral' && node.getParent && node.getParent.name === 'ModuleImport'){ + return completeModuleUri(line, pos, sctx); + } else { + return completeExpr(line, pos, sctx); + } +}; + +},{"../tree_ops":"/node_modules/xqlint/lib/tree_ops.js"}],"/node_modules/xqlint/lib/formatter/style_checker.js":[function(_dereq_,module,exports){ +exports.StyleChecker = function (ast, source) { + 'use strict'; + + var tab = ' '; + var markers = []; + + this.getMarkers = function(){ + return markers; + }; + + this.WS = function(node) { + var lines = node.value.split('\n'); + lines.forEach(function(line, index){ + var isFirst = index === 0; + var isLast = index === (lines.length - 1); + + if(/\r$/.test(line)) { + markers.push({ + pos: { + sl: node.pos.sl + index, + el: node.pos.sl + index, + sc: line.length - 1, + ec: line.length + }, + type: 'warning', + level: 'warning', + message: '[SW01] Detected CRLF' + }); + } + + var match = line.match(/\t+/); + if(match !== null){ + markers.push({ + pos: { + sl: node.pos.sl + index, + el: node.pos.sl + index, + sc: match.index, + ec: match.index + match[0].length + }, + type: 'warning', + level: 'warning', + message: '[SW02] Tabs detected' + }); + } + + if((!isFirst) && isLast){ + match = line.match(/^\ +/); + if(match !== null) { + var mod = match[0].length % tab.length; + if(mod !== 0) { + markers.push({ + pos: { + sl: node.pos.sl + index, + el: node.pos.sl + index, + sc: match.index, + ec: match.index + match[0].length + }, + type: 'warning', + level: 'warning', + message: '[SW03] Unexcepted indentation of ' + match[0].length + }); + } + } + } + }); + return true; + }; + + this.visit = function (node, index) { + var name = node.name; + var skip = false; + + if (typeof this[name] === 'function') { + skip = this[name](node, index) === true; + } + + if (!skip) { + this.visitChildren(node); + } + }; + + this.visitChildren = function (node, handler) { + for (var i = 0; i < node.children.length; i++) { + var child = node.children[i]; + if (handler !== undefined && typeof handler[child.name] === 'function') { + handler[child.name](child); + } else { + this.visit(child); + } + } + }; + + source.split('\n').forEach(function(line, index){ + var match = line.match(/\ +$/); + if(match){ + markers.push({ + pos: { + sl: index, + el: index, + sc: match.index, + ec: match.index + match[0].length + }, + type: 'warning', + level: 'warning', + message: '[SW04] Trailing whitespace' + }); + } + }); + this.visit(ast); +}; +},{}],"/node_modules/xqlint/lib/lexers/JSONiqTokenizer.js":[function(_dereq_,module,exports){ + var JSONiqTokenizer = exports.JSONiqTokenizer = function JSONiqTokenizer(string, parsingEventHandler) + { + init(string, parsingEventHandler); + var self = this; + + this.ParseException = function(b, e, s, o, x) + { + var + begin = b, + end = e, + state = s, + offending = o, + expected = x; + + this.getBegin = function() {return begin;}; + this.getEnd = function() {return end;}; + this.getState = function() {return state;}; + this.getExpected = function() {return expected;}; + this.getOffending = function() {return offending;}; + + this.getMessage = function() + { + return offending < 0 ? "lexical analysis failed" : "syntax error"; + }; + }; + + function init(string, parsingEventHandler) + { + eventHandler = parsingEventHandler; + input = string; + size = string.length; + reset(0, 0, 0); + } + + this.getInput = function() + { + return input; + }; + + function reset(l, b, e) + { + b0 = b; e0 = b; + l1 = l; b1 = b; e1 = e; + end = e; + eventHandler.reset(input); + } + + this.getOffendingToken = function(e) + { + var o = e.getOffending(); + return o >= 0 ? JSONiqTokenizer.TOKEN[o] : null; + }; + + this.getExpectedTokenSet = function(e) + { + var expected; + if (e.getExpected() < 0) + { + expected = JSONiqTokenizer.getTokenSet(- e.getState()); + } + else + { + expected = [JSONiqTokenizer.TOKEN[e.getExpected()]]; + } + return expected; + }; + + this.getErrorMessage = function(e) + { + var tokenSet = this.getExpectedTokenSet(e); + var found = this.getOffendingToken(e); + var prefix = input.substring(0, e.getBegin()); + var lines = prefix.split("\n"); + var line = lines.length; + var column = lines[line - 1].length + 1; + var size = e.getEnd() - e.getBegin(); + return e.getMessage() + + (found == null ? "" : ", found " + found) + + "\nwhile expecting " + + (tokenSet.length == 1 ? tokenSet[0] : ("[" + tokenSet.join(", ") + "]")) + + "\n" + + (size == 0 || found != null ? "" : "after successfully scanning " + size + " characters beginning ") + + "at line " + line + ", column " + column + ":\n..." + + input.substring(e.getBegin(), Math.min(input.length, e.getBegin() + 64)) + + "..."; + }; + + this.parse_start = function() + { + eventHandler.startNonterminal("start", e0); + lookahead1W(14); // ModuleDecl | Annotation | OptionDecl | Operator | Variable | Tag | AttrTest | + switch (l1) + { + case 58: // '' | '=' | '>' + switch (l1) + { + case 61: // '>' + shift(61); // '>' + break; + case 53: // '/>' + shift(53); // '/>' + break; + case 29: // QName + shift(29); // QName + break; + case 60: // '=' + shift(60); // '=' + break; + case 37: // '"' + shift(37); // '"' + break; + case 41: // "'" + shift(41); // "'" + break; + default: + shift(35); // EOF + } + eventHandler.endNonterminal("StartTag", e0); + }; + + this.parse_TagContent = function() + { + eventHandler.startNonterminal("TagContent", e0); + lookahead1(11); // Tag | EndTag | PredefinedEntityRef | ElementContentChar | CharRef | EOF | + switch (l1) + { + case 25: // ElementContentChar + shift(25); // ElementContentChar + break; + case 9: // Tag + shift(9); // Tag + break; + case 10: // EndTag + shift(10); // EndTag + break; + case 58: // '' + switch (l1) + { + case 14: // CDataSectionContents + shift(14); // CDataSectionContents + break; + case 67: // ']]>' + shift(67); // ']]>' + break; + default: + shift(35); // EOF + } + eventHandler.endNonterminal("CData", e0); + }; + + this.parse_XMLComment = function() + { + eventHandler.startNonterminal("XMLComment", e0); + lookahead1(0); // DirCommentContents | EOF | '-->' + switch (l1) + { + case 12: // DirCommentContents + shift(12); // DirCommentContents + break; + case 50: // '-->' + shift(50); // '-->' + break; + default: + shift(35); // EOF + } + eventHandler.endNonterminal("XMLComment", e0); + }; + + this.parse_PI = function() + { + eventHandler.startNonterminal("PI", e0); + lookahead1(3); // DirPIContents | EOF | '?' | '?>' + switch (l1) + { + case 13: // DirPIContents + shift(13); // DirPIContents + break; + case 62: // '?' + shift(62); // '?' + break; + case 63: // '?>' + shift(63); // '?>' + break; + default: + shift(35); // EOF + } + eventHandler.endNonterminal("PI", e0); + }; + + this.parse_Pragma = function() + { + eventHandler.startNonterminal("Pragma", e0); + lookahead1(2); // PragmaContents | EOF | '#' | '#)' + switch (l1) + { + case 11: // PragmaContents + shift(11); // PragmaContents + break; + case 38: // '#' + shift(38); // '#' + break; + case 39: // '#)' + shift(39); // '#)' + break; + default: + shift(35); // EOF + } + eventHandler.endNonterminal("Pragma", e0); + }; + + this.parse_Comment = function() + { + eventHandler.startNonterminal("Comment", e0); + lookahead1(4); // CommentContents | EOF | '(:' | ':)' + switch (l1) + { + case 55: // ':)' + shift(55); // ':)' + break; + case 44: // '(:' + shift(44); // '(:' + break; + case 32: // CommentContents + shift(32); // CommentContents + break; + default: + shift(35); // EOF + } + eventHandler.endNonterminal("Comment", e0); + }; + + this.parse_CommentDoc = function() + { + eventHandler.startNonterminal("CommentDoc", e0); + lookahead1(6); // DocTag | DocCommentContents | EOF | '(:' | ':)' + switch (l1) + { + case 33: // DocTag + shift(33); // DocTag + break; + case 34: // DocCommentContents + shift(34); // DocCommentContents + break; + case 55: // ':)' + shift(55); // ':)' + break; + case 44: // '(:' + shift(44); // '(:' + break; + default: + shift(35); // EOF + } + eventHandler.endNonterminal("CommentDoc", e0); + }; + + this.parse_QuotString = function() + { + eventHandler.startNonterminal("QuotString", e0); + lookahead1(5); // JSONChar | JSONCharRef | JSONPredefinedCharRef | EOF | '"' + switch (l1) + { + case 3: // JSONPredefinedCharRef + shift(3); // JSONPredefinedCharRef + break; + case 2: // JSONCharRef + shift(2); // JSONCharRef + break; + case 1: // JSONChar + shift(1); // JSONChar + break; + case 37: // '"' + shift(37); // '"' + break; + default: + shift(35); // EOF + } + eventHandler.endNonterminal("QuotString", e0); + }; + + this.parse_AposString = function() + { + eventHandler.startNonterminal("AposString", e0); + lookahead1(7); // PredefinedEntityRef | EscapeApos | AposChar | CharRef | EOF | "'" + switch (l1) + { + case 21: // PredefinedEntityRef + shift(21); // PredefinedEntityRef + break; + case 31: // CharRef + shift(31); // CharRef + break; + case 23: // EscapeApos + shift(23); // EscapeApos + break; + case 24: // AposChar + shift(24); // AposChar + break; + case 41: // "'" + shift(41); // "'" + break; + default: + shift(35); // EOF + } + eventHandler.endNonterminal("AposString", e0); + }; + + this.parse_Prefix = function() + { + eventHandler.startNonterminal("Prefix", e0); + lookahead1W(13); // NCName^Token | S^WS | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + whitespace(); + parse_NCName(); + eventHandler.endNonterminal("Prefix", e0); + }; + + this.parse__EQName = function() + { + eventHandler.startNonterminal("_EQName", e0); + lookahead1W(12); // EQName^Token | S^WS | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + whitespace(); + parse_EQName(); + eventHandler.endNonterminal("_EQName", e0); + }; + + function parse_EQName() + { + eventHandler.startNonterminal("EQName", e0); + switch (l1) + { + case 80: // 'attribute' + shift(80); // 'attribute' + break; + case 94: // 'comment' + shift(94); // 'comment' + break; + case 118: // 'document-node' + shift(118); // 'document-node' + break; + case 119: // 'element' + shift(119); // 'element' + break; + case 122: // 'empty-sequence' + shift(122); // 'empty-sequence' + break; + case 143: // 'function' + shift(143); // 'function' + break; + case 150: // 'if' + shift(150); // 'if' + break; + case 163: // 'item' + shift(163); // 'item' + break; + case 183: // 'namespace-node' + shift(183); // 'namespace-node' + break; + case 189: // 'node' + shift(189); // 'node' + break; + case 214: // 'processing-instruction' + shift(214); // 'processing-instruction' + break; + case 224: // 'schema-attribute' + shift(224); // 'schema-attribute' + break; + case 225: // 'schema-element' + shift(225); // 'schema-element' + break; + case 241: // 'switch' + shift(241); // 'switch' + break; + case 242: // 'text' + shift(242); // 'text' + break; + case 251: // 'typeswitch' + shift(251); // 'typeswitch' + break; + default: + parse_FunctionName(); + } + eventHandler.endNonterminal("EQName", e0); + } + + function parse_FunctionName() + { + eventHandler.startNonterminal("FunctionName", e0); + switch (l1) + { + case 17: // EQName^Token + shift(17); // EQName^Token + break; + case 68: // 'after' + shift(68); // 'after' + break; + case 71: // 'ancestor' + shift(71); // 'ancestor' + break; + case 72: // 'ancestor-or-self' + shift(72); // 'ancestor-or-self' + break; + case 73: // 'and' + shift(73); // 'and' + break; + case 77: // 'as' + shift(77); // 'as' + break; + case 78: // 'ascending' + shift(78); // 'ascending' + break; + case 82: // 'before' + shift(82); // 'before' + break; + case 86: // 'case' + shift(86); // 'case' + break; + case 87: // 'cast' + shift(87); // 'cast' + break; + case 88: // 'castable' + shift(88); // 'castable' + break; + case 91: // 'child' + shift(91); // 'child' + break; + case 92: // 'collation' + shift(92); // 'collation' + break; + case 101: // 'copy' + shift(101); // 'copy' + break; + case 103: // 'count' + shift(103); // 'count' + break; + case 106: // 'declare' + shift(106); // 'declare' + break; + case 107: // 'default' + shift(107); // 'default' + break; + case 108: // 'delete' + shift(108); // 'delete' + break; + case 109: // 'descendant' + shift(109); // 'descendant' + break; + case 110: // 'descendant-or-self' + shift(110); // 'descendant-or-self' + break; + case 111: // 'descending' + shift(111); // 'descending' + break; + case 116: // 'div' + shift(116); // 'div' + break; + case 117: // 'document' + shift(117); // 'document' + break; + case 120: // 'else' + shift(120); // 'else' + break; + case 121: // 'empty' + shift(121); // 'empty' + break; + case 124: // 'end' + shift(124); // 'end' + break; + case 126: // 'eq' + shift(126); // 'eq' + break; + case 127: // 'every' + shift(127); // 'every' + break; + case 129: // 'except' + shift(129); // 'except' + break; + case 132: // 'first' + shift(132); // 'first' + break; + case 133: // 'following' + shift(133); // 'following' + break; + case 134: // 'following-sibling' + shift(134); // 'following-sibling' + break; + case 135: // 'for' + shift(135); // 'for' + break; + case 144: // 'ge' + shift(144); // 'ge' + break; + case 146: // 'group' + shift(146); // 'group' + break; + case 148: // 'gt' + shift(148); // 'gt' + break; + case 149: // 'idiv' + shift(149); // 'idiv' + break; + case 151: // 'import' + shift(151); // 'import' + break; + case 157: // 'insert' + shift(157); // 'insert' + break; + case 158: // 'instance' + shift(158); // 'instance' + break; + case 160: // 'intersect' + shift(160); // 'intersect' + break; + case 161: // 'into' + shift(161); // 'into' + break; + case 162: // 'is' + shift(162); // 'is' + break; + case 168: // 'last' + shift(168); // 'last' + break; + case 170: // 'le' + shift(170); // 'le' + break; + case 172: // 'let' + shift(172); // 'let' + break; + case 176: // 'lt' + shift(176); // 'lt' + break; + case 178: // 'mod' + shift(178); // 'mod' + break; + case 179: // 'modify' + shift(179); // 'modify' + break; + case 180: // 'module' + shift(180); // 'module' + break; + case 182: // 'namespace' + shift(182); // 'namespace' + break; + case 184: // 'ne' + shift(184); // 'ne' + break; + case 196: // 'only' + shift(196); // 'only' + break; + case 198: // 'or' + shift(198); // 'or' + break; + case 199: // 'order' + shift(199); // 'order' + break; + case 200: // 'ordered' + shift(200); // 'ordered' + break; + case 204: // 'parent' + shift(204); // 'parent' + break; + case 210: // 'preceding' + shift(210); // 'preceding' + break; + case 211: // 'preceding-sibling' + shift(211); // 'preceding-sibling' + break; + case 216: // 'rename' + shift(216); // 'rename' + break; + case 217: // 'replace' + shift(217); // 'replace' + break; + case 218: // 'return' + shift(218); // 'return' + break; + case 222: // 'satisfies' + shift(222); // 'satisfies' + break; + case 227: // 'self' + shift(227); // 'self' + break; + case 233: // 'some' + shift(233); // 'some' + break; + case 234: // 'stable' + shift(234); // 'stable' + break; + case 235: // 'start' + shift(235); // 'start' + break; + case 246: // 'to' + shift(246); // 'to' + break; + case 247: // 'treat' + shift(247); // 'treat' + break; + case 248: // 'try' + shift(248); // 'try' + break; + case 252: // 'union' + shift(252); // 'union' + break; + case 254: // 'unordered' + shift(254); // 'unordered' + break; + case 258: // 'validate' + shift(258); // 'validate' + break; + case 264: // 'where' + shift(264); // 'where' + break; + case 268: // 'with' + shift(268); // 'with' + break; + case 272: // 'xquery' + shift(272); // 'xquery' + break; + case 70: // 'allowing' + shift(70); // 'allowing' + break; + case 79: // 'at' + shift(79); // 'at' + break; + case 81: // 'base-uri' + shift(81); // 'base-uri' + break; + case 83: // 'boundary-space' + shift(83); // 'boundary-space' + break; + case 84: // 'break' + shift(84); // 'break' + break; + case 89: // 'catch' + shift(89); // 'catch' + break; + case 96: // 'construction' + shift(96); // 'construction' + break; + case 99: // 'context' + shift(99); // 'context' + break; + case 100: // 'continue' + shift(100); // 'continue' + break; + case 102: // 'copy-namespaces' + shift(102); // 'copy-namespaces' + break; + case 104: // 'decimal-format' + shift(104); // 'decimal-format' + break; + case 123: // 'encoding' + shift(123); // 'encoding' + break; + case 130: // 'exit' + shift(130); // 'exit' + break; + case 131: // 'external' + shift(131); // 'external' + break; + case 139: // 'ft-option' + shift(139); // 'ft-option' + break; + case 152: // 'in' + shift(152); // 'in' + break; + case 153: // 'index' + shift(153); // 'index' + break; + case 159: // 'integrity' + shift(159); // 'integrity' + break; + case 169: // 'lax' + shift(169); // 'lax' + break; + case 190: // 'nodes' + shift(190); // 'nodes' + break; + case 197: // 'option' + shift(197); // 'option' + break; + case 201: // 'ordering' + shift(201); // 'ordering' + break; + case 220: // 'revalidation' + shift(220); // 'revalidation' + break; + case 223: // 'schema' + shift(223); // 'schema' + break; + case 226: // 'score' + shift(226); // 'score' + break; + case 232: // 'sliding' + shift(232); // 'sliding' + break; + case 238: // 'strict' + shift(238); // 'strict' + break; + case 249: // 'tumbling' + shift(249); // 'tumbling' + break; + case 250: // 'type' + shift(250); // 'type' + break; + case 255: // 'updating' + shift(255); // 'updating' + break; + case 259: // 'value' + shift(259); // 'value' + break; + case 260: // 'variable' + shift(260); // 'variable' + break; + case 261: // 'version' + shift(261); // 'version' + break; + case 265: // 'while' + shift(265); // 'while' + break; + case 95: // 'constraint' + shift(95); // 'constraint' + break; + case 174: // 'loop' + shift(174); // 'loop' + break; + default: + shift(219); // 'returning' + } + eventHandler.endNonterminal("FunctionName", e0); + } + + function parse_NCName() + { + eventHandler.startNonterminal("NCName", e0); + switch (l1) + { + case 28: // NCName^Token + shift(28); // NCName^Token + break; + case 68: // 'after' + shift(68); // 'after' + break; + case 73: // 'and' + shift(73); // 'and' + break; + case 77: // 'as' + shift(77); // 'as' + break; + case 78: // 'ascending' + shift(78); // 'ascending' + break; + case 82: // 'before' + shift(82); // 'before' + break; + case 86: // 'case' + shift(86); // 'case' + break; + case 87: // 'cast' + shift(87); // 'cast' + break; + case 88: // 'castable' + shift(88); // 'castable' + break; + case 92: // 'collation' + shift(92); // 'collation' + break; + case 103: // 'count' + shift(103); // 'count' + break; + case 107: // 'default' + shift(107); // 'default' + break; + case 111: // 'descending' + shift(111); // 'descending' + break; + case 116: // 'div' + shift(116); // 'div' + break; + case 120: // 'else' + shift(120); // 'else' + break; + case 121: // 'empty' + shift(121); // 'empty' + break; + case 124: // 'end' + shift(124); // 'end' + break; + case 126: // 'eq' + shift(126); // 'eq' + break; + case 129: // 'except' + shift(129); // 'except' + break; + case 135: // 'for' + shift(135); // 'for' + break; + case 144: // 'ge' + shift(144); // 'ge' + break; + case 146: // 'group' + shift(146); // 'group' + break; + case 148: // 'gt' + shift(148); // 'gt' + break; + case 149: // 'idiv' + shift(149); // 'idiv' + break; + case 158: // 'instance' + shift(158); // 'instance' + break; + case 160: // 'intersect' + shift(160); // 'intersect' + break; + case 161: // 'into' + shift(161); // 'into' + break; + case 162: // 'is' + shift(162); // 'is' + break; + case 170: // 'le' + shift(170); // 'le' + break; + case 172: // 'let' + shift(172); // 'let' + break; + case 176: // 'lt' + shift(176); // 'lt' + break; + case 178: // 'mod' + shift(178); // 'mod' + break; + case 179: // 'modify' + shift(179); // 'modify' + break; + case 184: // 'ne' + shift(184); // 'ne' + break; + case 196: // 'only' + shift(196); // 'only' + break; + case 198: // 'or' + shift(198); // 'or' + break; + case 199: // 'order' + shift(199); // 'order' + break; + case 218: // 'return' + shift(218); // 'return' + break; + case 222: // 'satisfies' + shift(222); // 'satisfies' + break; + case 234: // 'stable' + shift(234); // 'stable' + break; + case 235: // 'start' + shift(235); // 'start' + break; + case 246: // 'to' + shift(246); // 'to' + break; + case 247: // 'treat' + shift(247); // 'treat' + break; + case 252: // 'union' + shift(252); // 'union' + break; + case 264: // 'where' + shift(264); // 'where' + break; + case 268: // 'with' + shift(268); // 'with' + break; + case 71: // 'ancestor' + shift(71); // 'ancestor' + break; + case 72: // 'ancestor-or-self' + shift(72); // 'ancestor-or-self' + break; + case 80: // 'attribute' + shift(80); // 'attribute' + break; + case 91: // 'child' + shift(91); // 'child' + break; + case 94: // 'comment' + shift(94); // 'comment' + break; + case 101: // 'copy' + shift(101); // 'copy' + break; + case 106: // 'declare' + shift(106); // 'declare' + break; + case 108: // 'delete' + shift(108); // 'delete' + break; + case 109: // 'descendant' + shift(109); // 'descendant' + break; + case 110: // 'descendant-or-self' + shift(110); // 'descendant-or-self' + break; + case 117: // 'document' + shift(117); // 'document' + break; + case 118: // 'document-node' + shift(118); // 'document-node' + break; + case 119: // 'element' + shift(119); // 'element' + break; + case 122: // 'empty-sequence' + shift(122); // 'empty-sequence' + break; + case 127: // 'every' + shift(127); // 'every' + break; + case 132: // 'first' + shift(132); // 'first' + break; + case 133: // 'following' + shift(133); // 'following' + break; + case 134: // 'following-sibling' + shift(134); // 'following-sibling' + break; + case 143: // 'function' + shift(143); // 'function' + break; + case 150: // 'if' + shift(150); // 'if' + break; + case 151: // 'import' + shift(151); // 'import' + break; + case 157: // 'insert' + shift(157); // 'insert' + break; + case 163: // 'item' + shift(163); // 'item' + break; + case 168: // 'last' + shift(168); // 'last' + break; + case 180: // 'module' + shift(180); // 'module' + break; + case 182: // 'namespace' + shift(182); // 'namespace' + break; + case 183: // 'namespace-node' + shift(183); // 'namespace-node' + break; + case 189: // 'node' + shift(189); // 'node' + break; + case 200: // 'ordered' + shift(200); // 'ordered' + break; + case 204: // 'parent' + shift(204); // 'parent' + break; + case 210: // 'preceding' + shift(210); // 'preceding' + break; + case 211: // 'preceding-sibling' + shift(211); // 'preceding-sibling' + break; + case 214: // 'processing-instruction' + shift(214); // 'processing-instruction' + break; + case 216: // 'rename' + shift(216); // 'rename' + break; + case 217: // 'replace' + shift(217); // 'replace' + break; + case 224: // 'schema-attribute' + shift(224); // 'schema-attribute' + break; + case 225: // 'schema-element' + shift(225); // 'schema-element' + break; + case 227: // 'self' + shift(227); // 'self' + break; + case 233: // 'some' + shift(233); // 'some' + break; + case 241: // 'switch' + shift(241); // 'switch' + break; + case 242: // 'text' + shift(242); // 'text' + break; + case 248: // 'try' + shift(248); // 'try' + break; + case 251: // 'typeswitch' + shift(251); // 'typeswitch' + break; + case 254: // 'unordered' + shift(254); // 'unordered' + break; + case 258: // 'validate' + shift(258); // 'validate' + break; + case 260: // 'variable' + shift(260); // 'variable' + break; + case 272: // 'xquery' + shift(272); // 'xquery' + break; + case 70: // 'allowing' + shift(70); // 'allowing' + break; + case 79: // 'at' + shift(79); // 'at' + break; + case 81: // 'base-uri' + shift(81); // 'base-uri' + break; + case 83: // 'boundary-space' + shift(83); // 'boundary-space' + break; + case 84: // 'break' + shift(84); // 'break' + break; + case 89: // 'catch' + shift(89); // 'catch' + break; + case 96: // 'construction' + shift(96); // 'construction' + break; + case 99: // 'context' + shift(99); // 'context' + break; + case 100: // 'continue' + shift(100); // 'continue' + break; + case 102: // 'copy-namespaces' + shift(102); // 'copy-namespaces' + break; + case 104: // 'decimal-format' + shift(104); // 'decimal-format' + break; + case 123: // 'encoding' + shift(123); // 'encoding' + break; + case 130: // 'exit' + shift(130); // 'exit' + break; + case 131: // 'external' + shift(131); // 'external' + break; + case 139: // 'ft-option' + shift(139); // 'ft-option' + break; + case 152: // 'in' + shift(152); // 'in' + break; + case 153: // 'index' + shift(153); // 'index' + break; + case 159: // 'integrity' + shift(159); // 'integrity' + break; + case 169: // 'lax' + shift(169); // 'lax' + break; + case 190: // 'nodes' + shift(190); // 'nodes' + break; + case 197: // 'option' + shift(197); // 'option' + break; + case 201: // 'ordering' + shift(201); // 'ordering' + break; + case 220: // 'revalidation' + shift(220); // 'revalidation' + break; + case 223: // 'schema' + shift(223); // 'schema' + break; + case 226: // 'score' + shift(226); // 'score' + break; + case 232: // 'sliding' + shift(232); // 'sliding' + break; + case 238: // 'strict' + shift(238); // 'strict' + break; + case 249: // 'tumbling' + shift(249); // 'tumbling' + break; + case 250: // 'type' + shift(250); // 'type' + break; + case 255: // 'updating' + shift(255); // 'updating' + break; + case 259: // 'value' + shift(259); // 'value' + break; + case 261: // 'version' + shift(261); // 'version' + break; + case 265: // 'while' + shift(265); // 'while' + break; + case 95: // 'constraint' + shift(95); // 'constraint' + break; + case 174: // 'loop' + shift(174); // 'loop' + break; + default: + shift(219); // 'returning' + } + eventHandler.endNonterminal("NCName", e0); + } + + function shift(t) + { + if (l1 == t) + { + whitespace(); + eventHandler.terminal(JSONiqTokenizer.TOKEN[l1], b1, e1 > size ? size : e1); + b0 = b1; e0 = e1; l1 = 0; + } + else + { + error(b1, e1, 0, l1, t); + } + } + + function whitespace() + { + if (e0 != b1) + { + b0 = e0; + e0 = b1; + eventHandler.whitespace(b0, e0); + } + } + + function matchW(set) + { + var code; + for (;;) + { + code = match(set); + if (code != 30) // S^WS + { + break; + } + } + return code; + } + + function lookahead1W(set) + { + if (l1 == 0) + { + l1 = matchW(set); + b1 = begin; + e1 = end; + } + } + + function lookahead1(set) + { + if (l1 == 0) + { + l1 = match(set); + b1 = begin; + e1 = end; + } + } + + function error(b, e, s, l, t) + { + throw new self.ParseException(b, e, s, l, t); + } + + var lk, b0, e0; + var l1, b1, e1; + var eventHandler; + + var input; + var size; + var begin; + var end; + + function match(tokenSetId) + { + var nonbmp = false; + begin = end; + var current = end; + var result = JSONiqTokenizer.INITIAL[tokenSetId]; + var state = 0; + + for (var code = result & 4095; code != 0; ) + { + var charclass; + var c0 = current < size ? input.charCodeAt(current) : 0; + ++current; + if (c0 < 0x80) + { + charclass = JSONiqTokenizer.MAP0[c0]; + } + else if (c0 < 0xd800) + { + var c1 = c0 >> 4; + charclass = JSONiqTokenizer.MAP1[(c0 & 15) + JSONiqTokenizer.MAP1[(c1 & 31) + JSONiqTokenizer.MAP1[c1 >> 5]]]; + } + else + { + if (c0 < 0xdc00) + { + var c1 = current < size ? input.charCodeAt(current) : 0; + if (c1 >= 0xdc00 && c1 < 0xe000) + { + ++current; + c0 = ((c0 & 0x3ff) << 10) + (c1 & 0x3ff) + 0x10000; + nonbmp = true; + } + } + var lo = 0, hi = 5; + for (var m = 3; ; m = (hi + lo) >> 1) + { + if (JSONiqTokenizer.MAP2[m] > c0) hi = m - 1; + else if (JSONiqTokenizer.MAP2[6 + m] < c0) lo = m + 1; + else {charclass = JSONiqTokenizer.MAP2[12 + m]; break;} + if (lo > hi) {charclass = 0; break;} + } + } + + state = code; + var i0 = (charclass << 12) + code - 1; + code = JSONiqTokenizer.TRANSITION[(i0 & 15) + JSONiqTokenizer.TRANSITION[i0 >> 4]]; + + if (code > 4095) + { + result = code; + code &= 4095; + end = current; + } + } + + result >>= 12; + if (result == 0) + { + end = current - 1; + var c1 = end < size ? input.charCodeAt(end) : 0; + if (c1 >= 0xdc00 && c1 < 0xe000) --end; + return error(begin, end, state, -1, -1); + } + + if (nonbmp) + { + for (var i = result >> 9; i > 0; --i) + { + --end; + var c1 = end < size ? input.charCodeAt(end) : 0; + if (c1 >= 0xdc00 && c1 < 0xe000) --end; + } + } + else + { + end -= result >> 9; + } + + return (result & 511) - 1; + } +} + +JSONiqTokenizer.getTokenSet = function(tokenSetId) +{ + var set = []; + var s = tokenSetId < 0 ? - tokenSetId : INITIAL[tokenSetId] & 4095; + for (var i = 0; i < 279; i += 32) + { + var j = i; + var i0 = (i >> 5) * 2066 + s - 1; + var i1 = i0 >> 2; + var i2 = i1 >> 2; + var f = JSONiqTokenizer.EXPECTED[(i0 & 3) + JSONiqTokenizer.EXPECTED[(i1 & 3) + JSONiqTokenizer.EXPECTED[(i2 & 3) + JSONiqTokenizer.EXPECTED[i2 >> 2]]]]; + for ( ; f != 0; f >>>= 1, ++j) + { + if ((f & 1) != 0) + { + set.push(JSONiqTokenizer.TOKEN[j]); + } + } + } + return set; +}; + +JSONiqTokenizer.MAP0 = +[ 67, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 27, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 32, 31, 31, 33, 31, 31, 31, 31, 31, 31, 34, 35, 36, 37, 31, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 31, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 31, 62, 63, 64, 65, 37 +]; + +JSONiqTokenizer.MAP1 = +[ 108, 124, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 156, 181, 181, 181, 181, 181, 214, 215, 213, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 247, 261, 277, 293, 309, 347, 363, 379, 416, 416, 416, 408, 331, 323, 331, 323, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 433, 433, 433, 433, 433, 433, 433, 316, 331, 331, 331, 331, 331, 331, 331, 331, 394, 416, 416, 417, 415, 416, 416, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 330, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 416, 67, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 27, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 37, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 32, 31, 31, 33, 31, 31, 31, 31, 31, 31, 34, 35, 36, 37, 31, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 31, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 31, 62, 63, 64, 65, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 31, 31, 37, 37, 37, 37, 37, 37, 37, 66, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66 +]; + +JSONiqTokenizer.MAP2 = +[ 57344, 63744, 64976, 65008, 65536, 983040, 63743, 64975, 65007, 65533, 983039, 1114111, 37, 31, 37, 31, 31, 37 +]; + +JSONiqTokenizer.INITIAL = +[ 1, 2, 49155, 57348, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 +]; + +JSONiqTokenizer.TRANSITION = +[ 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 17408, 19288, 17439, 36866, 17466, 36890, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 22126, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17672, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 19469, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 36919, 18234, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18419, 18432, 18304, 18448, 18485, 18523, 18553, 18583, 18599, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 18825, 18841, 18871, 18906, 18944, 18960, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19074, 36169, 17439, 36866, 17466, 36890, 36866, 22314, 19105, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 22126, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17672, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 19469, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 36919, 18234, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18419, 18432, 18304, 18448, 18485, 18523, 18553, 18583, 18599, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 18825, 18841, 18871, 18906, 18944, 18960, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22182, 19288, 19121, 36866, 17466, 18345, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19273, 19552, 19304, 36866, 17466, 36890, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19332, 17423, 19363, 36866, 17466, 17537, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 18614, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 19391, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 19427, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36154, 19288, 19457, 36866, 17466, 17740, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22780, 19288, 19457, 36866, 17466, 36890, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22375, 22197, 18469, 36866, 17466, 36890, 36866, 21991, 24018, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 21331, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 19485, 19501, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19537, 22390, 19568, 36866, 17466, 36890, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19596, 19611, 19457, 36866, 17466, 36890, 36866, 18246, 19627, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22242, 20553, 19457, 36866, 17466, 36890, 36866, 18648, 30477, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36472, 19288, 19457, 36866, 17466, 17809, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 21770, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 19643, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 19672, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 20538, 19288, 19457, 36866, 17466, 36890, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 17975, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22345, 19288, 19457, 36866, 17466, 36890, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19726, 19742, 21529, 24035, 23112, 26225, 23511, 27749, 27397, 24035, 34360, 24035, 24036, 23114, 35166, 23114, 23114, 19758, 23511, 35247, 23511, 23511, 28447, 19803, 24035, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23114, 24254, 19821, 23511, 23511, 23511, 23511, 23512, 19441, 36539, 24035, 24035, 24035, 24035, 19846, 19869, 23114, 23114, 23114, 28618, 32187, 19892, 23511, 23511, 23511, 34585, 20402, 36647, 24035, 24035, 24036, 23114, 33757, 23114, 23114, 23029, 20271, 23511, 27070, 23511, 23511, 30562, 24035, 24035, 29274, 26576, 23114, 23114, 31118, 23036, 29695, 23511, 23511, 32431, 23634, 30821, 24035, 23110, 19913, 23114, 23467, 31261, 23261, 34299, 19932, 24035, 32609, 19965, 35389, 19984, 27689, 19830, 29391, 29337, 20041, 22643, 35619, 33728, 20062, 20121, 20166, 35100, 26145, 20211, 23008, 19876, 20208, 20227, 25670, 20132, 26578, 27685, 20141, 20243, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36094, 19288, 19457, 36866, 17466, 21724, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22735, 19552, 20287, 36866, 17466, 36890, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22750, 19288, 21529, 24035, 23112, 28056, 23511, 29483, 28756, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 20327, 23511, 23511, 23511, 23511, 31156, 19803, 24035, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23114, 24254, 20371, 23511, 23511, 23511, 23511, 27443, 20395, 24035, 24035, 24035, 24035, 24035, 23113, 23114, 23114, 23114, 23114, 29457, 29700, 23511, 23511, 23511, 23511, 33444, 20402, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 28350, 20421, 23511, 23511, 23511, 23511, 25645, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 20447, 20475, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 20499, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 20523, 22257, 20569, 20783, 21715, 17603, 20699, 20837, 20614, 20630, 21149, 20670, 21405, 17486, 17509, 17525, 18373, 19179, 20695, 20716, 20732, 20755, 19194, 18042, 21641, 20592, 20779, 20598, 21412, 17470, 17591, 20896, 17468, 17619, 20799, 20700, 21031, 20744, 20699, 20828, 18075, 21259, 20581, 20853, 18048, 20868, 20884, 17756, 17784, 17800, 17825, 17854, 21171, 21200, 20931, 20947, 21378, 20955, 20971, 18086, 20645, 21002, 20986, 18178, 17960, 18012, 18381, 18064, 29176, 21044, 21438, 21018, 21122, 21393, 21060, 21844, 21094, 20654, 17493, 18150, 18166, 18214, 25967, 20763, 21799, 21110, 21830, 21138, 21246, 21301, 18336, 18361, 21165, 21187, 20812, 21216, 21232, 21287, 21317, 18553, 21347, 21363, 21428, 21454, 21271, 21483, 21499, 21515, 21575, 21467, 18712, 21591, 21633, 21078, 18189, 18198, 20679, 21657, 21701, 21074, 21687, 21740, 21756, 21786, 21815, 21860, 21876, 21892, 21946, 21962, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36457, 19288, 19457, 36866, 17466, 36890, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 36813, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 21981, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 22151, 22007, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 27898, 17884, 18890, 17906, 17928, 22042, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 22070, 22112, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 22142, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36109, 19288, 18469, 36866, 17466, 36890, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22167, 19288, 19457, 36866, 17466, 17768, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22227, 36487, 22273, 36866, 17466, 36890, 36866, 19316, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18749, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 22304, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 19580, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22330, 19089, 19457, 36866, 17466, 18721, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22765, 19347, 19457, 36866, 17466, 36890, 36866, 18114, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36079, 19288, 21605, 24035, 23112, 32618, 23511, 29483, 29939, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 22420, 23511, 23511, 23511, 23511, 29116, 19803, 24035, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23114, 33811, 22468, 23511, 23511, 23511, 23511, 27443, 22493, 24035, 24035, 24035, 24035, 24035, 23113, 23114, 23114, 23114, 23114, 28618, 29700, 23511, 23511, 23511, 23511, 34541, 20402, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 23029, 22839, 23511, 23511, 23511, 23511, 25645, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 32683, 22516, 23511, 23511, 23511, 22540, 24035, 24035, 23110, 23114, 23114, 20499, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36079, 19288, 21605, 24035, 23112, 32618, 23511, 29483, 29939, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 22420, 23511, 23511, 23511, 23511, 29116, 19803, 24035, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23114, 33811, 22468, 23511, 23511, 23511, 23511, 27443, 22493, 24035, 24035, 24035, 24035, 24035, 23113, 23114, 23114, 23114, 23114, 28618, 29700, 23511, 23511, 23511, 23511, 34564, 20402, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 23029, 22839, 23511, 23511, 23511, 23511, 25645, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 32683, 22516, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 20499, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36079, 19288, 21605, 24035, 23112, 32618, 23511, 29483, 29939, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 22420, 23511, 23511, 23511, 23511, 29908, 19803, 24035, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23114, 33811, 22468, 23511, 23511, 23511, 23511, 27443, 22493, 24035, 24035, 24035, 24035, 24035, 23113, 23114, 23114, 23114, 23114, 28618, 29700, 23511, 23511, 23511, 23511, 34564, 20402, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 23029, 22839, 23511, 23511, 23511, 23511, 25645, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 32683, 22516, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 20499, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36079, 19288, 21605, 24035, 23112, 32618, 23511, 29483, 29939, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 22420, 23511, 23511, 23511, 23511, 29116, 19803, 24035, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23114, 33811, 22468, 23511, 23511, 23511, 23511, 27443, 22561, 24035, 24035, 24035, 24035, 24035, 23113, 23114, 23114, 23114, 23114, 28618, 29700, 23511, 23511, 23511, 23511, 34564, 20402, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 23029, 22839, 23511, 23511, 23511, 23511, 25645, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 32683, 22516, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 20499, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36079, 19288, 21605, 24035, 23112, 23837, 23511, 29483, 29939, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 22584, 23511, 23511, 23511, 23511, 29116, 19803, 24035, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23114, 33811, 22468, 23511, 23511, 23511, 23511, 27443, 22493, 24035, 24035, 24035, 24035, 24035, 23113, 23114, 23114, 23114, 23114, 28618, 29700, 23511, 23511, 23511, 23511, 34564, 20402, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 23029, 22839, 23511, 23511, 23511, 23511, 25645, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 32683, 22516, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 20499, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36079, 19288, 21605, 24035, 23112, 32618, 23511, 31507, 29939, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 22420, 23511, 23511, 23511, 23511, 28306, 19803, 24035, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23114, 33811, 22468, 23511, 23511, 23511, 23511, 23512, 24694, 24035, 24035, 24035, 24035, 24035, 23113, 23114, 23114, 23114, 23114, 28618, 29700, 23511, 23511, 23511, 23511, 34585, 20402, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 23029, 20271, 23511, 23511, 23511, 23511, 30562, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23036, 29695, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 23467, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36442, 19288, 21605, 24035, 23112, 28137, 23511, 31507, 29939, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 22420, 23511, 23511, 23511, 23511, 28306, 19803, 24035, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23114, 33811, 22468, 23511, 23511, 23511, 23511, 23512, 24694, 24035, 24035, 24035, 24035, 24035, 23113, 23114, 23114, 23114, 23114, 28618, 29700, 23511, 23511, 23511, 23511, 34585, 20402, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 23029, 20271, 23511, 23511, 23511, 23511, 30562, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23036, 29695, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 23467, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36079, 19288, 21605, 24035, 23112, 32618, 23511, 31507, 29939, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 22420, 23511, 23511, 23511, 23511, 28306, 19803, 24035, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23114, 33811, 22468, 23511, 23511, 23511, 23511, 23512, 24694, 24035, 24035, 24035, 24035, 24035, 23113, 23114, 23114, 23114, 23114, 28618, 29700, 23511, 23511, 23511, 23511, 34585, 20402, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 23029, 20271, 23511, 23511, 23511, 23511, 31568, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23036, 29695, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 23467, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22690, 19288, 19457, 36866, 17466, 36890, 36866, 21991, 27584, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 22659, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22360, 19552, 19457, 36866, 17466, 36890, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22675, 22811, 19457, 36866, 17466, 36890, 36866, 19133, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 22827, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36139, 19288, 19457, 36866, 17466, 36890, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36064, 19288, 22865, 22881, 32031, 22897, 22913, 22956, 29939, 24035, 24035, 24035, 23003, 23114, 23114, 23114, 23024, 22420, 23511, 23511, 23511, 23052, 29116, 23073, 29268, 24035, 25563, 26915, 23106, 23131, 23114, 23114, 23159, 23181, 23197, 23248, 23511, 23511, 23282, 23305, 22493, 32364, 24035, 33472, 30138, 26325, 31770, 33508, 27345, 33667, 23114, 23321, 23473, 23351, 35793, 36576, 23511, 23375, 22500, 24145, 24035, 29197, 20192, 24533, 23440, 23114, 19017, 23459, 22839, 23489, 23510, 23511, 33563, 23528, 32076, 25389, 24035, 26576, 23561, 23583, 23114, 32683, 22516, 23622, 23655, 23511, 23634, 35456, 37144, 23110, 23683, 34153, 20499, 32513, 25824, 23705, 24035, 24035, 23111, 23114, 19874, 27078, 33263, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 20507, 32241, 20150, 31862, 27464, 35108, 23727, 23007, 35895, 34953, 26578, 27685, 20141, 24569, 31691, 19787, 33967, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36427, 19552, 21605, 24035, 23112, 32618, 23511, 29483, 29939, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 22420, 23511, 23511, 23511, 23511, 29116, 19803, 24035, 24035, 24035, 27027, 26576, 23114, 23114, 23114, 31471, 23756, 22468, 23511, 23511, 23511, 34687, 23772, 22493, 24035, 24035, 24035, 24035, 24035, 23113, 23114, 23114, 23114, 23114, 28618, 29700, 23511, 23511, 23511, 23511, 34564, 23788, 24035, 24035, 24035, 21559, 23828, 23114, 23114, 23114, 25086, 22839, 23853, 23511, 23511, 23511, 23876, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 32683, 22516, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 20499, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 31761, 23909, 23953, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36049, 19288, 21605, 30825, 23112, 23987, 23511, 24003, 31001, 27617, 24034, 24035, 24036, 24052, 24089, 23114, 23114, 22420, 24109, 24168, 23511, 23511, 29116, 24188, 27609, 20017, 29516, 24035, 26576, 24222, 19968, 23114, 24252, 33811, 22468, 24270, 33587, 23511, 24320, 27443, 22493, 24035, 24035, 24035, 24035, 24339, 23113, 23114, 23114, 23114, 28128, 28618, 29700, 23511, 23511, 23511, 28276, 34564, 20402, 24035, 24035, 32929, 24036, 23114, 23114, 23114, 24357, 23029, 22839, 23511, 23511, 23511, 24377, 25645, 24035, 34112, 24035, 26576, 23114, 26643, 23114, 32683, 22516, 23511, 25638, 23511, 23711, 24035, 24395, 27809, 23114, 24414, 20499, 24432, 30917, 23628, 24035, 30680, 23111, 23114, 30233, 27078, 25748, 24452, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 24475, 19829, 26577, 26597, 26154, 24519, 24556, 24596, 23007, 20046, 20132, 26578, 24634, 20141, 24569, 31691, 24679, 24727, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36412, 19288, 21605, 19943, 34861, 32618, 26027, 29483, 32016, 32050, 36233, 24776, 35574, 24801, 24819, 32671, 31289, 22420, 24868, 24886, 20087, 26849, 29116, 19803, 24035, 24035, 24035, 36228, 26576, 23114, 23114, 23114, 24981, 33811, 22468, 23511, 23511, 23511, 29028, 27443, 22493, 24923, 27965, 24035, 24035, 32797, 24946, 23443, 23114, 23114, 29636, 24997, 22849, 28252, 23511, 23511, 23511, 25042, 25110, 24035, 24035, 34085, 24036, 25133, 23114, 23114, 25152, 23029, 22839, 25169, 23511, 36764, 23511, 25645, 30403, 24035, 25186, 26576, 31806, 24093, 25212, 32683, 22516, 32713, 26245, 34293, 23634, 24035, 24035, 23110, 23114, 23114, 20499, 23511, 23261, 23628, 24035, 32406, 23111, 23114, 28676, 30944, 27689, 25234, 24035, 23112, 19872, 37063, 23266, 24036, 23114, 30243, 20379, 26100, 29218, 20211, 30105, 25257, 25284, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 24834, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36034, 19288, 21671, 25314, 25072, 25330, 25346, 25362, 29939, 29951, 35288, 29984, 23812, 27216, 25405, 25424, 30456, 22584, 26292, 25461, 25480, 31592, 29116, 25516, 34963, 25545, 27007, 25579, 33937, 25614, 25661, 25686, 34872, 25702, 25718, 25734, 25769, 25795, 25811, 25840, 22493, 26533, 25856, 24035, 25876, 30763, 27481, 25909, 23114, 28987, 25936, 25954, 29700, 25983, 23511, 31412, 26043, 26063, 22568, 29241, 29592, 26116, 31216, 35383, 26170, 34783, 26194, 26221, 22839, 26241, 26261, 22477, 26283, 26308, 27306, 31035, 24655, 26576, 29854, 33386, 26341, 32683, 22516, 32153, 30926, 26361, 19996, 26381, 35463, 26397, 26424, 34646, 26478, 35605, 31386, 26494, 35567, 31964, 22940, 23689, 25218, 30309, 32289, 19830, 33605, 23112, 32109, 27733, 27084, 24496, 35886, 35221, 26525, 36602, 26549, 26558, 26574, 26594, 26613, 26629, 26666, 26700, 26578, 27685, 23740, 24285, 31691, 26733, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36397, 19552, 18991, 25887, 28117, 32618, 26776, 29483, 29939, 26802, 24035, 24035, 24036, 28664, 23114, 23114, 23114, 22420, 30297, 23511, 23511, 23511, 29116, 19803, 24035, 24035, 24035, 25559, 26576, 23114, 23114, 23114, 30525, 33811, 22468, 23511, 23511, 23511, 28725, 27443, 22493, 24035, 24035, 27249, 24035, 24035, 23113, 23114, 23114, 26827, 23114, 28618, 29700, 23511, 23511, 26845, 23511, 34564, 20402, 24035, 24035, 26979, 24036, 23114, 23114, 23114, 24974, 23029, 22839, 23511, 23511, 23511, 26865, 25645, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 32683, 22516, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 20499, 23511, 23261, 23628, 33305, 24035, 25598, 23114, 19874, 34253, 27689, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 26886, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, 26931, 24569, 26439, 26947, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36019, 19288, 26995, 24035, 23112, 32618, 23511, 31507, 29939, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 22420, 23511, 23511, 23511, 23511, 28306, 27043, 24035, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23114, 33811, 27061, 23511, 23511, 23511, 23511, 23512, 24694, 24035, 24035, 29978, 24035, 24035, 23113, 23114, 33114, 23114, 23114, 30010, 29700, 23511, 35913, 23511, 23511, 34585, 20402, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 23029, 20271, 23511, 23511, 23511, 23511, 30562, 24035, 24035, 27155, 26576, 23114, 23114, 30447, 23036, 29695, 23511, 23511, 30935, 20099, 24152, 25529, 27100, 34461, 27121, 22625, 29156, 26009, 27137, 30422, 31903, 31655, 28870, 27171, 32439, 31731, 19830, 27232, 22612, 27265, 26786, 25494, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 20342, 27288, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36079, 19288, 21605, 27322, 27339, 28020, 27361, 27382, 29939, 24035, 24035, 32581, 24036, 23114, 23114, 23114, 27425, 22420, 23511, 23511, 23511, 27442, 28306, 19803, 24035, 24035, 24035, 24035, 26710, 23114, 23114, 23114, 23114, 32261, 22468, 23511, 23511, 23511, 23511, 35719, 24694, 29510, 24035, 24035, 24035, 24035, 26717, 23114, 23114, 23114, 23114, 28618, 32217, 23511, 23511, 23511, 23511, 34585, 20402, 24035, 24035, 24035, 27459, 23114, 23114, 23114, 36252, 23029, 20271, 23511, 23511, 23511, 28840, 30562, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23036, 29695, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 23467, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 27480, 34483, 28401, 29761, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36382, 19288, 21605, 27497, 27517, 28504, 28898, 27569, 29939, 29401, 27600, 27323, 27633, 19025, 27662, 23114, 27705, 22420, 20483, 27721, 23511, 27765, 28306, 19803, 23540, 24035, 24610, 27781, 27805, 26650, 23114, 28573, 32990, 25920, 22468, 26870, 23511, 26684, 34262, 34737, 25057, 34622, 24035, 24035, 23971, 24206, 27825, 27847, 23114, 23114, 27865, 27885, 35766, 27914, 23511, 23511, 32766, 32844, 27934, 28795, 26909, 27955, 26092, 27988, 25445, 28005, 28036, 28052, 21965, 23511, 32196, 19897, 28072, 28102, 36534, 21541, 23801, 28153, 28180, 28197, 28221, 23036, 32695, 28251, 28268, 28292, 23667, 34825, 23930, 24580, 28322, 28344, 31627, 28366, 25996, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 35625, 33477, 33359, 27674, 28393, 33992, 24036, 23114, 30243, 19829, 28417, 28433, 28463, 23008, 19876, 20208, 23007, 20046, 20132, 28489, 28520, 20141, 24569, 31691, 19787, 28550, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36079, 19288, 21605, 24035, 23112, 32618, 23511, 31507, 29939, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 22420, 23511, 23511, 23511, 23511, 28306, 19803, 24035, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23114, 33811, 22468, 23511, 23511, 23511, 23511, 23512, 24694, 28589, 24035, 24035, 24035, 24035, 28608, 23114, 23114, 23114, 23114, 28618, 20431, 23511, 23511, 23511, 23511, 34585, 20402, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 23029, 20271, 23511, 23511, 23511, 23511, 30562, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23036, 29695, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 23467, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36004, 19288, 28634, 31951, 28565, 28702, 28718, 28741, 32544, 20175, 28792, 32086, 20105, 28811, 29059, 29862, 28856, 22420, 28886, 30354, 23359, 28922, 28306, 28952, 23888, 26320, 36506, 24035, 29331, 28968, 36609, 23114, 29003, 31661, 27061, 30649, 27366, 23511, 29023, 27918, 24694, 24035, 24035, 23893, 33094, 30867, 23113, 23114, 23114, 29044, 34184, 30010, 29700, 23511, 23511, 29081, 29102, 34585, 20402, 27789, 24035, 24035, 24036, 23114, 29132, 23114, 23114, 23029, 20271, 23511, 29153, 23511, 23511, 30562, 30174, 24035, 24035, 27409, 25438, 23114, 23114, 29172, 36668, 31332, 23511, 23511, 29192, 30144, 24035, 23110, 30203, 23114, 23467, 31544, 23261, 23628, 24035, 22545, 23111, 23114, 29213, 27078, 27689, 29234, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 29257, 23008, 19876, 20208, 28768, 29290, 29320, 34776, 29353, 20141, 22435, 29378, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36367, 19288, 21605, 34616, 19006, 32618, 31497, 31507, 36216, 20184, 24035, 34393, 29424, 34668, 23114, 34900, 29447, 22420, 30360, 23511, 37089, 29473, 28306, 19803, 29499, 24398, 24035, 24035, 26576, 31799, 29532, 29550, 23114, 33811, 22468, 32298, 29571, 31184, 23511, 23512, 37127, 36628, 29589, 24035, 24135, 24035, 23113, 29608, 23114, 27831, 29634, 28618, 29652, 30037, 23511, 24172, 29671, 34585, 20402, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 29555, 29690, 23511, 23511, 23511, 23511, 30562, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23036, 29695, 23511, 23511, 23511, 23634, 29719, 24035, 23110, 29738, 23114, 23467, 34035, 29756, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 27741, 29777, 34364, 28181, 30243, 29799, 31920, 27272, 27185, 23008, 31126, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29828, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 35989, 19552, 19687, 35139, 28649, 29878, 29894, 29924, 29939, 23224, 23085, 31969, 24036, 35173, 24752, 24803, 23114, 22420, 31190, 30318, 24870, 23511, 28306, 29967, 23967, 24035, 24035, 24035, 26576, 30000, 23114, 23114, 23114, 33811, 22468, 30026, 23511, 23511, 23511, 23512, 26078, 24035, 24035, 24035, 30053, 37137, 30071, 23114, 23114, 33368, 25136, 28618, 30723, 23511, 23511, 37096, 31356, 34585, 20402, 30092, 30127, 30160, 24036, 35740, 30219, 24960, 30259, 23029, 20271, 34042, 30285, 30342, 30376, 23289, 30055, 30400, 30419, 30438, 32640, 33532, 33514, 30472, 18792, 26267, 24323, 23057, 30493, 23639, 20008, 30196, 33188, 30517, 20075, 23511, 30541, 23628, 30578, 33928, 28776, 30594, 19874, 30610, 30637, 19830, 30677, 27646, 19872, 25779, 23266, 23232, 35016, 30243, 30696, 29812, 30712, 30746, 27206, 30779, 30807, 23007, 33395, 20132, 26578, 27685, 31703, 22928, 31691, 19787, 31079, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36352, 19288, 23335, 30841, 26131, 30888, 30904, 30986, 29939, 24035, 24704, 31017, 20025, 23114, 26178, 31051, 31095, 22420, 23511, 22524, 31142, 31172, 28534, 31206, 35497, 25196, 24035, 28592, 24503, 23114, 31239, 31285, 23114, 31305, 31321, 31355, 31372, 31407, 23511, 30556, 24694, 24035, 27501, 19805, 24035, 24035, 23113, 23114, 31428, 24066, 23114, 28618, 29700, 23511, 31837, 18809, 23511, 34585, 31448, 24035, 24035, 24035, 23090, 23114, 23114, 23114, 23114, 31619, 35038, 23511, 23511, 23511, 23511, 33714, 24035, 33085, 24035, 29431, 23114, 31467, 23114, 23143, 31487, 23511, 31523, 23511, 35195, 36783, 24035, 30111, 23567, 23114, 23467, 31543, 31560, 23628, 24035, 24035, 23111, 23114, 19874, 30953, 31584, 34508, 24035, 31608, 26345, 37055, 23266, 31643, 31677, 31719, 31747, 31786, 31822, 26898, 23008, 19876, 31859, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 31878, 31936, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 35974, 19288, 21605, 27972, 35663, 31985, 29655, 32001, 36715, 24785, 25893, 23545, 31912, 19853, 19916, 25938, 24540, 22420, 31843, 29674, 29573, 32735, 28936, 19803, 24035, 24035, 32047, 24035, 26576, 23114, 23114, 27544, 23114, 33811, 22468, 23511, 23511, 32161, 23511, 23512, 32066, 24035, 33313, 24035, 24035, 24035, 23113, 27426, 32102, 23114, 23114, 28618, 32125, 23511, 32144, 23511, 23511, 33569, 20402, 24035, 27045, 24035, 24036, 23114, 23114, 28328, 23114, 30076, 32177, 23511, 23511, 30384, 23511, 30562, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23595, 32212, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 23467, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 22635, 25753, 32233, 32257, 32277, 19829, 26577, 26597, 20211, 23008, 19876, 32322, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36079, 19288, 32352, 35285, 32380, 34196, 33016, 30661, 29939, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 22420, 23511, 23511, 23511, 23511, 28306, 32404, 24035, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23114, 33811, 32422, 23511, 23511, 23511, 23511, 23512, 24694, 24035, 24035, 24035, 24035, 24035, 23113, 23114, 23114, 23114, 23114, 30269, 29700, 23511, 23511, 23511, 23511, 34585, 20402, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 23029, 20271, 23511, 23511, 23511, 23511, 30562, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23036, 29695, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 23467, 23511, 23261, 23628, 19949, 24035, 23111, 32455, 19874, 31269, 27689, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36337, 19552, 19209, 21617, 26509, 32475, 32491, 32529, 29939, 24035, 32578, 25241, 32597, 23114, 32634, 29007, 32656, 22420, 23511, 32729, 26365, 32751, 28306, 32788, 32882, 24035, 24035, 32813, 36727, 23114, 33182, 23114, 27553, 33235, 32829, 23511, 32706, 23511, 28906, 28377, 26962, 32881, 32904, 32898, 32920, 24035, 32953, 23114, 32977, 26408, 23114, 28164, 33006, 23511, 33039, 35774, 23511, 32306, 20402, 33076, 30872, 24035, 24036, 25408, 33110, 28979, 23114, 23029, 20271, 35835, 33130, 33054, 23511, 30562, 33148, 24035, 24035, 33167, 23114, 23114, 33775, 23036, 20459, 23511, 23511, 25464, 24646, 24035, 24035, 22446, 23114, 23114, 25627, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 27741, 31391, 33204, 33220, 33251, 33287, 26577, 26597, 20211, 33329, 19876, 33345, 23007, 20046, 20132, 26578, 27685, 28473, 22599, 31691, 33411, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 35959, 19288, 21907, 27243, 29843, 32618, 33427, 31507, 29939, 33460, 34090, 24035, 24036, 33493, 24416, 33530, 23114, 22420, 33548, 24379, 33585, 23511, 28306, 19803, 33603, 24202, 24035, 24035, 25593, 33749, 28205, 23114, 23114, 32388, 22468, 33853, 33060, 23511, 23511, 31339, 33621, 24035, 24035, 34397, 24618, 30757, 33663, 23114, 23114, 33683, 35684, 28618, 26678, 23511, 23511, 32506, 33699, 34585, 20402, 24035, 32562, 26973, 24036, 23114, 23114, 33377, 33773, 23029, 20271, 23511, 23511, 30621, 23511, 23860, 24035, 33791, 21553, 26576, 36558, 23114, 33809, 23036, 32857, 26047, 23511, 33827, 23634, 24035, 24035, 23110, 23114, 23114, 31252, 23511, 33845, 23628, 24035, 24459, 23111, 23114, 33869, 27078, 30791, 29783, 24035, 24742, 19872, 33895, 23266, 26462, 19710, 33879, 33919, 26577, 26597, 24123, 24930, 21930, 20208, 30501, 33953, 25268, 20252, 33983, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36322, 19552, 23390, 33634, 35154, 34008, 34024, 34058, 35544, 34106, 34128, 26811, 33151, 34144, 34169, 34212, 23114, 34228, 34244, 34278, 34315, 23511, 34331, 34347, 34380, 34413, 24035, 24663, 26576, 34429, 34453, 34477, 29534, 33811, 22468, 34499, 34524, 34557, 25170, 34580, 35436, 23937, 34601, 24035, 24341, 26453, 23113, 34638, 34662, 23114, 24236, 28618, 34684, 34703, 34729, 23511, 35352, 34753, 34799, 24035, 34815, 32558, 34848, 34888, 35814, 34923, 23165, 29137, 23606, 30326, 30730, 34939, 33023, 30562, 36848, 34979, 24035, 24847, 34996, 23114, 23114, 35032, 29695, 35054, 23511, 23511, 35091, 33296, 35124, 24296, 28235, 24361, 36276, 32772, 35067, 35189, 27301, 30855, 24852, 22452, 35211, 35237, 35316, 25500, 35270, 23405, 24304, 35304, 29362, 24036, 23114, 35332, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 35368, 28823, 23920, 32336, 35405, 20141, 24569, 31691, 35421, 35479, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 35944, 22795, 21605, 33647, 35877, 35513, 30962, 35529, 34073, 35557, 24035, 24035, 20405, 31107, 23114, 23114, 23114, 35590, 34713, 23511, 23511, 23511, 35641, 19803, 29408, 32937, 25298, 24035, 35657, 23115, 27849, 24760, 35679, 26205, 22468, 23511, 35700, 24907, 24901, 35075, 31893, 34980, 24035, 24035, 24035, 24035, 23113, 35009, 23114, 23114, 23114, 28618, 35716, 30970, 23511, 23511, 23511, 34585, 23215, 24035, 24035, 24035, 24036, 35735, 23114, 23114, 23114, 27105, 35756, 35790, 23511, 23511, 23511, 35254, 35446, 24035, 24035, 31223, 35809, 23114, 23114, 23036, 36825, 35830, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 23467, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 31031, 20355, 19872, 33903, 23266, 24036, 23114, 28686, 19829, 26577, 26597, 20211, 23008, 23424, 20208, 24711, 31065, 24486, 26578, 27685, 20141, 19773, 35851, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36307, 19288, 21605, 35494, 19702, 32618, 33437, 31507, 29939, 25117, 24035, 27939, 24036, 27869, 23114, 26829, 23114, 22420, 23494, 23511, 33132, 23511, 28306, 19803, 24035, 34832, 24035, 24035, 26576, 23114, 25153, 23114, 23114, 33811, 22468, 23511, 23511, 35911, 23511, 23512, 24694, 24035, 24035, 24035, 24035, 24035, 23113, 23114, 23114, 23114, 23114, 28618, 29700, 23511, 23511, 23511, 23511, 34585, 20402, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 23029, 20271, 23511, 23511, 23511, 23511, 30562, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23036, 29695, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 23467, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 35929, 19288, 21605, 25860, 23112, 36185, 23511, 36201, 29939, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 22420, 23511, 23511, 23511, 23511, 28306, 19803, 24035, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23114, 33811, 22468, 23511, 23511, 23511, 23511, 23512, 26748, 24035, 24035, 24035, 24035, 24035, 36249, 23114, 23114, 23114, 23114, 28618, 28835, 23511, 23511, 23511, 23511, 34585, 20402, 24035, 27151, 24035, 26760, 23114, 27989, 23114, 23114, 36268, 20271, 23511, 24436, 23511, 29703, 30562, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23036, 29695, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 23467, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36292, 19288, 21605, 36503, 21922, 32618, 34534, 31507, 36522, 24035, 33793, 24035, 35864, 23114, 23114, 36555, 23417, 22420, 23511, 23511, 36574, 26020, 28306, 19803, 24035, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23114, 33811, 22468, 23511, 23511, 23511, 23511, 23512, 36592, 24035, 24035, 36625, 24035, 24035, 23113, 23114, 32961, 23114, 23114, 29618, 29700, 23511, 29086, 23511, 23511, 34585, 20402, 36644, 24035, 24035, 24036, 29740, 23114, 23114, 23114, 29065, 36663, 31527, 23511, 23511, 23511, 30562, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23036, 29695, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 23467, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36079, 19288, 21605, 31451, 23112, 36684, 23511, 36700, 29939, 24035, 24035, 24035, 30185, 23114, 23114, 23114, 27526, 22420, 23511, 23511, 23511, 32865, 28306, 19803, 36743, 24035, 27017, 24035, 26576, 27535, 23114, 31432, 23114, 33811, 22468, 33271, 23511, 32128, 23511, 23512, 24694, 24035, 27196, 24035, 24035, 24035, 23113, 32459, 23114, 23114, 23114, 28618, 29700, 33829, 36762, 23511, 23511, 34585, 20402, 24035, 36746, 24035, 29722, 23114, 23114, 34437, 23114, 34907, 20271, 23511, 23511, 18801, 23511, 23206, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23036, 29695, 23511, 23511, 23511, 36837, 24035, 24035, 33739, 23114, 23114, 25094, 23511, 23261, 23628, 24035, 36780, 23111, 24073, 19874, 27078, 35344, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22720, 19288, 36799, 36866, 17466, 36890, 36864, 21991, 22211, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 17631, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 36883, 36906, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 22705, 19288, 19457, 36866, 17466, 36890, 36866, 19375, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18855, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36124, 19288, 36951, 36866, 17466, 36890, 36866, 21991, 22404, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18567, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 36979, 36995, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36139, 19288, 19457, 36866, 17466, 36890, 36866, 21991, 22971, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18027, 22984, 17553, 17572, 22285, 18462, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 17619, 22083, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 36139, 19288, 21529, 24035, 23112, 23033, 23511, 31507, 25377, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 37040, 23511, 23511, 23511, 23511, 28086, 19803, 24035, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23114, 24254, 37079, 23511, 23511, 23511, 23511, 23512, 34766, 24035, 24035, 24035, 24035, 24035, 23113, 23114, 23114, 23114, 23114, 28618, 29700, 23511, 23511, 23511, 23511, 34585, 20402, 24035, 24035, 24035, 24036, 23114, 23114, 23114, 23114, 23029, 20271, 23511, 23511, 23511, 23511, 30562, 24035, 24035, 24035, 26576, 23114, 23114, 23114, 23036, 29695, 23511, 23511, 23511, 23634, 24035, 24035, 23110, 23114, 23114, 23467, 23511, 23261, 23628, 24035, 24035, 23111, 23114, 19874, 27078, 27689, 19830, 24035, 23112, 19872, 27741, 23266, 24036, 23114, 30243, 19829, 26577, 26597, 20211, 23008, 19876, 20208, 23007, 20046, 20132, 26578, 27685, 20141, 24569, 31691, 19787, 29304, 20268, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 37112, 37160, 18469, 36866, 17466, 36890, 36866, 17656, 37174, 22987, 17556, 17575, 22288, 17486, 17509, 17525, 18373, 18537, 22984, 17553, 17572, 22285, 18780, 17990, 18622, 19411, 20306, 17996, 17689, 17470, 17591, 20896, 17468, 36883, 36906, 36867, 19404, 20299, 36866, 17647, 17862, 18921, 19514, 17705, 20311, 37017, 17728, 17756, 17784, 17800, 17825, 17854, 18403, 18928, 19521, 17712, 37008, 37024, 17878, 18884, 17900, 17922, 17944, 18178, 17960, 18012, 18381, 18064, 18218, 17884, 18890, 17906, 17928, 18102, 25022, 18130, 36931, 36963, 17493, 18150, 18166, 18214, 25010, 25026, 18134, 36935, 18262, 18278, 18294, 18320, 18336, 18361, 18397, 18274, 22096, 18304, 18448, 18485, 18523, 18553, 18583, 19149, 18638, 18497, 19656, 18664, 18680, 18507, 18696, 19164, 18712, 18737, 17681, 22026, 20906, 20915, 22054, 17838, 17450, 22022, 18765, 19225, 18841, 18871, 18906, 19241, 19257, 18976, 19041, 19056, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 19058, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 127011, 110630, 114730, 106539, 127011, 127011, 127011, 53264, 18, 18, 0, 0, 57366, 0, 24, 24, 24, 0, 28, 28, 28, 28, 102432, 0, 0, 127011, 0, 2220032, 110630, 0, 0, 0, 114730, 106539, 0, 2170880, 2170880, 2170880, 2170880, 0, 0, 0, 2170880, 2170880, 2170880, 3002368, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2576384, 2215936, 2215936, 2215936, 2416640, 2424832, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2543616, 2215936, 2215936, 2215936, 2215936, 2215936, 2629632, 2215936, 2617344, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2691072, 2215936, 2707456, 2215936, 2715648, 2215936, 2723840, 2764800, 2215936, 2215936, 2797568, 2215936, 2822144, 2215936, 2215936, 2854912, 2215936, 2215936, 2215936, 2912256, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 0, 0, 0, 180224, 0, 0, 2174976, 0, 0, 2170880, 2617344, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2691072, 2170880, 2707456, 2170880, 2715648, 2170880, 2723840, 2764800, 2170880, 2170880, 2797568, 2170880, 2170880, 2797568, 2170880, 2822144, 2170880, 2170880, 2854912, 2170880, 2170880, 2170880, 2912256, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2215936, 2215936, 2215936, 2215936, 2609152, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2654208, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 0, 0, 0, 184599, 280, 0, 2174976, 0, 0, 2215936, 3117056, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 0, 544, 0, 546, 0, 0, 2179072, 0, 0, 0, 552, 0, 0, 2170880, 2170880, 2170880, 3117056, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 0, 0, 0, 2158592, 2158592, 2232320, 2232320, 0, 2240512, 2240512, 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 3129344, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2215936, 2215936, 2215936, 2400256, 2215936, 2215936, 2215936, 2215936, 2711552, 2170880, 2170880, 2170880, 2170880, 2170880, 2760704, 2768896, 2789376, 2813952, 2170880, 2170880, 2170880, 2875392, 2904064, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2453504, 2457600, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 0, 167936, 0, 0, 0, 0, 2174976, 0, 0, 2215936, 2215936, 2514944, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2592768, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 32768, 0, 0, 0, 0, 0, 2174976, 32768, 0, 2633728, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2711552, 2215936, 2215936, 2215936, 2215936, 2215936, 2760704, 2768896, 2789376, 2813952, 2215936, 2215936, 2215936, 2875392, 2904064, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 0, 0, 0, 0, 0, 0, 2174976, 0, 65819, 2215936, 2215936, 3031040, 2215936, 3055616, 2215936, 2215936, 2215936, 2215936, 3092480, 2215936, 2215936, 3125248, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 3002368, 2215936, 2215936, 2170880, 2170880, 2494464, 2170880, 2170880, 0, 0, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 3198976, 2215936, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 0, 0, 0, 2379776, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2445312, 2170880, 2465792, 2473984, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2523136, 2170880, 2170880, 2641920, 2170880, 2170880, 2170880, 2699264, 2170880, 2727936, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2879488, 2170880, 2916352, 2170880, 2170880, 2170880, 2879488, 2170880, 2916352, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 3026944, 2170880, 2170880, 3063808, 2170880, 2170880, 3112960, 2170880, 2170880, 3133440, 2170880, 2170880, 3112960, 2170880, 2170880, 3133440, 2170880, 2170880, 2170880, 3162112, 2170880, 2170880, 3182592, 3186688, 2170880, 2379776, 2215936, 2523136, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2596864, 2215936, 2621440, 2215936, 2215936, 2641920, 2215936, 2215936, 0, 0, 0, 0, 0, 0, 2179072, 548, 0, 0, 0, 0, 287, 2170880, 0, 2170880, 2170880, 2170880, 2400256, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 3117056, 2170880, 2170880, 2170880, 2170880, 2215936, 2215936, 2699264, 2215936, 2727936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2879488, 2215936, 2916352, 2215936, 2215936, 0, 0, 0, 0, 188416, 0, 2179072, 0, 0, 0, 0, 0, 287, 2170880, 0, 2171019, 2171019, 2171019, 2400395, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 3031179, 2171019, 3055755, 2171019, 2171019, 2215936, 3133440, 2215936, 2215936, 2215936, 3162112, 2215936, 2215936, 3182592, 3186688, 2215936, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2523275, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2597003, 2171019, 2621579, 2170880, 2170880, 2170880, 3162112, 2170880, 2170880, 3182592, 3186688, 2170880, 0, 0, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 0, 53264, 0, 18, 18, 24, 24, 0, 4337664, 28, 2170880, 2170880, 2170880, 2629632, 2170880, 2170880, 2170880, 2170880, 2719744, 2744320, 2170880, 2170880, 2170880, 2834432, 2838528, 2170880, 2908160, 2170880, 2170880, 2936832, 2215936, 2215936, 2215936, 2215936, 2719744, 2744320, 2215936, 2215936, 2215936, 2834432, 2838528, 2215936, 2908160, 2215936, 2215936, 2936832, 2215936, 2215936, 2985984, 2215936, 2994176, 2215936, 2215936, 3014656, 2215936, 3059712, 3076096, 3088384, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2445312, 2215936, 2465792, 2473984, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2171166, 2171166, 2171166, 2171166, 2171166, 0, 0, 0, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171019, 2171019, 2494603, 2171019, 2171019, 2215936, 2215936, 2215936, 3215360, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2379776, 2170880, 2170880, 2170880, 2170880, 2985984, 2170880, 2994176, 2170880, 2170880, 3016168, 2170880, 3059712, 3076096, 3088384, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 0, 53264, 0, 18, 18, 124, 124, 0, 128, 128, 2170880, 2170880, 2170880, 3215360, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2486272, 2170880, 2170880, 2506752, 2170880, 2170880, 2170880, 2535424, 2539520, 2170880, 2170880, 2588672, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2920448, 2170880, 2170880, 2170880, 2990080, 2170880, 2170880, 2170880, 2170880, 3051520, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 3170304, 0, 2387968, 2392064, 2170880, 2170880, 2433024, 2170880, 2170880, 2170880, 3170304, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2486272, 2215936, 2215936, 2506752, 2215936, 2215936, 2215936, 2535424, 2539520, 2215936, 2215936, 2588672, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 0, 0, 0, 0, 0, 0, 2174976, 136, 0, 2215936, 2215936, 2920448, 2215936, 2215936, 2215936, 2990080, 2215936, 2215936, 2215936, 2215936, 3051520, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 3108864, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 3026944, 2215936, 2215936, 3063808, 2215936, 2215936, 3112960, 2215936, 2215936, 2215936, 3170304, 0, 0, 0, 0, 0, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2453504, 2457600, 2170880, 2170880, 2170880, 2486272, 2170880, 2170880, 2506752, 2170880, 2170880, 2170880, 2537049, 2539520, 2170880, 2170880, 2588672, 2170880, 2170880, 2170880, 1508, 2170880, 2170880, 2170880, 1512, 2170880, 2920448, 2170880, 2170880, 2170880, 2990080, 2170880, 2170880, 2170880, 2461696, 2170880, 2170880, 2170880, 2510848, 2170880, 2170880, 2170880, 2170880, 2580480, 2170880, 2605056, 2637824, 2170880, 2170880, 18, 0, 0, 0, 0, 0, 0, 0, 0, 2220032, 0, 0, 0, 0, 0, 0, 0, 2170880, 2170880, 2170880, 2170880, 2686976, 2748416, 2170880, 2170880, 2170880, 2924544, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 3121152, 2170880, 2170880, 3145728, 3158016, 3166208, 2170880, 2420736, 2428928, 2170880, 2478080, 2170880, 2170880, 2170880, 2170880, 0, 0, 2170880, 2170880, 2170880, 2170880, 2646016, 2670592, 0, 0, 3145728, 3158016, 3166208, 2387968, 2392064, 2215936, 2215936, 2433024, 2215936, 2461696, 2215936, 2215936, 2215936, 2510848, 2215936, 2215936, 0, 0, 0, 0, 0, 0, 2179072, 0, 0, 0, 0, 0, 0, 2170880, 2215936, 2215936, 2580480, 2215936, 2605056, 2637824, 2215936, 2215936, 2686976, 2748416, 2215936, 2215936, 2215936, 2924544, 2215936, 2215936, 0, 0, 0, 0, 0, 0, 2179072, 0, 0, 0, 0, 0, 286, 2170880, 2215936, 2215936, 2215936, 2215936, 2215936, 3121152, 2215936, 2215936, 3145728, 3158016, 3166208, 2387968, 2392064, 2170880, 2170880, 2433024, 2170880, 2461696, 2170880, 2170880, 2170880, 2510848, 2170880, 2170880, 1625, 2170880, 2170880, 2580480, 2170880, 2605056, 2637824, 2170880, 647, 2170880, 2170880, 2170880, 2400256, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2576384, 2170880, 2170880, 2170880, 2170880, 2170880, 2609152, 2170880, 2170880, 2686976, 0, 0, 2748416, 2170880, 2170880, 0, 2170880, 2924544, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 0, 53264, 0, 18, 18, 24, 0, 0, 28, 28, 2170880, 3141632, 2215936, 2420736, 2428928, 2215936, 2478080, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2646016, 2670592, 2752512, 2756608, 2846720, 2961408, 2215936, 2998272, 2215936, 3010560, 2215936, 2215936, 2215936, 3141632, 2170880, 2420736, 2428928, 2752512, 2756608, 0, 2846720, 2961408, 2170880, 2998272, 2170880, 3010560, 2170880, 2170880, 2170880, 3141632, 2170880, 2170880, 2490368, 2215936, 2490368, 2215936, 2215936, 2215936, 2547712, 2555904, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 0, 0, 0, 0, 0, 0, 2174976, 245760, 0, 3129344, 2170880, 2170880, 2490368, 2170880, 2170880, 2170880, 0, 0, 2547712, 2555904, 2170880, 2170880, 2170880, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2220032, 0, 0, 45056, 0, 2584576, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2170880, 2170880, 2170880, 2170880, 0, 0, 0, 2170880, 2170880, 2158592, 0, 0, 0, 0, 0, 0, 0, 0, 2220032, 0, 0, 0, 0, 0, 0, 0, 0, 1482, 97, 97, 97, 97, 97, 97, 97, 1354, 97, 97, 97, 97, 97, 97, 97, 97, 1148, 97, 97, 97, 97, 97, 97, 97, 2584576, 2170880, 2170880, 1512, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2441216, 2170880, 2527232, 2170880, 2600960, 2170880, 2850816, 2170880, 2170880, 2170880, 3022848, 2215936, 2441216, 2215936, 2527232, 2215936, 2600960, 2215936, 2850816, 2215936, 2215936, 0, 0, 0, 0, 0, 0, 2179072, 0, 0, 0, 0, 0, 287, 2170880, 2215936, 3022848, 2170880, 2441216, 2170880, 2527232, 0, 0, 2170880, 2600960, 2170880, 0, 2850816, 2170880, 2170880, 2170880, 2170880, 2170880, 2523136, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2596864, 2170880, 2621440, 2170880, 2170880, 2641920, 2170880, 2170880, 2170880, 3022848, 2170880, 2519040, 2170880, 2170880, 2170880, 2170880, 2170880, 2215936, 2519040, 2215936, 2215936, 2215936, 2215936, 2215936, 2170880, 2170880, 2170880, 2453504, 2457600, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2514944, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2592768, 2170880, 2170880, 2519040, 0, 2024, 2170880, 2170880, 0, 2170880, 2170880, 2170880, 2396160, 2170880, 2170880, 2170880, 2170880, 3018752, 2396160, 2215936, 2215936, 2215936, 2215936, 3018752, 2396160, 0, 2024, 2170880, 2170880, 2170880, 2170880, 3018752, 2170880, 2650112, 2965504, 2170880, 2215936, 2650112, 2965504, 2215936, 0, 0, 2170880, 2650112, 2965504, 2170880, 2551808, 2170880, 2551808, 2215936, 0, 0, 0, 0, 37, 110630, 0, 0, 0, 114730, 106539, 41098, 45, 45, 141, 45, 45, 67, 67, 67, 67, 67, 224, 67, 67, 238, 67, 67, 67, 67, 67, 67, 67, 1288, 67, 67, 67, 67, 67, 67, 67, 67, 67, 469, 67, 67, 67, 67, 67, 67, 0, 2551808, 2170880, 2170880, 2215936, 0, 2170880, 2170880, 2215936, 0, 2170880, 2170880, 2215936, 0, 2170880, 2977792, 2977792, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53264, 18, 49172, 57366, 24, 8192, 29, 102432, 127011, 110630, 114730, 106539, 127011, 127011, 127011, 53264, 18, 18, 49172, 0, 0, 0, 24, 24, 24, 0, 28, 28, 28, 28, 102432, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 2170880, 2170880, 2170880, 2416640, 0, 0, 0, 0, 2220032, 110630, 0, 0, 0, 114730, 106539, 136, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 0, 53264, 0, 4256099, 4256099, 24, 24, 0, 28, 28, 2170880, 2461696, 2170880, 2170880, 2170880, 2510848, 2170880, 2170880, 0, 2170880, 2170880, 2580480, 2170880, 2605056, 2637824, 2170880, 2170880, 2170880, 2547712, 2555904, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 3129344, 2215936, 2215936, 543, 543, 545, 545, 0, 0, 2179072, 0, 550, 551, 551, 0, 287, 2171166, 2171166, 18, 0, 0, 0, 0, 0, 0, 0, 0, 2220032, 0, 0, 645, 0, 0, 0, 0, 37, 110630, 0, 0, 0, 114730, 106539, 41098, 45, 45, 45, 149, 2584576, 2170880, 2170880, 0, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2441216, 2170880, 2527232, 2170880, 2600960, 2519040, 0, 0, 2170880, 2170880, 0, 2170880, 2170880, 2170880, 2396160, 2170880, 2170880, 2170880, 2170880, 3018752, 2396160, 2215936, 2215936, 2215936, 2215936, 3018752, 2396160, 0, 0, 2170880, 2170880, 2170880, 2170880, 3018752, 2170880, 2650112, 2965504, 53264, 18, 49172, 57366, 24, 155648, 28, 102432, 155648, 155687, 114730, 106539, 0, 0, 155648, 53264, 18, 18, 49172, 0, 57366, 0, 24, 24, 24, 0, 28, 28, 28, 28, 102432, 0, 0, 0, 0, 2220032, 0, 94208, 0, 0, 114730, 106539, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 0, 53264, 208896, 18, 278528, 24, 24, 0, 28, 28, 53264, 18, 159765, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 0, 53264, 18, 18, 49172, 0, 57366, 0, 24, 24, 24, 0, 28, 139394, 28, 28, 102432, 131, 0, 0, 0, 2220032, 110630, 0, 0, 0, 114730, 106539, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 32768, 53264, 0, 18, 18, 24, 24, 0, 28, 28, 0, 546, 0, 0, 2183168, 0, 0, 552, 832, 2170880, 2170880, 2170880, 2400256, 2170880, 2170880, 2170880, 2170880, 2170880, 2609152, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2654208, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 3198976, 2215936, 0, 1084, 0, 1088, 0, 1092, 0, 0, 0, 0, 0, 41606, 0, 0, 0, 0, 45, 45, 45, 45, 45, 937, 0, 0, 0, 0, 2220032, 110630, 0, 0, 0, 114730, 106539, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 3198976, 2170880, 0, 0, 644, 0, 0, 0, 2215936, 3117056, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 0, 826, 0, 828, 0, 0, 2183168, 0, 0, 830, 0, 2170880, 2170880, 2170880, 2400256, 2170880, 2170880, 2170880, 2170880, 2592768, 2170880, 2170880, 2170880, 2170880, 2633728, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2711552, 2170880, 2170880, 2170880, 2170880, 2170880, 2760704, 53264, 18, 49172, 57366, 24, 8192, 28, 172066, 172032, 110630, 172066, 106539, 0, 0, 172032, 53264, 18, 18, 49172, 0, 57366, 0, 24, 24, 24, 16384, 28, 28, 28, 28, 102432, 0, 98304, 0, 0, 2220032, 110630, 0, 0, 0, 0, 106539, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 3198976, 2170880, 0, 0, 45056, 0, 0, 0, 53264, 18, 49172, 57366, 25, 8192, 30, 102432, 0, 110630, 114730, 106539, 0, 0, 176219, 53264, 18, 18, 49172, 0, 57366, 0, 124, 124, 124, 0, 128, 128, 128, 128, 102432, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 2170880, 2170880, 2170880, 2416640, 0, 546, 0, 0, 2183168, 0, 65536, 552, 0, 2170880, 2170880, 2170880, 2400256, 2170880, 2170880, 2170880, 2170880, 2646016, 2670592, 2752512, 2756608, 2846720, 2961408, 2170880, 2998272, 2170880, 3010560, 2170880, 2170880, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 3198976, 2215936, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0, 0, 37, 110630, 0, 0, 0, 114730, 106539, 41098, 45, 45, 143, 45, 45, 67, 67, 67, 67, 67, 227, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1824, 67, 1826, 67, 67, 67, 67, 17, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 32768, 120, 121, 18, 18, 49172, 0, 57366, 0, 24, 24, 24, 0, 28, 28, 28, 28, 102432, 67, 67, 37139, 37139, 24853, 24853, 0, 0, 2179072, 548, 0, 65820, 65820, 0, 287, 97, 0, 0, 97, 97, 0, 97, 97, 97, 45, 45, 45, 45, 2033, 45, 67, 67, 67, 67, 0, 0, 97, 97, 97, 97, 45, 45, 67, 67, 0, 369, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 978, 0, 546, 70179, 0, 2183168, 0, 0, 552, 0, 97, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 1013, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 473, 67, 67, 67, 67, 483, 67, 67, 1025, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 1119, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1359, 97, 97, 97, 67, 67, 1584, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 497, 67, 67, 1659, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1667, 45, 45, 45, 45, 45, 169, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1668, 45, 45, 45, 45, 67, 67, 1694, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 774, 67, 67, 1713, 97, 97, 97, 97, 97, 97, 97, 0, 97, 97, 1723, 97, 97, 97, 97, 0, 45, 45, 45, 45, 45, 45, 1538, 45, 45, 45, 45, 45, 1559, 45, 45, 1561, 45, 45, 45, 45, 45, 45, 45, 687, 45, 45, 45, 45, 45, 45, 45, 45, 448, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 1771, 1772, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 0, 0, 0, 97, 67, 67, 67, 67, 67, 1821, 67, 67, 67, 67, 67, 67, 1827, 67, 67, 67, 0, 0, 0, 0, 0, 0, 97, 97, 1614, 97, 97, 97, 97, 97, 603, 97, 97, 605, 97, 97, 608, 97, 97, 97, 97, 0, 1532, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 450, 45, 45, 45, 45, 67, 67, 97, 97, 97, 97, 97, 97, 0, 0, 1839, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 97, 1883, 97, 1885, 97, 0, 1888, 0, 97, 97, 0, 97, 97, 1848, 97, 97, 97, 97, 1852, 45, 45, 45, 45, 45, 45, 45, 384, 391, 45, 45, 45, 45, 45, 45, 45, 385, 45, 45, 45, 45, 45, 45, 45, 45, 1237, 45, 45, 45, 45, 45, 45, 67, 0, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 1951, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 1963, 97, 2023, 0, 97, 97, 0, 97, 97, 97, 45, 45, 45, 45, 45, 45, 67, 67, 1994, 67, 1995, 67, 67, 67, 67, 67, 67, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 97, 97, 0, 0, 0, 0, 2220032, 110630, 0, 0, 0, 114730, 106539, 137, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2793472, 2805760, 2170880, 2830336, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 3031040, 2170880, 3055616, 2170880, 2170880, 67, 67, 37139, 37139, 24853, 24853, 0, 0, 281, 549, 0, 65820, 65820, 0, 287, 97, 0, 0, 97, 97, 0, 97, 97, 97, 45, 45, 2031, 2032, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1769, 67, 0, 546, 70179, 549, 549, 0, 0, 552, 0, 97, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 1858, 45, 641, 0, 0, 0, 0, 41606, 926, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 456, 67, 0, 0, 0, 1313, 0, 0, 0, 1096, 1319, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 97, 1110, 97, 97, 97, 97, 67, 67, 67, 67, 1301, 1476, 0, 0, 0, 0, 1307, 1478, 0, 0, 0, 0, 0, 0, 0, 0, 97, 97, 97, 97, 1486, 97, 1487, 97, 1313, 1480, 0, 0, 0, 0, 1319, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 566, 97, 97, 97, 97, 97, 97, 67, 67, 67, 1476, 0, 1478, 0, 1480, 0, 97, 97, 97, 97, 97, 97, 97, 45, 1853, 45, 1855, 45, 45, 45, 45, 53264, 18, 49172, 57366, 26, 8192, 31, 102432, 0, 110630, 114730, 106539, 0, 0, 225368, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 32768, 53264, 18, 18, 49172, 163840, 57366, 0, 24, 24, 229376, 0, 28, 28, 28, 229376, 102432, 0, 0, 0, 0, 2220167, 110630, 0, 0, 0, 114730, 106539, 0, 2171019, 2171019, 2171019, 2171019, 2592907, 2171019, 2171019, 2171019, 2171019, 2633867, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2654347, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 3117195, 2171019, 2171019, 2171019, 2171019, 2240641, 0, 0, 0, 0, 0, 0, 0, 0, 368, 0, 140, 2171019, 2171019, 2171019, 2416779, 2424971, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2617483, 2171019, 2171019, 2642059, 2171019, 2171019, 2171019, 2699403, 2171019, 2728075, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 3215499, 2215936, 2215936, 2215936, 2215936, 2215936, 2437120, 2215936, 2215936, 2171019, 2822283, 2171019, 2171019, 2855051, 2171019, 2171019, 2171019, 2912395, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 3002507, 2171019, 2171019, 2215936, 2215936, 2494464, 2215936, 2215936, 2215936, 2171166, 2171166, 2416926, 2425118, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2576670, 2171166, 2617630, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2691358, 2171166, 2707742, 2171166, 2715934, 2171166, 2724126, 2765086, 2171166, 2171166, 2797854, 2171166, 2822430, 2171166, 2171166, 2855198, 2171166, 2171166, 2171166, 2912542, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2793758, 2806046, 2171166, 2830622, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 3109150, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2543902, 2171166, 2171166, 2171166, 2171166, 2171166, 2629918, 2793611, 2805899, 2171019, 2830475, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 0, 546, 0, 0, 2183168, 0, 0, 552, 0, 2171166, 2171166, 2171166, 2400542, 2171166, 2171166, 2171166, 0, 2171166, 2171166, 2171166, 0, 2171166, 2920734, 2171166, 2171166, 2171166, 2990366, 2171166, 2171166, 2171166, 2171166, 3117342, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 0, 53264, 0, 18, 18, 4329472, 2232445, 0, 2240641, 4337664, 2711691, 2171019, 2171019, 2171019, 2171019, 2171019, 2760843, 2769035, 2789515, 2814091, 2171019, 2171019, 2171019, 2875531, 2904203, 2171019, 2171019, 3092619, 2171019, 2171019, 3125387, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 3199115, 2171019, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2453504, 2457600, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2793472, 2805760, 2215936, 2830336, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2170880, 2170880, 2170880, 2170880, 2170880, 0, 0, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2494464, 2170880, 2170880, 2171166, 2171166, 2634014, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2711838, 2171166, 2171166, 2171166, 2171166, 2171166, 2760990, 2769182, 2789662, 2814238, 2171166, 2171166, 2171166, 2875678, 2904350, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 3199262, 2171166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2379915, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2445451, 2171019, 2465931, 2474123, 2171019, 2171019, 3113099, 2171019, 2171019, 3133579, 2171019, 2171019, 2171019, 3162251, 2171019, 2171019, 3182731, 3186827, 2171019, 2379776, 2879627, 2171019, 2916491, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 3027083, 2171019, 2171019, 3063947, 2699550, 2171166, 2728222, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2879774, 2171166, 2916638, 2171166, 2171166, 2171166, 2171166, 2171166, 2609438, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2654494, 2171166, 2171166, 2171166, 2171166, 2171166, 2445598, 2171166, 2466078, 2474270, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2523422, 2171019, 2437259, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2543755, 2171019, 2171019, 2171019, 2584715, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2908299, 2171019, 2171019, 2936971, 2171019, 2171019, 2986123, 2171019, 2994315, 2171019, 2171019, 3014795, 2171019, 3059851, 3076235, 3088523, 2171166, 2171166, 2986270, 2171166, 2994462, 2171166, 2171166, 3014942, 2171166, 3059998, 3076382, 3088670, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 3027230, 2171166, 2171166, 3064094, 2171166, 2171166, 3113246, 2171166, 2171166, 3133726, 2506891, 2171019, 2171019, 2171019, 2535563, 2539659, 2171019, 2171019, 2588811, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2691211, 2171019, 2707595, 2171019, 2715787, 2171019, 2723979, 2764939, 2171019, 2171019, 2797707, 2215936, 2215936, 3170304, 0, 0, 0, 0, 0, 0, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2453790, 2457886, 2171166, 2171166, 2171166, 2486558, 2171166, 2171166, 2507038, 2171166, 2171166, 2171166, 2535710, 2539806, 2171166, 2171166, 2588958, 2171166, 2171166, 2171166, 2171166, 2515230, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2593054, 2171166, 2171166, 2171166, 2171166, 3051806, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 3170590, 0, 2388107, 2392203, 2171019, 2171019, 2433163, 2171019, 2461835, 2171019, 2171019, 2171019, 2510987, 2171019, 2171019, 2171019, 2171019, 2580619, 2171019, 2605195, 2637963, 2171019, 2171019, 2171019, 2920587, 2171019, 2171019, 2171019, 2990219, 2171019, 2171019, 2171019, 2171019, 3051659, 2171019, 2171019, 2171019, 2453643, 2457739, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2515083, 2171019, 2171019, 2171019, 2171019, 2646155, 2670731, 2752651, 2756747, 2846859, 2961547, 2171019, 2998411, 2171019, 3010699, 2171019, 2171019, 2687115, 2748555, 2171019, 2171019, 2171019, 2924683, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 3121291, 2171019, 2171019, 2171019, 3170443, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2486272, 2215936, 2215936, 2506752, 3145867, 3158155, 3166347, 2387968, 2392064, 2215936, 2215936, 2433024, 2215936, 2461696, 2215936, 2215936, 2215936, 2510848, 2215936, 2215936, 0, 0, 0, 0, 0, 0, 2179072, 0, 0, 0, 0, 0, 553, 2170880, 2215936, 2215936, 2215936, 2215936, 2215936, 3121152, 2215936, 2215936, 3145728, 3158016, 3166208, 2388254, 2392350, 2171166, 2171166, 2433310, 2171166, 2461982, 2171166, 2171166, 2171166, 2511134, 2171166, 2171166, 0, 2171166, 2171166, 2580766, 2171166, 2605342, 2638110, 2171166, 2171166, 2171166, 2171166, 3031326, 2171166, 3055902, 2171166, 2171166, 2171166, 2171166, 3092766, 2171166, 2171166, 3125534, 2171166, 2171166, 2171166, 3162398, 2171166, 2171166, 3182878, 3186974, 2171166, 0, 0, 0, 2171019, 2171019, 2171019, 2171019, 3109003, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2215936, 2215936, 2215936, 2400256, 2215936, 2215936, 2215936, 2215936, 2171166, 2687262, 0, 0, 2748702, 2171166, 2171166, 0, 2171166, 2924830, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 2597150, 2171166, 2621726, 2171166, 2171166, 2642206, 2171166, 2171166, 2171166, 2171166, 3121438, 2171166, 2171166, 3146014, 3158302, 3166494, 2171019, 2420875, 2429067, 2171019, 2478219, 2171019, 2171019, 2171019, 2171019, 2547851, 2556043, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 3129483, 2215936, 2171019, 3141771, 2215936, 2420736, 2428928, 2215936, 2478080, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2646016, 2670592, 2752512, 2756608, 2846720, 2961408, 2215936, 2998272, 2215936, 3010560, 2215936, 2215936, 2215936, 3141632, 2171166, 2421022, 2429214, 2171166, 2478366, 2171166, 2171166, 2171166, 2171166, 0, 0, 2171166, 2171166, 2171166, 2171166, 2646302, 2670878, 0, 0, 0, 0, 37, 110630, 0, 0, 0, 114730, 106539, 0, 45, 45, 45, 45, 45, 1405, 1406, 45, 45, 45, 45, 1409, 45, 45, 45, 45, 45, 1415, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1238, 45, 45, 45, 45, 67, 2752798, 2756894, 0, 2847006, 2961694, 2171166, 2998558, 2171166, 3010846, 2171166, 2171166, 2171166, 3141918, 2171019, 2171019, 2490507, 3129344, 2171166, 2171166, 2490654, 2171166, 2171166, 2171166, 0, 0, 2547998, 2556190, 2171166, 2171166, 2171166, 0, 0, 0, 0, 37, 110630, 0, 0, 0, 114730, 106539, 41098, 45, 45, 45, 45, 167, 45, 45, 45, 45, 185, 187, 45, 45, 198, 45, 45, 0, 2171166, 2171166, 2171166, 2171166, 2171166, 2171166, 3129630, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2576523, 2171019, 2171019, 2171019, 2171019, 2171019, 2609291, 2171019, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 3002368, 2215936, 2215936, 2171166, 2171166, 2494750, 2171166, 2171166, 0, 0, 0, 0, 37, 110630, 0, 0, 0, 114730, 106539, 41098, 45, 45, 45, 147, 2584576, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2171166, 2171166, 2171166, 2171166, 0, 0, 0, 2171166, 2171166, 2171166, 2171166, 0, 0, 0, 2171166, 2171166, 2171166, 3002654, 2171166, 2171166, 2171019, 2171019, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 0, 0, 0, 0, 0, 0, 2175257, 0, 0, 2584862, 2171166, 2171166, 0, 0, 2171166, 2171166, 2171166, 2171166, 2171166, 2171019, 2441355, 2171019, 2527371, 2171019, 2601099, 2171019, 2850955, 2171019, 2171019, 2171019, 3022987, 2215936, 2441216, 2215936, 2527232, 2215936, 2600960, 2215936, 2850816, 2215936, 2215936, 0, 0, 0, 0, 0, 0, 2179072, 0, 0, 0, 0, 69632, 287, 2170880, 2215936, 3022848, 2171166, 2441502, 2171166, 2527518, 0, 0, 2171166, 2601246, 2171166, 0, 2851102, 2171166, 2171166, 2171166, 2171166, 2720030, 2744606, 2171166, 2171166, 2171166, 2834718, 2838814, 2171166, 2908446, 2171166, 2171166, 2937118, 3023134, 2171019, 2519179, 2171019, 2171019, 2171019, 2171019, 2171019, 2215936, 2519040, 2215936, 2215936, 2215936, 2215936, 2215936, 2171166, 2171166, 2171166, 3215646, 0, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2171019, 2486411, 2171019, 2171019, 2171019, 2629771, 2171019, 2171019, 2171019, 2171019, 2719883, 2744459, 2171019, 2171019, 2171019, 2834571, 2838667, 2171019, 2519326, 0, 0, 2171166, 2171166, 0, 2171166, 2171166, 2171166, 2396299, 2171019, 2171019, 2171019, 2171019, 3018891, 2396160, 2215936, 2215936, 2215936, 2215936, 3018752, 2396446, 0, 0, 2171166, 2171166, 2171166, 2171166, 3019038, 2171019, 2650251, 2965643, 2171019, 2215936, 2650112, 2965504, 2215936, 0, 0, 2171166, 2650398, 2965790, 2171166, 2551947, 2171019, 2551808, 2215936, 0, 0, 0, 0, 37, 110630, 0, 0, 0, 114730, 106539, 41098, 45, 45, 144, 45, 45, 67, 67, 67, 67, 67, 228, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1929, 97, 97, 97, 97, 0, 0, 0, 2552094, 2171166, 2171019, 2215936, 0, 2171166, 2171019, 2215936, 0, 2171166, 2171019, 2215936, 0, 2171166, 2977931, 2977792, 2978078, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 1321, 97, 131072, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 0, 53264, 0, 18, 18, 24, 24, 0, 28, 28, 0, 140, 0, 2379776, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2445312, 2170880, 2465792, 2473984, 2170880, 2170880, 2170880, 2584576, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2170880, 2170880, 2170880, 3162112, 2170880, 2170880, 3182592, 3186688, 2170880, 0, 140, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 3002368, 2170880, 2170880, 2215936, 2215936, 2494464, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 3215360, 544, 0, 0, 0, 544, 0, 546, 0, 0, 0, 546, 0, 0, 2183168, 0, 0, 552, 0, 2170880, 2170880, 2170880, 2400256, 2170880, 2170880, 2170880, 0, 2170880, 2170880, 2170880, 0, 2170880, 2920448, 2170880, 2170880, 2170880, 2990080, 2170880, 2170880, 552, 0, 0, 0, 552, 0, 287, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2437120, 2170880, 2170880, 18, 0, 0, 0, 0, 0, 0, 0, 0, 2220032, 0, 0, 644, 0, 2215936, 2215936, 3170304, 544, 0, 546, 0, 552, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 3198976, 2170880, 0, 0, 0, 140, 0, 0, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 249856, 110630, 114730, 106539, 0, 0, 32768, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 151640, 53264, 18, 18, 49172, 0, 57366, 0, 24, 24, 24, 0, 28, 28, 28, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2170880, 2170880, 2170880, 2416640, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 253952, 110630, 114730, 106539, 0, 0, 32856, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 192512, 53264, 18, 18, 49172, 0, 57366, 0, 2232445, 184320, 2232445, 0, 2240641, 2240641, 184320, 2240641, 102432, 0, 0, 0, 221184, 2220032, 110630, 0, 0, 0, 114730, 106539, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 3108864, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2215936, 0, 0, 0, 45056, 0, 0, 0, 0, 0, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 0, 53264, 0, 18, 18, 24, 24, 0, 127, 127, 53264, 18, 49172, 258071, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 32768, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 204800, 53264, 18, 49172, 57366, 24, 27, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 0, 53264, 18, 49172, 57366, 24, 8192, 28, 33, 0, 33, 33, 33, 0, 0, 0, 53264, 18, 18, 49172, 0, 57366, 0, 24, 24, 24, 16384, 28, 28, 28, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 2170880, 2170880, 2170880, 2416640, 67, 67, 37139, 37139, 24853, 24853, 0, 70179, 0, 0, 0, 65820, 65820, 369, 287, 97, 0, 0, 97, 97, 0, 97, 97, 97, 45, 2030, 45, 45, 45, 45, 67, 1573, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1699, 67, 67, 67, 67, 25403, 546, 70179, 0, 0, 66365, 66365, 552, 0, 97, 97, 97, 97, 97, 97, 97, 97, 1355, 97, 97, 97, 1358, 97, 97, 97, 641, 0, 0, 0, 925, 41606, 0, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 1187, 45, 45, 45, 45, 45, 0, 1480, 0, 0, 0, 0, 1319, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 592, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1531, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1680, 45, 45, 45, 641, 0, 924, 0, 925, 41606, 0, 0, 0, 0, 45, 45, 45, 45, 45, 45, 1186, 45, 45, 45, 45, 45, 45, 67, 67, 37139, 37139, 24853, 24853, 0, 70179, 282, 0, 0, 65820, 65820, 369, 287, 97, 0, 0, 97, 97, 0, 97, 2028, 97, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1767, 67, 67, 67, 0, 0, 0, 0, 0, 0, 1612, 97, 97, 97, 97, 97, 97, 0, 1785, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 1790, 97, 0, 0, 2170880, 2170880, 3051520, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 3170304, 241664, 2387968, 2392064, 2170880, 2170880, 2433024, 53264, 19, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 274432, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 270336, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 1134711, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 1126440, 1126440, 1126440, 0, 0, 1126400, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 36, 110630, 114730, 106539, 0, 0, 217088, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 94, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 96, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 24666, 53264, 18, 18, 49172, 0, 57366, 0, 24, 24, 24, 126, 28, 28, 28, 28, 102432, 53264, 122, 123, 49172, 0, 57366, 0, 24, 24, 24, 0, 28, 28, 28, 28, 102432, 2170880, 2170880, 4256099, 0, 0, 0, 0, 0, 0, 0, 0, 2220032, 0, 0, 0, 0, 0, 0, 0, 0, 1319, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 1109, 97, 97, 97, 97, 1113, 132, 0, 0, 0, 37, 110630, 0, 0, 0, 114730, 106539, 41098, 45, 45, 45, 146, 150, 45, 45, 45, 45, 45, 175, 45, 180, 45, 186, 45, 189, 45, 45, 203, 67, 256, 67, 67, 270, 67, 67, 0, 37139, 24853, 0, 0, 0, 0, 41098, 65820, 97, 97, 97, 293, 297, 97, 97, 97, 97, 97, 322, 97, 327, 97, 333, 97, 0, 0, 97, 2026, 0, 2027, 97, 97, 45, 45, 45, 45, 45, 45, 67, 67, 67, 1685, 67, 67, 67, 67, 67, 67, 67, 1690, 67, 336, 97, 97, 350, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 356, 28, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 2170880, 2170880, 2170880, 2416640, 2424832, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2617344, 2170880, 45, 439, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 525, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 97, 97, 97, 622, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1524, 97, 97, 1527, 369, 648, 45, 45, 45, 45, 45, 45, 45, 45, 45, 659, 45, 45, 45, 45, 408, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1239, 45, 45, 45, 67, 729, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 762, 67, 746, 67, 67, 67, 67, 67, 67, 67, 67, 67, 759, 67, 67, 67, 67, 0, 0, 0, 1477, 0, 1086, 0, 0, 0, 1479, 0, 1090, 67, 67, 796, 67, 67, 799, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1291, 67, 67, 67, 811, 67, 67, 67, 67, 67, 816, 67, 67, 67, 67, 67, 67, 67, 37689, 544, 25403, 546, 70179, 0, 0, 66365, 66365, 552, 833, 97, 97, 97, 97, 97, 97, 97, 97, 1380, 0, 0, 0, 45, 45, 45, 45, 45, 1185, 45, 45, 45, 45, 45, 45, 45, 386, 45, 45, 45, 45, 45, 45, 45, 45, 1810, 45, 45, 45, 45, 45, 45, 67, 97, 97, 844, 97, 97, 97, 97, 97, 97, 97, 97, 97, 857, 97, 97, 97, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 45, 45, 45, 97, 97, 97, 894, 97, 97, 897, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 0, 1382, 45, 45, 45, 97, 909, 97, 97, 97, 97, 97, 914, 97, 97, 97, 97, 97, 97, 97, 923, 67, 67, 1079, 67, 67, 67, 67, 67, 37689, 1085, 25403, 1089, 66365, 1093, 0, 0, 0, 0, 37, 110630, 0, 0, 0, 114730, 106539, 41098, 45, 45, 45, 148, 1114, 97, 97, 97, 97, 97, 97, 1122, 97, 97, 97, 97, 97, 97, 97, 97, 97, 606, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1173, 97, 97, 97, 97, 97, 12288, 0, 925, 0, 1179, 0, 0, 0, 0, 37, 110630, 0, 0, 0, 114730, 106539, 41098, 45, 45, 145, 45, 45, 67, 67, 67, 67, 67, 1762, 67, 67, 67, 1766, 67, 67, 67, 67, 67, 67, 528, 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 1934, 67, 67, 1255, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1035, 67, 67, 67, 67, 67, 67, 1297, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1111, 97, 97, 97, 97, 97, 97, 1327, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 33344, 97, 97, 97, 1335, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 97, 97, 1377, 97, 97, 97, 97, 97, 97, 0, 1179, 0, 45, 45, 45, 45, 670, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 430, 45, 45, 45, 45, 67, 67, 1438, 67, 67, 1442, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1592, 67, 67, 67, 1451, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1458, 67, 67, 67, 67, 0, 0, 1305, 0, 0, 0, 0, 0, 1311, 0, 0, 0, 1317, 0, 0, 0, 0, 0, 0, 0, 97, 97, 1322, 97, 97, 1491, 97, 97, 1495, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1551, 45, 1553, 45, 1504, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1513, 97, 97, 97, 97, 0, 45, 45, 45, 45, 1536, 45, 45, 45, 45, 1540, 45, 67, 67, 67, 67, 67, 1585, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1700, 67, 67, 67, 97, 1648, 97, 97, 97, 97, 97, 97, 97, 97, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1541, 0, 97, 97, 97, 97, 0, 1940, 0, 97, 97, 97, 97, 97, 97, 45, 45, 2011, 45, 45, 45, 2015, 67, 67, 2017, 67, 67, 67, 2021, 97, 67, 67, 812, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 37689, 544, 97, 97, 97, 910, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 923, 0, 0, 0, 45, 45, 45, 45, 1184, 45, 45, 45, 45, 1188, 45, 45, 45, 45, 1414, 45, 45, 45, 1417, 45, 1419, 45, 45, 45, 45, 45, 443, 45, 45, 45, 45, 45, 45, 453, 45, 45, 67, 67, 67, 67, 1244, 67, 67, 67, 67, 1248, 67, 67, 67, 67, 67, 67, 67, 0, 37139, 24853, 0, 0, 0, 282, 41098, 65820, 97, 1324, 97, 97, 97, 97, 1328, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 930, 45, 45, 45, 45, 97, 97, 97, 97, 1378, 97, 97, 97, 97, 0, 1179, 0, 45, 45, 45, 45, 671, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 975, 45, 45, 45, 45, 67, 67, 1923, 67, 1925, 67, 67, 1927, 67, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 1985, 45, 45, 45, 45, 45, 45, 1560, 45, 45, 45, 45, 45, 45, 45, 45, 45, 946, 45, 45, 950, 45, 45, 45, 0, 97, 97, 97, 1939, 0, 0, 0, 97, 1943, 97, 97, 1945, 97, 45, 45, 45, 669, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 990, 45, 45, 45, 67, 257, 67, 67, 67, 67, 67, 0, 37139, 24853, 0, 0, 0, 0, 41098, 65820, 337, 97, 97, 97, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 356, 28, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 370, 2170880, 2170880, 2170880, 2416640, 401, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 459, 461, 67, 67, 67, 67, 67, 67, 67, 67, 475, 67, 480, 67, 67, 67, 67, 67, 67, 1054, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1698, 67, 67, 67, 67, 67, 484, 67, 67, 487, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1459, 67, 67, 97, 556, 558, 97, 97, 97, 97, 97, 97, 97, 97, 572, 97, 577, 97, 97, 0, 0, 1896, 97, 97, 97, 97, 97, 97, 1903, 45, 45, 45, 45, 983, 45, 45, 45, 45, 988, 45, 45, 45, 45, 45, 45, 1195, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1549, 45, 45, 45, 45, 45, 581, 97, 97, 584, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1153, 97, 97, 369, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 662, 45, 45, 45, 684, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1004, 45, 45, 45, 67, 67, 67, 749, 67, 67, 67, 67, 67, 67, 67, 67, 67, 761, 67, 67, 67, 67, 67, 67, 1068, 67, 67, 67, 1071, 67, 67, 67, 67, 1076, 794, 795, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 0, 544, 97, 97, 97, 97, 847, 97, 97, 97, 97, 97, 97, 97, 97, 97, 859, 97, 0, 0, 2025, 97, 20480, 97, 97, 2029, 45, 45, 45, 45, 45, 45, 67, 67, 67, 1575, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1775, 67, 67, 67, 97, 97, 97, 97, 892, 893, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1515, 97, 993, 994, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 992, 67, 67, 67, 1284, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1607, 67, 67, 97, 1364, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 596, 97, 45, 1556, 1557, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 696, 45, 1596, 1597, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 499, 67, 97, 97, 97, 1621, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1346, 97, 97, 97, 97, 1740, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1678, 45, 45, 45, 45, 45, 67, 97, 97, 97, 97, 97, 97, 1836, 0, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 1984, 97, 45, 45, 45, 45, 45, 45, 1808, 45, 45, 45, 45, 45, 45, 45, 45, 67, 739, 67, 67, 67, 67, 67, 744, 45, 45, 1909, 45, 45, 45, 45, 45, 45, 45, 67, 1917, 67, 1918, 67, 67, 67, 67, 67, 67, 1247, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 532, 67, 67, 67, 67, 67, 67, 1922, 67, 67, 67, 67, 67, 67, 67, 97, 1930, 97, 1931, 97, 0, 0, 97, 97, 0, 97, 97, 97, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 1576, 67, 67, 67, 67, 1580, 67, 67, 0, 97, 97, 1938, 97, 0, 0, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, 699, 45, 45, 45, 704, 45, 45, 45, 45, 45, 45, 45, 45, 987, 45, 45, 45, 45, 45, 45, 45, 67, 67, 97, 97, 97, 97, 0, 0, 97, 97, 97, 2006, 97, 97, 97, 97, 0, 45, 1533, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1416, 45, 45, 45, 45, 45, 45, 45, 45, 722, 723, 45, 45, 45, 45, 45, 45, 2045, 67, 67, 67, 2047, 0, 0, 97, 97, 97, 2051, 45, 45, 67, 67, 0, 0, 0, 0, 925, 41606, 0, 0, 0, 0, 45, 45, 45, 45, 45, 45, 409, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1957, 45, 67, 67, 67, 67, 67, 1836, 97, 97, 45, 67, 0, 97, 45, 67, 0, 97, 45, 67, 0, 97, 45, 45, 67, 67, 67, 1761, 67, 67, 67, 1764, 67, 67, 67, 67, 67, 67, 67, 494, 67, 67, 67, 67, 67, 67, 67, 67, 67, 787, 67, 67, 67, 67, 67, 67, 45, 45, 420, 45, 45, 422, 45, 45, 425, 45, 45, 45, 45, 45, 45, 45, 387, 45, 45, 45, 45, 397, 45, 45, 45, 67, 460, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 515, 67, 485, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 498, 67, 67, 67, 67, 67, 97, 0, 2039, 97, 97, 97, 97, 97, 45, 45, 45, 45, 1426, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1689, 67, 67, 67, 97, 557, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 612, 97, 582, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 595, 97, 97, 97, 97, 97, 896, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 885, 97, 97, 97, 97, 97, 45, 939, 45, 45, 45, 45, 943, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1916, 67, 67, 67, 67, 67, 45, 67, 67, 67, 67, 67, 67, 67, 1015, 67, 67, 67, 67, 1019, 67, 67, 67, 67, 67, 67, 1271, 67, 67, 67, 67, 67, 67, 1277, 67, 67, 67, 67, 67, 67, 1287, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 804, 67, 67, 67, 67, 67, 1077, 67, 67, 67, 67, 67, 67, 67, 37689, 0, 25403, 0, 66365, 0, 0, 0, 0, 0, 0, 0, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2437120, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2543616, 2170880, 2170880, 2170880, 2170880, 2170880, 2629632, 1169, 97, 1171, 97, 97, 97, 97, 97, 97, 97, 12288, 0, 925, 0, 1179, 0, 0, 0, 0, 925, 41606, 0, 0, 0, 0, 45, 45, 45, 45, 936, 45, 45, 67, 67, 214, 67, 220, 67, 67, 233, 67, 243, 67, 248, 67, 67, 67, 67, 67, 67, 1298, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 97, 97, 97, 97, 97, 1617, 97, 0, 0, 0, 45, 45, 45, 1183, 45, 45, 45, 45, 45, 45, 45, 45, 45, 393, 45, 45, 45, 45, 45, 45, 67, 67, 1243, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1074, 67, 67, 1281, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 776, 1323, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 907, 45, 1412, 45, 45, 45, 45, 45, 45, 45, 1418, 45, 45, 45, 45, 45, 45, 686, 45, 45, 45, 690, 45, 45, 695, 45, 45, 67, 67, 67, 67, 67, 1465, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 1712, 97, 97, 97, 97, 1741, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 426, 45, 45, 45, 45, 45, 45, 67, 67, 67, 1924, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 0, 97, 97, 1983, 97, 97, 45, 45, 1987, 45, 1988, 45, 0, 97, 97, 97, 97, 0, 0, 0, 1942, 97, 97, 97, 97, 97, 45, 45, 45, 700, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 711, 45, 45, 153, 45, 45, 166, 45, 176, 45, 181, 45, 45, 188, 191, 196, 45, 204, 255, 258, 263, 67, 271, 67, 67, 0, 37139, 24853, 0, 0, 0, 282, 41098, 65820, 97, 97, 97, 294, 97, 300, 97, 97, 313, 97, 323, 97, 328, 97, 97, 335, 338, 343, 97, 351, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 356, 28, 28, 0, 0, 0, 0, 0, 0, 0, 0, 41098, 0, 140, 45, 45, 45, 45, 1404, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1411, 67, 67, 486, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1251, 67, 67, 501, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 513, 67, 67, 67, 67, 67, 67, 1443, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1263, 67, 67, 67, 67, 67, 97, 97, 583, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1526, 97, 598, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 610, 97, 97, 0, 97, 97, 1796, 97, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 1744, 45, 45, 45, 369, 0, 651, 45, 653, 45, 654, 45, 656, 45, 45, 45, 660, 45, 45, 45, 45, 1558, 45, 45, 45, 45, 45, 45, 45, 45, 1566, 45, 45, 681, 45, 683, 45, 45, 45, 45, 45, 45, 45, 45, 691, 692, 694, 45, 45, 45, 716, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 709, 45, 45, 712, 45, 714, 45, 45, 45, 718, 45, 45, 45, 45, 45, 45, 45, 726, 45, 45, 45, 733, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1691, 67, 67, 747, 67, 67, 67, 67, 67, 67, 67, 67, 67, 760, 67, 67, 67, 0, 0, 0, 0, 0, 0, 97, 1613, 97, 97, 97, 97, 97, 97, 1509, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 1179, 0, 45, 45, 45, 45, 67, 764, 67, 67, 67, 67, 768, 67, 770, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 0, 0, 0, 1977, 67, 778, 779, 781, 67, 67, 67, 67, 67, 67, 788, 789, 67, 67, 792, 793, 67, 67, 67, 813, 67, 67, 67, 67, 67, 67, 67, 67, 67, 824, 37689, 544, 25403, 546, 70179, 0, 0, 66365, 66365, 552, 0, 836, 97, 838, 97, 839, 97, 841, 97, 97, 97, 845, 97, 97, 97, 97, 97, 97, 97, 97, 97, 858, 97, 97, 0, 1728, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 45, 1802, 45, 97, 97, 862, 97, 97, 97, 97, 866, 97, 868, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 1788, 97, 97, 97, 0, 0, 97, 97, 876, 877, 879, 97, 97, 97, 97, 97, 97, 886, 887, 97, 97, 890, 891, 97, 97, 97, 97, 97, 97, 97, 899, 97, 97, 97, 903, 97, 97, 97, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 1646, 97, 97, 97, 97, 911, 97, 97, 97, 97, 97, 97, 97, 97, 97, 922, 923, 45, 955, 45, 957, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 195, 45, 45, 45, 45, 45, 981, 982, 45, 45, 45, 45, 45, 45, 989, 45, 45, 45, 45, 45, 170, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 411, 45, 45, 45, 45, 45, 67, 1023, 67, 67, 67, 67, 67, 67, 1031, 67, 1033, 67, 67, 67, 67, 67, 67, 67, 817, 819, 67, 67, 67, 67, 67, 37689, 544, 67, 1065, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 516, 67, 67, 1078, 67, 67, 1081, 1082, 67, 67, 37689, 0, 25403, 0, 66365, 0, 0, 0, 0, 0, 0, 0, 0, 2171166, 2171166, 2171166, 2171166, 2171166, 2437406, 2171166, 2171166, 97, 1115, 97, 1117, 97, 97, 97, 97, 97, 97, 1125, 97, 1127, 97, 97, 97, 0, 97, 97, 97, 0, 97, 97, 97, 97, 1644, 97, 97, 97, 0, 97, 97, 97, 0, 97, 97, 1642, 97, 97, 97, 97, 97, 97, 625, 97, 97, 97, 97, 97, 97, 97, 97, 97, 316, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1159, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1502, 97, 97, 97, 97, 97, 1172, 97, 97, 1175, 1176, 97, 97, 12288, 0, 925, 0, 1179, 0, 0, 0, 0, 925, 41606, 0, 0, 0, 0, 45, 45, 45, 935, 45, 45, 45, 1233, 45, 45, 45, 1236, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 1873, 67, 67, 45, 45, 1218, 45, 45, 45, 1223, 45, 45, 45, 45, 45, 45, 45, 1230, 45, 45, 67, 67, 215, 219, 222, 67, 230, 67, 67, 244, 246, 249, 67, 67, 67, 67, 67, 67, 1882, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 97, 45, 1904, 45, 1905, 45, 67, 67, 67, 67, 67, 1258, 67, 1260, 67, 67, 67, 67, 67, 67, 67, 67, 67, 495, 67, 67, 67, 67, 67, 67, 67, 67, 1283, 67, 67, 67, 67, 67, 67, 67, 1290, 67, 67, 67, 67, 67, 67, 67, 818, 67, 67, 67, 67, 67, 67, 37689, 544, 67, 67, 1295, 67, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 2174976, 0, 0, 97, 97, 97, 1326, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1514, 97, 97, 97, 97, 97, 1338, 97, 1340, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1500, 97, 97, 1503, 97, 1363, 97, 97, 97, 97, 97, 97, 97, 1370, 97, 97, 97, 97, 97, 97, 97, 563, 97, 97, 97, 97, 97, 97, 578, 97, 1375, 97, 97, 97, 97, 97, 97, 97, 97, 0, 1179, 0, 45, 45, 45, 45, 685, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1003, 45, 45, 45, 45, 67, 67, 67, 1463, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1778, 97, 97, 97, 97, 97, 1518, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 609, 97, 97, 97, 45, 1542, 45, 45, 45, 45, 45, 45, 45, 1548, 45, 45, 45, 45, 45, 1554, 45, 1570, 1571, 45, 67, 67, 67, 67, 67, 67, 1578, 67, 67, 67, 67, 67, 67, 67, 1055, 67, 67, 67, 67, 67, 1061, 67, 67, 1582, 67, 67, 67, 67, 67, 67, 67, 1588, 67, 67, 67, 67, 67, 1594, 67, 67, 67, 67, 67, 97, 2038, 0, 97, 97, 97, 97, 97, 2044, 45, 45, 45, 995, 45, 45, 45, 45, 1000, 45, 45, 45, 45, 45, 45, 45, 1809, 45, 1811, 45, 45, 45, 45, 45, 67, 1610, 1611, 67, 1476, 0, 1478, 0, 1480, 0, 97, 97, 97, 97, 97, 97, 1618, 1647, 1649, 97, 97, 97, 1652, 97, 1654, 1655, 97, 0, 45, 45, 45, 1658, 45, 45, 67, 67, 216, 67, 67, 67, 67, 234, 67, 67, 67, 67, 252, 254, 1845, 97, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 945, 45, 947, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 1881, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 1902, 45, 45, 45, 45, 45, 45, 1908, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1921, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 0, 97, 1937, 97, 97, 1940, 0, 0, 97, 97, 97, 97, 97, 97, 1947, 1948, 1949, 45, 45, 45, 1952, 45, 1954, 45, 45, 45, 45, 1959, 1960, 1961, 67, 67, 67, 67, 67, 67, 1455, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 757, 67, 67, 67, 67, 67, 67, 1964, 67, 1966, 67, 67, 67, 67, 1971, 1972, 1973, 97, 0, 0, 0, 97, 97, 1104, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 884, 97, 97, 97, 889, 97, 97, 1978, 97, 0, 0, 1981, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 736, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1018, 67, 67, 67, 45, 67, 67, 67, 67, 0, 2049, 97, 97, 97, 97, 45, 45, 67, 67, 0, 0, 0, 0, 925, 41606, 0, 0, 0, 0, 45, 933, 45, 45, 45, 45, 1234, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 97, 97, 288, 97, 97, 97, 97, 97, 97, 317, 97, 97, 97, 97, 97, 97, 0, 0, 97, 1787, 97, 97, 97, 97, 0, 0, 45, 45, 378, 45, 45, 45, 45, 45, 390, 45, 45, 45, 45, 45, 45, 45, 424, 45, 45, 45, 431, 433, 45, 45, 45, 67, 1050, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 518, 67, 97, 97, 97, 1144, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 632, 97, 97, 97, 97, 97, 97, 97, 1367, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 855, 97, 97, 97, 97, 67, 97, 97, 97, 97, 97, 97, 1837, 0, 97, 97, 97, 97, 97, 0, 0, 0, 1897, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 1208, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 724, 45, 45, 45, 45, 45, 97, 2010, 45, 45, 45, 45, 45, 45, 2016, 67, 67, 67, 67, 67, 67, 2022, 45, 2046, 67, 67, 67, 0, 0, 2050, 97, 97, 97, 45, 45, 67, 67, 0, 0, 0, 0, 925, 41606, 0, 0, 0, 0, 932, 45, 45, 45, 45, 45, 1222, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1227, 45, 45, 45, 45, 45, 133, 0, 0, 0, 37, 110630, 0, 0, 0, 114730, 106539, 41098, 45, 45, 45, 45, 701, 702, 45, 45, 705, 706, 45, 45, 45, 45, 45, 45, 703, 45, 45, 45, 45, 45, 45, 45, 45, 45, 719, 45, 45, 45, 45, 45, 725, 45, 45, 45, 369, 649, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1216, 25403, 546, 70179, 0, 0, 66365, 66365, 552, 834, 97, 97, 97, 97, 97, 97, 97, 1342, 97, 97, 97, 97, 97, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 1799, 97, 97, 45, 45, 45, 1569, 45, 45, 45, 1572, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 1306, 0, 67, 67, 67, 1598, 67, 67, 67, 67, 67, 67, 67, 67, 1606, 67, 67, 1609, 97, 97, 97, 1650, 97, 97, 1653, 97, 97, 97, 0, 45, 45, 1657, 45, 45, 45, 1206, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1421, 45, 45, 45, 1703, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 1711, 97, 97, 0, 1895, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 958, 45, 960, 45, 45, 45, 45, 45, 45, 45, 45, 1913, 45, 45, 1915, 67, 67, 67, 67, 67, 67, 67, 466, 67, 67, 67, 67, 67, 67, 481, 67, 45, 1749, 45, 45, 45, 45, 45, 45, 45, 45, 1755, 45, 45, 45, 45, 45, 173, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 974, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 1773, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 1886, 0, 0, 0, 97, 97, 67, 2035, 2036, 67, 67, 97, 0, 0, 97, 2041, 2042, 97, 97, 45, 45, 45, 45, 1662, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1397, 45, 45, 45, 45, 151, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 437, 205, 45, 67, 67, 67, 218, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1047, 67, 67, 67, 67, 97, 97, 97, 97, 298, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 870, 97, 97, 97, 97, 97, 97, 97, 97, 352, 97, 0, 53264, 0, 18, 18, 24, 24, 0, 28, 28, 0, 0, 0, 0, 0, 0, 365, 0, 41098, 0, 140, 45, 45, 45, 45, 45, 1427, 45, 45, 67, 67, 67, 67, 67, 67, 67, 1435, 520, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1037, 617, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 923, 45, 1232, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 1919, 67, 1759, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1021, 45, 154, 45, 162, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 964, 45, 45, 45, 206, 45, 67, 67, 67, 67, 221, 67, 229, 67, 67, 67, 67, 67, 67, 67, 67, 530, 67, 67, 67, 67, 67, 67, 67, 67, 755, 67, 67, 67, 67, 67, 67, 67, 67, 785, 67, 67, 67, 67, 67, 67, 67, 67, 802, 67, 67, 67, 807, 67, 67, 67, 97, 97, 97, 97, 353, 97, 0, 53264, 0, 18, 18, 24, 24, 0, 28, 28, 0, 0, 0, 0, 0, 0, 366, 0, 0, 0, 140, 2170880, 2170880, 2170880, 2416640, 402, 45, 45, 45, 45, 45, 45, 45, 410, 45, 45, 45, 45, 45, 45, 45, 674, 45, 45, 45, 45, 45, 45, 45, 45, 389, 45, 394, 45, 45, 398, 45, 45, 45, 45, 441, 45, 45, 45, 45, 45, 447, 45, 45, 45, 454, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1768, 67, 67, 67, 67, 67, 488, 67, 67, 67, 67, 67, 67, 67, 496, 67, 67, 67, 67, 67, 67, 67, 1774, 67, 67, 67, 67, 67, 97, 97, 97, 97, 0, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 67, 67, 523, 67, 67, 527, 67, 67, 67, 67, 67, 533, 67, 67, 67, 540, 97, 97, 97, 585, 97, 97, 97, 97, 97, 97, 97, 593, 97, 97, 97, 97, 97, 97, 1784, 0, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 97, 97, 0, 0, 0, 18, 18, 24, 24, 0, 28, 28, 97, 97, 620, 97, 97, 624, 97, 97, 97, 97, 97, 630, 97, 97, 97, 637, 713, 45, 45, 45, 45, 45, 45, 721, 45, 45, 45, 45, 45, 45, 45, 45, 1197, 45, 45, 45, 45, 45, 45, 45, 45, 730, 732, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1581, 67, 45, 67, 67, 67, 67, 1012, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1059, 67, 67, 67, 67, 67, 1024, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 775, 67, 67, 67, 67, 1066, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 479, 67, 67, 67, 67, 67, 67, 1080, 67, 67, 67, 67, 37689, 0, 25403, 0, 66365, 0, 0, 0, 0, 0, 0, 0, 287, 0, 0, 0, 287, 0, 2379776, 2170880, 2170880, 97, 97, 97, 1118, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 920, 97, 97, 0, 0, 0, 0, 45, 1181, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 432, 45, 45, 45, 45, 45, 45, 1219, 45, 45, 45, 45, 45, 45, 1226, 45, 45, 45, 45, 45, 45, 959, 45, 45, 45, 45, 45, 45, 45, 45, 45, 184, 45, 45, 45, 45, 202, 45, 1241, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1266, 67, 1268, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1279, 67, 67, 67, 67, 67, 272, 67, 0, 37139, 24853, 0, 0, 0, 0, 41098, 65820, 67, 67, 67, 67, 67, 1286, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1293, 67, 67, 67, 1296, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 281, 94, 0, 0, 97, 97, 97, 1366, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1373, 97, 97, 18, 0, 139621, 0, 0, 0, 0, 0, 0, 364, 0, 0, 367, 0, 97, 1376, 97, 97, 97, 97, 97, 97, 97, 0, 0, 0, 45, 45, 1384, 45, 45, 67, 208, 67, 67, 67, 67, 67, 67, 237, 67, 67, 67, 67, 67, 67, 67, 1069, 1070, 67, 67, 67, 67, 67, 67, 67, 0, 37140, 24854, 0, 0, 0, 0, 41098, 65821, 45, 1423, 45, 45, 45, 45, 45, 45, 67, 67, 1431, 67, 67, 67, 67, 67, 67, 67, 1083, 37689, 0, 25403, 0, 66365, 0, 0, 0, 1436, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1830, 67, 1452, 1453, 67, 67, 67, 67, 1456, 67, 67, 67, 67, 67, 67, 67, 67, 67, 771, 67, 67, 67, 67, 67, 67, 1461, 67, 67, 67, 1464, 67, 1466, 67, 67, 67, 67, 67, 67, 1470, 67, 67, 67, 67, 67, 67, 1587, 67, 67, 67, 67, 67, 67, 67, 67, 1595, 1489, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1129, 97, 1505, 1506, 97, 97, 97, 97, 1510, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1163, 1164, 97, 97, 97, 97, 97, 1516, 97, 97, 97, 1519, 97, 1521, 97, 97, 97, 97, 97, 97, 1525, 97, 97, 18, 0, 139621, 0, 0, 0, 0, 0, 0, 364, 0, 0, 367, 41606, 67, 67, 67, 67, 67, 1586, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1276, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1600, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1301, 0, 0, 0, 1307, 97, 97, 1620, 97, 97, 97, 97, 97, 97, 97, 1627, 97, 97, 97, 97, 97, 97, 913, 97, 97, 97, 97, 919, 97, 97, 97, 0, 97, 97, 97, 1781, 97, 97, 0, 0, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 97, 97, 0, 1792, 1860, 45, 1862, 1863, 45, 1865, 45, 67, 67, 67, 67, 67, 67, 67, 67, 1875, 67, 1877, 1878, 67, 1880, 67, 97, 97, 97, 97, 97, 1887, 0, 1889, 97, 97, 18, 0, 139621, 0, 0, 0, 0, 0, 0, 364, 237568, 0, 367, 0, 97, 1893, 0, 0, 0, 97, 1898, 1899, 97, 1901, 97, 45, 45, 45, 45, 45, 2014, 45, 67, 67, 67, 67, 67, 2020, 67, 97, 1989, 45, 1990, 45, 45, 45, 67, 67, 67, 67, 67, 67, 1996, 67, 1997, 67, 67, 67, 67, 67, 273, 67, 0, 37139, 24853, 0, 0, 0, 0, 41098, 65820, 67, 67, 97, 97, 97, 97, 0, 0, 97, 97, 2005, 0, 97, 2007, 97, 97, 18, 0, 139621, 0, 0, 0, 642, 0, 133, 364, 0, 0, 367, 41606, 0, 97, 97, 2056, 2057, 0, 2059, 45, 67, 0, 97, 45, 67, 0, 97, 45, 45, 67, 209, 67, 67, 67, 223, 67, 67, 67, 67, 67, 67, 67, 67, 67, 786, 67, 67, 67, 791, 67, 67, 45, 45, 940, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 727, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 1016, 67, 67, 67, 67, 67, 67, 67, 67, 37689, 0, 25403, 0, 66365, 0, 0, 0, 133, 0, 0, 0, 37, 110630, 0, 0, 0, 114730, 106539, 41098, 45, 45, 142, 45, 45, 67, 210, 67, 67, 67, 225, 67, 67, 239, 67, 67, 67, 250, 67, 67, 67, 67, 67, 464, 67, 67, 67, 67, 67, 476, 67, 67, 67, 67, 67, 67, 67, 1709, 67, 67, 67, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 97, 1843, 0, 67, 259, 67, 67, 67, 67, 67, 0, 37139, 24853, 0, 0, 0, 0, 41098, 65820, 97, 97, 289, 97, 97, 97, 303, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 901, 97, 97, 97, 97, 97, 339, 97, 97, 97, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 0, 28, 28, 0, 358, 0, 0, 0, 0, 0, 0, 41098, 0, 140, 45, 45, 45, 45, 45, 1953, 45, 1955, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 1687, 1688, 67, 67, 67, 67, 45, 45, 405, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1203, 45, 458, 67, 67, 67, 67, 67, 67, 67, 67, 67, 470, 477, 67, 67, 67, 67, 67, 67, 67, 1970, 97, 97, 97, 1974, 0, 0, 0, 97, 1103, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1372, 97, 97, 97, 97, 67, 522, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 536, 67, 67, 67, 67, 67, 67, 1696, 67, 67, 67, 67, 67, 67, 67, 1701, 67, 555, 97, 97, 97, 97, 97, 97, 97, 97, 97, 567, 574, 97, 97, 97, 97, 97, 301, 97, 309, 97, 97, 97, 97, 97, 97, 97, 97, 97, 900, 97, 97, 97, 905, 97, 97, 97, 619, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 633, 97, 97, 18, 0, 139621, 0, 0, 362, 0, 0, 0, 364, 0, 0, 367, 41606, 369, 649, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 663, 664, 67, 67, 67, 67, 750, 751, 67, 67, 67, 67, 758, 67, 67, 67, 67, 67, 67, 67, 1272, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1057, 1058, 67, 67, 67, 67, 67, 67, 67, 67, 797, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 512, 67, 67, 67, 97, 97, 97, 97, 895, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 902, 97, 97, 97, 97, 67, 67, 1051, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1062, 67, 67, 67, 67, 67, 491, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1302, 0, 0, 0, 1308, 97, 97, 97, 97, 1145, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1139, 97, 97, 97, 97, 1156, 97, 97, 97, 97, 97, 97, 1161, 97, 97, 97, 97, 97, 1166, 97, 97, 18, 640, 139621, 0, 641, 0, 0, 0, 0, 364, 0, 0, 367, 41606, 67, 67, 67, 67, 1257, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 0, 0, 1305, 0, 0, 97, 97, 1337, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1630, 97, 67, 1474, 67, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2380062, 2171166, 2171166, 97, 1529, 97, 97, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1228, 45, 45, 45, 45, 67, 67, 67, 67, 1707, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 0, 0, 97, 1891, 1739, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1198, 45, 1200, 45, 45, 45, 45, 97, 97, 1894, 0, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 672, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1420, 45, 45, 45, 45, 67, 67, 1965, 67, 1967, 67, 67, 67, 97, 97, 97, 97, 0, 1976, 0, 97, 97, 45, 67, 0, 97, 45, 67, 0, 97, 45, 67, 0, 97, 45, 97, 97, 1979, 0, 0, 97, 1982, 97, 97, 97, 1986, 45, 45, 45, 45, 45, 735, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1770, 67, 67, 2000, 97, 97, 97, 2002, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 1798, 97, 97, 97, 45, 45, 45, 2034, 67, 67, 67, 67, 97, 0, 0, 2040, 97, 97, 97, 97, 45, 45, 45, 45, 1752, 45, 45, 45, 1753, 1754, 45, 45, 45, 45, 45, 45, 383, 45, 45, 45, 45, 45, 45, 45, 45, 45, 675, 45, 45, 45, 45, 45, 45, 438, 45, 45, 45, 45, 45, 445, 45, 45, 45, 45, 45, 45, 45, 45, 67, 1430, 67, 67, 67, 67, 67, 67, 67, 67, 67, 524, 67, 67, 67, 67, 67, 531, 67, 67, 67, 67, 67, 67, 67, 67, 37689, 0, 25403, 0, 66365, 0, 0, 1096, 97, 97, 97, 621, 97, 97, 97, 97, 97, 628, 97, 97, 97, 97, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 356, 28, 28, 665, 45, 45, 45, 45, 45, 45, 45, 45, 45, 676, 45, 45, 45, 45, 45, 942, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 707, 708, 45, 45, 45, 45, 763, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 809, 810, 67, 67, 67, 67, 783, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 0, 1303, 0, 0, 0, 97, 861, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 613, 97, 45, 45, 956, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1215, 45, 67, 67, 67, 67, 1027, 67, 67, 67, 67, 1032, 67, 67, 67, 67, 67, 67, 67, 67, 37689, 0, 25403, 0, 66365, 0, 0, 1097, 1064, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1075, 67, 1098, 0, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 331, 97, 97, 97, 97, 1158, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 594, 97, 97, 1309, 0, 0, 0, 1315, 0, 0, 0, 0, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1374, 97, 45, 45, 1543, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1240, 67, 67, 1583, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1252, 67, 97, 97, 97, 1635, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 1800, 97, 45, 45, 45, 97, 97, 1793, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 45, 45, 45, 1743, 45, 45, 45, 1746, 45, 0, 97, 97, 97, 97, 97, 1851, 97, 45, 45, 45, 45, 1856, 45, 45, 45, 45, 1864, 45, 45, 67, 67, 1869, 67, 67, 67, 67, 1874, 67, 0, 97, 97, 45, 67, 2058, 97, 45, 67, 0, 97, 45, 67, 0, 97, 45, 45, 67, 211, 67, 67, 67, 67, 67, 67, 240, 67, 67, 67, 67, 67, 67, 67, 1444, 67, 67, 67, 67, 67, 67, 67, 67, 67, 509, 67, 67, 67, 67, 67, 67, 67, 67, 67, 268, 67, 67, 67, 0, 37139, 24853, 0, 0, 0, 0, 41098, 65820, 97, 97, 290, 97, 97, 97, 305, 97, 97, 319, 97, 97, 97, 330, 97, 97, 18, 640, 139621, 0, 641, 0, 0, 0, 0, 364, 0, 643, 367, 41606, 97, 97, 348, 97, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 0, 28, 28, 139621, 0, 0, 0, 0, 364, 0, 367, 41098, 369, 140, 45, 45, 45, 45, 380, 45, 45, 45, 45, 45, 45, 395, 45, 45, 45, 400, 369, 0, 45, 45, 45, 45, 45, 45, 45, 45, 658, 45, 45, 45, 45, 45, 972, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 427, 45, 45, 45, 45, 45, 745, 67, 67, 67, 67, 67, 67, 67, 67, 756, 67, 67, 67, 67, 67, 67, 67, 67, 37689, 1086, 25403, 1090, 66365, 1094, 0, 0, 97, 843, 97, 97, 97, 97, 97, 97, 97, 97, 854, 97, 97, 97, 97, 97, 97, 1121, 97, 97, 97, 97, 1126, 97, 97, 97, 97, 45, 980, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1400, 45, 67, 67, 67, 1011, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 0, 1304, 0, 0, 0, 1190, 45, 45, 1193, 1194, 45, 45, 45, 45, 45, 1199, 45, 1201, 45, 45, 45, 45, 1911, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 1579, 67, 67, 67, 67, 45, 1205, 45, 45, 45, 45, 45, 45, 45, 45, 1211, 45, 45, 45, 45, 45, 984, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1550, 45, 45, 45, 45, 45, 1217, 45, 45, 45, 45, 45, 45, 1225, 45, 45, 45, 45, 1229, 45, 45, 45, 1388, 45, 45, 45, 45, 45, 45, 1396, 45, 45, 45, 45, 45, 444, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 1574, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1590, 67, 67, 67, 67, 67, 1254, 67, 67, 67, 67, 67, 1259, 67, 1261, 67, 67, 67, 67, 1265, 67, 67, 67, 67, 67, 67, 1708, 67, 67, 67, 67, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 97, 0, 0, 67, 67, 67, 67, 1285, 67, 67, 67, 67, 1289, 67, 67, 67, 67, 67, 67, 67, 67, 37689, 1087, 25403, 1091, 66365, 1095, 0, 0, 97, 97, 97, 97, 1339, 97, 1341, 97, 97, 97, 97, 1345, 97, 97, 97, 97, 97, 561, 97, 97, 97, 97, 97, 573, 97, 97, 97, 97, 97, 97, 1717, 97, 0, 97, 97, 97, 97, 97, 97, 97, 591, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1329, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1351, 97, 97, 97, 97, 97, 97, 1357, 97, 97, 97, 97, 97, 588, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 568, 97, 97, 97, 97, 97, 97, 97, 1365, 97, 97, 97, 97, 1369, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1356, 97, 97, 97, 97, 97, 97, 45, 45, 1403, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1399, 45, 45, 45, 1413, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1669, 45, 1422, 45, 45, 1425, 45, 45, 1428, 45, 1429, 67, 67, 67, 67, 67, 67, 67, 67, 1468, 67, 67, 67, 67, 67, 67, 67, 67, 529, 67, 67, 67, 67, 67, 67, 539, 67, 67, 1475, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 2170880, 2170880, 2170880, 2416640, 97, 97, 1530, 97, 0, 45, 45, 1534, 45, 45, 45, 45, 45, 45, 45, 45, 1956, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1599, 67, 67, 1601, 67, 67, 67, 67, 67, 67, 67, 67, 67, 803, 67, 67, 67, 67, 67, 67, 1632, 97, 1634, 0, 97, 97, 97, 1640, 97, 97, 97, 1643, 97, 97, 1645, 97, 97, 97, 97, 97, 912, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 0, 45, 45, 45, 45, 45, 45, 1660, 1661, 45, 45, 45, 45, 1665, 1666, 45, 45, 45, 45, 45, 1670, 1692, 1693, 67, 67, 67, 67, 67, 1697, 67, 67, 67, 67, 67, 67, 67, 1702, 97, 97, 1714, 1715, 97, 97, 97, 97, 0, 1721, 1722, 97, 97, 97, 97, 97, 97, 1353, 97, 97, 97, 97, 97, 97, 97, 97, 1362, 1726, 97, 0, 0, 97, 97, 97, 0, 97, 97, 97, 1734, 97, 97, 97, 97, 97, 848, 849, 97, 97, 97, 97, 856, 97, 97, 97, 97, 97, 354, 0, 53264, 0, 18, 18, 24, 24, 0, 28, 28, 45, 45, 1750, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1681, 45, 0, 1846, 97, 97, 97, 97, 97, 97, 45, 45, 1854, 45, 45, 45, 45, 1859, 67, 67, 67, 1879, 67, 67, 97, 97, 1884, 97, 97, 0, 0, 0, 97, 97, 97, 1105, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1344, 97, 97, 97, 1347, 97, 1892, 97, 0, 0, 0, 97, 97, 97, 1900, 97, 97, 45, 45, 45, 45, 45, 997, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1002, 45, 45, 1005, 1006, 45, 67, 67, 67, 67, 67, 1926, 67, 67, 1928, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 1737, 97, 0, 97, 97, 97, 97, 0, 0, 0, 97, 97, 1944, 97, 97, 1946, 45, 45, 45, 1544, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 190, 45, 45, 45, 152, 155, 45, 163, 45, 45, 177, 179, 182, 45, 45, 45, 193, 197, 45, 45, 45, 1672, 45, 45, 45, 45, 45, 1677, 45, 1679, 45, 45, 45, 45, 996, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1212, 45, 45, 45, 45, 67, 260, 264, 67, 67, 67, 67, 0, 37139, 24853, 0, 0, 0, 0, 41098, 65820, 97, 97, 97, 295, 299, 302, 97, 310, 97, 97, 324, 326, 329, 97, 97, 97, 0, 97, 97, 1639, 0, 1641, 97, 97, 97, 97, 97, 97, 97, 97, 1511, 97, 97, 97, 97, 97, 97, 97, 97, 1523, 97, 97, 97, 97, 97, 97, 97, 97, 1719, 97, 97, 97, 97, 97, 97, 97, 97, 1720, 97, 97, 97, 97, 97, 97, 97, 312, 97, 97, 97, 97, 97, 97, 97, 97, 1123, 97, 97, 97, 97, 97, 97, 97, 340, 344, 97, 97, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 0, 28, 28, 139621, 0, 0, 0, 0, 364, 0, 367, 41098, 369, 140, 45, 45, 373, 375, 419, 45, 45, 45, 45, 45, 45, 45, 45, 45, 428, 45, 45, 435, 45, 45, 45, 1751, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1410, 45, 45, 45, 67, 67, 67, 505, 67, 67, 67, 67, 67, 67, 67, 67, 67, 514, 67, 67, 67, 67, 67, 67, 1969, 67, 97, 97, 97, 97, 0, 0, 0, 97, 97, 45, 67, 0, 97, 45, 67, 0, 97, 2064, 2065, 0, 2066, 45, 521, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 534, 67, 67, 67, 67, 67, 67, 465, 67, 67, 67, 474, 67, 67, 67, 67, 67, 67, 67, 1467, 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 1933, 0, 97, 97, 97, 602, 97, 97, 97, 97, 97, 97, 97, 97, 97, 611, 97, 97, 18, 640, 139621, 358, 641, 0, 0, 0, 0, 364, 0, 0, 367, 0, 618, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 631, 97, 97, 97, 97, 97, 881, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 569, 97, 97, 97, 97, 97, 369, 0, 45, 652, 45, 45, 45, 45, 45, 657, 45, 45, 45, 45, 45, 45, 1235, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 1432, 67, 67, 67, 67, 67, 67, 67, 766, 67, 67, 67, 67, 67, 67, 67, 67, 773, 67, 67, 67, 0, 1305, 0, 1311, 0, 1317, 97, 97, 97, 97, 97, 97, 97, 1624, 97, 97, 97, 97, 97, 97, 97, 97, 0, 97, 97, 97, 1724, 97, 97, 97, 777, 67, 67, 782, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 535, 67, 67, 67, 67, 67, 67, 67, 814, 67, 67, 67, 67, 67, 67, 67, 67, 67, 37689, 544, 25403, 546, 70179, 0, 0, 66365, 66365, 552, 0, 97, 837, 97, 97, 97, 97, 97, 97, 1496, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 918, 97, 97, 97, 97, 0, 842, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1168, 97, 97, 97, 97, 864, 97, 97, 97, 97, 97, 97, 97, 97, 871, 97, 97, 97, 0, 1637, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1801, 45, 45, 97, 875, 97, 97, 880, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1151, 1152, 97, 97, 97, 67, 67, 67, 1040, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 790, 67, 67, 67, 1180, 0, 649, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 200, 45, 45, 67, 67, 67, 1454, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 806, 67, 67, 67, 0, 0, 0, 1481, 0, 1094, 0, 0, 97, 1483, 97, 97, 97, 97, 97, 97, 304, 97, 97, 318, 97, 97, 97, 97, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 0, 28, 28, 97, 97, 97, 1507, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1332, 97, 97, 97, 1619, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1631, 97, 1633, 97, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1381, 0, 0, 45, 45, 45, 45, 97, 97, 1727, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 626, 97, 97, 97, 97, 97, 97, 636, 45, 45, 1760, 67, 67, 67, 67, 67, 67, 67, 1765, 67, 67, 67, 67, 67, 67, 67, 1299, 67, 67, 67, 0, 0, 0, 0, 0, 0, 97, 97, 97, 97, 1616, 97, 97, 1803, 45, 45, 45, 45, 1807, 45, 45, 45, 45, 45, 1813, 45, 45, 45, 67, 67, 1684, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 822, 67, 67, 37689, 544, 67, 67, 1818, 67, 67, 67, 67, 1822, 67, 67, 67, 67, 67, 1828, 67, 67, 67, 67, 67, 97, 0, 0, 97, 97, 97, 97, 97, 45, 45, 45, 2012, 2013, 45, 45, 67, 67, 67, 2018, 2019, 67, 67, 97, 67, 97, 97, 97, 1833, 97, 97, 0, 0, 97, 97, 1840, 97, 97, 0, 0, 97, 97, 97, 0, 97, 97, 1733, 97, 1735, 97, 97, 97, 0, 97, 97, 97, 1849, 97, 97, 97, 45, 45, 45, 45, 45, 1857, 45, 45, 45, 1910, 45, 1912, 45, 45, 1914, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1017, 67, 67, 1020, 67, 45, 1861, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 1872, 67, 67, 67, 67, 67, 67, 752, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1446, 67, 67, 67, 67, 67, 1876, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 0, 0, 1890, 97, 97, 97, 97, 97, 1134, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 570, 97, 97, 97, 97, 580, 1935, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 1906, 45, 67, 67, 67, 67, 2048, 0, 97, 97, 97, 97, 45, 45, 67, 67, 0, 0, 0, 0, 925, 41606, 0, 0, 0, 931, 45, 45, 45, 45, 45, 45, 1674, 45, 1676, 45, 45, 45, 45, 45, 45, 45, 446, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 1871, 67, 67, 67, 67, 0, 97, 97, 45, 67, 0, 97, 2060, 2061, 0, 2063, 45, 67, 0, 97, 45, 45, 156, 45, 45, 45, 45, 45, 45, 45, 45, 45, 192, 45, 45, 45, 45, 1673, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 429, 45, 45, 45, 45, 67, 67, 67, 269, 67, 67, 67, 0, 37139, 24853, 0, 0, 0, 0, 41098, 65820, 97, 97, 349, 97, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 0, 28, 28, 139621, 0, 0, 0, 0, 364, 0, 367, 41098, 369, 140, 45, 45, 374, 45, 45, 67, 67, 213, 217, 67, 67, 67, 67, 67, 242, 67, 247, 67, 253, 45, 45, 698, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 399, 45, 45, 0, 0, 0, 0, 925, 41606, 0, 929, 0, 0, 45, 45, 45, 45, 45, 45, 1391, 45, 45, 1395, 45, 45, 45, 45, 45, 45, 423, 45, 45, 45, 45, 45, 45, 45, 436, 45, 67, 67, 67, 67, 1041, 67, 1043, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1776, 67, 67, 97, 97, 97, 1099, 0, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 888, 97, 97, 97, 1131, 97, 97, 97, 97, 1135, 97, 1137, 97, 97, 97, 97, 97, 97, 97, 1497, 97, 97, 97, 97, 97, 97, 97, 97, 97, 883, 97, 97, 97, 97, 97, 97, 1310, 0, 0, 0, 1316, 0, 0, 0, 0, 1100, 0, 0, 0, 97, 97, 97, 97, 97, 1107, 97, 97, 97, 97, 97, 97, 97, 97, 1343, 97, 97, 97, 97, 97, 97, 1348, 0, 0, 1317, 0, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1112, 97, 45, 1804, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 1868, 67, 1870, 67, 67, 67, 67, 67, 1817, 67, 67, 1819, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 823, 67, 37689, 544, 67, 97, 1832, 97, 97, 1834, 97, 0, 0, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 0, 1732, 97, 97, 97, 97, 97, 97, 97, 850, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1177, 0, 0, 925, 0, 0, 0, 0, 97, 97, 97, 97, 0, 0, 1941, 97, 97, 97, 97, 97, 97, 45, 45, 45, 1991, 1992, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1998, 134, 0, 0, 0, 37, 110630, 0, 0, 0, 114730, 106539, 41098, 45, 45, 45, 45, 941, 45, 45, 944, 45, 45, 45, 45, 45, 45, 952, 45, 45, 207, 67, 67, 67, 67, 67, 226, 67, 67, 67, 67, 67, 67, 67, 67, 67, 820, 67, 67, 67, 67, 37689, 544, 369, 650, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1682, 25403, 546, 70179, 0, 0, 66365, 66365, 552, 835, 97, 97, 97, 97, 97, 97, 97, 1522, 97, 97, 97, 97, 97, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 1725, 67, 67, 67, 1695, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1034, 67, 1036, 67, 67, 67, 265, 67, 67, 67, 67, 0, 37139, 24853, 0, 0, 0, 0, 41098, 65820, 97, 97, 97, 296, 97, 97, 97, 97, 314, 97, 97, 97, 97, 332, 334, 97, 97, 97, 97, 97, 1146, 1147, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1626, 97, 97, 97, 97, 97, 97, 345, 97, 97, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 0, 28, 28, 139621, 0, 0, 0, 0, 364, 0, 367, 41098, 369, 140, 45, 372, 45, 45, 45, 1220, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1213, 45, 45, 45, 45, 404, 406, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 434, 45, 45, 45, 440, 45, 45, 45, 45, 45, 45, 45, 45, 451, 452, 45, 45, 45, 67, 1683, 67, 67, 67, 1686, 67, 67, 67, 67, 67, 67, 67, 0, 37139, 24853, 0, 0, 0, 0, 41098, 65820, 67, 67, 67, 67, 490, 492, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1447, 67, 67, 1450, 67, 67, 67, 67, 67, 526, 67, 67, 67, 67, 67, 67, 67, 67, 537, 538, 67, 67, 67, 67, 67, 506, 67, 67, 508, 67, 67, 511, 67, 67, 67, 67, 0, 1476, 0, 0, 0, 0, 0, 1478, 0, 0, 0, 0, 0, 0, 0, 0, 97, 97, 1484, 97, 97, 97, 97, 97, 97, 865, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1499, 97, 97, 97, 97, 97, 97, 97, 97, 97, 587, 589, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 629, 97, 97, 97, 97, 97, 97, 97, 97, 97, 623, 97, 97, 97, 97, 97, 97, 97, 97, 634, 635, 97, 97, 97, 97, 97, 1160, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1628, 97, 97, 97, 97, 369, 0, 45, 45, 45, 45, 45, 655, 45, 45, 45, 45, 45, 45, 45, 45, 999, 45, 1001, 45, 45, 45, 45, 45, 45, 45, 45, 715, 45, 45, 45, 720, 45, 45, 45, 45, 45, 45, 45, 45, 728, 25403, 546, 70179, 0, 0, 66365, 66365, 552, 0, 97, 97, 97, 97, 97, 840, 97, 97, 97, 97, 97, 1174, 97, 97, 97, 97, 0, 0, 925, 0, 0, 0, 0, 0, 0, 0, 1100, 97, 97, 97, 97, 97, 97, 97, 97, 627, 97, 97, 97, 97, 97, 97, 97, 938, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 680, 45, 968, 45, 970, 45, 973, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 962, 45, 45, 45, 45, 45, 979, 45, 45, 45, 45, 45, 985, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1224, 45, 45, 45, 45, 45, 45, 45, 45, 688, 45, 45, 45, 45, 45, 45, 45, 1007, 1008, 67, 67, 67, 67, 67, 1014, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1045, 67, 67, 67, 67, 67, 67, 67, 1038, 67, 67, 67, 67, 67, 67, 1044, 67, 1046, 67, 1049, 67, 67, 67, 67, 67, 67, 800, 67, 67, 67, 67, 67, 67, 808, 67, 67, 0, 0, 0, 1102, 97, 97, 97, 97, 97, 1108, 97, 97, 97, 97, 97, 97, 306, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1371, 97, 97, 97, 97, 97, 97, 97, 97, 1132, 97, 97, 97, 97, 97, 97, 1138, 97, 1140, 97, 1143, 97, 97, 97, 97, 97, 1352, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 869, 97, 97, 97, 97, 97, 45, 1191, 45, 45, 45, 45, 45, 1196, 45, 45, 45, 45, 45, 45, 45, 45, 1407, 45, 45, 45, 45, 45, 45, 45, 45, 986, 45, 45, 45, 45, 45, 45, 991, 45, 67, 67, 67, 1256, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1048, 67, 67, 67, 97, 1336, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 615, 97, 1386, 45, 1387, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 455, 45, 457, 45, 45, 1424, 45, 45, 45, 45, 45, 67, 67, 67, 67, 1433, 67, 1434, 67, 67, 67, 67, 67, 767, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1591, 67, 1593, 67, 67, 45, 45, 1805, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1814, 45, 45, 1816, 67, 67, 67, 67, 1820, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1829, 67, 67, 67, 67, 67, 815, 67, 67, 67, 67, 821, 67, 67, 67, 37689, 544, 67, 1831, 97, 97, 97, 97, 1835, 0, 0, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 1731, 97, 97, 97, 97, 97, 97, 97, 97, 97, 853, 97, 97, 97, 97, 97, 97, 0, 97, 97, 97, 97, 1850, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 1547, 45, 45, 45, 45, 45, 45, 45, 45, 1664, 45, 45, 45, 45, 45, 45, 45, 45, 961, 45, 45, 45, 45, 965, 45, 967, 1907, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 1920, 0, 1936, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 97, 45, 45, 67, 67, 67, 67, 67, 67, 1763, 67, 67, 67, 67, 67, 67, 67, 67, 1056, 67, 67, 67, 67, 67, 67, 67, 67, 1273, 67, 67, 67, 67, 67, 67, 67, 67, 1457, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 0, 0, 28672, 97, 45, 67, 67, 67, 67, 0, 0, 97, 97, 97, 97, 45, 45, 67, 67, 2054, 97, 97, 291, 97, 97, 97, 97, 97, 97, 320, 97, 97, 97, 97, 97, 97, 307, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 12288, 0, 925, 926, 1179, 0, 45, 377, 45, 45, 45, 381, 45, 45, 392, 45, 45, 396, 45, 45, 45, 45, 971, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1756, 45, 45, 45, 67, 67, 67, 67, 463, 67, 67, 67, 467, 67, 67, 478, 67, 67, 482, 67, 67, 67, 67, 67, 1028, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1469, 67, 67, 1472, 67, 502, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1460, 67, 97, 97, 97, 97, 560, 97, 97, 97, 564, 97, 97, 575, 97, 97, 579, 97, 97, 97, 97, 97, 1368, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 925, 0, 0, 930, 97, 599, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 872, 97, 45, 666, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1758, 0, 362, 0, 0, 925, 41606, 0, 0, 0, 0, 45, 45, 934, 45, 45, 45, 164, 168, 174, 178, 45, 45, 45, 45, 45, 194, 45, 45, 45, 165, 45, 45, 45, 45, 45, 45, 45, 45, 45, 199, 45, 45, 45, 67, 67, 1010, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1060, 67, 67, 67, 67, 67, 67, 1052, 1053, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1063, 97, 1157, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1167, 97, 97, 97, 97, 97, 1379, 97, 97, 97, 0, 0, 0, 45, 1383, 45, 45, 45, 1806, 45, 45, 45, 45, 45, 45, 1812, 45, 45, 45, 45, 67, 67, 67, 67, 67, 1577, 67, 67, 67, 67, 67, 67, 67, 753, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1262, 67, 67, 67, 67, 67, 67, 67, 1282, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1471, 67, 45, 1402, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 417, 45, 67, 1462, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 37689, 544, 97, 1517, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1128, 97, 97, 97, 97, 1636, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 851, 97, 97, 97, 97, 97, 97, 97, 67, 67, 1705, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 1842, 0, 0, 1779, 97, 97, 97, 1782, 97, 0, 0, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 1789, 97, 97, 0, 0, 0, 97, 1847, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 1675, 45, 45, 45, 45, 45, 45, 45, 45, 737, 738, 67, 740, 67, 741, 67, 743, 67, 67, 67, 67, 67, 67, 1968, 67, 67, 97, 97, 97, 97, 0, 0, 0, 97, 97, 45, 67, 0, 97, 45, 67, 2062, 97, 45, 67, 0, 97, 45, 67, 67, 97, 97, 2001, 97, 0, 0, 2004, 97, 97, 0, 97, 97, 97, 97, 1797, 97, 97, 97, 97, 97, 45, 45, 45, 67, 261, 67, 67, 67, 67, 67, 0, 37139, 24853, 0, 0, 0, 0, 41098, 65820, 97, 97, 292, 97, 97, 97, 97, 311, 315, 321, 325, 97, 97, 97, 97, 97, 97, 1623, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1330, 97, 97, 1333, 1334, 97, 341, 97, 97, 97, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 0, 28, 28, 139621, 0, 0, 0, 363, 364, 0, 367, 41098, 369, 140, 45, 45, 45, 45, 1221, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 413, 45, 45, 416, 45, 376, 45, 45, 45, 45, 382, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1408, 45, 45, 45, 45, 45, 403, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 414, 45, 45, 45, 418, 67, 67, 67, 462, 67, 67, 67, 67, 468, 67, 67, 67, 67, 67, 67, 67, 67, 1602, 67, 1604, 67, 67, 67, 67, 67, 67, 67, 67, 489, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 500, 67, 67, 67, 67, 67, 1067, 67, 67, 67, 67, 67, 1072, 67, 67, 67, 67, 67, 67, 274, 0, 37139, 24853, 0, 0, 0, 0, 41098, 65820, 67, 67, 504, 67, 67, 67, 67, 67, 67, 67, 510, 67, 67, 67, 517, 519, 541, 67, 37139, 37139, 24853, 24853, 0, 70179, 0, 0, 0, 65820, 65820, 369, 287, 554, 97, 97, 97, 559, 97, 97, 97, 97, 565, 97, 97, 97, 97, 97, 97, 97, 1718, 0, 97, 97, 97, 97, 97, 97, 97, 898, 97, 97, 97, 97, 97, 97, 906, 97, 97, 97, 97, 586, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 597, 97, 97, 97, 97, 97, 1520, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 45, 1656, 45, 45, 45, 97, 97, 601, 97, 97, 97, 97, 97, 97, 97, 607, 97, 97, 97, 614, 616, 638, 97, 18, 0, 139621, 0, 0, 0, 0, 0, 0, 364, 0, 0, 367, 41606, 369, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 661, 45, 45, 45, 407, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1815, 45, 67, 45, 667, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 678, 45, 45, 45, 421, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 976, 977, 45, 45, 45, 682, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 693, 45, 45, 697, 67, 67, 748, 67, 67, 67, 67, 754, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1274, 67, 67, 67, 67, 67, 67, 67, 67, 765, 67, 67, 67, 67, 769, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1589, 67, 67, 67, 67, 67, 67, 67, 67, 780, 67, 67, 784, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1777, 67, 97, 97, 97, 97, 97, 97, 846, 97, 97, 97, 97, 852, 97, 97, 97, 97, 97, 97, 97, 1742, 45, 45, 45, 45, 45, 45, 45, 1747, 97, 97, 97, 863, 97, 97, 97, 97, 867, 97, 97, 97, 97, 97, 97, 97, 308, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 12288, 1178, 925, 0, 1179, 0, 97, 97, 97, 878, 97, 97, 882, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 12288, 0, 925, 0, 1179, 0, 908, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 925, 0, 0, 0, 954, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 963, 45, 45, 966, 45, 45, 157, 45, 45, 171, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 948, 45, 45, 45, 45, 45, 1022, 67, 67, 1026, 67, 67, 67, 1030, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1603, 1605, 67, 67, 67, 1608, 67, 67, 67, 1039, 67, 67, 1042, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 471, 67, 67, 67, 67, 67, 0, 1100, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 904, 97, 97, 97, 97, 1116, 97, 97, 1120, 97, 97, 97, 1124, 97, 97, 97, 97, 97, 97, 562, 97, 97, 97, 571, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1133, 97, 97, 1136, 97, 97, 97, 97, 97, 97, 97, 97, 915, 917, 97, 97, 97, 97, 97, 0, 97, 1170, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 925, 0, 0, 0, 0, 0, 41606, 0, 0, 0, 0, 45, 45, 45, 45, 45, 45, 1993, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1275, 67, 67, 67, 1278, 67, 0, 0, 0, 45, 45, 1182, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1189, 1204, 45, 45, 45, 1207, 45, 45, 1209, 45, 1210, 45, 45, 45, 45, 45, 45, 1546, 45, 45, 45, 45, 45, 45, 45, 45, 45, 689, 45, 45, 45, 45, 45, 45, 1231, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 236, 67, 67, 67, 67, 67, 67, 67, 801, 67, 67, 67, 805, 67, 67, 67, 67, 67, 1242, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1249, 67, 67, 67, 67, 67, 67, 507, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1300, 0, 0, 0, 0, 0, 1267, 67, 67, 1269, 67, 1270, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1280, 97, 1349, 97, 1350, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1360, 97, 97, 97, 0, 1980, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 673, 45, 45, 45, 45, 677, 45, 45, 45, 45, 1401, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 953, 67, 1437, 67, 1440, 67, 67, 67, 67, 1445, 67, 67, 67, 1448, 67, 67, 67, 67, 67, 67, 1029, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1825, 67, 67, 67, 67, 67, 1473, 67, 67, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1320, 0, 834, 97, 97, 97, 97, 1490, 97, 1493, 97, 97, 97, 97, 1498, 97, 97, 97, 1501, 97, 97, 97, 0, 97, 1638, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 916, 97, 97, 97, 97, 97, 97, 0, 1528, 97, 97, 97, 0, 45, 45, 45, 1535, 45, 45, 45, 45, 45, 45, 45, 1867, 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 1932, 0, 0, 1555, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1567, 45, 45, 158, 45, 45, 172, 45, 45, 45, 183, 45, 45, 45, 45, 201, 45, 45, 67, 212, 67, 67, 67, 67, 231, 235, 241, 245, 67, 67, 67, 67, 67, 67, 493, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 472, 67, 67, 67, 67, 67, 97, 97, 97, 97, 1651, 97, 97, 97, 97, 97, 0, 45, 45, 45, 45, 45, 45, 45, 1539, 45, 45, 45, 67, 1704, 67, 1706, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 1841, 97, 0, 1844, 97, 97, 97, 97, 1716, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 590, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 0, 45, 45, 45, 1385, 1748, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1757, 45, 45, 159, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 415, 45, 45, 97, 97, 1780, 97, 97, 97, 0, 0, 1786, 97, 97, 97, 97, 97, 0, 0, 97, 97, 1730, 0, 97, 97, 97, 97, 97, 1736, 97, 1738, 67, 97, 97, 97, 97, 97, 97, 0, 1838, 97, 97, 97, 97, 97, 0, 0, 97, 1729, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 1162, 97, 97, 97, 1165, 97, 97, 97, 45, 1950, 45, 45, 45, 45, 45, 45, 45, 45, 1958, 67, 67, 67, 1962, 67, 67, 67, 67, 67, 1246, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 1710, 97, 97, 97, 1999, 67, 97, 97, 97, 97, 0, 2003, 97, 97, 97, 0, 97, 97, 2008, 2009, 45, 67, 67, 67, 67, 0, 0, 97, 97, 97, 97, 45, 2052, 67, 2053, 0, 0, 0, 0, 925, 41606, 0, 0, 930, 0, 45, 45, 45, 45, 45, 45, 1392, 45, 1394, 45, 45, 45, 45, 45, 45, 45, 1545, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1563, 1565, 45, 45, 45, 1568, 0, 97, 2055, 45, 67, 0, 97, 45, 67, 0, 97, 45, 67, 28672, 97, 45, 45, 160, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 679, 45, 45, 67, 67, 266, 67, 67, 67, 67, 0, 37139, 24853, 0, 0, 0, 0, 41098, 65820, 97, 346, 97, 97, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 0, 28, 28, 139621, 0, 0, 362, 0, 364, 0, 367, 41098, 369, 140, 371, 45, 45, 45, 379, 45, 45, 45, 388, 45, 45, 45, 45, 45, 45, 45, 45, 1663, 45, 45, 45, 45, 45, 45, 45, 45, 45, 449, 45, 45, 45, 45, 45, 67, 67, 542, 37139, 37139, 24853, 24853, 0, 70179, 0, 0, 0, 65820, 65820, 369, 287, 97, 97, 97, 97, 97, 1622, 97, 97, 97, 97, 97, 97, 97, 1629, 97, 97, 0, 1794, 1795, 97, 97, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 1745, 45, 45, 97, 639, 18, 0, 139621, 0, 0, 0, 0, 0, 0, 364, 0, 0, 367, 41606, 45, 731, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 251, 67, 67, 67, 67, 67, 798, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1073, 67, 67, 67, 860, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 873, 0, 0, 1101, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 921, 97, 0, 67, 67, 67, 67, 1245, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1250, 67, 67, 1253, 0, 0, 1312, 0, 0, 0, 1318, 0, 0, 0, 0, 0, 0, 97, 97, 97, 97, 1106, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1149, 97, 97, 97, 97, 97, 1155, 97, 97, 1325, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1141, 97, 97, 67, 67, 1439, 67, 1441, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1264, 67, 67, 67, 97, 97, 1492, 97, 1494, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1331, 97, 97, 97, 97, 67, 67, 67, 2037, 67, 97, 0, 0, 97, 97, 97, 2043, 97, 45, 45, 45, 442, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 232, 67, 67, 67, 67, 67, 67, 67, 67, 1823, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 1975, 0, 0, 97, 874, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1142, 97, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 65, 86, 117, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 63, 84, 115, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 61, 82, 113, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 59, 80, 111, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 57, 78, 109, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 55, 76, 107, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 53, 74, 105, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 51, 72, 103, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 49, 70, 101, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 47, 68, 99, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 45, 67, 97, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 213085, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 0, 0, 44, 0, 0, 32863, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 41, 41, 41, 0, 0, 1138688, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 0, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 89, 53264, 18, 18, 49172, 0, 57366, 0, 24, 24, 24, 0, 127, 127, 127, 127, 102432, 67, 262, 67, 67, 67, 67, 67, 0, 37139, 24853, 0, 0, 0, 0, 41098, 65820, 342, 97, 97, 97, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 0, 28, 28, 139621, 0, 360, 0, 0, 364, 0, 367, 41098, 369, 140, 45, 45, 45, 45, 717, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 412, 45, 45, 45, 45, 45, 67, 1009, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1292, 67, 67, 1294, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 97, 97, 97, 1615, 97, 97, 97, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 66, 87, 118, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 64, 85, 116, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 62, 83, 114, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 60, 81, 112, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 58, 79, 110, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 56, 77, 108, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 54, 75, 106, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 52, 73, 104, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 50, 71, 102, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 48, 69, 100, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 37, 110630, 114730, 106539, 46, 67, 98, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 233472, 53264, 18, 49172, 57366, 24, 8192, 28, 102432, 0, 110630, 114730, 106539, 0, 0, 69724, 53264, 18, 18, 49172, 0, 57366, 262144, 24, 24, 24, 0, 28, 28, 28, 28, 102432, 45, 45, 161, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 710, 45, 45, 28, 139621, 359, 0, 0, 0, 364, 0, 367, 41098, 369, 140, 45, 45, 45, 45, 1389, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 949, 45, 45, 45, 45, 67, 503, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1449, 67, 67, 97, 600, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1154, 97, 0, 0, 0, 0, 925, 41606, 927, 0, 0, 0, 45, 45, 45, 45, 45, 45, 1866, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 772, 67, 67, 67, 67, 67, 45, 45, 969, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 951, 45, 45, 45, 45, 1192, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1202, 45, 45, 0, 0, 0, 1314, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 1488, 67, 67, 267, 67, 67, 67, 67, 0, 37139, 24853, 0, 0, 0, 0, 41098, 65820, 97, 347, 97, 97, 97, 97, 0, 53264, 0, 18, 18, 24, 24, 0, 28, 28, 139621, 0, 361, 0, 0, 364, 0, 367, 41098, 369, 140, 45, 45, 45, 45, 734, 45, 45, 45, 67, 67, 67, 67, 67, 742, 67, 67, 45, 45, 668, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1214, 45, 45, 1130, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1361, 97, 45, 45, 1671, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1552, 45, 45, 0, 0, 0, 0, 2220032, 0, 0, 1130496, 0, 0, 0, 0, 2170880, 2171020, 2170880, 2170880, 18, 0, 0, 131072, 0, 0, 0, 90112, 0, 2220032, 0, 0, 0, 0, 0, 0, 0, 0, 97, 97, 97, 1485, 97, 97, 97, 97, 0, 45, 45, 45, 45, 45, 1537, 45, 45, 45, 45, 45, 1390, 45, 1393, 45, 45, 45, 45, 1398, 45, 45, 45, 2170880, 2171167, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2576384, 2215936, 3117056, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 0, 0, 0, 0, 0, 0, 2174976, 0, 0, 0, 0, 0, 0, 2183168, 0, 0, 0, 0, 2170880, 2170880, 2170880, 2400256, 2170880, 2170880, 2170880, 2170880, 2721252, 2744320, 2170880, 2170880, 2170880, 2834432, 2840040, 2170880, 2908160, 2170880, 2170880, 2936832, 2170880, 2170880, 2985984, 2170880, 2994176, 2170880, 2170880, 3014656, 2170880, 3059712, 3076096, 3088384, 2170880, 2170880, 2170880, 2170880, 0, 0, 0, 0, 2220032, 0, 0, 0, 1142784, 0, 0, 0, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 3215360, 2215936, 2215936, 2215936, 2215936, 2215936, 2437120, 2215936, 2215936, 2215936, 3117056, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 2215936, 0, 543, 0, 545, 0, 0, 2183168, 0, 0, 831, 0, 2170880, 2170880, 2170880, 2400256, 2170880, 2170880, 2170880, 2170880, 3031040, 2170880, 3055616, 2170880, 2170880, 2170880, 2170880, 3092480, 2170880, 2170880, 3125248, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 2170880, 3198976, 2170880, 0, 0, 0, 0, 0, 0, 67, 67, 37139, 37139, 24853, 24853, 0, 0, 0, 0, 0, 65820, 65820, 0, 287, 97, 97, 97, 97, 97, 1783, 0, 0, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 97, 97, 1791, 0, 0, 546, 70179, 0, 0, 0, 0, 552, 0, 97, 97, 97, 97, 97, 97, 97, 604, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1150, 97, 97, 97, 97, 97, 147456, 147456, 147456, 147456, 147456, 147456, 147456, 147456, 147456, 147456, 147456, 147456, 0, 0, 147456, 0, 0, 0, 0, 925, 41606, 0, 928, 0, 0, 45, 45, 45, 45, 45, 45, 998, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1562, 45, 1564, 45, 45, 45, 45, 0, 2158592, 2158592, 0, 0, 0, 0, 2232320, 2232320, 2232320, 0, 2240512, 2240512, 2240512, 2240512, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2170880, 2170880, 2170880, 2416640 +]; + +JSONiqTokenizer.EXPECTED = +[ 291, 300, 304, 341, 315, 309, 305, 295, 319, 323, 327, 329, 296, 333, 337, 339, 342, 346, 350, 294, 356, 360, 312, 367, 352, 371, 363, 375, 379, 383, 387, 391, 395, 726, 399, 405, 518, 684, 405, 405, 405, 405, 808, 405, 405, 405, 512, 405, 405, 405, 431, 405, 405, 406, 405, 405, 404, 405, 405, 405, 405, 405, 405, 405, 908, 631, 410, 415, 405, 414, 419, 608, 405, 429, 602, 405, 435, 443, 405, 441, 641, 478, 405, 447, 451, 450, 456, 643, 461, 460, 762, 679, 465, 469, 741, 473, 477, 482, 486, 492, 932, 931, 523, 498, 504, 720, 405, 510, 596, 405, 516, 941, 580, 522, 929, 527, 590, 589, 897, 939, 534, 538, 547, 551, 555, 559, 563, 567, 571, 969, 575, 708, 690, 689, 579, 584, 634, 405, 594, 731, 405, 600, 882, 405, 606, 895, 786, 452, 612, 405, 615, 620, 876, 624, 628, 638, 647, 651, 655, 659, 663, 667, 676, 683, 688, 695, 694, 791, 405, 699, 437, 405, 706, 714, 405, 712, 825, 870, 405, 718, 724, 769, 768, 823, 730, 735, 745, 751, 422, 755, 759, 425, 766, 902, 810, 587, 775, 888, 887, 405, 773, 992, 405, 779, 962, 405, 785, 781, 986, 790, 795, 797, 506, 500, 499, 801, 805, 814, 820, 829, 833, 837, 841, 845, 849, 853, 857, 861, 616, 865, 869, 868, 488, 405, 874, 816, 405, 880, 738, 405, 886, 892, 543, 405, 901, 906, 913, 912, 918, 494, 541, 922, 926, 936, 945, 949, 953, 957, 530, 966, 973, 960, 702, 701, 405, 979, 981, 405, 985, 747, 405, 990, 998, 914, 405, 996, 1004, 672, 975, 974, 1014, 1002, 1008, 670, 1012, 405, 405, 405, 405, 405, 401, 1018, 1022, 1026, 1106, 1071, 1111, 1111, 1111, 1082, 1145, 1030, 1101, 1034, 1038, 1106, 1106, 1106, 1106, 1046, 1206, 1052, 1106, 1072, 1111, 1111, 1042, 1134, 1065, 1111, 1112, 1056, 1160, 1207, 1062, 1204, 1208, 1069, 1106, 1106, 1106, 1076, 1111, 1207, 1161, 1122, 1205, 1064, 1094, 1106, 1106, 1107, 1111, 1111, 1111, 1078, 1086, 1207, 1092, 1098, 1046, 1058, 1106, 1106, 1110, 1111, 1111, 1116, 1120, 1161, 1126, 1202, 1104, 1106, 1145, 1146, 1129, 1138, 1088, 1151, 1048, 1157, 1153, 1132, 1141, 1165, 1107, 1111, 1172, 1179, 1109, 1183, 1175, 1143, 1147, 1187, 1108, 1191, 1195, 1144, 1199, 1168, 1212, 1216, 1220, 1224, 1228, 1232, 1236, 1557, 1247, 1241, 1241, 1038, 1434, 1241, 1241, 1241, 1241, 1254, 1275, 1617, 1241, 1280, 1287, 1241, 1241, 1241, 1287, 1241, 2114, 1291, 1241, 1243, 1241, 2049, 1824, 2094, 2095, 1520, 1309, 1241, 1241, 1302, 1241, 1321, 1311, 1241, 1241, 1313, 1778, 1325, 1336, 1241, 1241, 1325, 1330, 1353, 1241, 1241, 1695, 1354, 1241, 1241, 1241, 1294, 1686, 1331, 1241, 1696, 1368, 1241, 1338, 1370, 1241, 1392, 1399, 1364, 2017, 1406, 2016, 1405, 1716, 1406, 1407, 1422, 1417, 1421, 1241, 1241, 1241, 1349, 1426, 1241, 1774, 1756, 1241, 1773, 1241, 1241, 1345, 1964, 1812, 1432, 1241, 1241, 1345, 1993, 1459, 1241, 1241, 1241, 1395, 1848, 1767, 1465, 1241, 1241, 1394, 1847, 1242, 1477, 1241, 1241, 1428, 1241, 1445, 1492, 1241, 1241, 1438, 1241, 1499, 1241, 1241, 1241, 1455, 1241, 1818, 1448, 1241, 1250, 1241, 2026, 1623, 1449, 1241, 1612, 1616, 1241, 1614, 1241, 1257, 1241, 1241, 1985, 1292, 1586, 1512, 1241, 1517, 2050, 1526, 1674, 1519, 1524, 1647, 2051, 1532, 1537, 1551, 1544, 1550, 1555, 1561, 1571, 1578, 1584, 1590, 1591, 1653, 1595, 1602, 1606, 1610, 1634, 1628, 1640, 1633, 1645, 1241, 1241, 1241, 1469, 1241, 1970, 1651, 1241, 1270, 1241, 1241, 1819, 1449, 1241, 1293, 1664, 1241, 1241, 1481, 1485, 1574, 1672, 1241, 1241, 1513, 1317, 1487, 1684, 1241, 1241, 1533, 1299, 1694, 1241, 1241, 1295, 1241, 1241, 1241, 1546, 1700, 1241, 1241, 1707, 1241, 1713, 1241, 1849, 1715, 1241, 1720, 1241, 1276, 1267, 1241, 1241, 2107, 1657, 1864, 1241, 1881, 1241, 1326, 1292, 1241, 1685, 1358, 1724, 1338, 1241, 1363, 1362, 1342, 1340, 1361, 1339, 1833, 1372, 1360, 1833, 1833, 1342, 1343, 1835, 1341, 1731, 1738, 1344, 1241, 1745, 1241, 1379, 1241, 1241, 2092, 1241, 1388, 1761, 1754, 1241, 1386, 1241, 1400, 1760, 1241, 1241, 1241, 1598, 1734, 1241, 1241, 1241, 1635, 1645, 1241, 1780, 1766, 1241, 1241, 1332, 1771, 1241, 1241, 1629, 2079, 1241, 1242, 1784, 1241, 1241, 1680, 1639, 2063, 1790, 1241, 1241, 1741, 1241, 1241, 1800, 1241, 1241, 1762, 1473, 1241, 1806, 1241, 1241, 1786, 1240, 1709, 1241, 1241, 1241, 1668, 1811, 1241, 1940, 1241, 1401, 1974, 1241, 1408, 1413, 1382, 1241, 1816, 1241, 1241, 1802, 2086, 1811, 1241, 1817, 1945, 1823, 2095, 2095, 2047, 2094, 2046, 2080, 1241, 1409, 1312, 1376, 2096, 2048, 1241, 1241, 1807, 1241, 1241, 1241, 2035, 1241, 1241, 1828, 1241, 2057, 2061, 1241, 1241, 1843, 1241, 2059, 1241, 1241, 1241, 1690, 1847, 1241, 1241, 1241, 1703, 2102, 1848, 1241, 1241, 1853, 1292, 1848, 1241, 2016, 1857, 1241, 2002, 1868, 1241, 1436, 1241, 1241, 1271, 1305, 1241, 1874, 1241, 1241, 1884, 2037, 1892, 1241, 1890, 1241, 1461, 1241, 1241, 1795, 1241, 1241, 1891, 1241, 1878, 1241, 1888, 1241, 1888, 1905, 1896, 2087, 1912, 1903, 1241, 1911, 1906, 1916, 1905, 2027, 1863, 1925, 2088, 1859, 1861, 1922, 1927, 1931, 1935, 1494, 1241, 1241, 1918, 1907, 1939, 1917, 1944, 1949, 1241, 1241, 1451, 1955, 1241, 1241, 1241, 1796, 1727, 2061, 1241, 1241, 1899, 1241, 1660, 1968, 1241, 1241, 1951, 1678, 1978, 1241, 1241, 1241, 1839, 1241, 1241, 1984, 1982, 1241, 1488, 1241, 1241, 1624, 1450, 1989, 1241, 1241, 1241, 1870, 1995, 1292, 1241, 1241, 1958, 1261, 1241, 1996, 1241, 1241, 1241, 2039, 2008, 1241, 1241, 1750, 2000, 1241, 1256, 2001, 1960, 1241, 1564, 1241, 1504, 1241, 1241, 1442, 1241, 1241, 1564, 1528, 1263, 1241, 1508, 1241, 1241, 1468, 1498, 2006, 1540, 2015, 1539, 2014, 1748, 2013, 1539, 1831, 2014, 2012, 1500, 1567, 2022, 2021, 1241, 1580, 1241, 1241, 2033, 2037, 1791, 2045, 2031, 1241, 1621, 1241, 1641, 2044, 1241, 1241, 1241, 2093, 1241, 1241, 2055, 1241, 1241, 2067, 1241, 1283, 1241, 1241, 1241, 2101, 2071, 1241, 1241, 1241, 2073, 1848, 2040, 1241, 1241, 1241, 2077, 1241, 1241, 2106, 1241, 1241, 2084, 1241, 2111, 1241, 1241, 1381, 1380, 1241, 1241, 1241, 2100, 1241, 2129, 2118, 2122, 2126, 2197, 2133, 3010, 2825, 2145, 2698, 2156, 2226, 2160, 2161, 2165, 2174, 2293, 2194, 2630, 2201, 2203, 2152, 3019, 2226, 2263, 2209, 2213, 2218, 2269, 2292, 2269, 2269, 2184, 2226, 2238, 2148, 2151, 3017, 2245, 2214, 2269, 2269, 2185, 2226, 2292, 2269, 2291, 2269, 2269, 2269, 2292, 2205, 3019, 2226, 2226, 2160, 2160, 2160, 2261, 2160, 2160, 2160, 2262, 2276, 2160, 2160, 2277, 2216, 2283, 2216, 2269, 2269, 2268, 2269, 2267, 2269, 2269, 2269, 2271, 2568, 2292, 2269, 2293, 2269, 2182, 2190, 2269, 2186, 2226, 2226, 2226, 2226, 2227, 2160, 2160, 2160, 2160, 2263, 2160, 2275, 2277, 2282, 2215, 2217, 2269, 2269, 2291, 2269, 2269, 2293, 2291, 2269, 2220, 2269, 2295, 2294, 2269, 2269, 2305, 2233, 2262, 2278, 2218, 2269, 2234, 2226, 2226, 2228, 2160, 2160, 2160, 2289, 2220, 2294, 2294, 2269, 2269, 2304, 2269, 2160, 2160, 2287, 2269, 2269, 2305, 2269, 2269, 2312, 2269, 2269, 2225, 2226, 2160, 2287, 2289, 2219, 2304, 2295, 2314, 2234, 2226, 2314, 2269, 2226, 2226, 2160, 2288, 2219, 2222, 2304, 2296, 2269, 2224, 2160, 2160, 2269, 2302, 2294, 2314, 2224, 2226, 2288, 2220, 2294, 2269, 2290, 2269, 2269, 2293, 2269, 2269, 2269, 2269, 2270, 2221, 2313, 2225, 2227, 2160, 2300, 2269, 2225, 2261, 2309, 2234, 2229, 2223, 2318, 2318, 2318, 2328, 2336, 2340, 2344, 2350, 2637, 2712, 2358, 2362, 2372, 2135, 2378, 2398, 2135, 2135, 2135, 2135, 2136, 2417, 2241, 2135, 2378, 2135, 2135, 2980, 2984, 2135, 3006, 2135, 2135, 2135, 2945, 2931, 2425, 2400, 2135, 2135, 2135, 2954, 2135, 2481, 2433, 2135, 2135, 2988, 2824, 2135, 2135, 2482, 2434, 2135, 2135, 2440, 2445, 2452, 2135, 2135, 2998, 3002, 2961, 2441, 2446, 2453, 2463, 2974, 2135, 2135, 2135, 2140, 2642, 2709, 2459, 2470, 2465, 2135, 2135, 3005, 2135, 2135, 2987, 2823, 2458, 2469, 2464, 2975, 2135, 2135, 2135, 2353, 2488, 2447, 2324, 2974, 2135, 2409, 2459, 2448, 2135, 2961, 2487, 2446, 2476, 2323, 2973, 2135, 2135, 2135, 2354, 2476, 2974, 2135, 2135, 2135, 2957, 2135, 2135, 2960, 2135, 2135, 2135, 2363, 2409, 2459, 2474, 2465, 2487, 2571, 2973, 2135, 2135, 2168, 2973, 2135, 2135, 2135, 2959, 2135, 2135, 2135, 2506, 2135, 2957, 2488, 2170, 2135, 2135, 2135, 2960, 2135, 2818, 2493, 2135, 2135, 3033, 2135, 2135, 2135, 2934, 2819, 2494, 2135, 2135, 2135, 2976, 2780, 2499, 2135, 2135, 2135, 3000, 2968, 2135, 2935, 2135, 2135, 2135, 2364, 2507, 2135, 2135, 2934, 2135, 2135, 2780, 2492, 2507, 2135, 2135, 2506, 2780, 2135, 2135, 2782, 2780, 2135, 2782, 2135, 2783, 2374, 2514, 2135, 2135, 2135, 3007, 2530, 2974, 2135, 2135, 2135, 3008, 2135, 2135, 2134, 2135, 2526, 2531, 2975, 2135, 2135, 3042, 2581, 2575, 2956, 2135, 2135, 2135, 2394, 2135, 2508, 2535, 2840, 2844, 2495, 2135, 2135, 2136, 2684, 2537, 2842, 2846, 2135, 2136, 2561, 2581, 2551, 2536, 2841, 2845, 2975, 3043, 2582, 2843, 2555, 2135, 3040, 3044, 2538, 2844, 2975, 2135, 2135, 2253, 2644, 2672, 2542, 2554, 2135, 2135, 2346, 2873, 2551, 2555, 2135, 2135, 2135, 2381, 2559, 2565, 2538, 2553, 2135, 2560, 2914, 2576, 2590, 2135, 2135, 2135, 2408, 2136, 2596, 2624, 2135, 2135, 2135, 2409, 2135, 2618, 2597, 3008, 2135, 2135, 2380, 2956, 2601, 2135, 2135, 2135, 2410, 2620, 2624, 2135, 2136, 2383, 2135, 2135, 2783, 2623, 2135, 2135, 2393, 2888, 2136, 2621, 3008, 2135, 2618, 2618, 2622, 2135, 2135, 2405, 2414, 2619, 2384, 2624, 2135, 2136, 2950, 2135, 2138, 2135, 2139, 2135, 2604, 2623, 2135, 2140, 2878, 2665, 2957, 2622, 2135, 2135, 2428, 2762, 2606, 2612, 2135, 2135, 2501, 2586, 2604, 3038, 2135, 2604, 3036, 2387, 2958, 2386, 2135, 2141, 2135, 2421, 2387, 2385, 2135, 2385, 2384, 2384, 2135, 2386, 2628, 2384, 2135, 2135, 2501, 2596, 2591, 2135, 2135, 2135, 2400, 2135, 2634, 2135, 2135, 2559, 2580, 2575, 2648, 2135, 2135, 2135, 2429, 2649, 2135, 2135, 2135, 2435, 2654, 2658, 2135, 2135, 2135, 2436, 2649, 2178, 2659, 2135, 2135, 2595, 2601, 2669, 2677, 2135, 2135, 2616, 2957, 2879, 2665, 2691, 2135, 2363, 2367, 2900, 2878, 2664, 2690, 2975, 2877, 2643, 2670, 2974, 2671, 2975, 2135, 2135, 2619, 2608, 2669, 2673, 2135, 2135, 2653, 2177, 2672, 2135, 2135, 2135, 2486, 2168, 2251, 2255, 2695, 2974, 2709, 2135, 2135, 2135, 2487, 2169, 2399, 2716, 2975, 2135, 2363, 2770, 2776, 2640, 2717, 2135, 2135, 2729, 2135, 2135, 2641, 2718, 2135, 2135, 2135, 2505, 2135, 2640, 2257, 2974, 2135, 2727, 2975, 2135, 2365, 2332, 2895, 2957, 2135, 2959, 2135, 2365, 2749, 2754, 2959, 2958, 2958, 2135, 2380, 2793, 2799, 2135, 2735, 2738, 2135, 2381, 2135, 2135, 2940, 2974, 2135, 2744, 2135, 2135, 2739, 2519, 2976, 2745, 2135, 2135, 2135, 2509, 2755, 2135, 2135, 2135, 2510, 2772, 2778, 2135, 2135, 2740, 2520, 2135, 2771, 2777, 2135, 2135, 2759, 2750, 2792, 2798, 2135, 2135, 2781, 2392, 2779, 2135, 2135, 2135, 2521, 2135, 2679, 2248, 2135, 2135, 2681, 2480, 2135, 2135, 2786, 3000, 2135, 2679, 2683, 2135, 2135, 2416, 2135, 2135, 2135, 2525, 2135, 2730, 2135, 2135, 2135, 2560, 2581, 2135, 2805, 2135, 2135, 2804, 2962, 2832, 2974, 2135, 2382, 2135, 2135, 2958, 2135, 2135, 2960, 2135, 2829, 2833, 2975, 2961, 2965, 2969, 2973, 2968, 2972, 2135, 2135, 2135, 2641, 2135, 2515, 2966, 2970, 2851, 2478, 2135, 2135, 2808, 2135, 2809, 2135, 2135, 2135, 2722, 2852, 2479, 2135, 2135, 2815, 2135, 2135, 2766, 2853, 2480, 2135, 2857, 2479, 2135, 2388, 2723, 2135, 2364, 2331, 2894, 2858, 2480, 2135, 2135, 2850, 2478, 2135, 2135, 2135, 2806, 2864, 2135, 2399, 2256, 2974, 2865, 2135, 2135, 2862, 2135, 2135, 2135, 2685, 2807, 2865, 2135, 2135, 2807, 2863, 2135, 2135, 2135, 2686, 2884, 2807, 2135, 2809, 2807, 2135, 2135, 2807, 2806, 2705, 2810, 2808, 2700, 2869, 2702, 2702, 2702, 2704, 2883, 2135, 2135, 2135, 2730, 2884, 2135, 2135, 2135, 2731, 2321, 2546, 2135, 2135, 2876, 2255, 2889, 2322, 2547, 2135, 2401, 2135, 2135, 2135, 2949, 2367, 2893, 2544, 2973, 2906, 2973, 2135, 2135, 2877, 2663, 2368, 2901, 2907, 2974, 2366, 2899, 2905, 2972, 2920, 2974, 2135, 2135, 2911, 2900, 2920, 2363, 2913, 2918, 2465, 2941, 2975, 2135, 2135, 2924, 2928, 2974, 2945, 2931, 2135, 2135, 2135, 2765, 2136, 2955, 2135, 2135, 2939, 2931, 2380, 2135, 2135, 2380, 2135, 2135, 2135, 2780, 2507, 2137, 2135, 2137, 2135, 2139, 2135, 2806, 2810, 2135, 2135, 2135, 2992, 2135, 2135, 2962, 2966, 2970, 2974, 2135, 2135, 2787, 3014, 2135, 2521, 2993, 2135, 2135, 2135, 2803, 2135, 2135, 2135, 2618, 2607, 2997, 3001, 2135, 2135, 2963, 2967, 2971, 2975, 2135, 2135, 2791, 2797, 2135, 3009, 2999, 3003, 2787, 3001, 2135, 2135, 2964, 2968, 2785, 2999, 3003, 2135, 2135, 2135, 2804, 2785, 2999, 3004, 2135, 2135, 2135, 2807, 2135, 2135, 3023, 2135, 2135, 2135, 2811, 2135, 2135, 3027, 2135, 2135, 2135, 2837, 2968, 3028, 2135, 2135, 2135, 2875, 2135, 2784, 3029, 2135, 2408, 2457, 2446, 0, 14, 0, -2120220672, 1610612736, -2074083328, -2002780160, -2111830528, 1073872896, 1342177280, 1075807216, 4096, 16384, 2048, 8192, 0, 8192, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, -2145386496, 8388608, 1073741824, 0, 0x80000000, 0x80000000, 2097152, 2097152, 2097152, 536870912, 0, 0, 134217728, 33554432, 1536, 268435456, 268435456, 268435456, 268435456, 128, 256, 32, 0, 65536, 131072, 524288, 16777216, 268435456, 0x80000000, 1572864, 1835008, 640, 32768, 65536, 262144, 1048576, 2097152, 196608, 196800, 196608, 196608, 0, 131072, 131072, 131072, 196608, 196624, 196608, 196624, 196608, 196608, 128, 4096, 16384, 16384, 2048, 0, 4, 0, 0, 0x80000000, 2097152, 0, 1024, 32, 32, 0, 65536, 1572864, 1048576, 32768, 32768, 32768, 32768, 196608, 196608, 196608, 64, 64, 196608, 196608, 131072, 131072, 131072, 131072, 268435456, 268435456, 64, 196736, 196608, 196608, 196608, 131072, 196608, 196608, 16384, 4, 4, 4, 2, 32, 32, 65536, 1048576, 12582912, 1073741824, 0, 0, 2, 8, 16, 96, 2048, 32768, 0, 0, 131072, 268435456, 268435456, 268435456, 256, 256, 196608, 196672, 196608, 196608, 196608, 196608, 4, 0, 256, 256, 256, 256, 32, 32, 32768, 32, 32, 32, 32, 32768, 268435456, 268435456, 268435456, 196608, 196608, 196608, 196624, 196608, 196608, 196608, 16, 16, 16, 268435456, 196608, 64, 64, 64, 196608, 196608, 196608, 196672, 268435456, 64, 64, 196608, 196608, 16, 196608, 196608, 196608, 268435456, 64, 196608, 131072, 262144, 4194304, 25165824, 33554432, 134217728, 268435456, 268435456, 196608, 262152, 8, 256, 512, 3072, 16384, 200, -1073741816, 8392713, 40, 8392718, 520, 807404072, 40, 520, 100663304, 0, 0, -540651761, -540651761, 257589048, 0, 262144, 0, 0, 3, 8, 256, 0, 4, 6, 4100, 8388612, 0, 0, 0, 3, 4, 8, 256, 512, 1024, 0, 2097152, 0, 0, -537854471, -537854471, 0, 100663296, 0, 0, 1, 2, 0, 0, 0, 16384, 0, 0, 0, 96, 14336, 0, 0, 0, 7, 8, 234881024, 0, 0, 0, 8, 0, 0, 0, 0, 262144, 0, 0, 16, 64, 384, 512, 0, 1, 1, 0, 12582912, 0, 0, 0, 0, 33554432, 67108864, -606084144, -606084144, -606084138, 0, 0, 28, 32, 768, 1966080, -608174080, 0, 0, 0, 14, 35056, 16, 64, 896, 24576, 98304, 98304, 131072, 262144, 524288, 1048576, 4194304, 25165824, 1048576, 62914560, 134217728, -805306368, 0, 384, 512, 16384, 65536, 131072, 262144, 29360128, 33554432, 134217728, 268435456, 1073741824, 0x80000000, 262144, 524288, 1048576, 29360128, 33554432, 524288, 1048576, 16777216, 33554432, 134217728, 268435456, 1073741824, 0, 0, 0, 123856, 1966080, 0, 64, 384, 16384, 65536, 131072, 16384, 65536, 524288, 268435456, 0x80000000, 0, 0, 524288, 0x80000000, 0, 0, 1, 16, 0, 256, 524288, 0, 0, 0, 25, 96, 128, -537854471, 0, 0, 0, 32, 7404800, -545259520, 0, 0, 0, 60, 0, 249, 64768, 1048576, 6291456, 6291456, 25165824, 100663296, 402653184, 1073741824, 96, 128, 1280, 2048, 4096, 57344, 6291456, 57344, 6291456, 8388608, 16777216, 33554432, 201326592, 1342177280, 0x80000000, 0, 57344, 6291456, 8388608, 100663296, 134217728, 0x80000000, 0, 0, 0, 1, 8, 16, 64, 128, 64, 128, 256, 1024, 131072, 131072, 131072, 262144, 524288, 16777216, 57344, 6291456, 8388608, 67108864, 134217728, 64, 256, 1024, 2048, 4096, 57344, 64, 256, 0, 24576, 32768, 6291456, 67108864, 134217728, 0, 1, 64, 256, 24576, 32768, 4194304, 32768, 4194304, 67108864, 0, 0, 64, 256, 0, 0, 24576, 32768, 0, 16384, 4194304, 67108864, 64, 16384, 0, 0, 1, 64, 256, 16384, 4194304, 67108864, 0, 0, 0, 16384, 0, 16384, 16384, 0, -470447874, -470447874, -470447874, 0, 0, 128, 0, 0, 8, 96, 2048, 32768, 262144, 8388608, 35056, 1376256, -471859200, 0, 0, 14, 16, 224, 2048, 32768, 2097152, 4194304, 8388608, -486539264, 0, 96, 128, 2048, 32768, 262144, 2097152, 262144, 2097152, 8388608, 33554432, 536870912, 1073741824, 0x80000000, 0, 1610612736, 0x80000000, 0, 0, 1, 524288, 1048576, 12582912, 0, 0, 0, 151311, 264503296, 2097152, 8388608, 33554432, 1610612736, 0x80000000, 262144, 8388608, 33554432, 536870912, 67108864, 4194304, 0, 4194304, 0, 4194304, 4194304, 0, 0, 524288, 8388608, 536870912, 1073741824, 0x80000000, 1, 4097, 8388609, 96, 2048, 32768, 1073741824, 0x80000000, 0, 96, 2048, 0x80000000, 0, 0, 96, 2048, 0, 0, 1, 12582912, 0, 0, 0, 0, 1641895695, 1641895695, 0, 0, 0, 249, 7404800, 15, 87808, 1835008, 1639972864, 0, 768, 5120, 16384, 65536, 1835008, 1835008, 12582912, 16777216, 1610612736, 0, 3, 4, 8, 768, 4096, 65536, 0, 0, 256, 512, 786432, 8, 256, 512, 4096, 16384, 1835008, 16384, 1835008, 12582912, 1610612736, 0, 0, 0, 256, 0, 0, 0, 4, 8, 16, 32, 1, 2, 8, 256, 16384, 524288, 16384, 524288, 1048576, 12582912, 1610612736, 0, 0, 0, 8388608, 0, 0, 0, 524288, 4194304, 0, 0, 0, 8388608, -548662288, -548662288, -548662288, 0, 0, 256, 16384, 65536, 520093696, -1073741824, 0, 0, 0, 16777216, 0, 16, 32, 960, 4096, 4980736, 520093696, 1073741824, 0, 32, 896, 4096, 57344, 1048576, 6291456, 8388608, 16777216, 100663296, 134217728, 268435456, 0x80000000, 0, 512, 786432, 4194304, 33554432, 134217728, 268435456, 0, 786432, 4194304, 134217728, 268435456, 0, 524288, 4194304, 268435456, 0, 0, 0, 0, 0, 4194304, 4194304, -540651761, 0, 0, 0, 2, 4, 8, 16, 96, 128, 264503296, -805306368, 0, 0, 0, 8, 256, 512, 19456, 131072, 3072, 16384, 131072, 262144, 8388608, 16777216, 512, 1024, 2048, 16384, 131072, 262144, 131072, 262144, 8388608, 33554432, 201326592, 268435456, 0, 3, 4, 256, 1024, 2048, 57344, 16384, 131072, 8388608, 33554432, 134217728, 268435456, 0, 3, 256, 1024, 16384, 131072, 33554432, 134217728, 1073741824, 0x80000000, 0, 0, 256, 524288, 0x80000000, 0, 3, 256, 33554432, 134217728, 1073741824, 0, 1, 2, 33554432, 1, 2, 134217728, 1073741824, 0, 1, 2, 134217728, 0, 0, 0, 64, 0, 0, 0, 16, 32, 896, 4096, 786432, 4194304, 16777216, 33554432, 201326592, 268435456, 1073741824, 0x80000000, 0, 0, 0, 15, 0, 4980736, 4980736, 4980736, 70460, 70460, 3478332, 0, 0, 1008, 4984832, 520093696, 60, 4864, 65536, 0, 0, 0, 12, 16, 32, 256, 512, 4096, 65536, 0, 0, 0, 67108864, 0, 0, 0, 12, 0, 256, 512, 65536, 0, 0, 1024, 512, 131072, 131072, 4, 16, 32, 65536, 0, 4, 16, 32, 0, 0, 0, 4, 16, 0, 0, 16384, 67108864, 0, 0, 1, 24, 96, 128, 256, 1024 +]; + +JSONiqTokenizer.TOKEN = +[ + "(0)", + "JSONChar", + "JSONCharRef", + "JSONPredefinedCharRef", + "ModuleDecl", + "Annotation", + "OptionDecl", + "Operator", + "Variable", + "Tag", + "EndTag", + "PragmaContents", + "DirCommentContents", + "DirPIContents", + "CDataSectionContents", + "AttrTest", + "Wildcard", + "EQName", + "IntegerLiteral", + "DecimalLiteral", + "DoubleLiteral", + "PredefinedEntityRef", + "'\"\"'", + "EscapeApos", + "AposChar", + "ElementContentChar", + "QuotAttrContentChar", + "AposAttrContentChar", + "NCName", + "QName", + "S", + "CharRef", + "CommentContents", + "DocTag", + "DocCommentContents", + "EOF", + "'!'", + "'\"'", + "'#'", + "'#)'", + "'$$'", + "''''", + "'('", + "'(#'", + "'(:'", + "'(:~'", + "')'", + "'*'", + "'*'", + "','", + "'-->'", + "'.'", + "'/'", + "'/>'", + "':'", + "':)'", + "';'", + "'' + switch (l1) + { + case 9: // DirCommentContents + shift(9); // DirCommentContents + break; + case 47: // '-->' + shift(47); // '-->' + break; + default: + shift(33); // EOF + } + eventHandler.endNonterminal("XMLComment", e0); + }; + + this.parse_PI = function() + { + eventHandler.startNonterminal("PI", e0); + lookahead1(3); // DirPIContents | EOF | '?' | '?>' + switch (l1) + { + case 10: // DirPIContents + shift(10); // DirPIContents + break; + case 59: // '?' + shift(59); // '?' + break; + case 60: // '?>' + shift(60); // '?>' + break; + default: + shift(33); // EOF + } + eventHandler.endNonterminal("PI", e0); + }; + + this.parse_Pragma = function() + { + eventHandler.startNonterminal("Pragma", e0); + lookahead1(2); // PragmaContents | EOF | '#' | '#)' + switch (l1) + { + case 8: // PragmaContents + shift(8); // PragmaContents + break; + case 36: // '#' + shift(36); // '#' + break; + case 37: // '#)' + shift(37); // '#)' + break; + default: + shift(33); // EOF + } + eventHandler.endNonterminal("Pragma", e0); + }; + + this.parse_Comment = function() + { + eventHandler.startNonterminal("Comment", e0); + lookahead1(4); // CommentContents | EOF | '(:' | ':)' + switch (l1) + { + case 52: // ':)' + shift(52); // ':)' + break; + case 41: // '(:' + shift(41); // '(:' + break; + case 30: // CommentContents + shift(30); // CommentContents + break; + default: + shift(33); // EOF + } + eventHandler.endNonterminal("Comment", e0); + }; + + this.parse_CommentDoc = function() + { + eventHandler.startNonterminal("CommentDoc", e0); + lookahead1(5); // DocTag | DocCommentContents | EOF | '(:' | ':)' + switch (l1) + { + case 31: // DocTag + shift(31); // DocTag + break; + case 32: // DocCommentContents + shift(32); // DocCommentContents + break; + case 52: // ':)' + shift(52); // ':)' + break; + case 41: // '(:' + shift(41); // '(:' + break; + default: + shift(33); // EOF + } + eventHandler.endNonterminal("CommentDoc", e0); + }; + + this.parse_QuotString = function() + { + eventHandler.startNonterminal("QuotString", e0); + lookahead1(6); // PredefinedEntityRef | EscapeQuot | QuotChar | CharRef | EOF | '"' + switch (l1) + { + case 18: // PredefinedEntityRef + shift(18); // PredefinedEntityRef + break; + case 29: // CharRef + shift(29); // CharRef + break; + case 19: // EscapeQuot + shift(19); // EscapeQuot + break; + case 21: // QuotChar + shift(21); // QuotChar + break; + case 35: // '"' + shift(35); // '"' + break; + default: + shift(33); // EOF + } + eventHandler.endNonterminal("QuotString", e0); + }; + + this.parse_AposString = function() + { + eventHandler.startNonterminal("AposString", e0); + lookahead1(7); // PredefinedEntityRef | EscapeApos | AposChar | CharRef | EOF | "'" + switch (l1) + { + case 18: // PredefinedEntityRef + shift(18); // PredefinedEntityRef + break; + case 29: // CharRef + shift(29); // CharRef + break; + case 20: // EscapeApos + shift(20); // EscapeApos + break; + case 22: // AposChar + shift(22); // AposChar + break; + case 38: // "'" + shift(38); // "'" + break; + default: + shift(33); // EOF + } + eventHandler.endNonterminal("AposString", e0); + }; + + this.parse_Prefix = function() + { + eventHandler.startNonterminal("Prefix", e0); + lookahead1W(13); // NCName^Token | S^WS | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + whitespace(); + parse_NCName(); + eventHandler.endNonterminal("Prefix", e0); + }; + + this.parse__EQName = function() + { + eventHandler.startNonterminal("_EQName", e0); + lookahead1W(12); // EQName^Token | S^WS | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + whitespace(); + parse_EQName(); + eventHandler.endNonterminal("_EQName", e0); + }; + + function parse_EQName() + { + eventHandler.startNonterminal("EQName", e0); + switch (l1) + { + case 77: // 'attribute' + shift(77); // 'attribute' + break; + case 91: // 'comment' + shift(91); // 'comment' + break; + case 115: // 'document-node' + shift(115); // 'document-node' + break; + case 116: // 'element' + shift(116); // 'element' + break; + case 119: // 'empty-sequence' + shift(119); // 'empty-sequence' + break; + case 140: // 'function' + shift(140); // 'function' + break; + case 147: // 'if' + shift(147); // 'if' + break; + case 160: // 'item' + shift(160); // 'item' + break; + case 180: // 'namespace-node' + shift(180); // 'namespace-node' + break; + case 186: // 'node' + shift(186); // 'node' + break; + case 211: // 'processing-instruction' + shift(211); // 'processing-instruction' + break; + case 221: // 'schema-attribute' + shift(221); // 'schema-attribute' + break; + case 222: // 'schema-element' + shift(222); // 'schema-element' + break; + case 238: // 'switch' + shift(238); // 'switch' + break; + case 239: // 'text' + shift(239); // 'text' + break; + case 248: // 'typeswitch' + shift(248); // 'typeswitch' + break; + default: + parse_FunctionName(); + } + eventHandler.endNonterminal("EQName", e0); + } + + function parse_FunctionName() + { + eventHandler.startNonterminal("FunctionName", e0); + switch (l1) + { + case 14: // EQName^Token + shift(14); // EQName^Token + break; + case 65: // 'after' + shift(65); // 'after' + break; + case 68: // 'ancestor' + shift(68); // 'ancestor' + break; + case 69: // 'ancestor-or-self' + shift(69); // 'ancestor-or-self' + break; + case 70: // 'and' + shift(70); // 'and' + break; + case 74: // 'as' + shift(74); // 'as' + break; + case 75: // 'ascending' + shift(75); // 'ascending' + break; + case 79: // 'before' + shift(79); // 'before' + break; + case 83: // 'case' + shift(83); // 'case' + break; + case 84: // 'cast' + shift(84); // 'cast' + break; + case 85: // 'castable' + shift(85); // 'castable' + break; + case 88: // 'child' + shift(88); // 'child' + break; + case 89: // 'collation' + shift(89); // 'collation' + break; + case 98: // 'copy' + shift(98); // 'copy' + break; + case 100: // 'count' + shift(100); // 'count' + break; + case 103: // 'declare' + shift(103); // 'declare' + break; + case 104: // 'default' + shift(104); // 'default' + break; + case 105: // 'delete' + shift(105); // 'delete' + break; + case 106: // 'descendant' + shift(106); // 'descendant' + break; + case 107: // 'descendant-or-self' + shift(107); // 'descendant-or-self' + break; + case 108: // 'descending' + shift(108); // 'descending' + break; + case 113: // 'div' + shift(113); // 'div' + break; + case 114: // 'document' + shift(114); // 'document' + break; + case 117: // 'else' + shift(117); // 'else' + break; + case 118: // 'empty' + shift(118); // 'empty' + break; + case 121: // 'end' + shift(121); // 'end' + break; + case 123: // 'eq' + shift(123); // 'eq' + break; + case 124: // 'every' + shift(124); // 'every' + break; + case 126: // 'except' + shift(126); // 'except' + break; + case 129: // 'first' + shift(129); // 'first' + break; + case 130: // 'following' + shift(130); // 'following' + break; + case 131: // 'following-sibling' + shift(131); // 'following-sibling' + break; + case 132: // 'for' + shift(132); // 'for' + break; + case 141: // 'ge' + shift(141); // 'ge' + break; + case 143: // 'group' + shift(143); // 'group' + break; + case 145: // 'gt' + shift(145); // 'gt' + break; + case 146: // 'idiv' + shift(146); // 'idiv' + break; + case 148: // 'import' + shift(148); // 'import' + break; + case 154: // 'insert' + shift(154); // 'insert' + break; + case 155: // 'instance' + shift(155); // 'instance' + break; + case 157: // 'intersect' + shift(157); // 'intersect' + break; + case 158: // 'into' + shift(158); // 'into' + break; + case 159: // 'is' + shift(159); // 'is' + break; + case 165: // 'last' + shift(165); // 'last' + break; + case 167: // 'le' + shift(167); // 'le' + break; + case 169: // 'let' + shift(169); // 'let' + break; + case 173: // 'lt' + shift(173); // 'lt' + break; + case 175: // 'mod' + shift(175); // 'mod' + break; + case 176: // 'modify' + shift(176); // 'modify' + break; + case 177: // 'module' + shift(177); // 'module' + break; + case 179: // 'namespace' + shift(179); // 'namespace' + break; + case 181: // 'ne' + shift(181); // 'ne' + break; + case 193: // 'only' + shift(193); // 'only' + break; + case 195: // 'or' + shift(195); // 'or' + break; + case 196: // 'order' + shift(196); // 'order' + break; + case 197: // 'ordered' + shift(197); // 'ordered' + break; + case 201: // 'parent' + shift(201); // 'parent' + break; + case 207: // 'preceding' + shift(207); // 'preceding' + break; + case 208: // 'preceding-sibling' + shift(208); // 'preceding-sibling' + break; + case 213: // 'rename' + shift(213); // 'rename' + break; + case 214: // 'replace' + shift(214); // 'replace' + break; + case 215: // 'return' + shift(215); // 'return' + break; + case 219: // 'satisfies' + shift(219); // 'satisfies' + break; + case 224: // 'self' + shift(224); // 'self' + break; + case 230: // 'some' + shift(230); // 'some' + break; + case 231: // 'stable' + shift(231); // 'stable' + break; + case 232: // 'start' + shift(232); // 'start' + break; + case 243: // 'to' + shift(243); // 'to' + break; + case 244: // 'treat' + shift(244); // 'treat' + break; + case 245: // 'try' + shift(245); // 'try' + break; + case 249: // 'union' + shift(249); // 'union' + break; + case 251: // 'unordered' + shift(251); // 'unordered' + break; + case 255: // 'validate' + shift(255); // 'validate' + break; + case 261: // 'where' + shift(261); // 'where' + break; + case 265: // 'with' + shift(265); // 'with' + break; + case 269: // 'xquery' + shift(269); // 'xquery' + break; + case 67: // 'allowing' + shift(67); // 'allowing' + break; + case 76: // 'at' + shift(76); // 'at' + break; + case 78: // 'base-uri' + shift(78); // 'base-uri' + break; + case 80: // 'boundary-space' + shift(80); // 'boundary-space' + break; + case 81: // 'break' + shift(81); // 'break' + break; + case 86: // 'catch' + shift(86); // 'catch' + break; + case 93: // 'construction' + shift(93); // 'construction' + break; + case 96: // 'context' + shift(96); // 'context' + break; + case 97: // 'continue' + shift(97); // 'continue' + break; + case 99: // 'copy-namespaces' + shift(99); // 'copy-namespaces' + break; + case 101: // 'decimal-format' + shift(101); // 'decimal-format' + break; + case 120: // 'encoding' + shift(120); // 'encoding' + break; + case 127: // 'exit' + shift(127); // 'exit' + break; + case 128: // 'external' + shift(128); // 'external' + break; + case 136: // 'ft-option' + shift(136); // 'ft-option' + break; + case 149: // 'in' + shift(149); // 'in' + break; + case 150: // 'index' + shift(150); // 'index' + break; + case 156: // 'integrity' + shift(156); // 'integrity' + break; + case 166: // 'lax' + shift(166); // 'lax' + break; + case 187: // 'nodes' + shift(187); // 'nodes' + break; + case 194: // 'option' + shift(194); // 'option' + break; + case 198: // 'ordering' + shift(198); // 'ordering' + break; + case 217: // 'revalidation' + shift(217); // 'revalidation' + break; + case 220: // 'schema' + shift(220); // 'schema' + break; + case 223: // 'score' + shift(223); // 'score' + break; + case 229: // 'sliding' + shift(229); // 'sliding' + break; + case 235: // 'strict' + shift(235); // 'strict' + break; + case 246: // 'tumbling' + shift(246); // 'tumbling' + break; + case 247: // 'type' + shift(247); // 'type' + break; + case 252: // 'updating' + shift(252); // 'updating' + break; + case 256: // 'value' + shift(256); // 'value' + break; + case 257: // 'variable' + shift(257); // 'variable' + break; + case 258: // 'version' + shift(258); // 'version' + break; + case 262: // 'while' + shift(262); // 'while' + break; + case 92: // 'constraint' + shift(92); // 'constraint' + break; + case 171: // 'loop' + shift(171); // 'loop' + break; + default: + shift(216); // 'returning' + } + eventHandler.endNonterminal("FunctionName", e0); + } + + function parse_NCName() + { + eventHandler.startNonterminal("NCName", e0); + switch (l1) + { + case 26: // NCName^Token + shift(26); // NCName^Token + break; + case 65: // 'after' + shift(65); // 'after' + break; + case 70: // 'and' + shift(70); // 'and' + break; + case 74: // 'as' + shift(74); // 'as' + break; + case 75: // 'ascending' + shift(75); // 'ascending' + break; + case 79: // 'before' + shift(79); // 'before' + break; + case 83: // 'case' + shift(83); // 'case' + break; + case 84: // 'cast' + shift(84); // 'cast' + break; + case 85: // 'castable' + shift(85); // 'castable' + break; + case 89: // 'collation' + shift(89); // 'collation' + break; + case 100: // 'count' + shift(100); // 'count' + break; + case 104: // 'default' + shift(104); // 'default' + break; + case 108: // 'descending' + shift(108); // 'descending' + break; + case 113: // 'div' + shift(113); // 'div' + break; + case 117: // 'else' + shift(117); // 'else' + break; + case 118: // 'empty' + shift(118); // 'empty' + break; + case 121: // 'end' + shift(121); // 'end' + break; + case 123: // 'eq' + shift(123); // 'eq' + break; + case 126: // 'except' + shift(126); // 'except' + break; + case 132: // 'for' + shift(132); // 'for' + break; + case 141: // 'ge' + shift(141); // 'ge' + break; + case 143: // 'group' + shift(143); // 'group' + break; + case 145: // 'gt' + shift(145); // 'gt' + break; + case 146: // 'idiv' + shift(146); // 'idiv' + break; + case 155: // 'instance' + shift(155); // 'instance' + break; + case 157: // 'intersect' + shift(157); // 'intersect' + break; + case 158: // 'into' + shift(158); // 'into' + break; + case 159: // 'is' + shift(159); // 'is' + break; + case 167: // 'le' + shift(167); // 'le' + break; + case 169: // 'let' + shift(169); // 'let' + break; + case 173: // 'lt' + shift(173); // 'lt' + break; + case 175: // 'mod' + shift(175); // 'mod' + break; + case 176: // 'modify' + shift(176); // 'modify' + break; + case 181: // 'ne' + shift(181); // 'ne' + break; + case 193: // 'only' + shift(193); // 'only' + break; + case 195: // 'or' + shift(195); // 'or' + break; + case 196: // 'order' + shift(196); // 'order' + break; + case 215: // 'return' + shift(215); // 'return' + break; + case 219: // 'satisfies' + shift(219); // 'satisfies' + break; + case 231: // 'stable' + shift(231); // 'stable' + break; + case 232: // 'start' + shift(232); // 'start' + break; + case 243: // 'to' + shift(243); // 'to' + break; + case 244: // 'treat' + shift(244); // 'treat' + break; + case 249: // 'union' + shift(249); // 'union' + break; + case 261: // 'where' + shift(261); // 'where' + break; + case 265: // 'with' + shift(265); // 'with' + break; + case 68: // 'ancestor' + shift(68); // 'ancestor' + break; + case 69: // 'ancestor-or-self' + shift(69); // 'ancestor-or-self' + break; + case 77: // 'attribute' + shift(77); // 'attribute' + break; + case 88: // 'child' + shift(88); // 'child' + break; + case 91: // 'comment' + shift(91); // 'comment' + break; + case 98: // 'copy' + shift(98); // 'copy' + break; + case 103: // 'declare' + shift(103); // 'declare' + break; + case 105: // 'delete' + shift(105); // 'delete' + break; + case 106: // 'descendant' + shift(106); // 'descendant' + break; + case 107: // 'descendant-or-self' + shift(107); // 'descendant-or-self' + break; + case 114: // 'document' + shift(114); // 'document' + break; + case 115: // 'document-node' + shift(115); // 'document-node' + break; + case 116: // 'element' + shift(116); // 'element' + break; + case 119: // 'empty-sequence' + shift(119); // 'empty-sequence' + break; + case 124: // 'every' + shift(124); // 'every' + break; + case 129: // 'first' + shift(129); // 'first' + break; + case 130: // 'following' + shift(130); // 'following' + break; + case 131: // 'following-sibling' + shift(131); // 'following-sibling' + break; + case 140: // 'function' + shift(140); // 'function' + break; + case 147: // 'if' + shift(147); // 'if' + break; + case 148: // 'import' + shift(148); // 'import' + break; + case 154: // 'insert' + shift(154); // 'insert' + break; + case 160: // 'item' + shift(160); // 'item' + break; + case 165: // 'last' + shift(165); // 'last' + break; + case 177: // 'module' + shift(177); // 'module' + break; + case 179: // 'namespace' + shift(179); // 'namespace' + break; + case 180: // 'namespace-node' + shift(180); // 'namespace-node' + break; + case 186: // 'node' + shift(186); // 'node' + break; + case 197: // 'ordered' + shift(197); // 'ordered' + break; + case 201: // 'parent' + shift(201); // 'parent' + break; + case 207: // 'preceding' + shift(207); // 'preceding' + break; + case 208: // 'preceding-sibling' + shift(208); // 'preceding-sibling' + break; + case 211: // 'processing-instruction' + shift(211); // 'processing-instruction' + break; + case 213: // 'rename' + shift(213); // 'rename' + break; + case 214: // 'replace' + shift(214); // 'replace' + break; + case 221: // 'schema-attribute' + shift(221); // 'schema-attribute' + break; + case 222: // 'schema-element' + shift(222); // 'schema-element' + break; + case 224: // 'self' + shift(224); // 'self' + break; + case 230: // 'some' + shift(230); // 'some' + break; + case 238: // 'switch' + shift(238); // 'switch' + break; + case 239: // 'text' + shift(239); // 'text' + break; + case 245: // 'try' + shift(245); // 'try' + break; + case 248: // 'typeswitch' + shift(248); // 'typeswitch' + break; + case 251: // 'unordered' + shift(251); // 'unordered' + break; + case 255: // 'validate' + shift(255); // 'validate' + break; + case 257: // 'variable' + shift(257); // 'variable' + break; + case 269: // 'xquery' + shift(269); // 'xquery' + break; + case 67: // 'allowing' + shift(67); // 'allowing' + break; + case 76: // 'at' + shift(76); // 'at' + break; + case 78: // 'base-uri' + shift(78); // 'base-uri' + break; + case 80: // 'boundary-space' + shift(80); // 'boundary-space' + break; + case 81: // 'break' + shift(81); // 'break' + break; + case 86: // 'catch' + shift(86); // 'catch' + break; + case 93: // 'construction' + shift(93); // 'construction' + break; + case 96: // 'context' + shift(96); // 'context' + break; + case 97: // 'continue' + shift(97); // 'continue' + break; + case 99: // 'copy-namespaces' + shift(99); // 'copy-namespaces' + break; + case 101: // 'decimal-format' + shift(101); // 'decimal-format' + break; + case 120: // 'encoding' + shift(120); // 'encoding' + break; + case 127: // 'exit' + shift(127); // 'exit' + break; + case 128: // 'external' + shift(128); // 'external' + break; + case 136: // 'ft-option' + shift(136); // 'ft-option' + break; + case 149: // 'in' + shift(149); // 'in' + break; + case 150: // 'index' + shift(150); // 'index' + break; + case 156: // 'integrity' + shift(156); // 'integrity' + break; + case 166: // 'lax' + shift(166); // 'lax' + break; + case 187: // 'nodes' + shift(187); // 'nodes' + break; + case 194: // 'option' + shift(194); // 'option' + break; + case 198: // 'ordering' + shift(198); // 'ordering' + break; + case 217: // 'revalidation' + shift(217); // 'revalidation' + break; + case 220: // 'schema' + shift(220); // 'schema' + break; + case 223: // 'score' + shift(223); // 'score' + break; + case 229: // 'sliding' + shift(229); // 'sliding' + break; + case 235: // 'strict' + shift(235); // 'strict' + break; + case 246: // 'tumbling' + shift(246); // 'tumbling' + break; + case 247: // 'type' + shift(247); // 'type' + break; + case 252: // 'updating' + shift(252); // 'updating' + break; + case 256: // 'value' + shift(256); // 'value' + break; + case 258: // 'version' + shift(258); // 'version' + break; + case 262: // 'while' + shift(262); // 'while' + break; + case 92: // 'constraint' + shift(92); // 'constraint' + break; + case 171: // 'loop' + shift(171); // 'loop' + break; + default: + shift(216); // 'returning' + } + eventHandler.endNonterminal("NCName", e0); + } + + function shift(t) + { + if (l1 == t) + { + whitespace(); + eventHandler.terminal(XQueryTokenizer.TOKEN[l1], b1, e1 > size ? size : e1); + b0 = b1; e0 = e1; l1 = 0; + } + else + { + error(b1, e1, 0, l1, t); + } + } + + function whitespace() + { + if (e0 != b1) + { + b0 = e0; + e0 = b1; + eventHandler.whitespace(b0, e0); + } + } + + function matchW(set) + { + var code; + for (;;) + { + code = match(set); + if (code != 28) // S^WS + { + break; + } + } + return code; + } + + function lookahead1W(set) + { + if (l1 == 0) + { + l1 = matchW(set); + b1 = begin; + e1 = end; + } + } + + function lookahead1(set) + { + if (l1 == 0) + { + l1 = match(set); + b1 = begin; + e1 = end; + } + } + + function error(b, e, s, l, t) + { + throw new self.ParseException(b, e, s, l, t); + } + + var lk, b0, e0; + var l1, b1, e1; + var eventHandler; + + var input; + var size; + var begin; + var end; + + function match(tokenSetId) + { + var nonbmp = false; + begin = end; + var current = end; + var result = XQueryTokenizer.INITIAL[tokenSetId]; + var state = 0; + + for (var code = result & 4095; code != 0; ) + { + var charclass; + var c0 = current < size ? input.charCodeAt(current) : 0; + ++current; + if (c0 < 0x80) + { + charclass = XQueryTokenizer.MAP0[c0]; + } + else if (c0 < 0xd800) + { + var c1 = c0 >> 4; + charclass = XQueryTokenizer.MAP1[(c0 & 15) + XQueryTokenizer.MAP1[(c1 & 31) + XQueryTokenizer.MAP1[c1 >> 5]]]; + } + else + { + if (c0 < 0xdc00) + { + var c1 = current < size ? input.charCodeAt(current) : 0; + if (c1 >= 0xdc00 && c1 < 0xe000) + { + ++current; + c0 = ((c0 & 0x3ff) << 10) + (c1 & 0x3ff) + 0x10000; + nonbmp = true; + } + } + var lo = 0, hi = 5; + for (var m = 3; ; m = (hi + lo) >> 1) + { + if (XQueryTokenizer.MAP2[m] > c0) hi = m - 1; + else if (XQueryTokenizer.MAP2[6 + m] < c0) lo = m + 1; + else {charclass = XQueryTokenizer.MAP2[12 + m]; break;} + if (lo > hi) {charclass = 0; break;} + } + } + + state = code; + var i0 = (charclass << 12) + code - 1; + code = XQueryTokenizer.TRANSITION[(i0 & 15) + XQueryTokenizer.TRANSITION[i0 >> 4]]; + + if (code > 4095) + { + result = code; + code &= 4095; + end = current; + } + } + + result >>= 12; + if (result == 0) + { + end = current - 1; + var c1 = end < size ? input.charCodeAt(end) : 0; + if (c1 >= 0xdc00 && c1 < 0xe000) --end; + return error(begin, end, state, -1, -1); + } + + if (nonbmp) + { + for (var i = result >> 9; i > 0; --i) + { + --end; + var c1 = end < size ? input.charCodeAt(end) : 0; + if (c1 >= 0xdc00 && c1 < 0xe000) --end; + } + } + else + { + end -= result >> 9; + } + + return (result & 511) - 1; + } +} + +XQueryTokenizer.getTokenSet = function(tokenSetId) +{ + var set = []; + var s = tokenSetId < 0 ? - tokenSetId : INITIAL[tokenSetId] & 4095; + for (var i = 0; i < 276; i += 32) + { + var j = i; + var i0 = (i >> 5) * 2062 + s - 1; + var i1 = i0 >> 2; + var i2 = i1 >> 2; + var f = XQueryTokenizer.EXPECTED[(i0 & 3) + XQueryTokenizer.EXPECTED[(i1 & 3) + XQueryTokenizer.EXPECTED[(i2 & 3) + XQueryTokenizer.EXPECTED[i2 >> 2]]]]; + for ( ; f != 0; f >>>= 1, ++j) + { + if ((f & 1) != 0) + { + set.push(XQueryTokenizer.TOKEN[j]); + } + } + } + return set; +}; + +XQueryTokenizer.MAP0 = +[ 66, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 27, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 32, 31, 31, 33, 31, 31, 31, 31, 31, 31, 34, 35, 36, 35, 31, 35, 37, 38, 39, 40, 41, 42, 43, 44, 45, 31, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 31, 61, 62, 63, 64, 35 +]; + +XQueryTokenizer.MAP1 = +[ 108, 124, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 156, 181, 181, 181, 181, 181, 214, 215, 213, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 247, 261, 277, 293, 309, 347, 363, 379, 416, 416, 416, 408, 331, 323, 331, 323, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 433, 433, 433, 433, 433, 433, 433, 316, 331, 331, 331, 331, 331, 331, 331, 331, 394, 416, 416, 417, 415, 416, 416, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 330, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 416, 66, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 27, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 35, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 32, 31, 31, 33, 31, 31, 31, 31, 31, 31, 34, 35, 36, 35, 31, 35, 37, 38, 39, 40, 41, 42, 43, 44, 45, 31, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 31, 61, 62, 63, 64, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 31, 31, 35, 35, 35, 35, 35, 35, 35, 65, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65 +]; + +XQueryTokenizer.MAP2 = +[ 57344, 63744, 64976, 65008, 65536, 983040, 63743, 64975, 65007, 65533, 983039, 1114111, 35, 31, 35, 31, 31, 35 +]; + +XQueryTokenizer.INITIAL = +[ 1, 2, 36867, 45060, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 +]; + +XQueryTokenizer.TRANSITION = +[ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22908, 18836, 17152, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 17365, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 17470, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 18157, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 17848, 17880, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18023, 36545, 18621, 18039, 18056, 18072, 18117, 18143, 18173, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17687, 18805, 18421, 18437, 18101, 17393, 18489, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 18579, 21711, 17152, 19008, 19233, 20367, 19008, 28684, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 17365, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 17470, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 18157, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 17848, 17880, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18023, 36545, 18621, 18039, 18056, 18072, 18117, 18143, 18173, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17687, 18805, 18421, 18437, 18101, 17393, 18489, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 20116, 18836, 18637, 19008, 19233, 21267, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 18763, 18778, 18794, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 18821, 22923, 18906, 19008, 19233, 17431, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18937, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 19054, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 18953, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21843, 18836, 18987, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21696, 18836, 18987, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22429, 20131, 18720, 19008, 19233, 20367, 19008, 17173, 23559, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 18087, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 21242, 19111, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 19024, 18836, 18609, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 19081, 22444, 18987, 19008, 19233, 20367, 19008, 19065, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21992, 22007, 18987, 19008, 19233, 20367, 19008, 18690, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22414, 18836, 18987, 19008, 19233, 30651, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 19138, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 19280, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 19172, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21783, 18836, 18987, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 19218, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21651, 18836, 18987, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 19249, 19265, 19307, 18888, 27857, 30536, 24401, 31444, 23357, 18888, 19351, 18888, 18890, 27211, 19370, 27211, 27211, 19392, 24401, 31911, 24401, 24401, 25467, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 28537, 19440, 24401, 24401, 24401, 24401, 24036, 17994, 24060, 18888, 18888, 18888, 18890, 19468, 27211, 27211, 27211, 27211, 19484, 35367, 19520, 24401, 24401, 24401, 19628, 18888, 29855, 18888, 18888, 23086, 27211, 19538, 27211, 27211, 30756, 24012, 24401, 19560, 24401, 24401, 26750, 18888, 18888, 19327, 27855, 27211, 27211, 19580, 17590, 24017, 24401, 24401, 19600, 25665, 18888, 18888, 28518, 27211, 27212, 24016, 19620, 19868, 28435, 25722, 18889, 19644, 27211, 32888, 35852, 19868, 31018, 19694, 19376, 19717, 22215, 19735, 22098, 19751, 35203, 19776, 19797, 19817, 19840, 25783, 31738, 24135, 19701, 19856, 31015, 23516, 31008, 28311, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21768, 18836, 19307, 18888, 27857, 27904, 24401, 29183, 28015, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 19888, 24401, 24401, 24401, 24401, 22953, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 28537, 19440, 24401, 24401, 24401, 24401, 24036, 18881, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 19628, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 24012, 24401, 24401, 24401, 24401, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22399, 18836, 19918, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21666, 18836, 19307, 18888, 27857, 27525, 24401, 29183, 21467, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 19946, 24401, 24401, 24401, 24401, 32382, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 28537, 19998, 24401, 24401, 24401, 24401, 31500, 18467, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 20021, 24401, 24401, 24401, 24401, 24401, 34271, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 32926, 29908, 24401, 24401, 24401, 24401, 26095, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 20050, 22968, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 35779, 20080, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 20101, 19039, 20191, 20412, 20903, 17569, 20309, 20872, 25633, 20623, 20505, 20218, 20242, 17189, 17208, 17281, 20355, 20265, 20306, 20328, 20383, 22490, 20796, 20619, 21354, 20654, 20410, 20956, 21232, 20765, 17421, 20535, 17192, 18127, 22459, 20312, 25531, 22470, 20309, 20428, 18964, 20466, 20491, 21342, 21070, 20521, 20682, 17714, 18326, 17543, 17559, 17585, 22497, 20559, 19504, 20279, 20575, 20290, 20475, 20604, 20639, 20226, 20670, 17661, 21190, 17703, 21176, 17730, 19494, 20698, 20711, 22480, 21046, 21116, 18971, 21130, 20727, 20755, 17675, 17753, 17832, 17590, 25518, 20394, 20781, 20831, 20202, 20847, 21401, 17292, 17934, 17979, 18549, 20863, 20588, 25542, 20888, 20919, 18072, 18117, 20935, 20972, 21032, 21062, 21086, 18239, 21102, 18563, 21146, 21162, 21206, 18351, 20949, 20902, 18340, 21222, 21258, 21283, 18360, 20249, 17405, 21295, 21311, 21327, 20739, 20343, 21370, 21386, 21417, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21977, 18836, 18987, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 21452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 21504, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 36501, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 28674, 21946, 17617, 36473, 18223, 17237, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 21575, 21534, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 21560, 30628, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21798, 18836, 21612, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21636, 18836, 18987, 19008, 19233, 17902, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21753, 19096, 21903, 19008, 19233, 20367, 19008, 19291, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 17379, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 21931, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 18280, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21962, 18594, 18987, 19008, 19233, 22043, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21681, 21858, 18987, 19008, 19233, 20367, 19008, 21544, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, 22059, 18888, 27857, 34097, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 30613, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 31500, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 32319, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 21431, 24401, 24401, 24401, 24401, 26095, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 22187, 22968, 24401, 24401, 24401, 22231, 18888, 18888, 27211, 27211, 35779, 20080, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, 22059, 18888, 27857, 34097, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 30613, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 31500, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 31181, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 21431, 24401, 24401, 24401, 24401, 26095, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 22187, 22968, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 35779, 20080, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, 22059, 18888, 27857, 34097, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 31678, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 31500, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 31181, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 21431, 24401, 24401, 24401, 24401, 26095, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 22187, 22968, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 35779, 20080, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, 22059, 18888, 27857, 34097, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 30613, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 33588, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 31181, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 21431, 24401, 24401, 24401, 24401, 26095, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 22187, 22968, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 35779, 20080, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, 22059, 18888, 27857, 35019, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22248, 24401, 24401, 24401, 24401, 30613, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 31500, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 31181, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 21431, 24401, 24401, 24401, 24401, 26095, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 22187, 22968, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 35779, 20080, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, 22059, 18888, 27857, 34097, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 18866, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 24036, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 19628, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 24012, 24401, 24401, 24401, 24401, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22324, 18836, 22059, 18888, 27857, 30501, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 18866, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 24036, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 19628, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 24012, 24401, 24401, 24401, 24401, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, 22059, 18888, 27857, 34097, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 18866, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 24036, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 19628, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 24012, 24401, 24401, 24401, 24401, 34365, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22354, 18836, 18987, 19008, 19233, 20367, 19008, 17173, 27086, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 19930, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21828, 18836, 18987, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22309, 22513, 18987, 19008, 19233, 20367, 19008, 19122, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 22544, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22608, 18836, 22988, 23004, 27585, 23020, 23036, 23067, 22087, 18888, 18888, 18888, 23083, 27211, 27211, 27211, 23102, 22121, 24401, 24401, 24401, 23122, 31386, 26154, 19674, 18888, 28119, 28232, 19424, 23705, 27211, 27211, 23142, 23173, 23189, 23212, 24401, 24401, 23246, 34427, 31693, 23262, 18888, 23290, 23308, 27783, 27620, 23327, 35263, 35107, 33383, 23346, 18193, 23393, 32748, 23968, 24401, 23414, 35153, 23463, 18888, 33913, 23442, 23482, 27211, 27211, 23532, 23552, 21431, 23575, 24401, 24401, 23604, 26095, 23635, 23657, 18888, 33482, 23685, 33251, 27211, 22187, 18851, 23721, 35536, 24401, 18887, 23750, 32641, 27211, 23769, 23787, 20080, 33012, 24384, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 23803, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 28224, 31826, 23823, 26917, 34978, 23850, 26493, 25782, 23878, 23914, 23516, 31008, 22105, 19419, 27963, 19659, 29781, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22623, 18836, 22059, 18888, 27857, 34097, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 30613, 18888, 18888, 18888, 18888, 28909, 25783, 27211, 27211, 27211, 34048, 23933, 22164, 24401, 24401, 24401, 28409, 23949, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 31181, 26583, 18888, 18888, 18888, 35585, 23984, 27211, 27211, 27211, 24005, 22201, 24033, 24401, 24401, 24401, 24052, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 22187, 22968, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 35779, 20080, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 26496, 24076, 24126, 24151, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22638, 18836, 22059, 19678, 27857, 24185, 24401, 24201, 24217, 26592, 18888, 18888, 18890, 24252, 24268, 27211, 27211, 22121, 24287, 24303, 24401, 24401, 30613, 19781, 35432, 36007, 32649, 18888, 25783, 24322, 28966, 23771, 27211, 35072, 22164, 24358, 32106, 26829, 24400, 31500, 31693, 18888, 18888, 18888, 24801, 18890, 27211, 27211, 27211, 27211, 24418, 19484, 24401, 24401, 24401, 24401, 20167, 31181, 18888, 18888, 18888, 27833, 23086, 27211, 27211, 33540, 27211, 30756, 21431, 24401, 24401, 22972, 24401, 26095, 18888, 36131, 18888, 27855, 27211, 24440, 27211, 22187, 22968, 24401, 24459, 24401, 31699, 28454, 18888, 34528, 34570, 35779, 24478, 24402, 24494, 25659, 18888, 36228, 27211, 27211, 24515, 30981, 23734, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 24538, 31017, 27856, 31741, 30059, 23377, 24563, 19837, 25782, 19760, 31015, 23516, 25374, 22105, 19419, 29793, 24579, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22653, 18836, 22059, 25756, 19982, 34097, 23196, 29183, 24614, 24110, 23641, 24673, 26103, 24697, 24443, 24713, 28558, 22121, 24748, 24462, 24764, 23398, 30613, 18888, 18888, 18888, 18888, 24798, 25783, 27211, 27211, 27211, 34232, 35072, 22164, 24401, 24401, 24401, 33302, 31500, 22559, 24106, 24232, 18888, 18888, 34970, 24817, 30411, 27211, 27211, 32484, 19484, 29750, 35127, 24401, 24401, 19872, 31181, 24852, 18888, 18888, 24871, 29221, 27211, 27211, 32072, 27211, 30756, 34441, 24401, 24401, 31571, 24401, 26095, 33141, 27802, 27011, 27855, 25295, 25607, 24888, 22187, 22968, 19195, 34593, 24906, 18887, 18888, 18888, 27211, 27211, 35779, 20080, 24402, 19868, 25659, 18888, 33663, 27211, 27211, 24924, 24947, 23588, 31018, 18890, 27211, 31833, 22135, 19447, 23086, 23330, 19828, 30904, 31042, 24972, 19840, 25000, 31738, 30898, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 25016, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22668, 18836, 25041, 25057, 31320, 25073, 25089, 25105, 22087, 34796, 24236, 36138, 34870, 34125, 25121, 23106, 35497, 22248, 36613, 25137, 30671, 27365, 30613, 25153, 26447, 25199, 25233, 22574, 23274, 25249, 25265, 25281, 25318, 25344, 25360, 25400, 25428, 25452, 26731, 25504, 31693, 23669, 25558, 27407, 25575, 28599, 25934, 25599, 27211, 28180, 27304, 25623, 25839, 25649, 24401, 34820, 25681, 25698, 22586, 27775, 30190, 25745, 25778, 25799, 25817, 28995, 33569, 30756, 21518, 33443, 25837, 25855, 25893, 26095, 31254, 26677, 30136, 27855, 25930, 25950, 27211, 22187, 22968, 25966, 25986, 24401, 23428, 27763, 36330, 26959, 26002, 26029, 26045, 26085, 26119, 26170, 26203, 26222, 26239, 30527, 26372, 26274, 28404, 31018, 33757, 27211, 34262, 26316, 36729, 26345, 26366, 35337, 31017, 26388, 26407, 30954, 26350, 33861, 26434, 26463, 26479, 26512, 23516, 33189, 26531, 26547, 27963, 31293, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22683, 18836, 26568, 26181, 26608, 34097, 26643, 29183, 22087, 26669, 18888, 18888, 18890, 26693, 27211, 27211, 27211, 22121, 26720, 24401, 24401, 24401, 30613, 18888, 18888, 18888, 18888, 26774, 25783, 27211, 27211, 27211, 26619, 35072, 22164, 24401, 24401, 24401, 21596, 31500, 31693, 18888, 18888, 33978, 18888, 18890, 27211, 27211, 25801, 27211, 27211, 19484, 24401, 24401, 24401, 26792, 24401, 31181, 18888, 18888, 18888, 35464, 23086, 27211, 27211, 27211, 26809, 30756, 21431, 24401, 24401, 24401, 26828, 26095, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 22187, 22968, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 35779, 20080, 24402, 19868, 25659, 31948, 18889, 35707, 27211, 19719, 26845, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 26905, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 24984, 31088, 19419, 26945, 27651, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22698, 18836, 26999, 18888, 27857, 34097, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 23051, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 27033, 24401, 24401, 24401, 24401, 24036, 31693, 18888, 18888, 27056, 18888, 18890, 27211, 27211, 30320, 27211, 27211, 27075, 24401, 24401, 29032, 24401, 24401, 19628, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 24012, 24401, 24401, 24401, 24401, 26750, 18888, 18888, 33986, 27855, 27211, 27211, 27102, 17590, 24017, 24401, 24401, 27123, 27144, 36254, 27162, 27210, 27228, 28500, 18187, 34842, 33426, 27244, 35980, 27277, 27302, 27320, 36048, 34013, 20999, 31882, 21478, 27895, 27356, 30287, 27381, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 26329, 30087, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, 22059, 27406, 27423, 27445, 35294, 27461, 22087, 18888, 18888, 30140, 18890, 27211, 27211, 27989, 27211, 22121, 24401, 24401, 25682, 24401, 18866, 18888, 18888, 18888, 18888, 18888, 34042, 27211, 27211, 27211, 27211, 29700, 22164, 24401, 24401, 24401, 24401, 27128, 31693, 27477, 18888, 18888, 18888, 18890, 27194, 27211, 27211, 27211, 27211, 19484, 35299, 24401, 24401, 24401, 24401, 19628, 18888, 18888, 18888, 27059, 23086, 27211, 27211, 27211, 33366, 30756, 24012, 24401, 24401, 24401, 35044, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 20815, 27211, 30818, 19960, 33969, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22713, 18836, 22059, 27496, 27516, 27541, 35231, 27557, 22087, 29662, 26292, 23292, 27573, 24836, 27601, 27211, 27636, 22121, 35544, 27686, 24401, 27721, 18866, 18888, 27799, 18888, 27818, 22071, 27853, 32260, 27211, 26013, 27873, 27920, 22164, 29419, 24401, 29946, 33413, 26742, 27751, 26881, 18888, 18888, 27261, 36776, 27936, 27211, 27211, 27211, 27988, 28005, 28031, 28052, 24401, 24401, 28069, 28088, 28135, 25488, 28152, 26069, 28167, 27211, 28340, 24657, 28196, 30756, 31523, 24401, 28212, 34176, 36174, 24956, 28248, 28266, 28290, 21488, 33077, 28327, 28356, 17590, 20986, 23126, 28391, 28425, 28102, 28451, 28470, 28490, 28516, 28534, 20034, 33728, 25868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 30241, 28274, 28553, 28574, 19406, 28590, 23086, 23330, 19828, 19452, 28615, 28660, 26147, 25783, 31738, 19837, 25782, 19760, 29613, 35958, 29276, 22105, 19419, 27963, 23157, 28700, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, 22059, 18888, 27857, 34097, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 18866, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 24036, 22528, 18888, 18888, 18888, 18888, 18890, 27333, 27211, 27211, 27211, 27211, 19484, 30853, 24401, 24401, 24401, 24401, 19628, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 24012, 24401, 24401, 24401, 24401, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22728, 18836, 28747, 28782, 28817, 28841, 28857, 28880, 28896, 24161, 28943, 32011, 36261, 27340, 28961, 29492, 28982, 29011, 24522, 29027, 25436, 29048, 23051, 27500, 29090, 29110, 30713, 18888, 23512, 29130, 25183, 27211, 29155, 28927, 27033, 29173, 23230, 24401, 29199, 35373, 31693, 18888, 18888, 25583, 32629, 29218, 27211, 27211, 31461, 30692, 29237, 27075, 24401, 24401, 24401, 29262, 29302, 19628, 18888, 34329, 18888, 18888, 23086, 27211, 29329, 27211, 27211, 30756, 24012, 35933, 24401, 24401, 24401, 27705, 31612, 18888, 18888, 29346, 29374, 27211, 35650, 17590, 21436, 29393, 24401, 25970, 18887, 33895, 18888, 27211, 32528, 27212, 24016, 32769, 19868, 25659, 18888, 26889, 27211, 27211, 29412, 23889, 24371, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31768, 19840, 25783, 31738, 19837, 29435, 29508, 31102, 29550, 29606, 22105, 30300, 29462, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22743, 18836, 22059, 29629, 29473, 34097, 33285, 29183, 29651, 27254, 18888, 29678, 33329, 32535, 27211, 29694, 29716, 22121, 19202, 24401, 32742, 29741, 18866, 26776, 33921, 28474, 18888, 18888, 25783, 29766, 27211, 29809, 27211, 35072, 22164, 35825, 24401, 29828, 24401, 24036, 36769, 25217, 18888, 18888, 29848, 18890, 27211, 29871, 27211, 26258, 27211, 29894, 24401, 29929, 24401, 36587, 24401, 19628, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 29725, 29962, 24401, 24401, 24401, 24401, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18473, 18888, 18888, 19584, 27211, 27212, 24016, 29982, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19902, 19447, 32052, 19544, 19828, 29998, 30097, 30031, 19840, 25783, 30047, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 30075, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22758, 18836, 30121, 30156, 30206, 30257, 30273, 30336, 22087, 35624, 32837, 25762, 18890, 29878, 34934, 26812, 27211, 22121, 24931, 23223, 29202, 24401, 18866, 34373, 30352, 18888, 18888, 18888, 23447, 24828, 27211, 27211, 27211, 35072, 30370, 35052, 24401, 24401, 24401, 24036, 29523, 18888, 18888, 27146, 18888, 31308, 30386, 27211, 27211, 30405, 30558, 19484, 30427, 24401, 24401, 29938, 35686, 19628, 28766, 30447, 34506, 35614, 23086, 28731, 30482, 30517, 30552, 30756, 24012, 20156, 30574, 30598, 30667, 26283, 33464, 28945, 27670, 30687, 32915, 33504, 25328, 17590, 23963, 20450, 33837, 21016, 32397, 26300, 30708, 30729, 27885, 30748, 21588, 36373, 30779, 26653, 24628, 33220, 32514, 30806, 31835, 25412, 25906, 26515, 18890, 28825, 31833, 26133, 19447, 28304, 31730, 23834, 26057, 30869, 30885, 32181, 30920, 30942, 32797, 25782, 30970, 31015, 23516, 31008, 30997, 31034, 27963, 19659, 29450, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22773, 18836, 31058, 31074, 32463, 31125, 31141, 31197, 22087, 18888, 29534, 35471, 36738, 27211, 24342, 31213, 24424, 22121, 24401, 20175, 31229, 31917, 27736, 31245, 34334, 27175, 18888, 29094, 27286, 27211, 31278, 31336, 27211, 31355, 31371, 24401, 31402, 31418, 24401, 31437, 31693, 18888, 31619, 32841, 18888, 18890, 27211, 27211, 31460, 31477, 27211, 19484, 24401, 24401, 31497, 36581, 24401, 33020, 18888, 18888, 18888, 18888, 30007, 27211, 27211, 27211, 27211, 31516, 32310, 24401, 24401, 24401, 24401, 31539, 18888, 28762, 18888, 24651, 35740, 27211, 27211, 28644, 31565, 35796, 24401, 24401, 19318, 32188, 18888, 24334, 28366, 27212, 29966, 29832, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 31587, 19868, 31635, 32435, 33693, 30105, 31663, 20005, 31715, 31757, 31784, 31812, 30015, 31851, 31878, 25783, 31898, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 31933, 30221, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22788, 18836, 22059, 25729, 30466, 31968, 24306, 31984, 32000, 32807, 35160, 27017, 29590, 34941, 19801, 29377, 33700, 22121, 27040, 30431, 29396, 28864, 29565, 18888, 18888, 18888, 32027, 18888, 25783, 27211, 27211, 23698, 27211, 35072, 22164, 24401, 24401, 30845, 24401, 24036, 32045, 18888, 26929, 18888, 18888, 18890, 27211, 31481, 32068, 27211, 27211, 32088, 24401, 33058, 32122, 24401, 24401, 33736, 18888, 18888, 33162, 18888, 23086, 27211, 27211, 29484, 27211, 28375, 32144, 24401, 24401, 33831, 24401, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 36704, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 33107, 22171, 33224, 24271, 32169, 31017, 27856, 31741, 19840, 25783, 31738, 30234, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, 32204, 32232, 32252, 32677, 33295, 29074, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 23619, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 32276, 24401, 24401, 24401, 24401, 24036, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 32299, 24401, 24401, 24401, 24401, 24401, 19628, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 24012, 24401, 24401, 24401, 24401, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 33886, 18889, 36065, 27211, 19719, 35326, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22803, 18836, 32335, 31647, 34666, 32351, 32367, 32417, 22087, 18888, 32433, 19335, 32451, 27211, 32479, 27107, 32500, 22121, 24401, 32551, 20085, 32572, 18866, 22287, 23753, 18888, 18888, 32602, 32665, 27211, 32693, 27211, 26972, 32713, 32729, 24401, 32764, 24401, 25877, 32785, 34768, 18888, 27390, 32823, 24594, 24855, 32857, 24890, 32878, 32904, 27211, 32942, 32977, 24401, 33000, 29313, 24401, 30790, 26206, 27666, 33904, 18888, 23086, 36353, 27211, 33036, 27211, 30756, 24012, 32153, 24401, 33056, 24401, 35861, 18888, 18888, 30354, 27972, 27211, 27211, 33800, 17590, 20145, 24401, 24401, 34638, 20811, 18888, 18888, 33074, 27211, 27212, 36167, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 34616, 24169, 33093, 33123, 33157, 27856, 31741, 23862, 26552, 34302, 19837, 25782, 19760, 31015, 23516, 31008, 33178, 19973, 27963, 23497, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22818, 18836, 33205, 28113, 33240, 34097, 33275, 29183, 22087, 33318, 35438, 18888, 18890, 33345, 26391, 33382, 27211, 22121, 33399, 28072, 33442, 24401, 18866, 22232, 18888, 33459, 18888, 18888, 33480, 33498, 25175, 27211, 27211, 26704, 22164, 24775, 35239, 24401, 24401, 25914, 29580, 18888, 18888, 31109, 25211, 33520, 33539, 27211, 27211, 33556, 36284, 19484, 33585, 24401, 24401, 33604, 32556, 19628, 18888, 18888, 31262, 33658, 23086, 27211, 27211, 33679, 27211, 30756, 24012, 24401, 24401, 33716, 24401, 26854, 27480, 18888, 33752, 27855, 33259, 34701, 27211, 17590, 32102, 24782, 23807, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 33773, 36105, 19868, 25659, 18888, 23368, 27211, 29157, 19719, 23889, 34454, 29286, 18890, 33794, 25302, 33816, 19447, 34079, 33853, 31862, 31017, 27856, 31741, 33877, 28920, 33937, 19837, 30461, 34002, 22276, 36041, 34029, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22833, 18836, 34064, 32616, 34113, 34141, 34157, 34192, 34208, 32216, 36013, 31549, 31952, 34224, 34248, 34287, 29330, 34350, 34389, 34413, 34481, 26793, 18866, 26187, 29635, 22293, 18888, 36654, 25783, 34522, 34544, 34566, 25821, 35072, 22164, 34586, 34609, 34632, 19604, 24036, 36644, 36674, 24681, 18888, 32401, 34654, 31339, 34682, 34698, 27211, 34717, 34753, 28053, 34812, 34836, 24401, 33619, 19628, 34858, 32236, 34906, 24598, 33523, 27612, 34890, 34922, 24732, 29246, 36717, 33634, 34465, 32984, 34168, 26750, 34957, 18888, 18888, 34994, 35010, 27211, 33040, 17590, 29913, 35035, 24401, 36304, 25482, 30171, 35883, 35068, 35088, 26627, 20441, 31173, 35123, 35143, 35176, 24640, 30492, 29358, 19719, 35192, 35219, 25384, 28801, 35255, 35279, 32586, 34496, 23086, 23330, 29061, 31017, 27856, 31741, 19840, 25783, 31738, 24547, 25164, 35315, 31796, 35353, 34316, 22105, 19419, 27963, 24091, 28630, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22848, 18836, 22059, 34782, 34088, 35389, 21008, 35405, 35421, 35454, 18888, 18888, 23466, 35487, 27211, 27211, 27211, 35513, 31154, 24401, 24401, 24401, 35560, 18888, 26863, 36664, 35601, 24872, 25783, 30389, 23536, 26250, 35647, 35666, 22164, 19522, 19564, 30582, 35682, 27697, 35575, 29114, 18888, 18888, 18888, 18890, 27211, 35702, 27211, 27211, 27211, 35723, 24401, 35527, 24401, 24401, 24401, 19628, 30184, 18888, 18888, 18888, 23086, 35739, 27211, 27211, 27211, 29139, 22938, 24401, 24401, 24401, 24401, 23898, 35756, 18888, 18888, 25025, 35778, 27211, 27211, 17590, 20064, 35795, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 23917, 18890, 34550, 31833, 22262, 19447, 23086, 23330, 26418, 31017, 27856, 31741, 19840, 25783, 35812, 19837, 27187, 35841, 33135, 23516, 31008, 22105, 22148, 28712, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22863, 18836, 22059, 35877, 28723, 34097, 31164, 29183, 22087, 26758, 18888, 22592, 18890, 23989, 27211, 29812, 27211, 22121, 33778, 24401, 31421, 24401, 18866, 18888, 18888, 26872, 18888, 18888, 25783, 27211, 30732, 27211, 27211, 35072, 22164, 24401, 24908, 24401, 24401, 24036, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 19628, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 24012, 24401, 24401, 24401, 24401, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22878, 18836, 22059, 27837, 27857, 35899, 24401, 35915, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 18866, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 24036, 31602, 18888, 18888, 18888, 18888, 26223, 27211, 27211, 27211, 27211, 27211, 19484, 35931, 24401, 24401, 24401, 24401, 19628, 18888, 28136, 18888, 18888, 35949, 27211, 32862, 27211, 32697, 30756, 24012, 24401, 32283, 24401, 32128, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22893, 18836, 22059, 35974, 34882, 34097, 33960, 29183, 35996, 18888, 23311, 18888, 36029, 27211, 27211, 36064, 36081, 22121, 24401, 24401, 36104, 33950, 18866, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 24036, 36121, 18888, 25559, 18888, 18888, 18890, 27211, 27211, 30313, 27211, 27211, 36154, 24401, 24401, 34397, 24401, 24401, 19628, 28250, 18888, 18888, 18888, 23086, 30926, 27211, 27211, 27211, 26983, 24012, 33642, 24401, 24401, 24401, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, 22059, 19354, 27857, 36190, 24401, 36206, 22087, 18888, 18888, 18888, 18007, 27211, 27211, 27211, 24724, 22121, 24401, 24401, 24401, 30827, 18866, 18888, 36222, 18888, 28795, 18888, 25783, 35100, 27211, 27429, 27211, 35072, 22164, 30836, 24401, 24499, 24401, 24036, 31693, 18888, 36244, 18888, 18888, 18890, 27211, 36088, 27211, 27211, 27211, 19484, 24401, 28036, 24401, 24401, 24401, 19628, 18888, 18888, 35631, 18888, 35762, 27211, 27211, 36277, 27211, 34730, 24012, 24401, 24401, 36300, 24401, 36320, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 25712, 18888, 18888, 36346, 27211, 27212, 19184, 24402, 19868, 25659, 32029, 18889, 27211, 33359, 19719, 23889, 36369, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22384, 18836, 36389, 19008, 19233, 20367, 36434, 17173, 17595, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 36453, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 20362, 21726, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22369, 18836, 18987, 19008, 19233, 20367, 19008, 21737, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21813, 18836, 36489, 19008, 19233, 20367, 19008, 17173, 17737, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17768, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 20543, 22022, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21828, 18836, 18987, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 36517, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21828, 18836, 19307, 18888, 27857, 30756, 24401, 29183, 28015, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 36567, 24401, 24401, 24401, 24401, 22953, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 28537, 36603, 24401, 24401, 24401, 24401, 24036, 18881, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 19628, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 24012, 24401, 24401, 24401, 24401, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 36629, 36690, 18720, 19008, 19233, 20367, 19008, 17454, 17595, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17223, 17308, 17327, 17346, 18918, 36754, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 20362, 21726, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 0, 94242, 0, 118820, 0, 2211840, 102439, 0, 0, 106538, 98347, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2482176, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 2207744, 2404352, 2412544, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 3104768, 2605056, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2678784, 2207744, 2695168, 2207744, 2703360, 2207744, 2711552, 2752512, 2207744, 0, 0, 0, 0, 0, 0, 2166784, 0, 0, 0, 0, 0, 0, 2158592, 2158592, 3170304, 3174400, 2158592, 0, 139, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2424832, 2158592, 2158592, 2158592, 2748416, 2756608, 2777088, 2801664, 2158592, 2158592, 2158592, 2863104, 2891776, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3104768, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2207744, 2785280, 2207744, 2809856, 2207744, 2207744, 2842624, 2207744, 2207744, 2207744, 2899968, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2473984, 2207744, 2207744, 2494464, 2207744, 2207744, 2207744, 2523136, 2158592, 2404352, 2412544, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2564096, 2158592, 2158592, 2605056, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2678784, 2158592, 2695168, 2158592, 2703360, 2158592, 2711552, 2752512, 2158592, 2158592, 2785280, 2158592, 2158592, 2785280, 2158592, 2809856, 2158592, 2158592, 2842624, 2158592, 2158592, 2158592, 2899968, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 18, 0, 0, 0, 0, 0, 0, 0, 2211840, 0, 0, 641, 0, 2158592, 0, 0, 0, 0, 0, 0, 0, 0, 2211840, 0, 0, 32768, 0, 2158592, 0, 2158592, 2158592, 2158592, 2383872, 2158592, 2158592, 2158592, 2158592, 3006464, 2383872, 2207744, 2207744, 2207744, 2207744, 2158877, 2158877, 2158877, 2158877, 0, 0, 0, 2158877, 2572573, 2158877, 2158877, 0, 2207744, 2207744, 2596864, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2641920, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 0, 0, 167936, 0, 0, 2162688, 0, 0, 3104768, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 0, 0, 2146304, 2146304, 2224128, 2224128, 2232320, 2232320, 2232320, 641, 0, 0, 0, 0, 0, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2531328, 2158592, 2158592, 2158592, 2158592, 2158592, 2617344, 2158592, 2158592, 2158592, 2158592, 2441216, 2445312, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2502656, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2580480, 2158592, 2158592, 2158592, 2158592, 2621440, 2158592, 2580480, 2158592, 2158592, 2158592, 2158592, 2621440, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2699264, 2158592, 2158592, 2158592, 2158592, 2158592, 2748416, 2756608, 2777088, 2801664, 2207744, 2863104, 2891776, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 3018752, 2207744, 3043328, 2207744, 2207744, 2207744, 2207744, 3080192, 2207744, 2207744, 3112960, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 0, 0, 172310, 279, 0, 2162688, 0, 0, 2207744, 2207744, 2207744, 3186688, 2207744, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2158592, 2158592, 2158592, 2404352, 2412544, 2158592, 2510848, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2584576, 2158592, 2609152, 2158592, 2158592, 2629632, 2158592, 2158592, 2158592, 2686976, 2158592, 2715648, 2158592, 2158592, 3121152, 2158592, 2158592, 2158592, 3149824, 2158592, 2158592, 3170304, 3174400, 2158592, 2367488, 2207744, 2207744, 2207744, 2207744, 2158592, 2158592, 2158592, 2158592, 0, 0, 0, 2158592, 2572288, 2158592, 2158592, 0, 2207744, 2207744, 2207744, 2433024, 2207744, 2453504, 2461696, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2510848, 2207744, 2207744, 2207744, 2207744, 2207744, 2531328, 2207744, 2207744, 2207744, 2207744, 2207744, 2617344, 2207744, 2207744, 2207744, 2207744, 2158592, 2158592, 2158592, 2158592, 0, 0, 0, 2158592, 2572288, 2158592, 2158592, 1508, 2715648, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2867200, 2207744, 2904064, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2580480, 2207744, 2207744, 2207744, 2207744, 2621440, 2207744, 2207744, 2207744, 3149824, 2207744, 2207744, 3170304, 3174400, 2207744, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, 2158592, 2158592, 2158592, 2404352, 2412544, 2707456, 2732032, 2207744, 2207744, 2207744, 2822144, 2826240, 2207744, 2895872, 2207744, 2207744, 2924544, 2207744, 2207744, 2973696, 2207744, 0, 0, 0, 0, 0, 0, 2166784, 0, 0, 0, 0, 0, 285, 2158592, 2158592, 3112960, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3186688, 2158592, 2207744, 2207744, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 0, 0, 2158592, 2158592, 2158592, 2158592, 0, 0, 2535424, 2543616, 2158592, 2158592, 2158592, 0, 0, 0, 2158592, 2158592, 2158592, 2990080, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2572288, 2981888, 2207744, 2207744, 3002368, 2207744, 3047424, 3063808, 3076096, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 3203072, 2708960, 2732032, 2158592, 2158592, 2158592, 2822144, 2827748, 2158592, 2895872, 2158592, 2158592, 2924544, 2158592, 2158592, 2973696, 2158592, 2981888, 2158592, 2158592, 3002368, 2158592, 3047424, 3063808, 3076096, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3203072, 2981888, 2158592, 2158592, 3003876, 2158592, 3047424, 3063808, 3076096, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3203072, 2207744, 2207744, 2207744, 2207744, 2207744, 2424832, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 20480, 0, 0, 0, 0, 0, 2162688, 20480, 0, 2523136, 2527232, 2158592, 2158592, 2576384, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2908160, 2527232, 2207744, 2207744, 2576384, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2908160, 2207744, 0, 0, 0, 0, 0, 0, 2166784, 0, 0, 0, 0, 0, 286, 2158592, 2158592, 0, 0, 2158592, 2158592, 2158592, 2158592, 2633728, 2658304, 0, 0, 2740224, 2744320, 0, 2834432, 2207744, 2207744, 2977792, 2207744, 2207744, 2207744, 2207744, 3039232, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 3158016, 0, 0, 29315, 0, 0, 0, 0, 45, 45, 45, 45, 45, 933, 45, 45, 45, 45, 442, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 2494464, 2158592, 2158592, 2158592, 2524757, 2527232, 2158592, 2158592, 2576384, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 1504, 2158592, 2498560, 2158592, 2158592, 2158592, 2158592, 2568192, 2158592, 2592768, 2625536, 2158592, 2158592, 2674688, 2736128, 2158592, 2158592, 0, 2158592, 2912256, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3108864, 2158592, 2158592, 3133440, 3145728, 3153920, 2375680, 2379776, 2207744, 2207744, 2420736, 2207744, 2449408, 2207744, 2207744, 2207744, 2498560, 2207744, 2207744, 2207744, 2207744, 2568192, 2207744, 0, 0, 0, 0, 0, 0, 2166784, 0, 0, 0, 0, 0, 551, 2158592, 2158592, 2158592, 2158592, 2207744, 2506752, 2207744, 2207744, 2207744, 2207744, 2207744, 2158592, 2506752, 0, 2020, 2158592, 2592768, 2625536, 2207744, 2207744, 2674688, 2736128, 2207744, 2207744, 2207744, 2912256, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 542, 0, 544, 2207744, 3108864, 2207744, 2207744, 3133440, 3145728, 3153920, 2375680, 2379776, 2158592, 2158592, 2420736, 2158592, 2449408, 2158592, 2158592, 2158592, 2158592, 2158592, 3186688, 2158592, 0, 641, 0, 0, 0, 0, 0, 0, 2367488, 2158592, 2498560, 2158592, 2158592, 1621, 2158592, 2158592, 2568192, 2158592, 2592768, 2625536, 2158592, 2158592, 2674688, 0, 0, 0, 0, 0, 1608, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1107, 97, 97, 1110, 97, 97, 3133440, 3145728, 3153920, 2158592, 2408448, 2416640, 2158592, 2465792, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3014656, 2158592, 2158592, 3051520, 2158592, 2158592, 3100672, 2158592, 2158592, 3121152, 2158592, 2158592, 2158592, 3149824, 2416640, 2207744, 2465792, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2633728, 2658304, 2740224, 2744320, 2834432, 2949120, 2158592, 2985984, 2158592, 2998272, 2158592, 2158592, 2158592, 3129344, 2207744, 2408448, 2949120, 2207744, 2985984, 2207744, 2998272, 2207744, 2207744, 2207744, 3129344, 2158592, 2408448, 2416640, 2158592, 2465792, 2158592, 2158592, 2158592, 2158592, 2158592, 3186688, 2158592, 0, 32768, 0, 0, 0, 0, 0, 0, 2367488, 2949120, 2158592, 2985984, 2158592, 2998272, 2158592, 2158592, 2158592, 3129344, 2158592, 2158592, 2478080, 2158592, 2158592, 2158592, 2535424, 2543616, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3117056, 2207744, 2207744, 2478080, 2207744, 2207744, 2207744, 2207744, 2699264, 2207744, 2207744, 2207744, 2207744, 2207744, 2748416, 2756608, 2777088, 2801664, 2207744, 2207744, 2158877, 2158877, 2158877, 2158877, 2158877, 0, 0, 0, 2158877, 2158877, 2158877, 2158877, 0, 0, 2535709, 2543901, 2158877, 2158877, 2158877, 0, 0, 0, 2158877, 2158877, 2158877, 2990365, 2158877, 2158877, 2158730, 2158730, 2158730, 2158730, 2158730, 2572426, 2207744, 2535424, 2543616, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 3117056, 2158592, 2158592, 2478080, 2207744, 2207744, 2990080, 2207744, 2207744, 2158592, 2158592, 2482176, 2158592, 2158592, 0, 0, 0, 2158592, 2158592, 2158592, 0, 2158592, 2908160, 2158592, 2158592, 2158592, 2977792, 2158592, 2158592, 2158592, 2158592, 3039232, 2158592, 2158592, 3010560, 2207744, 2428928, 2207744, 2514944, 2207744, 2588672, 2207744, 2838528, 2207744, 2207744, 2207744, 3010560, 2158592, 2428928, 2158592, 2514944, 0, 0, 2158592, 2588672, 2158592, 0, 2838528, 2158592, 2158592, 2158592, 3010560, 2158592, 2506752, 2158592, 18, 0, 0, 0, 0, 0, 0, 0, 2211840, 0, 0, 0, 0, 2158592, 0, 0, 29315, 922, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1539, 45, 3006464, 2383872, 0, 2020, 2158592, 2158592, 2158592, 2158592, 3006464, 2158592, 2637824, 2953216, 2158592, 2207744, 2637824, 2953216, 2207744, 0, 0, 2158592, 2637824, 2953216, 2158592, 2539520, 2158592, 2539520, 2207744, 0, 0, 2539520, 2158592, 2158592, 2158592, 2158592, 2207744, 2506752, 2207744, 2207744, 2207744, 2207744, 2207744, 2158592, 2506752, 0, 0, 2158592, 2207744, 0, 2158592, 2158592, 2207744, 0, 2158592, 2158592, 2207744, 0, 2158592, 2965504, 2965504, 2965504, 0, 0, 0, 0, 0, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2474269, 2158877, 2158877, 0, 0, 2158877, 2158877, 2158877, 2158877, 2634013, 2658589, 0, 0, 2740509, 2744605, 0, 2834717, 40976, 18, 36884, 45078, 24, 28, 90143, 94242, 118820, 102439, 106538, 98347, 118820, 118820, 118820, 40976, 18, 18, 36884, 0, 0, 0, 24, 24, 24, 27, 27, 27, 27, 90143, 0, 0, 86016, 0, 0, 2211840, 102439, 0, 0, 0, 98347, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 3158016, 0, 2375680, 2379776, 2158592, 2158592, 2420736, 2158592, 2449408, 2158592, 2158592, 0, 94242, 0, 0, 0, 2211840, 102439, 0, 0, 106538, 98347, 135, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2564096, 2158592, 2158592, 2158592, 2158592, 2158592, 2596864, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2641920, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2781184, 2793472, 2494464, 2158592, 2158592, 2158592, 2523136, 2527232, 2158592, 2158592, 2576384, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 40976, 0, 18, 18, 24, 0, 27, 27, 0, 2158592, 2498560, 2158592, 2158592, 0, 2158592, 2158592, 2568192, 2158592, 2592768, 2625536, 2158592, 2158592, 2674688, 0, 0, 0, 0, 0, 2211840, 0, 0, 0, 0, 0, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2473984, 2158592, 2158592, 2494464, 2158592, 2158592, 2158592, 3006464, 2383872, 0, 0, 2158592, 2158592, 2158592, 2158592, 3006464, 2158592, 2637824, 2953216, 2158592, 2207744, 2637824, 2953216, 40976, 18, 36884, 45078, 24, 27, 147488, 94242, 147456, 147488, 106538, 98347, 0, 0, 147456, 40976, 18, 18, 36884, 0, 45078, 0, 24, 24, 24, 27, 27, 27, 27, 0, 81920, 0, 94242, 0, 0, 0, 2211840, 0, 0, 0, 106538, 98347, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2428928, 2158592, 2514944, 2158592, 2588672, 2158592, 2838528, 2158592, 2158592, 40976, 18, 151573, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 0, 40976, 18, 18, 36884, 0, 45078, 0, 24, 24, 24, 27, 27, 27, 27, 90143, 0, 0, 1315, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1487, 97, 18, 131427, 0, 0, 0, 0, 0, 0, 362, 0, 0, 365, 29315, 367, 0, 0, 29315, 0, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 130, 94242, 0, 0, 0, 2211840, 102439, 0, 0, 106538, 98347, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3096576, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2207744, 2207744, 2158592, 18, 0, 0, 0, 0, 0, 0, 0, 2211840, 0, 0, 0, 0, 2158592, 644, 2207744, 2207744, 2207744, 3186688, 2207744, 0, 1080, 0, 1084, 0, 1088, 0, 0, 0, 0, 0, 0, 0, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2531466, 2158730, 2158730, 2158730, 2158730, 2158730, 2617482, 0, 94242, 0, 0, 0, 2211840, 102439, 0, 0, 106538, 98347, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2781184, 2793472, 2158592, 2818048, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 40976, 18, 36884, 45078, 24, 27, 90143, 159779, 159744, 102439, 159779, 98347, 0, 0, 159744, 40976, 18, 18, 36884, 0, 45078, 0, 2224253, 172032, 2224253, 2232448, 2232448, 172032, 2232448, 90143, 0, 0, 2170880, 0, 0, 550, 829, 2158592, 2158592, 2158592, 2387968, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 40976, 0, 18, 18, 124, 124, 127, 127, 127, 40976, 18, 36884, 45078, 25, 29, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 163931, 40976, 18, 18, 36884, 0, 45078, 249856, 24, 24, 24, 27, 27, 27, 27, 90143, 0, 0, 2170880, 0, 0, 827, 0, 2158592, 2158592, 2158592, 2387968, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 40976, 0, 4243810, 4243810, 24, 24, 27, 27, 27, 2207744, 0, 0, 0, 0, 0, 0, 2166784, 0, 0, 0, 0, 57344, 286, 2158592, 2158592, 2158592, 2158592, 2707456, 2732032, 2158592, 2158592, 2158592, 2822144, 2826240, 2158592, 2895872, 2158592, 2158592, 2924544, 2158592, 2158592, 2973696, 2158592, 2207744, 2207744, 2207744, 3186688, 2207744, 0, 0, 0, 0, 0, 0, 53248, 0, 0, 0, 0, 0, 97, 97, 97, 97, 97, 1613, 97, 97, 97, 97, 97, 97, 1495, 97, 97, 97, 97, 97, 97, 97, 97, 97, 566, 97, 97, 97, 97, 97, 97, 2207744, 0, 0, 0, 0, 0, 0, 2166784, 546, 0, 0, 0, 0, 286, 2158592, 2158592, 2158592, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 17, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 20480, 120, 121, 18, 18, 36884, 0, 45078, 0, 24, 24, 24, 27, 27, 27, 27, 90143, 0, 0, 2170880, 0, 53248, 550, 0, 2158592, 2158592, 2158592, 2387968, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 40976, 196608, 18, 266240, 24, 24, 27, 27, 27, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 0, 45, 45, 45, 45, 45, 45, 45, 1535, 45, 45, 45, 45, 45, 45, 45, 1416, 45, 45, 45, 45, 45, 45, 45, 45, 424, 45, 45, 45, 45, 45, 45, 45, 45, 45, 405, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 199, 45, 45, 67, 67, 67, 67, 67, 491, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1766, 67, 67, 67, 1767, 67, 24850, 24850, 12564, 12564, 0, 0, 2166784, 546, 0, 53531, 53531, 0, 286, 97, 97, 0, 0, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 0, 97, 97, 97, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 743, 57889, 0, 2170880, 0, 0, 550, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 1856, 45, 1858, 1859, 67, 67, 67, 1009, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1021, 67, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2367773, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2699549, 2158877, 2158877, 2158877, 2158877, 2158877, 2748701, 2756893, 2777373, 2801949, 97, 1115, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 857, 97, 67, 67, 67, 67, 67, 1258, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1826, 67, 97, 97, 97, 97, 97, 97, 1338, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 870, 97, 97, 67, 67, 67, 1463, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1579, 67, 67, 97, 97, 97, 1518, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 904, 905, 97, 97, 97, 97, 1620, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 921, 0, 0, 0, 0, 0, 0, 45, 1679, 67, 67, 67, 1682, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1690, 67, 0, 0, 97, 97, 97, 97, 45, 45, 67, 67, 0, 0, 97, 97, 45, 45, 45, 669, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 189, 45, 45, 45, 1748, 45, 45, 45, 1749, 1750, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 1959, 67, 67, 67, 67, 1768, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1791, 97, 97, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 1802, 67, 1817, 67, 67, 67, 67, 67, 67, 1823, 67, 67, 67, 67, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 0, 97, 97, 97, 97, 1848, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 659, 45, 45, 45, 45, 45, 45, 45, 1863, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 495, 67, 67, 67, 67, 67, 1878, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 97, 97, 97, 97, 0, 0, 0, 1973, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1165, 97, 1167, 67, 24850, 24850, 12564, 12564, 0, 0, 2166784, 0, 0, 53531, 53531, 0, 286, 97, 97, 0, 0, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 1789, 97, 0, 94242, 0, 0, 0, 2211840, 102439, 0, 0, 106538, 98347, 136, 2158592, 2158592, 2158592, 2158592, 2158592, 3158016, 229376, 2375680, 2379776, 2158592, 2158592, 2420736, 2158592, 2449408, 2158592, 2158592, 67, 24850, 24850, 12564, 12564, 0, 0, 280, 547, 0, 53531, 53531, 0, 286, 97, 97, 0, 0, 97, 97, 97, 97, 97, 97, 0, 1788, 97, 97, 0, 97, 2024, 97, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 235, 67, 67, 67, 67, 67, 57889, 547, 547, 0, 0, 550, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 45, 45, 45, 1799, 45, 45, 45, 67, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 1092, 0, 0, 0, 0, 0, 97, 97, 97, 97, 1612, 97, 97, 97, 97, 1616, 97, 1297, 1472, 0, 0, 0, 0, 1303, 1474, 0, 0, 0, 0, 1309, 1476, 0, 0, 0, 0, 97, 97, 97, 1481, 97, 97, 97, 97, 97, 97, 1488, 97, 0, 1474, 0, 1476, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 607, 97, 97, 97, 97, 40976, 18, 36884, 45078, 26, 30, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 213080, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 143448, 40976, 18, 18, 36884, 0, 45078, 0, 24, 24, 24, 27, 27, 27, 27, 0, 0, 0, 0, 97, 97, 97, 97, 1482, 97, 1483, 97, 97, 97, 97, 97, 97, 1326, 97, 97, 1329, 1330, 97, 97, 97, 97, 97, 97, 1159, 1160, 97, 97, 97, 97, 97, 97, 97, 97, 590, 97, 97, 97, 97, 97, 97, 97, 0, 94242, 0, 0, 0, 2211974, 102439, 0, 0, 106538, 98347, 0, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2474122, 2158730, 2158730, 2494602, 2158730, 2158730, 2158730, 2809994, 2158730, 2158730, 2842762, 2158730, 2158730, 2158730, 2900106, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 3014794, 2158730, 2158730, 3051658, 2158730, 2158730, 3100810, 2158730, 2158730, 2158730, 2158730, 3096714, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2207744, 2207744, 2207744, 2207744, 2207744, 2572288, 2207744, 2207744, 2207744, 2207744, 541, 541, 543, 543, 0, 0, 2166784, 0, 548, 549, 549, 0, 286, 2158877, 2158877, 2158877, 2863389, 2892061, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 3186973, 2158877, 0, 0, 0, 0, 0, 0, 0, 0, 2367626, 2158877, 2404637, 2412829, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2564381, 2158877, 2158877, 2605341, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2679069, 2158877, 2695453, 2158877, 2703645, 2158877, 2711837, 2752797, 2158877, 0, 2158877, 2158877, 2158877, 2384010, 2158730, 2158730, 2158730, 2158730, 3006602, 2383872, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 3096576, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 0, 0, 0, 0, 0, 2162688, 0, 0, 2158877, 2785565, 2158877, 2810141, 2158877, 2158877, 2842909, 2158877, 2158877, 2158877, 2900253, 2158877, 2158877, 2158877, 2158877, 2158877, 2531613, 2158877, 2158877, 2158877, 2158877, 2158877, 2617629, 2158877, 2158877, 2158877, 2158877, 2158730, 2818186, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 3105053, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 0, 0, 0, 0, 0, 97, 97, 97, 1611, 97, 97, 97, 97, 97, 97, 97, 1496, 97, 97, 1499, 97, 97, 97, 97, 97, 2441354, 2445450, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2502794, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2433162, 2158730, 2453642, 2461834, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2580618, 2158730, 2158730, 2158730, 2158730, 2621578, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2699402, 2158730, 2158730, 2158730, 2158730, 2678922, 2158730, 2695306, 2158730, 2703498, 2158730, 2711690, 2752650, 2158730, 2158730, 2785418, 2158730, 2158730, 2158730, 3113098, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 3186826, 2158730, 2207744, 2207744, 2207744, 2207744, 2781184, 2793472, 2207744, 2818048, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 541, 0, 543, 2158877, 2502941, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2580765, 2158877, 2158877, 2158877, 2158877, 2621725, 2158877, 3019037, 2158877, 3043613, 2158877, 2158877, 2158877, 2158877, 3080477, 2158877, 2158877, 3113245, 2158877, 2158877, 2158877, 2158877, 0, 2158877, 2908445, 2158877, 2158877, 2158877, 2978077, 2158877, 2158877, 2158877, 2158877, 3039517, 2158877, 2158730, 2510986, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2584714, 2158730, 2609290, 2158730, 2158730, 2629770, 2158730, 2158730, 2158730, 2388106, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2605194, 2158730, 2158730, 2158730, 2158730, 2687114, 2158730, 2715786, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2867338, 2158730, 2904202, 2158730, 2158730, 2158730, 2642058, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2781322, 2793610, 2158730, 3121290, 2158730, 2158730, 2158730, 3149962, 2158730, 2158730, 3170442, 3174538, 2158730, 2367488, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2441216, 2445312, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2502656, 2158877, 2433309, 2158877, 2453789, 2461981, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2511133, 2158877, 2158877, 2158877, 2158877, 2584861, 2158877, 2609437, 2158877, 2158877, 2629917, 2158877, 2158877, 2158877, 2687261, 2158877, 2715933, 2158877, 2158730, 2158730, 2973834, 2158730, 2982026, 2158730, 2158730, 3002506, 2158730, 3047562, 3063946, 3076234, 2158730, 2158730, 2158730, 2158730, 2207744, 2506752, 2207744, 2207744, 2207744, 2207744, 2207744, 2158877, 2507037, 0, 0, 2158877, 2158730, 2158730, 2158730, 3203210, 2207744, 2207744, 2207744, 2207744, 2207744, 2424832, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2564096, 2207744, 2207744, 2207744, 2707741, 2732317, 2158877, 2158877, 2158877, 2822429, 2826525, 2158877, 2896157, 2158877, 2158877, 2924829, 2158877, 2158877, 2973981, 2158877, 18, 0, 0, 0, 0, 0, 0, 0, 2211840, 0, 0, 642, 0, 2158592, 0, 45, 1529, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1755, 45, 67, 67, 2982173, 2158877, 2158877, 3002653, 2158877, 3047709, 3064093, 3076381, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 3203357, 2523274, 2527370, 2158730, 2158730, 2576522, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2908298, 2494749, 2158877, 2158877, 2158877, 2523421, 2527517, 2158877, 2158877, 2576669, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 0, 40976, 0, 18, 18, 4321280, 2224253, 2232448, 4329472, 2232448, 2158730, 2498698, 2158730, 2158730, 2158730, 2158730, 2568330, 2158730, 2592906, 2625674, 2158730, 2158730, 2674826, 2736266, 2158730, 2158730, 2158730, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2158730, 2912394, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 3109002, 2158730, 2158730, 3133578, 3145866, 3154058, 2375680, 2207744, 3108864, 2207744, 2207744, 3133440, 3145728, 3153920, 2375965, 2380061, 2158877, 2158877, 2421021, 2158877, 2449693, 2158877, 2158877, 2158877, 3117341, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 3104906, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158877, 2498845, 2158877, 2158877, 0, 2158877, 2158877, 2568477, 2158877, 2593053, 2625821, 2158877, 2158877, 2674973, 0, 0, 0, 0, 97, 97, 1480, 97, 97, 97, 97, 97, 1485, 97, 97, 97, 0, 97, 97, 1729, 97, 1731, 97, 97, 97, 97, 97, 97, 97, 311, 97, 97, 97, 97, 97, 97, 97, 97, 1520, 97, 97, 1523, 97, 97, 1526, 97, 2736413, 2158877, 2158877, 0, 2158877, 2912541, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 3109149, 2158877, 2158877, 3014941, 2158877, 2158877, 3051805, 2158877, 2158877, 3100957, 2158877, 2158877, 3121437, 2158877, 2158877, 2158877, 3150109, 3133725, 3146013, 3154205, 2158730, 2408586, 2416778, 2158730, 2465930, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 3018890, 2158730, 3043466, 2158730, 2158730, 2158730, 2158730, 3080330, 2633866, 2658442, 2740362, 2744458, 2834570, 2949258, 2158730, 2986122, 2158730, 2998410, 2158730, 2158730, 2158730, 3129482, 2207744, 2408448, 2949120, 2207744, 2985984, 2207744, 2998272, 2207744, 2207744, 2207744, 3129344, 2158877, 2408733, 2416925, 2158877, 2466077, 2158877, 2158877, 3170589, 3174685, 2158877, 0, 0, 0, 2158730, 2158730, 2158730, 2158730, 2158730, 2424970, 2158730, 2158730, 2158730, 2158730, 2707594, 2732170, 2158730, 2158730, 2158730, 2822282, 2826378, 2158730, 2896010, 2158730, 2158730, 2924682, 2949405, 2158877, 2986269, 2158877, 2998557, 2158877, 2158877, 2158877, 3129629, 2158730, 2158730, 2478218, 2158730, 2158730, 2158730, 2535562, 2543754, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 3117194, 2207744, 2207744, 2478080, 2207744, 2207744, 2207744, 2207744, 3014656, 2207744, 2207744, 3051520, 2207744, 2207744, 3100672, 2207744, 2207744, 3121152, 2207744, 2207744, 2207744, 2207744, 2207744, 2584576, 2207744, 2609152, 2207744, 2207744, 2629632, 2207744, 2207744, 2207744, 2686976, 2207744, 2207744, 2535424, 2543616, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 3117056, 2158877, 2158877, 2478365, 0, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158730, 2158730, 2482314, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2207744, 2207744, 2207744, 2387968, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 823, 0, 825, 2158730, 2158730, 2158730, 2990218, 2158730, 2158730, 2207744, 2207744, 2482176, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 0, 0, 0, 0, 0, 2162688, 135, 0, 2207744, 2207744, 2990080, 2207744, 2207744, 2158877, 2158877, 2482461, 2158877, 2158877, 0, 0, 0, 2158877, 2158877, 2158877, 2158877, 2158877, 2158730, 2429066, 2158730, 2515082, 2158730, 2588810, 2158730, 2838666, 2158730, 2158730, 2158730, 3010698, 2207744, 2428928, 2207744, 2514944, 2207744, 2588672, 2207744, 2838528, 2207744, 2207744, 2207744, 3010560, 2158877, 2429213, 2158877, 2515229, 0, 0, 2158877, 2588957, 2158877, 0, 2838813, 2158877, 2158877, 2158877, 3010845, 2158730, 2506890, 2158730, 2158730, 2158730, 2748554, 2756746, 2777226, 2801802, 2158730, 2158730, 2158730, 2863242, 2891914, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2564234, 2158730, 2158730, 2158730, 2158730, 2158730, 2597002, 2158730, 2158730, 2158730, 3006464, 2384157, 0, 0, 2158877, 2158877, 2158877, 2158877, 3006749, 2158730, 2637962, 2953354, 2158730, 2207744, 2637824, 2953216, 2207744, 0, 0, 2158877, 2638109, 2953501, 2158877, 2539658, 2158730, 2539520, 2207744, 0, 0, 2539805, 2158877, 2158730, 2158730, 2158730, 2977930, 2158730, 2158730, 2158730, 2158730, 3039370, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 3158154, 2207744, 0, 2158877, 2158730, 2207744, 0, 2158877, 2158730, 2207744, 0, 2158877, 2965642, 2965504, 2965789, 0, 0, 0, 0, 1315, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 1484, 97, 97, 97, 97, 2158592, 18, 0, 122880, 0, 0, 0, 77824, 0, 2211840, 0, 0, 0, 0, 2158592, 0, 356, 0, 0, 0, 0, 0, 0, 28809, 0, 139, 45, 45, 45, 45, 45, 45, 1751, 45, 45, 45, 45, 45, 45, 45, 67, 67, 1427, 67, 67, 67, 67, 67, 1432, 67, 67, 67, 3104768, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 122880, 0, 0, 0, 0, 1315, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 1322, 550, 0, 286, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2424832, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 40976, 0, 18, 18, 24, 24, 4329472, 27, 27, 2207744, 2207744, 2977792, 2207744, 2207744, 2207744, 2207744, 3039232, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 3158016, 542, 0, 0, 0, 542, 0, 544, 0, 0, 0, 544, 0, 550, 0, 0, 0, 0, 0, 97, 97, 1610, 97, 97, 97, 97, 97, 97, 97, 97, 898, 97, 97, 97, 97, 97, 97, 97, 0, 94242, 0, 0, 0, 2211840, 0, 0, 0, 0, 0, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2424832, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 237568, 102439, 106538, 98347, 0, 0, 20480, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 192512, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 94, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 96, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 12378, 40976, 18, 18, 36884, 0, 45078, 0, 24, 24, 24, 126, 126, 126, 126, 90143, 0, 0, 2170880, 0, 0, 0, 0, 2158592, 2158592, 2158592, 2387968, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 20480, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 241664, 102439, 106538, 98347, 0, 0, 20568, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 200797, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 20480, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 0, 0, 44, 0, 0, 20575, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 41, 41, 41, 0, 0, 1126400, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 0, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 89, 40976, 18, 18, 36884, 0, 45078, 0, 24, 24, 24, 27, 131201, 27, 27, 90143, 0, 0, 2170880, 0, 0, 550, 0, 2158592, 2158592, 2158592, 2387968, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2441216, 2445312, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 94242, 0, 0, 208896, 2211840, 102439, 0, 0, 106538, 98347, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 3186688, 2158592, 0, 0, 0, 0, 0, 0, 0, 0, 2367488, 32768, 0, 0, 0, 0, 0, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2433024, 2158592, 2453504, 2461696, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2510848, 2158592, 2158592, 2158592, 2158592, 40976, 18, 36884, 245783, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 20480, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 221184, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 180224, 40976, 18, 18, 36884, 155648, 45078, 0, 24, 24, 217088, 27, 27, 27, 217088, 90143, 0, 0, 2170880, 0, 0, 828, 0, 2158592, 2158592, 2158592, 2387968, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2207744, 2207744, 2207744, 2387968, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 0, 0, 0, 0, 0, 2162688, 233472, 0, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 45, 45, 45, 718, 45, 45, 45, 45, 45, 45, 45, 45, 45, 727, 131427, 0, 0, 0, 0, 362, 0, 365, 28809, 367, 139, 45, 45, 45, 45, 45, 45, 1808, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 97, 97, 0, 0, 97, 67, 24850, 24850, 12564, 12564, 0, 57889, 0, 0, 0, 53531, 53531, 367, 286, 97, 97, 0, 0, 97, 97, 97, 97, 97, 97, 1787, 0, 97, 97, 0, 97, 97, 97, 45, 45, 45, 45, 2029, 45, 67, 67, 67, 67, 2033, 57889, 0, 0, 54074, 54074, 550, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 45, 1798, 45, 45, 1800, 45, 45, 0, 1472, 0, 0, 0, 0, 0, 1474, 0, 0, 0, 0, 0, 1476, 0, 0, 0, 0, 1315, 0, 0, 0, 0, 97, 97, 97, 97, 1320, 97, 97, 0, 0, 97, 97, 97, 97, 1786, 97, 0, 0, 97, 97, 0, 1790, 1527, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 663, 67, 24850, 24850, 12564, 12564, 0, 57889, 281, 0, 0, 53531, 53531, 367, 286, 97, 97, 0, 0, 97, 97, 97, 1785, 97, 97, 0, 0, 97, 97, 0, 97, 97, 1979, 97, 97, 45, 45, 1983, 45, 1984, 45, 45, 45, 45, 45, 652, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 690, 45, 45, 694, 45, 45, 40976, 19, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 262144, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 46, 67, 98, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 45, 67, 97, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 258048, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 1122423, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 1114152, 1114152, 1114152, 0, 0, 1114112, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 37, 102439, 106538, 98347, 0, 0, 204800, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 57436, 40976, 18, 36884, 45078, 24, 27, 33, 33, 0, 33, 33, 33, 0, 0, 0, 40976, 18, 18, 36884, 0, 45078, 0, 124, 124, 124, 127, 127, 127, 127, 90143, 0, 0, 2170880, 0, 0, 550, 0, 2158877, 2158877, 2158877, 2388253, 2158877, 2158877, 2158877, 2158877, 2158877, 2781469, 2793757, 2158877, 2818333, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2867485, 2158877, 2904349, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 3096861, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2441501, 2445597, 2158877, 2158877, 2158877, 2158877, 2158877, 40976, 122, 123, 36884, 0, 45078, 0, 24, 24, 24, 27, 27, 27, 27, 90143, 0, 921, 29315, 0, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 936, 2158592, 4243810, 0, 0, 0, 0, 0, 0, 0, 2211840, 0, 0, 0, 0, 2158592, 0, 921, 29315, 0, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 935, 45, 45, 45, 715, 45, 45, 45, 45, 45, 45, 45, 723, 45, 45, 45, 45, 45, 1182, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 430, 45, 45, 45, 45, 45, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 47, 68, 99, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 48, 69, 100, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 49, 70, 101, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 50, 71, 102, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 51, 72, 103, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 52, 73, 104, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 53, 74, 105, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 54, 75, 106, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 55, 76, 107, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 56, 77, 108, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 57, 78, 109, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 58, 79, 110, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 59, 80, 111, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 60, 81, 112, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 61, 82, 113, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 62, 83, 114, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 63, 84, 115, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 64, 85, 116, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 65, 86, 117, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 66, 87, 118, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 118820, 102439, 106538, 98347, 118820, 118820, 118820, 40976, 18, 18, 0, 0, 45078, 0, 24, 24, 24, 27, 27, 27, 27, 90143, 0, 0, 1314, 0, 0, 0, 0, 0, 0, 97, 97, 97, 97, 97, 1321, 97, 18, 131427, 0, 0, 0, 0, 0, 0, 362, 0, 0, 365, 0, 367, 0, 0, 1315, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1360, 97, 97, 131, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 45, 145, 149, 45, 45, 45, 45, 45, 174, 45, 179, 45, 185, 45, 188, 45, 45, 202, 67, 255, 67, 67, 269, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 97, 292, 296, 97, 97, 97, 97, 97, 321, 97, 326, 97, 332, 97, 18, 131427, 0, 0, 0, 0, 0, 0, 362, 0, 0, 365, 29315, 367, 646, 335, 97, 97, 349, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 437, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 523, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 511, 67, 67, 67, 97, 97, 97, 620, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1501, 1502, 97, 793, 67, 67, 796, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 808, 67, 0, 0, 97, 97, 97, 97, 45, 45, 67, 67, 0, 0, 97, 97, 2052, 67, 67, 67, 67, 813, 67, 67, 67, 67, 67, 67, 67, 25398, 542, 13112, 544, 57889, 0, 0, 54074, 54074, 550, 830, 97, 97, 97, 97, 97, 97, 97, 97, 97, 315, 97, 97, 97, 97, 97, 97, 841, 97, 97, 97, 97, 97, 97, 97, 97, 97, 854, 97, 97, 97, 97, 97, 97, 589, 97, 97, 97, 97, 97, 97, 97, 97, 97, 867, 97, 97, 97, 97, 97, 97, 97, 891, 97, 97, 894, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 906, 45, 937, 45, 45, 940, 45, 45, 45, 45, 45, 45, 948, 45, 45, 45, 45, 45, 734, 735, 67, 737, 67, 738, 67, 740, 67, 67, 67, 45, 967, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 435, 45, 45, 45, 980, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 415, 45, 45, 67, 67, 1024, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 67, 67, 67, 67, 67, 25398, 1081, 13112, 1085, 54074, 1089, 0, 0, 0, 0, 0, 0, 363, 0, 28809, 0, 139, 45, 45, 45, 45, 45, 45, 1674, 45, 45, 45, 45, 45, 45, 45, 45, 67, 1913, 67, 1914, 67, 67, 67, 1918, 67, 67, 97, 97, 97, 97, 1118, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 630, 97, 97, 97, 97, 97, 1169, 97, 97, 97, 97, 97, 0, 921, 0, 1175, 0, 0, 0, 0, 45, 45, 45, 45, 45, 45, 1534, 45, 45, 45, 45, 45, 1538, 45, 45, 45, 45, 1233, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 742, 67, 45, 45, 1191, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 454, 67, 67, 67, 67, 1243, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1251, 67, 0, 0, 97, 97, 97, 97, 45, 45, 67, 67, 2050, 0, 97, 97, 45, 45, 45, 732, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 67, 67, 67, 1284, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 772, 67, 67, 67, 1293, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 368, 2158592, 2158592, 2158592, 2404352, 2412544, 1323, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1331, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1737, 97, 1364, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1373, 97, 18, 131427, 0, 0, 0, 0, 0, 0, 362, 0, 0, 365, 29315, 367, 647, 45, 45, 1387, 45, 45, 1391, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 410, 45, 45, 45, 45, 45, 1400, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1407, 45, 45, 45, 45, 45, 941, 45, 943, 45, 45, 45, 45, 45, 45, 951, 45, 67, 1438, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1447, 67, 67, 67, 67, 67, 67, 782, 67, 67, 67, 67, 67, 67, 67, 67, 67, 756, 67, 67, 67, 67, 67, 67, 97, 1491, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1500, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1736, 97, 45, 45, 1541, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 677, 45, 45, 67, 1581, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 791, 792, 67, 67, 67, 67, 1598, 67, 1600, 67, 67, 67, 67, 67, 67, 67, 67, 1472, 97, 97, 97, 1727, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1513, 97, 97, 67, 67, 97, 1879, 97, 1881, 97, 0, 1884, 0, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 97, 0, 0, 0, 1842, 97, 97, 67, 67, 67, 67, 67, 97, 97, 97, 97, 1928, 0, 0, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 1903, 45, 45, 45, 67, 67, 67, 67, 97, 97, 97, 97, 1971, 0, 0, 97, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 0, 45, 45, 45, 1381, 45, 45, 45, 45, 1976, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1747, 809, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 25398, 542, 13112, 544, 97, 907, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 638, 0, 0, 0, 0, 1478, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1150, 97, 97, 97, 97, 67, 67, 67, 67, 1244, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 477, 67, 67, 67, 67, 67, 67, 1294, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1324, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 0, 1374, 97, 97, 97, 97, 0, 1175, 0, 45, 45, 45, 45, 45, 45, 45, 45, 945, 45, 45, 45, 45, 45, 45, 45, 45, 1908, 45, 45, 1910, 45, 67, 67, 67, 67, 67, 67, 67, 67, 1919, 67, 0, 0, 97, 97, 97, 97, 45, 2048, 67, 2049, 0, 0, 97, 2051, 45, 45, 45, 939, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 397, 45, 45, 45, 1921, 67, 67, 1923, 67, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 1947, 45, 1935, 0, 0, 0, 97, 1939, 97, 97, 1941, 97, 45, 45, 45, 45, 45, 45, 382, 389, 45, 45, 45, 45, 45, 45, 45, 45, 1810, 45, 45, 1812, 67, 67, 67, 67, 67, 256, 67, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 336, 97, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 131427, 0, 0, 0, 0, 362, 0, 365, 28809, 367, 139, 45, 45, 371, 373, 45, 45, 45, 955, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 413, 45, 45, 45, 457, 459, 67, 67, 67, 67, 67, 67, 67, 67, 473, 67, 478, 67, 67, 482, 67, 67, 485, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 1828, 97, 554, 556, 97, 97, 97, 97, 97, 97, 97, 97, 570, 97, 575, 97, 97, 579, 97, 97, 582, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 330, 97, 97, 67, 746, 67, 67, 67, 67, 67, 67, 67, 67, 67, 758, 67, 67, 67, 67, 67, 67, 67, 1575, 67, 67, 67, 67, 67, 67, 67, 67, 493, 67, 67, 67, 67, 67, 67, 67, 97, 97, 844, 97, 97, 97, 97, 97, 97, 97, 97, 97, 856, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 1735, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 1642, 97, 1644, 97, 97, 890, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 67, 67, 67, 67, 1065, 1066, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 532, 67, 67, 67, 67, 67, 67, 67, 1451, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 496, 67, 67, 97, 97, 1505, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 593, 97, 97, 0, 1474, 0, 1476, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1617, 97, 97, 1635, 0, 1637, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 885, 97, 97, 97, 97, 67, 67, 1704, 67, 67, 67, 67, 97, 97, 97, 97, 97, 97, 97, 97, 97, 565, 572, 97, 97, 97, 97, 97, 97, 97, 97, 1832, 0, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, 1946, 45, 45, 67, 67, 67, 67, 67, 97, 1926, 97, 1927, 97, 0, 0, 0, 97, 97, 1934, 2043, 0, 0, 97, 97, 97, 2047, 45, 45, 67, 67, 0, 1832, 97, 97, 45, 45, 45, 981, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1227, 45, 45, 45, 131427, 0, 0, 0, 0, 362, 0, 365, 28809, 367, 139, 45, 45, 372, 45, 45, 45, 45, 1661, 1662, 45, 45, 45, 45, 45, 1666, 45, 45, 45, 45, 45, 1673, 45, 1675, 45, 45, 45, 45, 45, 45, 45, 67, 1426, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1275, 67, 67, 67, 67, 67, 45, 418, 45, 45, 420, 45, 45, 423, 45, 45, 45, 45, 45, 45, 45, 45, 959, 45, 45, 962, 45, 45, 45, 45, 458, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 483, 67, 67, 67, 67, 504, 67, 67, 506, 67, 67, 509, 67, 67, 67, 67, 67, 67, 67, 528, 67, 67, 67, 67, 67, 67, 67, 67, 1287, 67, 67, 67, 67, 67, 67, 67, 555, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 580, 97, 97, 97, 97, 601, 97, 97, 603, 97, 97, 606, 97, 97, 97, 97, 97, 97, 848, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1498, 97, 97, 97, 97, 97, 97, 45, 45, 714, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 989, 990, 45, 67, 67, 67, 67, 67, 1011, 67, 67, 67, 67, 1015, 67, 67, 67, 67, 67, 67, 67, 753, 67, 67, 67, 67, 67, 67, 67, 67, 467, 67, 67, 67, 67, 67, 67, 67, 45, 45, 1179, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1003, 1004, 67, 1217, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 728, 67, 1461, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1034, 67, 97, 1516, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 871, 97, 67, 67, 67, 1705, 67, 67, 67, 97, 97, 97, 97, 97, 97, 97, 97, 97, 567, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1715, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 0, 45, 45, 1380, 45, 45, 45, 45, 45, 67, 67, 97, 97, 97, 97, 97, 0, 0, 0, 97, 1887, 97, 97, 0, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 2006, 45, 45, 1907, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1920, 67, 97, 0, 2035, 97, 97, 97, 97, 97, 45, 45, 45, 45, 67, 67, 67, 1428, 67, 67, 67, 67, 67, 67, 1435, 67, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 45, 146, 45, 152, 45, 45, 165, 45, 175, 45, 180, 45, 45, 187, 190, 195, 45, 203, 254, 257, 262, 67, 270, 67, 67, 0, 24850, 12564, 0, 0, 0, 281, 28809, 53531, 97, 97, 97, 293, 97, 299, 97, 97, 312, 97, 322, 97, 327, 97, 97, 334, 337, 342, 97, 350, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 67, 484, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 499, 97, 581, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 596, 648, 45, 650, 45, 651, 45, 653, 45, 45, 45, 657, 45, 45, 45, 45, 45, 45, 1954, 67, 67, 67, 1958, 67, 67, 67, 67, 67, 67, 67, 768, 67, 67, 67, 67, 67, 67, 67, 67, 769, 67, 67, 67, 67, 67, 67, 67, 680, 45, 45, 45, 45, 45, 45, 45, 45, 688, 689, 691, 45, 45, 45, 45, 45, 983, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 947, 45, 45, 45, 45, 952, 45, 45, 698, 699, 45, 45, 702, 703, 45, 45, 45, 45, 45, 45, 45, 711, 744, 67, 67, 67, 67, 67, 67, 67, 67, 67, 757, 67, 67, 67, 67, 761, 67, 67, 67, 67, 765, 67, 767, 67, 67, 67, 67, 67, 67, 67, 67, 775, 776, 778, 67, 67, 67, 67, 67, 67, 785, 786, 67, 67, 789, 790, 67, 67, 67, 67, 67, 67, 1442, 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 1775, 97, 97, 97, 67, 67, 67, 67, 67, 798, 67, 67, 67, 802, 67, 67, 67, 67, 67, 67, 67, 67, 1465, 67, 67, 1468, 67, 67, 1471, 67, 67, 810, 67, 67, 67, 67, 67, 67, 67, 67, 67, 821, 25398, 542, 13112, 544, 57889, 0, 0, 54074, 54074, 550, 0, 833, 97, 835, 97, 836, 97, 838, 97, 97, 0, 0, 97, 97, 97, 2002, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 1740, 45, 45, 45, 1744, 45, 45, 45, 97, 842, 97, 97, 97, 97, 97, 97, 97, 97, 97, 855, 97, 97, 97, 97, 0, 1717, 1718, 97, 97, 97, 97, 97, 1722, 97, 0, 0, 859, 97, 97, 97, 97, 863, 97, 865, 97, 97, 97, 97, 97, 97, 97, 97, 604, 97, 97, 97, 97, 97, 97, 97, 873, 874, 876, 97, 97, 97, 97, 97, 97, 883, 884, 97, 97, 887, 888, 97, 18, 131427, 0, 0, 0, 0, 0, 0, 362, 225280, 0, 365, 0, 367, 0, 45, 45, 45, 1531, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1199, 45, 45, 45, 45, 45, 97, 97, 908, 97, 97, 97, 97, 97, 97, 97, 97, 97, 919, 638, 0, 0, 0, 0, 2158877, 2158877, 2158877, 2158877, 2158877, 2425117, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2597149, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2642205, 2158877, 2158877, 2158877, 2158877, 2158877, 3158301, 0, 2375818, 2379914, 2158730, 2158730, 2420874, 2158730, 2449546, 2158730, 2158730, 953, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 965, 978, 45, 45, 45, 45, 45, 45, 985, 45, 45, 45, 45, 45, 45, 45, 45, 971, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 1027, 67, 1029, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1455, 67, 67, 67, 67, 67, 67, 67, 1077, 1078, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 0, 0, 0, 0, 0, 0, 366, 0, 139, 2158730, 2158730, 2158730, 2404490, 2412682, 1113, 97, 97, 97, 97, 97, 97, 1121, 97, 1123, 97, 97, 97, 97, 97, 97, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1540, 1155, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 615, 1168, 97, 97, 1171, 1172, 97, 97, 0, 921, 0, 1175, 0, 0, 0, 0, 45, 45, 45, 45, 45, 1533, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1663, 45, 45, 45, 45, 45, 45, 45, 45, 45, 183, 45, 45, 45, 45, 201, 45, 45, 45, 1219, 45, 45, 45, 45, 45, 45, 45, 1226, 45, 45, 45, 45, 45, 168, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 427, 45, 45, 45, 45, 45, 45, 45, 1231, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1242, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1046, 67, 67, 1254, 67, 1256, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 806, 807, 67, 67, 97, 1336, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1111, 97, 97, 97, 97, 97, 1351, 97, 97, 97, 1354, 97, 97, 97, 1359, 97, 97, 97, 0, 97, 97, 97, 97, 1640, 97, 97, 97, 97, 97, 97, 97, 897, 97, 97, 97, 902, 97, 97, 97, 97, 97, 97, 97, 97, 1366, 97, 97, 97, 97, 97, 97, 97, 1371, 97, 97, 97, 0, 97, 97, 97, 1730, 97, 97, 97, 97, 97, 97, 97, 97, 915, 97, 97, 97, 97, 0, 360, 0, 67, 67, 67, 1440, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1017, 67, 1019, 67, 67, 67, 67, 67, 1453, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1459, 97, 97, 97, 1493, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1525, 97, 97, 97, 97, 97, 97, 1507, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1514, 67, 67, 67, 67, 1584, 67, 67, 67, 67, 67, 1590, 67, 67, 67, 67, 67, 67, 67, 783, 67, 67, 67, 788, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1599, 1601, 67, 67, 67, 1604, 67, 1606, 1607, 67, 1472, 0, 1474, 0, 1476, 0, 97, 97, 97, 97, 97, 97, 1614, 97, 97, 97, 97, 45, 45, 1850, 45, 45, 45, 45, 1855, 45, 45, 45, 45, 45, 1222, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1229, 97, 1618, 97, 97, 97, 97, 97, 97, 97, 1625, 97, 97, 97, 97, 97, 0, 1175, 0, 45, 45, 45, 45, 45, 45, 45, 45, 447, 45, 45, 45, 45, 45, 67, 67, 1633, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 1643, 1645, 97, 97, 0, 0, 97, 97, 1784, 97, 97, 97, 0, 0, 97, 97, 0, 97, 1894, 1895, 97, 1897, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 656, 45, 45, 45, 45, 45, 45, 97, 1648, 97, 1650, 1651, 97, 0, 45, 45, 45, 1654, 45, 45, 45, 45, 45, 169, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 658, 45, 45, 45, 45, 664, 45, 45, 1659, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1187, 45, 45, 1669, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 1005, 67, 67, 1681, 67, 67, 67, 67, 67, 67, 67, 1686, 67, 67, 67, 67, 67, 67, 67, 784, 67, 67, 67, 67, 67, 67, 67, 67, 1055, 67, 67, 67, 67, 1060, 67, 67, 97, 97, 1713, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 0, 1378, 45, 45, 45, 45, 45, 45, 45, 408, 45, 45, 45, 45, 45, 45, 45, 45, 1547, 45, 1549, 45, 45, 45, 45, 45, 97, 97, 1780, 0, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 0, 97, 97, 97, 45, 45, 2027, 2028, 45, 45, 67, 67, 2031, 2032, 67, 45, 45, 1804, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 1917, 67, 67, 67, 67, 67, 67, 67, 1819, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 1708, 97, 97, 97, 97, 97, 45, 45, 1862, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 497, 67, 67, 67, 1877, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 97, 1839, 0, 0, 97, 97, 97, 97, 1936, 0, 0, 97, 97, 97, 97, 97, 97, 1943, 1944, 1945, 45, 45, 45, 45, 670, 45, 45, 45, 45, 674, 45, 45, 45, 45, 678, 45, 1948, 45, 1950, 45, 45, 45, 45, 1955, 1956, 1957, 67, 67, 67, 1960, 67, 1962, 67, 67, 67, 67, 1967, 1968, 1969, 97, 0, 0, 0, 97, 97, 1974, 97, 0, 1936, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 1906, 0, 1977, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1746, 45, 45, 45, 45, 2011, 67, 67, 2013, 67, 67, 67, 2017, 97, 97, 0, 0, 2021, 97, 8192, 97, 97, 2025, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 1916, 67, 67, 67, 67, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 140, 45, 45, 45, 1180, 45, 45, 45, 45, 1184, 45, 45, 45, 45, 45, 45, 45, 387, 45, 392, 45, 45, 396, 45, 45, 399, 45, 45, 67, 207, 67, 67, 67, 67, 67, 67, 236, 67, 67, 67, 67, 67, 67, 67, 800, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1603, 67, 67, 67, 67, 67, 0, 97, 97, 287, 97, 97, 97, 97, 97, 97, 316, 97, 97, 97, 97, 97, 97, 0, 45, 45, 45, 45, 45, 45, 45, 1656, 1657, 45, 376, 45, 45, 45, 45, 45, 388, 45, 45, 45, 45, 45, 45, 45, 45, 1406, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 462, 67, 67, 67, 67, 67, 474, 67, 67, 67, 67, 67, 67, 67, 817, 67, 67, 67, 67, 25398, 542, 13112, 544, 97, 97, 97, 97, 559, 97, 97, 97, 97, 97, 571, 97, 97, 97, 97, 97, 97, 896, 97, 97, 97, 900, 97, 97, 97, 97, 97, 97, 912, 914, 97, 97, 97, 97, 97, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 391, 45, 45, 45, 45, 45, 45, 45, 45, 713, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 662, 45, 1140, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 636, 67, 67, 1283, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 513, 67, 67, 1363, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 889, 97, 97, 97, 1714, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 926, 45, 45, 45, 45, 45, 45, 45, 45, 672, 45, 45, 45, 45, 45, 45, 45, 45, 686, 45, 45, 45, 45, 45, 45, 45, 45, 944, 45, 45, 45, 45, 45, 45, 45, 45, 1676, 45, 45, 45, 45, 45, 45, 67, 97, 97, 97, 1833, 0, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 1902, 45, 45, 45, 45, 45, 957, 45, 45, 45, 45, 961, 45, 963, 45, 45, 45, 67, 97, 2034, 0, 97, 97, 97, 97, 97, 2040, 45, 45, 45, 2042, 67, 67, 67, 67, 67, 67, 1574, 67, 67, 67, 67, 67, 1578, 67, 67, 67, 67, 67, 67, 799, 67, 67, 67, 804, 67, 67, 67, 67, 67, 67, 67, 1298, 0, 0, 0, 1304, 0, 0, 0, 1310, 132, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 45, 45, 45, 1414, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 428, 45, 45, 45, 45, 45, 57889, 0, 0, 54074, 54074, 550, 831, 97, 97, 97, 97, 97, 97, 97, 97, 97, 568, 97, 97, 97, 97, 578, 97, 45, 45, 968, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1228, 45, 45, 67, 67, 67, 67, 67, 25398, 1082, 13112, 1086, 54074, 1090, 0, 0, 0, 0, 0, 0, 364, 0, 0, 0, 139, 2158592, 2158592, 2158592, 2404352, 2412544, 67, 67, 67, 67, 1464, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 510, 67, 67, 67, 67, 97, 97, 97, 97, 1519, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 918, 97, 0, 0, 0, 0, 1528, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 976, 45, 1554, 45, 45, 45, 45, 45, 45, 45, 45, 1562, 45, 45, 1565, 45, 45, 45, 45, 683, 45, 45, 45, 687, 45, 45, 692, 45, 45, 45, 45, 45, 1953, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1014, 67, 67, 67, 67, 67, 67, 1568, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 0, 67, 67, 67, 67, 67, 1585, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1594, 97, 97, 1649, 97, 97, 97, 0, 45, 45, 1653, 45, 45, 45, 45, 45, 45, 383, 45, 45, 45, 45, 45, 45, 45, 45, 45, 986, 45, 45, 45, 45, 45, 45, 45, 45, 1670, 45, 1672, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 736, 67, 67, 67, 67, 67, 741, 67, 67, 67, 1680, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1074, 67, 67, 67, 1692, 67, 67, 67, 67, 67, 67, 67, 1697, 67, 1699, 67, 67, 67, 67, 67, 67, 1012, 67, 67, 67, 67, 67, 67, 67, 67, 67, 468, 475, 67, 67, 67, 67, 67, 67, 1769, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 97, 97, 624, 97, 97, 97, 97, 97, 97, 634, 97, 97, 1792, 97, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 958, 45, 45, 45, 45, 45, 45, 964, 45, 150, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 977, 204, 45, 67, 67, 67, 217, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 787, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 271, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 97, 97, 351, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 45, 45, 938, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1398, 45, 45, 45, 153, 45, 161, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 660, 661, 45, 45, 205, 45, 67, 67, 67, 67, 220, 67, 228, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 280, 94, 0, 0, 67, 67, 67, 67, 67, 272, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 97, 97, 352, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 45, 439, 45, 45, 45, 45, 45, 445, 45, 45, 45, 452, 45, 45, 67, 67, 212, 216, 67, 67, 67, 67, 67, 241, 67, 246, 67, 252, 67, 67, 486, 67, 67, 67, 67, 67, 67, 67, 494, 67, 67, 67, 67, 67, 67, 67, 1245, 67, 67, 67, 67, 67, 67, 67, 67, 1013, 67, 67, 1016, 67, 67, 67, 67, 67, 521, 67, 67, 525, 67, 67, 67, 67, 67, 531, 67, 67, 67, 538, 67, 0, 0, 2046, 97, 97, 97, 45, 45, 67, 67, 0, 0, 97, 97, 45, 45, 45, 1192, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1418, 45, 45, 1421, 97, 97, 583, 97, 97, 97, 97, 97, 97, 97, 591, 97, 97, 97, 97, 97, 97, 913, 97, 97, 97, 97, 97, 97, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 1384, 97, 618, 97, 97, 622, 97, 97, 97, 97, 97, 628, 97, 97, 97, 635, 97, 18, 131427, 0, 0, 0, 639, 0, 132, 362, 0, 0, 365, 29315, 367, 0, 921, 29315, 0, 0, 0, 0, 45, 45, 45, 45, 932, 45, 45, 45, 45, 45, 1544, 45, 45, 45, 45, 45, 1550, 45, 45, 45, 45, 45, 1194, 45, 1196, 45, 45, 45, 45, 45, 45, 45, 45, 999, 45, 45, 45, 45, 45, 67, 67, 45, 45, 667, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1408, 45, 45, 45, 696, 45, 45, 45, 701, 45, 45, 45, 45, 45, 45, 45, 45, 710, 45, 45, 45, 1220, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 194, 45, 45, 45, 729, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 797, 67, 67, 67, 67, 67, 67, 805, 67, 67, 67, 67, 67, 67, 67, 1587, 67, 1589, 67, 67, 67, 67, 67, 67, 67, 67, 1763, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 2162968, 0, 0, 67, 67, 67, 67, 67, 814, 816, 67, 67, 67, 67, 67, 25398, 542, 13112, 544, 67, 67, 1008, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1020, 67, 0, 97, 45, 67, 0, 97, 45, 67, 0, 97, 45, 67, 97, 0, 0, 97, 97, 97, 97, 97, 45, 45, 45, 45, 67, 67, 67, 67, 1429, 67, 1430, 67, 67, 67, 67, 67, 1062, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 518, 1076, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 0, 0, 0, 0, 0, 0, 28809, 0, 139, 45, 45, 45, 45, 45, 97, 97, 97, 97, 1102, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1124, 97, 1126, 97, 97, 1114, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1112, 97, 97, 1156, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 594, 97, 97, 97, 97, 1170, 97, 97, 97, 97, 0, 921, 0, 0, 0, 0, 0, 0, 45, 45, 45, 45, 1532, 45, 45, 45, 45, 1536, 45, 45, 45, 45, 45, 172, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 706, 45, 45, 709, 45, 45, 1177, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1202, 45, 1204, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1215, 45, 45, 45, 1232, 45, 45, 45, 45, 45, 45, 45, 67, 1237, 67, 67, 67, 67, 67, 67, 1053, 1054, 67, 67, 67, 67, 67, 67, 1061, 67, 67, 1282, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1289, 67, 67, 67, 1292, 97, 97, 97, 97, 1339, 97, 97, 97, 97, 97, 97, 1344, 97, 97, 97, 97, 45, 1849, 45, 1851, 45, 45, 45, 45, 45, 45, 45, 45, 721, 45, 45, 45, 45, 45, 726, 45, 1385, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1188, 45, 45, 1401, 1402, 45, 45, 45, 45, 1405, 45, 45, 45, 45, 45, 45, 45, 45, 1752, 45, 45, 45, 45, 45, 67, 67, 1410, 45, 45, 45, 1413, 45, 1415, 45, 45, 45, 45, 45, 45, 1419, 45, 45, 45, 45, 1806, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 97, 97, 2019, 0, 97, 67, 67, 67, 1452, 67, 67, 67, 67, 67, 67, 67, 67, 1457, 67, 67, 67, 67, 67, 67, 1259, 67, 67, 67, 67, 67, 67, 1264, 67, 67, 1460, 67, 1462, 67, 67, 67, 67, 67, 67, 1466, 67, 67, 67, 67, 67, 67, 67, 67, 1588, 67, 67, 67, 67, 67, 67, 67, 0, 1300, 0, 0, 0, 1306, 0, 0, 0, 97, 97, 97, 1506, 97, 97, 97, 97, 97, 97, 97, 97, 1512, 97, 97, 97, 0, 1728, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 901, 97, 97, 97, 97, 1515, 97, 1517, 97, 97, 97, 97, 97, 97, 1521, 97, 97, 97, 97, 97, 97, 0, 45, 1652, 45, 45, 45, 1655, 45, 45, 45, 45, 45, 1542, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1552, 1553, 45, 45, 45, 1556, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 693, 45, 45, 45, 67, 67, 67, 67, 1572, 67, 67, 67, 67, 1576, 67, 67, 67, 67, 67, 67, 67, 67, 1602, 67, 67, 1605, 67, 67, 67, 0, 67, 1582, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1580, 67, 67, 1596, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 0, 542, 0, 544, 67, 67, 67, 67, 1759, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 533, 67, 67, 67, 67, 67, 67, 67, 1770, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 97, 1777, 97, 97, 97, 1793, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 998, 45, 45, 1001, 1002, 45, 45, 67, 67, 45, 1861, 45, 67, 67, 67, 67, 67, 67, 67, 67, 1871, 67, 1873, 1874, 67, 0, 97, 45, 67, 0, 97, 45, 67, 16384, 97, 45, 67, 97, 0, 0, 0, 1473, 0, 1082, 0, 0, 0, 1475, 0, 1086, 0, 0, 0, 1477, 1876, 67, 97, 97, 97, 97, 97, 1883, 0, 1885, 97, 97, 97, 1889, 0, 0, 0, 286, 0, 0, 0, 286, 0, 2367488, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 40976, 0, 18, 18, 24, 24, 126, 126, 126, 2053, 0, 2055, 45, 67, 0, 97, 45, 67, 0, 97, 45, 67, 97, 0, 0, 97, 97, 97, 2039, 97, 45, 45, 45, 45, 67, 67, 67, 67, 67, 226, 67, 67, 67, 67, 67, 67, 67, 67, 1246, 67, 67, 1249, 1250, 67, 67, 67, 132, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 141, 45, 45, 45, 1403, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1186, 45, 45, 1189, 45, 45, 155, 45, 45, 45, 45, 45, 45, 45, 45, 45, 191, 45, 45, 45, 45, 700, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1753, 45, 45, 45, 67, 67, 45, 45, 67, 208, 67, 67, 67, 222, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1764, 67, 67, 67, 67, 67, 67, 67, 258, 67, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 288, 97, 97, 97, 302, 97, 97, 97, 97, 97, 97, 97, 97, 97, 627, 97, 97, 97, 97, 97, 97, 338, 97, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 131427, 0, 0, 0, 0, 362, 0, 365, 28809, 367, 139, 45, 370, 45, 45, 45, 45, 716, 45, 45, 45, 45, 45, 722, 45, 45, 45, 45, 45, 45, 1912, 67, 67, 67, 67, 67, 67, 67, 67, 67, 819, 67, 67, 25398, 542, 13112, 544, 45, 403, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1409, 45, 67, 67, 67, 67, 489, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 771, 67, 67, 67, 67, 520, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 534, 67, 67, 67, 67, 67, 67, 1271, 67, 67, 67, 1274, 67, 67, 67, 1279, 67, 67, 24850, 24850, 12564, 12564, 0, 57889, 0, 0, 0, 53531, 53531, 367, 286, 97, 553, 97, 97, 97, 97, 586, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1138, 97, 97, 97, 97, 617, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 631, 97, 97, 97, 0, 1834, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 353, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 45, 45, 668, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 724, 45, 45, 45, 45, 45, 682, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 949, 45, 45, 45, 67, 67, 747, 748, 67, 67, 67, 67, 755, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 1302, 0, 0, 0, 1308, 0, 67, 794, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1701, 67, 97, 97, 97, 845, 846, 97, 97, 97, 97, 853, 97, 97, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 97, 97, 892, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 610, 97, 97, 45, 992, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 1239, 67, 67, 67, 1063, 67, 67, 67, 67, 67, 1068, 67, 67, 67, 67, 67, 67, 67, 0, 0, 1301, 0, 0, 0, 1307, 0, 0, 97, 1141, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1152, 97, 97, 0, 0, 97, 97, 2001, 0, 97, 2003, 97, 97, 97, 45, 45, 45, 1739, 45, 45, 45, 1742, 45, 45, 45, 45, 45, 97, 97, 97, 97, 1157, 97, 97, 97, 97, 97, 1162, 97, 97, 97, 97, 97, 97, 1145, 97, 97, 97, 97, 97, 1151, 97, 97, 97, 1253, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 539, 45, 1423, 45, 45, 67, 67, 67, 67, 67, 67, 67, 1431, 67, 67, 67, 67, 67, 67, 67, 1695, 67, 67, 67, 67, 67, 1700, 67, 1702, 67, 67, 1439, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 514, 67, 67, 97, 97, 1492, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 611, 97, 97, 1703, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 97, 97, 97, 97, 852, 97, 97, 97, 97, 97, 97, 45, 1949, 45, 1951, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 1961, 67, 0, 97, 45, 67, 0, 97, 2060, 2061, 0, 2062, 45, 67, 97, 0, 0, 2036, 97, 97, 97, 97, 45, 45, 45, 45, 67, 67, 67, 67, 67, 223, 67, 67, 237, 67, 67, 67, 67, 67, 67, 67, 1272, 67, 67, 67, 67, 67, 67, 67, 67, 507, 67, 67, 67, 67, 67, 67, 67, 1963, 67, 67, 67, 97, 97, 97, 97, 0, 1972, 0, 97, 97, 97, 1975, 0, 921, 29315, 0, 0, 0, 0, 45, 45, 45, 931, 45, 45, 45, 45, 45, 407, 45, 45, 45, 45, 45, 45, 45, 45, 45, 417, 45, 45, 1989, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1996, 97, 18, 131427, 0, 0, 360, 0, 0, 0, 362, 0, 0, 365, 29315, 367, 0, 921, 29315, 0, 0, 0, 0, 45, 45, 930, 45, 45, 45, 45, 45, 45, 444, 45, 45, 45, 45, 45, 45, 45, 67, 67, 97, 97, 1998, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 1985, 45, 1986, 45, 45, 45, 156, 45, 45, 170, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 675, 45, 45, 45, 45, 679, 131427, 0, 358, 0, 0, 362, 0, 365, 28809, 367, 139, 45, 45, 45, 45, 45, 381, 45, 45, 45, 45, 45, 45, 45, 45, 45, 400, 45, 45, 419, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 436, 67, 67, 67, 67, 67, 505, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 820, 67, 25398, 542, 13112, 544, 67, 67, 522, 67, 67, 67, 67, 67, 529, 67, 67, 67, 67, 67, 67, 67, 0, 1299, 0, 0, 0, 1305, 0, 0, 0, 97, 97, 619, 97, 97, 97, 97, 97, 626, 97, 97, 97, 97, 97, 97, 97, 1105, 97, 97, 97, 97, 1109, 97, 97, 97, 67, 67, 67, 67, 749, 67, 67, 67, 67, 67, 67, 67, 67, 67, 760, 67, 0, 97, 45, 67, 2058, 97, 45, 67, 0, 97, 45, 67, 97, 0, 0, 97, 97, 97, 97, 97, 45, 45, 45, 2041, 67, 67, 67, 67, 67, 780, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 516, 67, 67, 97, 97, 97, 878, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1629, 97, 0, 45, 979, 45, 45, 45, 45, 984, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1198, 45, 45, 45, 45, 45, 45, 67, 1023, 67, 67, 67, 67, 1028, 67, 67, 67, 67, 67, 67, 67, 67, 67, 470, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 0, 1094, 0, 0, 0, 1092, 1315, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1486, 97, 1489, 97, 97, 97, 1117, 97, 97, 97, 97, 1122, 97, 97, 97, 97, 97, 97, 97, 1146, 97, 97, 97, 97, 97, 97, 97, 97, 881, 97, 97, 97, 886, 97, 97, 97, 1311, 0, 0, 0, 0, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 1615, 97, 97, 97, 97, 97, 1619, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1631, 97, 97, 1847, 97, 45, 45, 45, 45, 1852, 45, 45, 45, 45, 45, 45, 45, 1235, 45, 45, 45, 67, 67, 67, 67, 67, 1868, 67, 67, 67, 1872, 67, 67, 67, 67, 67, 97, 97, 97, 97, 1882, 0, 0, 0, 97, 97, 97, 97, 0, 1891, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 1929, 0, 0, 97, 97, 97, 97, 97, 97, 45, 1900, 45, 1901, 45, 45, 45, 1905, 45, 67, 2054, 97, 45, 67, 0, 97, 45, 67, 0, 97, 45, 67, 97, 0, 0, 97, 2037, 2038, 97, 97, 45, 45, 45, 45, 67, 67, 67, 67, 1867, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1774, 97, 97, 97, 97, 97, 97, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 142, 45, 45, 45, 1412, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 432, 45, 45, 45, 45, 45, 157, 45, 45, 171, 45, 45, 45, 182, 45, 45, 45, 45, 200, 45, 45, 45, 1543, 45, 45, 45, 45, 45, 45, 45, 45, 1551, 45, 45, 45, 45, 1181, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1211, 45, 45, 45, 1214, 45, 45, 45, 67, 209, 67, 67, 67, 224, 67, 67, 238, 67, 67, 67, 249, 67, 0, 97, 2056, 2057, 0, 2059, 45, 67, 0, 97, 45, 67, 97, 0, 0, 1937, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 1741, 45, 45, 45, 45, 45, 45, 67, 67, 67, 267, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 289, 97, 97, 97, 304, 97, 97, 318, 97, 97, 97, 329, 97, 97, 0, 0, 97, 1783, 97, 97, 97, 97, 0, 0, 97, 97, 0, 97, 97, 97, 45, 2026, 45, 45, 45, 45, 67, 2030, 67, 67, 67, 67, 67, 67, 1041, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1044, 67, 67, 67, 67, 67, 67, 97, 97, 347, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 45, 666, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1420, 45, 57889, 0, 0, 54074, 54074, 550, 0, 97, 97, 97, 97, 97, 97, 97, 97, 840, 67, 1007, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 759, 67, 67, 67, 67, 67, 67, 67, 1052, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1031, 67, 67, 67, 67, 67, 97, 97, 97, 1101, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 592, 97, 97, 97, 1190, 45, 45, 45, 45, 45, 1195, 45, 1197, 45, 45, 45, 45, 1201, 45, 45, 45, 45, 1952, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 250, 67, 67, 67, 1255, 67, 1257, 67, 67, 67, 67, 1261, 67, 67, 67, 67, 67, 67, 67, 67, 1685, 67, 67, 67, 67, 67, 67, 67, 0, 24851, 12565, 0, 0, 0, 0, 28809, 53532, 67, 67, 1267, 67, 67, 67, 67, 67, 67, 1273, 67, 67, 67, 67, 67, 67, 67, 67, 1696, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 2162688, 0, 0, 1281, 67, 67, 67, 67, 1285, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1070, 67, 67, 67, 67, 67, 1335, 97, 1337, 97, 97, 97, 97, 1341, 97, 97, 97, 97, 97, 97, 97, 97, 882, 97, 97, 97, 97, 97, 97, 97, 1347, 97, 97, 97, 97, 97, 97, 1353, 97, 97, 97, 97, 97, 97, 1361, 97, 18, 131427, 0, 638, 0, 0, 0, 0, 362, 0, 0, 365, 29315, 367, 0, 544, 0, 550, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2473984, 2158592, 2158592, 2158592, 2990080, 2158592, 2158592, 2207744, 2207744, 2482176, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 0, 0, 0, 0, 0, 2162688, 0, 53530, 97, 97, 97, 1365, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 608, 97, 97, 97, 45, 45, 1424, 45, 1425, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1058, 67, 67, 67, 67, 45, 1555, 45, 45, 1557, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 707, 45, 45, 45, 45, 67, 67, 1570, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 773, 67, 67, 1595, 67, 67, 1597, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 2158592, 2158592, 2158592, 2404352, 2412544, 97, 97, 97, 1636, 97, 97, 97, 1639, 97, 97, 1641, 97, 97, 97, 97, 97, 97, 1173, 0, 921, 0, 0, 0, 0, 0, 0, 45, 67, 67, 67, 1693, 67, 67, 67, 67, 67, 67, 67, 1698, 67, 67, 67, 67, 67, 67, 67, 1773, 67, 97, 97, 97, 97, 97, 97, 97, 625, 97, 97, 97, 97, 97, 97, 97, 97, 850, 97, 97, 97, 97, 97, 97, 97, 97, 880, 97, 97, 97, 97, 97, 97, 97, 97, 1106, 97, 97, 97, 97, 97, 97, 97, 1860, 45, 45, 67, 67, 1865, 67, 67, 67, 67, 1870, 67, 67, 67, 67, 1875, 67, 67, 97, 97, 1880, 97, 97, 0, 0, 0, 97, 97, 1888, 97, 0, 0, 0, 1938, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 1854, 45, 45, 45, 45, 45, 45, 45, 1909, 45, 45, 1911, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1248, 67, 67, 67, 67, 67, 67, 1922, 67, 67, 1924, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 1898, 45, 45, 45, 45, 45, 45, 1904, 45, 45, 67, 67, 67, 67, 97, 97, 97, 97, 0, 0, 16384, 97, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 1724, 2008, 2009, 45, 45, 67, 67, 67, 2014, 2015, 67, 67, 97, 97, 0, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 2022, 0, 2023, 97, 97, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 1869, 67, 67, 67, 67, 67, 67, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 45, 147, 151, 154, 45, 162, 45, 45, 176, 178, 181, 45, 45, 45, 192, 196, 45, 45, 45, 45, 2012, 67, 67, 67, 67, 67, 67, 2018, 97, 0, 0, 97, 1978, 97, 97, 97, 1982, 45, 45, 45, 45, 45, 45, 45, 45, 45, 972, 973, 45, 45, 45, 45, 45, 67, 259, 263, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 97, 294, 298, 301, 97, 309, 97, 97, 323, 325, 328, 97, 97, 97, 97, 97, 560, 97, 97, 97, 569, 97, 97, 97, 97, 97, 97, 306, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1624, 97, 97, 97, 97, 97, 97, 97, 0, 921, 0, 1175, 0, 0, 0, 0, 45, 339, 343, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 67, 67, 503, 67, 67, 67, 67, 67, 67, 67, 67, 67, 512, 67, 67, 519, 97, 97, 600, 97, 97, 97, 97, 97, 97, 97, 97, 97, 609, 97, 97, 616, 45, 649, 45, 45, 45, 45, 45, 654, 45, 45, 45, 45, 45, 45, 45, 45, 1393, 45, 45, 45, 45, 45, 45, 45, 45, 1209, 45, 45, 45, 45, 45, 45, 45, 67, 763, 67, 67, 67, 67, 67, 67, 67, 67, 770, 67, 67, 67, 774, 67, 0, 2045, 97, 97, 97, 97, 45, 45, 67, 67, 0, 0, 97, 97, 45, 45, 45, 994, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 213, 67, 219, 67, 67, 232, 67, 242, 67, 247, 67, 67, 67, 779, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1018, 67, 67, 67, 67, 811, 67, 67, 67, 67, 67, 67, 67, 67, 67, 25398, 542, 13112, 544, 57889, 0, 0, 54074, 54074, 550, 0, 97, 834, 97, 97, 97, 97, 97, 839, 97, 18, 131427, 0, 638, 0, 0, 0, 0, 362, 0, 0, 365, 29315, 367, 645, 97, 97, 861, 97, 97, 97, 97, 97, 97, 97, 97, 868, 97, 97, 97, 872, 97, 97, 877, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 613, 97, 97, 97, 97, 97, 909, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 0, 18, 18, 24, 24, 27, 27, 27, 1036, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1047, 67, 67, 67, 1050, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1033, 67, 67, 67, 97, 97, 1130, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 638, 0, 0, 67, 67, 67, 1295, 67, 67, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 1317, 97, 97, 97, 97, 97, 97, 1375, 97, 97, 97, 0, 0, 0, 45, 1379, 45, 45, 45, 45, 45, 45, 422, 45, 45, 45, 429, 431, 45, 45, 45, 45, 0, 1090, 0, 0, 97, 1479, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1357, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1716, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1723, 0, 921, 29315, 0, 0, 0, 0, 45, 929, 45, 45, 45, 45, 45, 45, 45, 1392, 45, 45, 45, 45, 45, 45, 45, 45, 45, 960, 45, 45, 45, 45, 45, 45, 97, 97, 97, 1738, 45, 45, 45, 45, 45, 45, 45, 1743, 45, 45, 45, 45, 166, 45, 45, 45, 45, 184, 186, 45, 45, 197, 45, 45, 97, 1779, 0, 0, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 0, 97, 18, 131427, 0, 638, 0, 0, 0, 0, 362, 0, 640, 365, 29315, 367, 0, 921, 29315, 0, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1537, 45, 45, 45, 45, 45, 1803, 45, 45, 45, 45, 45, 1809, 45, 45, 45, 67, 67, 67, 1814, 67, 67, 67, 67, 67, 67, 1821, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 0, 0, 67, 67, 67, 1818, 67, 67, 67, 67, 67, 1824, 67, 67, 67, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 1890, 0, 1829, 97, 97, 0, 0, 97, 97, 1836, 97, 97, 0, 0, 0, 97, 97, 97, 97, 1981, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1987, 1845, 97, 97, 97, 45, 45, 45, 45, 45, 1853, 45, 45, 45, 1857, 45, 45, 45, 67, 1864, 67, 1866, 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 97, 97, 1710, 1711, 67, 67, 97, 97, 97, 97, 97, 0, 0, 0, 1886, 97, 97, 97, 0, 0, 97, 97, 97, 97, 1838, 0, 0, 0, 97, 1843, 97, 0, 1893, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1745, 45, 45, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 0, 1931, 97, 97, 97, 97, 97, 588, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 629, 97, 97, 97, 97, 97, 67, 2044, 0, 97, 97, 97, 97, 45, 45, 67, 67, 0, 0, 97, 97, 45, 45, 45, 1660, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 453, 45, 455, 67, 67, 67, 67, 268, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 348, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 131427, 0, 359, 0, 0, 362, 0, 365, 28809, 367, 139, 45, 45, 45, 45, 45, 421, 45, 45, 45, 45, 45, 45, 45, 434, 45, 45, 695, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1667, 45, 0, 921, 29315, 0, 925, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1811, 45, 67, 67, 67, 67, 67, 67, 1037, 67, 1039, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1277, 67, 67, 67, 67, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 0, 1095, 0, 0, 0, 1096, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 869, 97, 97, 97, 97, 97, 97, 1131, 97, 1133, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1370, 97, 97, 97, 97, 97, 1312, 0, 0, 0, 0, 1096, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 1327, 97, 97, 97, 97, 97, 1332, 97, 97, 97, 1830, 97, 0, 0, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 1896, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1548, 45, 45, 45, 45, 45, 45, 133, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 45, 45, 380, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 401, 45, 45, 158, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1200, 45, 45, 45, 45, 206, 67, 67, 67, 67, 67, 225, 67, 67, 67, 67, 67, 67, 67, 67, 754, 67, 67, 67, 67, 67, 67, 67, 57889, 0, 0, 54074, 54074, 550, 832, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1342, 97, 97, 97, 97, 97, 97, 67, 67, 67, 67, 67, 25398, 1083, 13112, 1087, 54074, 1091, 0, 0, 0, 0, 0, 0, 1316, 0, 831, 97, 97, 97, 97, 97, 97, 97, 1174, 921, 0, 1175, 0, 0, 0, 0, 45, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 45, 148, 67, 67, 264, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 97, 295, 97, 97, 97, 97, 313, 97, 97, 97, 97, 331, 333, 97, 18, 131427, 356, 638, 0, 0, 0, 0, 362, 0, 0, 365, 0, 367, 0, 45, 45, 1530, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 988, 45, 45, 45, 97, 344, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 402, 404, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1756, 67, 438, 45, 45, 45, 45, 45, 45, 45, 45, 449, 450, 45, 45, 45, 67, 67, 214, 218, 221, 67, 229, 67, 67, 243, 245, 248, 67, 67, 67, 67, 67, 488, 490, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1071, 67, 1073, 67, 67, 67, 67, 67, 524, 67, 67, 67, 67, 67, 67, 67, 67, 535, 536, 67, 67, 67, 67, 67, 67, 1683, 1684, 67, 67, 67, 67, 1688, 1689, 67, 67, 67, 67, 67, 67, 1586, 67, 67, 67, 67, 67, 67, 67, 67, 67, 469, 67, 67, 67, 67, 67, 67, 97, 97, 97, 585, 587, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1163, 97, 97, 97, 97, 97, 97, 97, 621, 97, 97, 97, 97, 97, 97, 97, 97, 632, 633, 97, 97, 0, 0, 1782, 97, 97, 97, 97, 97, 0, 0, 97, 97, 0, 97, 712, 45, 45, 45, 717, 45, 45, 45, 45, 45, 45, 45, 45, 725, 45, 45, 45, 163, 167, 173, 177, 45, 45, 45, 45, 45, 193, 45, 45, 45, 45, 982, 45, 45, 45, 45, 45, 45, 987, 45, 45, 45, 45, 45, 1558, 45, 1560, 45, 45, 45, 45, 45, 45, 45, 45, 704, 705, 45, 45, 45, 45, 45, 45, 45, 45, 731, 45, 45, 45, 67, 67, 67, 67, 67, 739, 67, 67, 67, 67, 67, 67, 273, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 67, 67, 67, 764, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1290, 67, 67, 67, 67, 67, 67, 812, 67, 67, 67, 67, 818, 67, 67, 67, 25398, 542, 13112, 544, 57889, 0, 0, 54074, 54074, 550, 0, 97, 97, 97, 97, 97, 837, 97, 97, 97, 97, 97, 602, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1137, 97, 97, 97, 97, 97, 97, 97, 97, 97, 862, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1627, 97, 97, 97, 0, 97, 97, 97, 97, 910, 97, 97, 97, 97, 916, 97, 97, 97, 0, 0, 0, 97, 97, 1940, 97, 97, 1942, 45, 45, 45, 45, 45, 45, 385, 45, 45, 45, 45, 395, 45, 45, 45, 45, 966, 45, 969, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 975, 45, 45, 45, 406, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 974, 45, 45, 45, 67, 67, 67, 67, 1010, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1262, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1040, 67, 1042, 67, 1045, 67, 67, 67, 67, 67, 67, 67, 97, 1706, 97, 97, 97, 1709, 97, 97, 97, 67, 67, 67, 67, 1051, 67, 67, 67, 67, 67, 1057, 67, 67, 67, 67, 67, 67, 67, 1443, 67, 67, 1446, 67, 67, 67, 67, 67, 67, 67, 1297, 0, 0, 0, 1303, 0, 0, 0, 1309, 67, 67, 67, 67, 1079, 25398, 0, 13112, 0, 54074, 0, 0, 0, 0, 0, 0, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2207744, 2207744, 2207744, 2207744, 2207744, 2572288, 2207744, 2207744, 2207744, 1098, 97, 97, 97, 97, 97, 1104, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1356, 97, 97, 97, 97, 97, 97, 1128, 97, 97, 97, 97, 97, 97, 1134, 97, 1136, 97, 1139, 97, 97, 97, 97, 97, 97, 1622, 97, 97, 97, 97, 97, 97, 97, 97, 0, 921, 0, 0, 0, 1176, 0, 646, 45, 67, 67, 67, 1268, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1469, 67, 67, 67, 97, 1348, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1127, 97, 67, 1569, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1448, 1449, 67, 1816, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1825, 67, 67, 1827, 97, 97, 0, 1781, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 0, 97, 97, 97, 1831, 0, 0, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 1980, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1395, 45, 45, 45, 45, 45, 97, 1846, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1212, 45, 45, 45, 45, 45, 45, 2010, 45, 67, 67, 67, 67, 67, 2016, 67, 97, 97, 0, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 45, 45, 2007, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 143, 45, 45, 45, 1671, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 1813, 67, 67, 1815, 45, 45, 67, 210, 67, 67, 67, 67, 67, 67, 239, 67, 67, 67, 67, 67, 67, 67, 1454, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1445, 67, 67, 67, 67, 67, 67, 97, 97, 290, 97, 97, 97, 97, 97, 97, 319, 97, 97, 97, 97, 97, 97, 303, 97, 97, 317, 97, 97, 97, 97, 97, 97, 305, 97, 97, 97, 97, 97, 97, 97, 97, 97, 899, 97, 97, 97, 97, 97, 97, 375, 45, 45, 45, 379, 45, 45, 390, 45, 45, 394, 45, 45, 45, 45, 45, 443, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 461, 67, 67, 67, 465, 67, 67, 476, 67, 67, 480, 67, 67, 67, 67, 67, 67, 1694, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1288, 67, 67, 67, 67, 67, 67, 500, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1075, 97, 97, 97, 558, 97, 97, 97, 562, 97, 97, 573, 97, 97, 577, 97, 97, 97, 97, 97, 895, 97, 97, 97, 97, 97, 97, 903, 97, 97, 97, 0, 97, 97, 1638, 97, 97, 97, 97, 97, 97, 97, 97, 1646, 597, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1334, 45, 681, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1396, 45, 45, 1399, 45, 45, 730, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1434, 67, 67, 67, 67, 67, 67, 750, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1456, 67, 67, 67, 67, 67, 45, 45, 993, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 1238, 67, 67, 1006, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1280, 1048, 1049, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1059, 67, 67, 67, 67, 67, 67, 1286, 67, 67, 67, 67, 67, 67, 67, 1291, 67, 97, 97, 1100, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 638, 0, 920, 97, 97, 1142, 1143, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1153, 97, 97, 97, 97, 97, 1158, 97, 97, 97, 1161, 97, 97, 97, 97, 1166, 97, 97, 97, 97, 97, 1325, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1328, 97, 97, 97, 97, 97, 97, 97, 45, 1218, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1678, 45, 45, 45, 67, 67, 67, 67, 67, 1269, 67, 67, 67, 67, 67, 67, 67, 67, 1278, 67, 67, 67, 67, 67, 67, 1761, 67, 67, 67, 67, 67, 67, 67, 67, 67, 530, 67, 67, 67, 67, 67, 67, 97, 97, 1349, 97, 97, 97, 97, 97, 97, 97, 97, 1358, 97, 97, 97, 97, 97, 97, 1623, 97, 97, 97, 97, 97, 97, 97, 97, 0, 921, 0, 0, 926, 0, 0, 0, 45, 45, 1411, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1754, 45, 45, 67, 67, 1301, 0, 1307, 0, 1313, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 21054, 97, 97, 97, 97, 67, 1757, 67, 67, 67, 1760, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1467, 67, 67, 67, 67, 67, 1778, 97, 0, 0, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 0, 97, 97, 97, 97, 97, 1352, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1511, 97, 97, 97, 97, 97, 67, 67, 67, 67, 67, 1820, 67, 1822, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 0, 0, 97, 1933, 97, 1892, 97, 97, 97, 97, 97, 97, 1899, 45, 45, 45, 45, 45, 45, 45, 45, 1664, 45, 45, 45, 45, 45, 45, 45, 45, 1546, 45, 45, 45, 45, 45, 45, 45, 45, 1208, 45, 45, 45, 45, 45, 45, 45, 45, 1224, 45, 45, 45, 45, 45, 45, 45, 45, 673, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 1925, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 623, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 307, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1796, 97, 45, 45, 45, 45, 45, 45, 45, 970, 45, 45, 45, 45, 45, 45, 45, 45, 1417, 45, 45, 45, 45, 45, 45, 45, 67, 1964, 67, 67, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 1721, 97, 97, 0, 0, 1997, 97, 0, 0, 2000, 97, 97, 0, 97, 97, 97, 97, 97, 45, 45, 45, 45, 733, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 803, 67, 67, 67, 67, 67, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 144, 45, 45, 45, 1805, 45, 1807, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 231, 67, 67, 67, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 45, 45, 67, 211, 67, 67, 67, 67, 230, 234, 240, 244, 67, 67, 67, 67, 67, 67, 464, 67, 67, 67, 67, 67, 67, 479, 67, 67, 67, 260, 67, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 291, 97, 97, 97, 97, 310, 314, 320, 324, 97, 97, 97, 97, 97, 97, 1367, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1355, 97, 97, 97, 97, 97, 97, 1362, 340, 97, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 131427, 0, 0, 360, 0, 362, 0, 365, 28809, 367, 139, 369, 45, 45, 45, 374, 67, 67, 460, 67, 67, 67, 67, 466, 67, 67, 67, 67, 67, 67, 67, 67, 801, 67, 67, 67, 67, 67, 67, 67, 67, 67, 487, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 498, 67, 67, 67, 67, 67, 67, 1772, 67, 67, 97, 97, 97, 97, 97, 97, 97, 0, 921, 922, 1175, 0, 0, 0, 0, 45, 67, 502, 67, 67, 67, 67, 67, 67, 67, 508, 67, 67, 67, 515, 517, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 0, 0, 1932, 97, 97, 0, 1999, 97, 97, 97, 0, 97, 97, 2004, 2005, 97, 45, 45, 45, 45, 1193, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 676, 45, 45, 45, 45, 67, 24850, 24850, 12564, 12564, 0, 57889, 0, 0, 0, 53531, 53531, 367, 286, 552, 97, 97, 97, 97, 97, 1377, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 655, 45, 45, 45, 45, 45, 45, 45, 97, 97, 557, 97, 97, 97, 97, 563, 97, 97, 97, 97, 97, 97, 97, 97, 1135, 97, 97, 97, 97, 97, 97, 97, 97, 97, 584, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 595, 97, 97, 97, 97, 97, 911, 97, 97, 97, 97, 97, 97, 97, 638, 0, 0, 0, 0, 1315, 0, 0, 0, 0, 97, 97, 97, 1319, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 1733, 97, 97, 97, 97, 97, 97, 1340, 97, 97, 97, 1343, 97, 97, 1345, 97, 1346, 97, 599, 97, 97, 97, 97, 97, 97, 97, 605, 97, 97, 97, 612, 614, 97, 97, 97, 97, 97, 1794, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 1207, 45, 45, 45, 45, 45, 45, 1213, 45, 45, 745, 67, 67, 67, 67, 751, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1577, 67, 67, 67, 67, 67, 762, 67, 67, 67, 67, 766, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1765, 67, 67, 67, 67, 67, 777, 67, 67, 781, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1592, 1593, 67, 67, 97, 843, 97, 97, 97, 97, 849, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1510, 97, 97, 97, 97, 97, 97, 97, 860, 97, 97, 97, 97, 864, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1797, 45, 45, 45, 45, 1801, 45, 97, 875, 97, 97, 879, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1522, 97, 97, 97, 97, 97, 991, 45, 45, 45, 45, 996, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 215, 67, 67, 67, 67, 233, 67, 67, 67, 67, 251, 253, 1022, 67, 67, 67, 1026, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1035, 67, 67, 1038, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1458, 67, 67, 67, 67, 67, 1064, 67, 67, 67, 1067, 67, 67, 67, 67, 1072, 67, 67, 67, 67, 67, 67, 1296, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2367488, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 67, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 0, 0, 1096, 0, 921, 29315, 0, 0, 0, 0, 928, 45, 45, 45, 45, 45, 934, 45, 45, 45, 164, 45, 45, 45, 45, 45, 45, 45, 45, 45, 198, 45, 45, 45, 378, 45, 45, 45, 45, 45, 45, 393, 45, 45, 45, 398, 45, 97, 97, 1116, 97, 97, 97, 1120, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1147, 1148, 97, 97, 97, 97, 97, 97, 97, 1129, 97, 97, 1132, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1626, 97, 97, 97, 97, 0, 45, 1178, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1185, 45, 45, 45, 45, 441, 45, 45, 45, 45, 45, 45, 451, 45, 45, 67, 67, 67, 67, 67, 227, 67, 67, 67, 67, 67, 67, 67, 67, 1260, 67, 67, 67, 1263, 67, 67, 1265, 1203, 45, 45, 1205, 45, 1206, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1216, 67, 1266, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1276, 67, 67, 67, 67, 67, 67, 492, 67, 67, 67, 67, 67, 67, 67, 67, 67, 471, 67, 67, 67, 67, 481, 67, 45, 1386, 45, 1389, 45, 45, 45, 45, 1394, 45, 45, 45, 1397, 45, 45, 45, 45, 995, 45, 997, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 1915, 67, 67, 67, 67, 67, 1422, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1433, 67, 1436, 67, 67, 67, 67, 1441, 67, 67, 67, 1444, 67, 67, 67, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 281, 28809, 53531, 97, 97, 97, 97, 1494, 97, 97, 97, 1497, 97, 97, 97, 97, 97, 97, 97, 1368, 97, 97, 97, 97, 97, 97, 97, 97, 851, 97, 97, 97, 97, 97, 97, 97, 67, 67, 67, 1571, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 25398, 542, 13112, 544, 67, 67, 1583, 67, 67, 67, 67, 67, 67, 67, 67, 1591, 67, 67, 67, 67, 67, 67, 752, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1056, 67, 67, 67, 67, 67, 67, 97, 1634, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1125, 97, 97, 97, 1647, 97, 97, 97, 97, 97, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1183, 45, 45, 45, 45, 45, 45, 45, 45, 45, 409, 45, 45, 45, 45, 45, 45, 1658, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1668, 1712, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 1835, 97, 97, 97, 97, 0, 0, 0, 97, 97, 1844, 97, 97, 1726, 0, 97, 97, 97, 97, 97, 1732, 97, 1734, 97, 97, 97, 97, 97, 300, 97, 308, 97, 97, 97, 97, 97, 97, 97, 97, 866, 97, 97, 97, 97, 97, 97, 97, 67, 67, 67, 1758, 67, 67, 67, 1762, 67, 67, 67, 67, 67, 67, 67, 67, 1043, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1771, 67, 67, 67, 97, 97, 97, 97, 97, 1776, 97, 97, 97, 97, 297, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1108, 97, 97, 97, 97, 67, 67, 67, 1966, 97, 97, 97, 1970, 0, 0, 0, 97, 97, 97, 97, 0, 97, 97, 97, 1720, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 1837, 97, 0, 1840, 1841, 97, 97, 97, 1988, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1994, 1995, 67, 97, 97, 97, 97, 97, 1103, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 917, 97, 97, 0, 0, 0, 67, 67, 265, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 345, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 131427, 0, 0, 0, 361, 362, 0, 365, 28809, 367, 139, 45, 45, 45, 45, 45, 671, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 411, 45, 45, 414, 45, 45, 45, 45, 377, 45, 45, 45, 386, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1223, 45, 45, 45, 45, 45, 45, 45, 45, 45, 426, 45, 45, 433, 45, 45, 45, 67, 67, 67, 67, 67, 463, 67, 67, 67, 472, 67, 67, 67, 67, 67, 67, 67, 527, 67, 67, 67, 67, 67, 67, 537, 67, 540, 24850, 24850, 12564, 12564, 0, 57889, 0, 0, 0, 53531, 53531, 367, 286, 97, 97, 97, 97, 97, 1119, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1509, 97, 97, 97, 97, 97, 97, 97, 97, 564, 97, 97, 97, 97, 97, 97, 97, 637, 18, 131427, 0, 0, 0, 0, 0, 0, 362, 0, 0, 365, 29315, 367, 0, 921, 29315, 0, 0, 0, 927, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1234, 45, 45, 45, 45, 67, 67, 67, 67, 1240, 45, 697, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 708, 45, 45, 45, 45, 1221, 45, 45, 45, 45, 1225, 45, 45, 45, 45, 45, 45, 384, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1210, 45, 45, 45, 45, 45, 45, 67, 67, 795, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1470, 67, 67, 67, 67, 67, 67, 67, 815, 67, 67, 67, 67, 67, 67, 25398, 542, 13112, 544, 97, 97, 97, 893, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1164, 97, 97, 97, 67, 67, 67, 1025, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1687, 67, 67, 67, 67, 67, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 0, 0, 0, 1097, 1241, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1450, 45, 45, 1388, 45, 1390, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1236, 67, 67, 67, 67, 67, 1437, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1472, 1490, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1503, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 1930, 0, 97, 97, 97, 97, 97, 847, 97, 97, 97, 97, 97, 97, 97, 97, 97, 858, 67, 67, 1965, 67, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 0, 97, 97, 1719, 97, 97, 97, 97, 97, 97, 0, 0, 0, 45, 45, 45, 45, 1382, 45, 1383, 45, 45, 45, 159, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1563, 45, 45, 45, 45, 45, 67, 261, 67, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 341, 97, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 97, 1099, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1333, 97, 1230, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 1992, 67, 1993, 67, 67, 67, 97, 97, 45, 45, 160, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1665, 45, 45, 45, 45, 45, 131427, 357, 0, 0, 0, 362, 0, 365, 28809, 367, 139, 45, 45, 45, 45, 45, 684, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 412, 45, 45, 45, 416, 45, 45, 45, 440, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 1990, 67, 1991, 67, 67, 67, 67, 67, 67, 67, 97, 97, 1707, 97, 97, 97, 97, 97, 97, 501, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1691, 67, 67, 67, 67, 67, 526, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1030, 67, 1032, 67, 67, 67, 67, 598, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1632, 0, 921, 29315, 923, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1404, 45, 45, 45, 45, 45, 45, 45, 45, 45, 425, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 1093, 0, 0, 0, 0, 0, 97, 1609, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1369, 97, 97, 97, 1372, 97, 97, 67, 67, 266, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 346, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 665, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1677, 45, 45, 45, 45, 67, 45, 45, 954, 45, 956, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1545, 45, 45, 45, 45, 45, 45, 45, 45, 45, 448, 45, 45, 45, 45, 67, 456, 67, 67, 67, 67, 67, 1270, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1069, 67, 67, 67, 67, 67, 67, 97, 97, 97, 1350, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1524, 97, 97, 97, 97, 97, 97, 97, 1376, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 1559, 1561, 45, 45, 45, 1564, 45, 1566, 1567, 45, 67, 67, 67, 67, 67, 1573, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1247, 67, 67, 67, 67, 67, 1252, 97, 1725, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1628, 97, 1630, 0, 0, 94242, 0, 0, 0, 2211840, 0, 1118208, 0, 0, 0, 0, 2158592, 2158731, 2158592, 2158592, 2158592, 3117056, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3018752, 2158592, 3043328, 2158592, 2158592, 2158592, 2158592, 3080192, 2158592, 2158592, 3112960, 2158592, 2158592, 2158592, 2158592, 2158592, 2158878, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2605056, 2158592, 2158592, 2207744, 0, 542, 0, 544, 0, 0, 2166784, 0, 0, 0, 550, 0, 0, 2158592, 2158592, 2686976, 2158592, 2715648, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2867200, 2158592, 2904064, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 94242, 0, 0, 0, 2211840, 0, 0, 1130496, 0, 0, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 3186688, 2158592, 0, 0, 139, 0, 0, 0, 139, 0, 2367488, 2207744, 0, 0, 0, 0, 176128, 0, 2166784, 0, 0, 0, 0, 0, 286, 2158592, 2158592, 3170304, 3174400, 2158592, 0, 0, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2424832, 2158592, 2158592, 2158592, 1508, 2158592, 2908160, 2158592, 2158592, 2158592, 2977792, 2158592, 2158592, 2158592, 2158592, 3039232, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3158016, 67, 24850, 24850, 12564, 12564, 0, 0, 0, 0, 0, 53531, 53531, 0, 286, 97, 97, 97, 97, 97, 1144, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1149, 97, 97, 97, 97, 1154, 57889, 0, 0, 0, 0, 550, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 561, 97, 97, 97, 97, 97, 97, 576, 97, 97, 139264, 139264, 139264, 139264, 139264, 139264, 139264, 139264, 139264, 139264, 139264, 139264, 0, 0, 139264, 0, 921, 29315, 0, 0, 926, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 719, 720, 45, 45, 45, 45, 45, 45, 45, 45, 685, 45, 45, 45, 45, 45, 45, 45, 45, 45, 942, 45, 45, 946, 45, 45, 45, 950, 45, 45, 0, 2146304, 2146304, 0, 0, 0, 0, 2224128, 2224128, 2224128, 2232320, 2232320, 2232320, 2232320, 0, 0, 1301, 0, 0, 0, 0, 0, 1307, 0, 0, 0, 0, 0, 1313, 0, 0, 0, 0, 0, 0, 0, 97, 97, 1318, 97, 97, 97, 97, 97, 97, 1795, 97, 97, 45, 45, 45, 45, 45, 45, 45, 446, 45, 45, 45, 45, 45, 45, 67, 67, 2158592, 2146304, 0, 0, 0, 0, 0, 0, 0, 2211840, 0, 0, 0, 0, 2158592, 0, 921, 29315, 0, 924, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1000, 45, 45, 45, 45, 67, 67 +]; + +XQueryTokenizer.EXPECTED = +[ 290, 300, 304, 353, 296, 309, 305, 319, 315, 324, 328, 352, 354, 334, 338, 330, 320, 345, 349, 293, 358, 362, 341, 366, 312, 370, 374, 378, 382, 386, 390, 394, 398, 737, 402, 634, 439, 604, 634, 634, 634, 634, 408, 634, 634, 634, 404, 634, 634, 634, 457, 634, 634, 963, 634, 634, 413, 634, 634, 634, 634, 634, 634, 634, 663, 418, 422, 903, 902, 426, 431, 548, 634, 437, 521, 919, 443, 615, 409, 449, 455, 624, 731, 751, 634, 461, 465, 672, 470, 469, 474, 481, 485, 477, 489, 493, 629, 542, 497, 505, 603, 602, 991, 648, 510, 804, 634, 515, 958, 526, 525, 530, 768, 634, 546, 552, 711, 710, 593, 558, 562, 618, 566, 570, 574, 578, 582, 586, 590, 608, 612, 660, 822, 821, 634, 622, 596, 444, 628, 533, 724, 633, 640, 653, 647, 652, 536, 1008, 451, 450, 445, 657, 670, 676, 685, 689, 693, 697, 701, 704, 707, 715, 719, 798, 815, 634, 723, 762, 996, 634, 728, 969, 730, 735, 908, 634, 741, 679, 889, 511, 747, 634, 750, 755, 499, 666, 499, 501, 759, 772, 776, 780, 634, 787, 784, 797, 802, 809, 808, 427, 814, 1006, 517, 634, 519, 853, 634, 813, 850, 793, 634, 819, 826, 833, 832, 837, 843, 847, 857, 861, 863, 867, 871, 875, 879, 883, 643, 887, 539, 980, 979, 634, 893, 944, 634, 900, 896, 634, 907, 933, 506, 912, 917, 828, 433, 636, 635, 554, 961, 923, 930, 927, 937, 941, 634, 634, 634, 974, 948, 952, 985, 913, 968, 967, 743, 634, 973, 839, 634, 978, 599, 634, 984, 989, 765, 444, 995, 1000, 634, 1003, 790, 955, 1012, 681, 634, 634, 634, 634, 634, 414, 1016, 1020, 1024, 1085, 1027, 1090, 1090, 1046, 1080, 1137, 1108, 1215, 1049, 1032, 1039, 1085, 1085, 1085, 1085, 1058, 1062, 1068, 1085, 1086, 1090, 1090, 1091, 1072, 1064, 1107, 1090, 1090, 1090, 1118, 1123, 1138, 1078, 1074, 1084, 1085, 1085, 1085, 1087, 1090, 1062, 1052, 1060, 1114, 1062, 1104, 1085, 1085, 1090, 1090, 1028, 1122, 1063, 1128, 1139, 1127, 1158, 1085, 1085, 1151, 1090, 1090, 1090, 1095, 1090, 1132, 1073, 1136, 1143, 1061, 1150, 1085, 1155, 1098, 1101, 1146, 1162, 1169, 1101, 1185, 1151, 1090, 1110, 1173, 1054, 1087, 1109, 1177, 1165, 1089, 1204, 1184, 1107, 1189, 1193, 1088, 1197, 1180, 1201, 1208, 1042, 1212, 1219, 1223, 1227, 1231, 1235, 1245, 1777, 1527, 1686, 1686, 1238, 1686, 1254, 1686, 1686, 1686, 1294, 1669, 1686, 1686, 1686, 1322, 1625, 1534, 1268, 1624, 1275, 1281, 1443, 1292, 1300, 1686, 1686, 1686, 1350, 1826, 1306, 1686, 1686, 1240, 2032, 1317, 1321, 1686, 1686, 1253, 1686, 1326, 1686, 1686, 1686, 1418, 1709, 1446, 1686, 1686, 1686, 1492, 1686, 1295, 1447, 1686, 1686, 1258, 1686, 1736, 1686, 1686, 1520, 1355, 1686, 1288, 1348, 1361, 1686, 1359, 1686, 1364, 1498, 1368, 1302, 1362, 1381, 1389, 1395, 1486, 1686, 1371, 1377, 1370, 1686, 1375, 1382, 1384, 1402, 1408, 1385, 1383, 1619, 1413, 1423, 1428, 1433, 1686, 1686, 1270, 1686, 1338, 1686, 1440, 1686, 1686, 1686, 1499, 1465, 1686, 1686, 1686, 1639, 1473, 1884, 1686, 1686, 1293, 1864, 1686, 1686, 1296, 1321, 1483, 1686, 1686, 1686, 1646, 1686, 1748, 1496, 1686, 1418, 1675, 1686, 1418, 1702, 1686, 1418, 1981, 1686, 1429, 1409, 1427, 1504, 1692, 1686, 1686, 1313, 1448, 1651, 1508, 1686, 1686, 1340, 1686, 1903, 1686, 1686, 1435, 1513, 1686, 1283, 1287, 1519, 1686, 1524, 1363, 1568, 1938, 1539, 1566, 1579, 1479, 1533, 1538, 1553, 1544, 1552, 1557, 1563, 1574, 1557, 1583, 1589, 1590, 1759, 1594, 1603, 1607, 1611, 1686, 1436, 1514, 1686, 1434, 1656, 1686, 1434, 1680, 1686, 1453, 1686, 1686, 1686, 1559, 1617, 1686, 1770, 1418, 1623, 1769, 1629, 1686, 1515, 1335, 1686, 1285, 1686, 1671, 1921, 1650, 1686, 1686, 1344, 1308, 1666, 1686, 1686, 1686, 1659, 1685, 1686, 1686, 1686, 1686, 1241, 1686, 1686, 1844, 1691, 1686, 1630, 1977, 1970, 1362, 1686, 1686, 1686, 1693, 1698, 1686, 1686, 1686, 1697, 1686, 1764, 1715, 1686, 1634, 1638, 1686, 1599, 1585, 1686, 1271, 1686, 1269, 1686, 1721, 1686, 1686, 1354, 1686, 1801, 1686, 1799, 1686, 1640, 1686, 1686, 1461, 1686, 1686, 1732, 1686, 1944, 1686, 1740, 1686, 1746, 1415, 1396, 1686, 1598, 1547, 1417, 1597, 1416, 1577, 1546, 1397, 1577, 1547, 1548, 1570, 1398, 1753, 1686, 1652, 1509, 1686, 1686, 1686, 1757, 1686, 1419, 1686, 1763, 1418, 1768, 1781, 1686, 1686, 1686, 1705, 1686, 2048, 1792, 1686, 1686, 1686, 1735, 1686, 1797, 1686, 1686, 1404, 1686, 1639, 1815, 1686, 1686, 1418, 2017, 1820, 1686, 1686, 1803, 1686, 1686, 1686, 1736, 1489, 1686, 1686, 1825, 1338, 1260, 1263, 1686, 1686, 1785, 1686, 1686, 1728, 1686, 1686, 1749, 1497, 1830, 1830, 1262, 1248, 1261, 1329, 1260, 1264, 1329, 1248, 1249, 1259, 1540, 1849, 1842, 1686, 1686, 1835, 1686, 1686, 1816, 1686, 1686, 1831, 1882, 1848, 1686, 1686, 1686, 1774, 2071, 1854, 1686, 1686, 1469, 1884, 1686, 1821, 1859, 1686, 1686, 1350, 1883, 1686, 1686, 1686, 1781, 1391, 1875, 1686, 1686, 1613, 1644, 1686, 1686, 1889, 1686, 1686, 1662, 1884, 1686, 1885, 1890, 1686, 1686, 1686, 1894, 1686, 1686, 1678, 1686, 1907, 1686, 1686, 1529, 1914, 1686, 1838, 1686, 1686, 1881, 1686, 1686, 1872, 1876, 1836, 1919, 1686, 1837, 1692, 1910, 1686, 1925, 1928, 1742, 1686, 1811, 1811, 1930, 1810, 1929, 1935, 1928, 1900, 1942, 1867, 1868, 1931, 1035, 1788, 1948, 1952, 1956, 1960, 1964, 1686, 1976, 1686, 1686, 1686, 2065, 1686, 1992, 2037, 1686, 1686, 1998, 2009, 1972, 2002, 1686, 1686, 1686, 2077, 1300, 2023, 1686, 1686, 1686, 1807, 2031, 1686, 1686, 1686, 1860, 1500, 2032, 1686, 1686, 1686, 2083, 1686, 2036, 1686, 1277, 1276, 2042, 1877, 1686, 1686, 2041, 1686, 1686, 2027, 2037, 2012, 1686, 2012, 1855, 1850, 1686, 2046, 1686, 1686, 2054, 1996, 1686, 1897, 1309, 2059, 2052, 1686, 2058, 1686, 1686, 2081, 1686, 1717, 1477, 1686, 1331, 1686, 1686, 1687, 1686, 1860, 1681, 1686, 1686, 1686, 1966, 1724, 1686, 1686, 1686, 1984, 2015, 1686, 1686, 1686, 1988, 1686, 2063, 1686, 1686, 1686, 2005, 1686, 1727, 1686, 1686, 1711, 1457, 2069, 1686, 1686, 1686, 2019, 2075, 1686, 1686, 1915, 1686, 1686, 1793, 1874, 1686, 1686, 1491, 1362, 1449, 1686, 1686, 1460, 2098, 2087, 2091, 2095, 2184, 2102, 2113, 2780, 2117, 2134, 2142, 2281, 2146, 2146, 2146, 2304, 2296, 2181, 2639, 2591, 2872, 2592, 2873, 2313, 2195, 2200, 2281, 2146, 2273, 2226, 2204, 2152, 2219, 2276, 2167, 2177, 2276, 2235, 2276, 2276, 2230, 2281, 2276, 2296, 2276, 2293, 2276, 2276, 2276, 2276, 2234, 2276, 2311, 2314, 2210, 2199, 2217, 2222, 2276, 2276, 2276, 2240, 2276, 2294, 2276, 2276, 2173, 2276, 2198, 2281, 2281, 2281, 2281, 2282, 2146, 2146, 2146, 2146, 2205, 2146, 2204, 2248, 2276, 2235, 2276, 2297, 2276, 2276, 2276, 2277, 2256, 2281, 2283, 2146, 2146, 2146, 2275, 2276, 2295, 2276, 2276, 2293, 2146, 2304, 2264, 2269, 2221, 2276, 2276, 2276, 2293, 2295, 2276, 2276, 2276, 2295, 2263, 2205, 2268, 2220, 2172, 2276, 2276, 2276, 2296, 2276, 2276, 2296, 2294, 2276, 2276, 2278, 2281, 2281, 2280, 2281, 2281, 2281, 2283, 2206, 2223, 2276, 2276, 2279, 2281, 2281, 2146, 2273, 2276, 2276, 2281, 2281, 2281, 2276, 2292, 2276, 2298, 2225, 2276, 2298, 2169, 2224, 2292, 2298, 2171, 2229, 2281, 2281, 2171, 2236, 2281, 2281, 2281, 2146, 2275, 2225, 2292, 2299, 2276, 2229, 2281, 2146, 2276, 2290, 2297, 2283, 2146, 2146, 2274, 2224, 2227, 2298, 2225, 2297, 2276, 2230, 2170, 2230, 2282, 2146, 2147, 2151, 2156, 2288, 2276, 2230, 2303, 2308, 2236, 2284, 2228, 2318, 2318, 2318, 2326, 2335, 2339, 2343, 2349, 2416, 2693, 2357, 2592, 2109, 2592, 2592, 2162, 2943, 2823, 2646, 2592, 2361, 2592, 2122, 2592, 2592, 2122, 2470, 2592, 2592, 2592, 2109, 2107, 2592, 2592, 2592, 2123, 2592, 2592, 2592, 2125, 2592, 2413, 2592, 2592, 2592, 2127, 2592, 2592, 2414, 2592, 2592, 2592, 2130, 2952, 2592, 2594, 2592, 2592, 2212, 2609, 2252, 2592, 2592, 2592, 2446, 2434, 2592, 2592, 2592, 2212, 2446, 2450, 2456, 2431, 2435, 2592, 2592, 2243, 2478, 2448, 2439, 2946, 2592, 2592, 2592, 2368, 2809, 2813, 2450, 2441, 2212, 2812, 2449, 2440, 2947, 2592, 2592, 2592, 2345, 2451, 2457, 2948, 2592, 2124, 2592, 2592, 2650, 2823, 2449, 2455, 2946, 2592, 2128, 2592, 2592, 2649, 2952, 2592, 2810, 2448, 2461, 2991, 2467, 2592, 2592, 2329, 2817, 2474, 2990, 2466, 2592, 2592, 2373, 2447, 2992, 2469, 2592, 2592, 2592, 2373, 2447, 2477, 2468, 2592, 2592, 2353, 2469, 2592, 2495, 2592, 2592, 2415, 2483, 2592, 2415, 2496, 2592, 2592, 2352, 2592, 2592, 2352, 2352, 2469, 2592, 2592, 2363, 2331, 2494, 2592, 2592, 2592, 2375, 2592, 2375, 2415, 2504, 2592, 2592, 2367, 2372, 2503, 2592, 2592, 2592, 2389, 2418, 2415, 2592, 2592, 2373, 2592, 2592, 2592, 2593, 2732, 2417, 2415, 2592, 2417, 2520, 2592, 2592, 2592, 2390, 2521, 2521, 2592, 2592, 2592, 2401, 2599, 2585, 2526, 2531, 2120, 2592, 2212, 2426, 2450, 2463, 2948, 2592, 2592, 2592, 2213, 2389, 2527, 2532, 2121, 2542, 2551, 2105, 2592, 2213, 2592, 2592, 2592, 2558, 2538, 2544, 2553, 2557, 2537, 2543, 2552, 2421, 2572, 2576, 2546, 2543, 2547, 2592, 2592, 2373, 2615, 2575, 2545, 2105, 2592, 2244, 2479, 2592, 2129, 2592, 2592, 2628, 2690, 2469, 2562, 2566, 2592, 2592, 2592, 2415, 2928, 2934, 2401, 2570, 2574, 2564, 2572, 2585, 2590, 2592, 2592, 2585, 2965, 2592, 2592, 2592, 2445, 2251, 2592, 2592, 2592, 2474, 2592, 2609, 2892, 2592, 2362, 2592, 2592, 2138, 2851, 2159, 2592, 2592, 2592, 2509, 2888, 2892, 2592, 2592, 2592, 2490, 2418, 2891, 2592, 2592, 2376, 2592, 2592, 2374, 2592, 2889, 2388, 2592, 2373, 2373, 2890, 2592, 2592, 2387, 2592, 2887, 2505, 2892, 2592, 2373, 2610, 2388, 2592, 2592, 2376, 2373, 2592, 2887, 2891, 2592, 2374, 2592, 2592, 2608, 2159, 2614, 2620, 2592, 2592, 2394, 2594, 2887, 2399, 2592, 2887, 2397, 2508, 2374, 2507, 2592, 2375, 2592, 2592, 2592, 2595, 2508, 2506, 2592, 2506, 2505, 2505, 2592, 2507, 2637, 2505, 2592, 2592, 2401, 2661, 2592, 2643, 2592, 2592, 2417, 2592, 2655, 2592, 2592, 2592, 2510, 2414, 2656, 2592, 2592, 2592, 2516, 2592, 2593, 2660, 2665, 2880, 2592, 2592, 2592, 2522, 2767, 2666, 2881, 2592, 2592, 2420, 2571, 2696, 2592, 2592, 2592, 2580, 2572, 2686, 2632, 2698, 2592, 2383, 2514, 2592, 2163, 2932, 2465, 2685, 2631, 2697, 2592, 2388, 2592, 2592, 2212, 2604, 2671, 2632, 2678, 2592, 2401, 2405, 2409, 2592, 2592, 2592, 2679, 2592, 2592, 2592, 2592, 2108, 2677, 2591, 2592, 2592, 2592, 2419, 2592, 2683, 2187, 2191, 2469, 2671, 2189, 2467, 2592, 2401, 2629, 2633, 2702, 2468, 2592, 2592, 2421, 2536, 2703, 2469, 2592, 2592, 2422, 2573, 2593, 2672, 2467, 2592, 2402, 2406, 2592, 2402, 2979, 2592, 2592, 2626, 2673, 2467, 2592, 2446, 2259, 2947, 2592, 2377, 2709, 2592, 2592, 2522, 2862, 2713, 2468, 2592, 2592, 2581, 2572, 2562, 2374, 2374, 2592, 2376, 2721, 2724, 2592, 2592, 2624, 2373, 2731, 2592, 2592, 2592, 2626, 2732, 2592, 2592, 2592, 2755, 2656, 2726, 2736, 2741, 2592, 2486, 2593, 2381, 2592, 2727, 2737, 2742, 2715, 2747, 2753, 2592, 2498, 2469, 2873, 2743, 2592, 2592, 2592, 2791, 2759, 2763, 2592, 2592, 2627, 2704, 2592, 2592, 2522, 2789, 2593, 2761, 2753, 2592, 2498, 2863, 2592, 2592, 2767, 2592, 2592, 2592, 2792, 2789, 2592, 2592, 2592, 2803, 2126, 2592, 2592, 2592, 2811, 2122, 2592, 2592, 2592, 2834, 2777, 2592, 2592, 2592, 2848, 2936, 2591, 2489, 2797, 2592, 2592, 2670, 2631, 2490, 2798, 2592, 2592, 2592, 2963, 2807, 2592, 2592, 2592, 2965, 2838, 2592, 2592, 2592, 2975, 2330, 2818, 2829, 2592, 2498, 2939, 2592, 2498, 2592, 2791, 2331, 2819, 2830, 2592, 2592, 2592, 2982, 2834, 2817, 2828, 2106, 2592, 2592, 2592, 2405, 2405, 2817, 2828, 2592, 2592, 2415, 2849, 2842, 2592, 2522, 2773, 2592, 2522, 2868, 2592, 2580, 2600, 2586, 2137, 2850, 2843, 2592, 2592, 2855, 2937, 2844, 2592, 2592, 2592, 2987, 2936, 2591, 2592, 2592, 2684, 2630, 2592, 2856, 2938, 2592, 2592, 2860, 2939, 2592, 2592, 2872, 2592, 2861, 2591, 2592, 2592, 2887, 2616, 2592, 2867, 2592, 2592, 2708, 2592, 2498, 2469, 2498, 2497, 2785, 2773, 2499, 2783, 2770, 2877, 2877, 2877, 2772, 2592, 2592, 2345, 2885, 2592, 2592, 2592, 2715, 2762, 2515, 2896, 2592, 2592, 2715, 2917, 2516, 2897, 2592, 2592, 2592, 2901, 2906, 2911, 2592, 2592, 2956, 2960, 2715, 2902, 2907, 2912, 2593, 2916, 2920, 2820, 2922, 2822, 2592, 2592, 2715, 2927, 2921, 2821, 2106, 2592, 2592, 2974, 2408, 2321, 2821, 2106, 2592, 2592, 2983, 2592, 2593, 2404, 2408, 2592, 2592, 2717, 2749, 2716, 2928, 2322, 2822, 2593, 2926, 2919, 2820, 2934, 2823, 2592, 2592, 2592, 2651, 2824, 2592, 2592, 2592, 2130, 2952, 2592, 2592, 2592, 2592, 2964, 2592, 2592, 2716, 2748, 2592, 2969, 2592, 2592, 2716, 2918, 2368, 2970, 2592, 2592, 2592, 2403, 2407, 2592, 2592, 2787, 2211, 2404, 2409, 2592, 2592, 2802, 2837, 2987, 2592, 2592, 2592, 2809, 2427, 2592, 2793, 2592, 2592, 2809, 2447, 1073741824, 0x80000000, 539754496, 542375936, 402653184, 554434560, 571736064, 545521856, 268451840, 335544320, 268693630, 512, 2048, 256, 1024, 0, 1024, 0, 1073741824, 0x80000000, 0, 0, 0, 8388608, 0, 0, 1073741824, 1073741824, 0, 0x80000000, 537133056, 4194304, 1048576, 268435456, -1073741824, 0, 0, 0, 1048576, 0, 0, 0, 1572864, 0, 0, 0, 4194304, 0, 134217728, 16777216, 0, 0, 32, 64, 98304, 0, 33554432, 8388608, 192, 67108864, 67108864, 67108864, 67108864, 16, 32, 4, 0, 8192, 196608, 196608, 229376, 80, 4096, 524288, 8388608, 0, 0, 32, 128, 256, 24576, 24600, 24576, 24576, 2, 24576, 24576, 24576, 24584, 24592, 24576, 24578, 24576, 24578, 24576, 24576, 16, 512, 2048, 2048, 256, 4096, 32768, 1048576, 4194304, 67108864, 134217728, 268435456, 262144, 134217728, 0, 128, 128, 64, 16384, 16384, 16384, 67108864, 32, 32, 4, 4, 4096, 262144, 134217728, 0, 0, 0, 2, 0, 8192, 131072, 131072, 4096, 4096, 4096, 4096, 24576, 24576, 24576, 8, 8, 24576, 24576, 16384, 16384, 16384, 24576, 24584, 24576, 24576, 24576, 16384, 24576, 536870912, 262144, 0, 0, 32, 2048, 8192, 4, 4096, 4096, 4096, 786432, 8388608, 16777216, 0, 128, 16384, 16384, 16384, 32768, 65536, 2097152, 32, 32, 32, 32, 4, 4, 4, 4, 4, 4096, 67108864, 67108864, 67108864, 24576, 24576, 24576, 24576, 0, 16384, 16384, 16384, 16384, 67108864, 67108864, 8, 67108864, 24576, 8, 8, 8, 24576, 24576, 24576, 24578, 24576, 24576, 24576, 2, 2, 2, 16384, 67108864, 67108864, 67108864, 32, 67108864, 8, 8, 24576, 2048, 0x80000000, 536870912, 262144, 262144, 262144, 67108864, 8, 24576, 16384, 32768, 1048576, 4194304, 25165824, 67108864, 24576, 32770, 2, 4, 112, 512, 98304, 524288, 50, 402653186, 1049090, 1049091, 10, 66, 100925514, 10, 66, 12582914, 0, 0, -1678194207, -1678194207, -1041543218, 0, 32768, 0, 0, 32, 65536, 268435456, 1, 1, 513, 1048577, 0, 12582912, 0, 0, 0, 4, 1792, 0, 0, 0, 7, 29360128, 0, 0, 0, 8, 0, 0, 0, 12, 1, 1, 0, 0, -604102721, -604102721, 4194304, 8388608, 0, 0, 0, 31, 925600, 997981306, 997981306, 997981306, 0, 0, 2048, 8388608, 0, 0, 1, 2, 4, 32, 64, 512, 8192, 0, 0, 0, 245760, 997720064, 0, 0, 0, 32, 0, 0, 0, 3, 12, 16, 32, 8, 112, 3072, 12288, 16384, 32768, 65536, 131072, 7864320, 16777216, 973078528, 0, 0, 65536, 131072, 3670016, 4194304, 16777216, 33554432, 2, 8, 48, 2048, 8192, 16384, 32768, 65536, 131072, 524288, 131072, 524288, 3145728, 4194304, 16777216, 33554432, 65536, 131072, 2097152, 4194304, 16777216, 33554432, 134217728, 268435456, 536870912, 0, 0, 0, 1024, 0, 8, 48, 2048, 8192, 65536, 33554432, 268435456, 536870912, 65536, 268435456, 536870912, 0, 0, 32768, 0, 0, 126, 623104, 65011712, 0, 32, 65536, 536870912, 0, 0, 65536, 524288, 0, 32, 65536, 0, 0, 0, 2048, 0, 0, 0, 15482, 245760, -604102721, 0, 0, 0, 18913, 33062912, 925600, -605028352, 0, 0, 0, 65536, 31, 8096, 131072, 786432, 3145728, 3145728, 12582912, 50331648, 134217728, 268435456, 160, 256, 512, 7168, 131072, 786432, 131072, 786432, 1048576, 2097152, 12582912, 16777216, 268435456, 1073741824, 0x80000000, 12582912, 16777216, 33554432, 268435456, 1073741824, 0x80000000, 3, 12, 16, 160, 256, 7168, 786432, 1048576, 12582912, 16777216, 268435456, 1073741824, 0, 8, 16, 32, 128, 256, 512, 7168, 786432, 1048576, 2097152, 0, 1, 2, 8, 16, 7168, 786432, 1048576, 8388608, 16777216, 16777216, 1073741824, 0, 0, 0, 0, 1, 0, 0, 8, 32, 128, 256, 7168, 8, 32, 0, 3072, 0, 8, 32, 3072, 4096, 524288, 8, 32, 0, 0, 3072, 4096, 0, 2048, 524288, 8388608, 8, 2048, 0, 0, 1, 12, 256, 4096, 32768, 262144, 1048576, 4194304, 67108864, 0, 2048, 0, 2048, 2048, 1073741824, -58805985, -58805985, -58805985, 0, 0, 262144, 0, 0, 32, 4194304, 16777216, 134217728, 4382, 172032, -58982400, 0, 0, 2, 28, 256, 4096, 8192, 8192, 32768, 131072, 262144, 524288, 1, 2, 12, 256, 4096, 0, 0, 4194304, 67108864, 134217728, 805306368, 1073741824, 0, 0, 1, 2, 12, 16, 256, 4096, 1048576, 67108864, 134217728, 268435456, 0, 512, 1048576, 4194304, 201326592, 1879048192, 0, 0, 12, 256, 4096, 134217728, 268435456, 536870912, 12, 256, 268435456, 536870912, 0, 12, 256, 0, 0, 1, 32, 64, 512, 0, 0, 205236961, 205236961, 0, 0, 0, 1, 96, 640, 1, 10976, 229376, 204996608, 0, 640, 2048, 8192, 229376, 1572864, 1572864, 2097152, 201326592, 0, 0, 0, 64, 512, 2048, 229376, 1572864, 201326592, 1572864, 201326592, 0, 0, 1, 4382, 0, 1, 32, 2048, 65536, 131072, 1572864, 201326592, 131072, 1572864, 134217728, 0, 0, 524288, 524288, 0, 0, 0, -68582786, -68582786, -68582786, 0, 0, 2097152, 524288, 0, 524288, 0, 0, 65536, 131072, 1572864, 0, 0, 2, 4, 0, 0, 65011712, -134217728, 0, 0, 0, 0, 2, 4, 120, 512, -268435456, 0, 0, 0, 2, 8, 48, 64, 2048, 8192, 98304, 524288, 2097152, 4194304, 25165824, 33554432, 134217728, 268435456, 0x80000000, 0, 0, 25165824, 33554432, 134217728, 1879048192, 0x80000000, 0, 0, 4, 112, 512, 622592, 65011712, 134217728, -268435456, 16777216, 33554432, 134217728, 1610612736, 0, 0, 0, 64, 98304, 524288, 4194304, 16777216, 33554432, 0, 98304, 524288, 16777216, 33554432, 0, 65536, 524288, 33554432, 536870912, 1073741824, 0, 65536, 524288, 536870912, 1073741824, 0, 0, 65536, 524288, 536870912, 0, 524288, 0, 524288, 524288, 1048576, 2086666240, 0x80000000, 0, -1678194207, 0, 0, 0, 8, 32, 2048, 524288, 8388608, 0, 0, 33062912, 436207616, 0x80000000, 0, 0, 32, 64, 2432, 16384, 32768, 32768, 524288, 3145728, 4194304, 25165824, 25165824, 167772160, 268435456, 0x80000000, 0, 32, 64, 384, 2048, 16384, 32768, 1048576, 2097152, 4194304, 25165824, 32, 64, 128, 256, 2048, 16384, 2048, 16384, 1048576, 4194304, 16777216, 33554432, 134217728, 536870912, 1073741824, 0, 0, 2048, 16384, 4194304, 16777216, 33554432, 134217728, 805306368, 0, 0, 16777216, 134217728, 268435456, 0x80000000, 0, 622592, 622592, 622592, 8807, 8807, 434791, 0, 0, 16777216, 0, 0, 0, 7, 608, 8192, 0, 0, 0, 3, 4, 96, 512, 32, 64, 8192, 0, 0, 16777216, 134217728, 0, 0, 2, 4, 8192, 16384, 65536, 2097152, 33554432, 268435456 +]; + +XQueryTokenizer.TOKEN = +[ + "(0)", + "ModuleDecl", + "Annotation", + "OptionDecl", + "Operator", + "Variable", + "Tag", + "EndTag", + "PragmaContents", + "DirCommentContents", + "DirPIContents", + "CDataSectionContents", + "AttrTest", + "Wildcard", + "EQName", + "IntegerLiteral", + "DecimalLiteral", + "DoubleLiteral", + "PredefinedEntityRef", + "'\"\"'", + "EscapeApos", + "QuotChar", + "AposChar", + "ElementContentChar", + "QuotAttrContentChar", + "AposAttrContentChar", + "NCName", + "QName", + "S", + "CharRef", + "CommentContents", + "DocTag", + "DocCommentContents", + "EOF", + "'!'", + "'\"'", + "'#'", + "'#)'", + "''''", + "'('", + "'(#'", + "'(:'", + "'(:~'", + "')'", + "'*'", + "'*'", + "','", + "'-->'", + "'.'", + "'/'", + "'/>'", + "':'", + "':)'", + "';'", + "''), token: xmlcomment, next: function(stack){ stack.pop(); } } + ], + CData: [ + { name: 'CDataSectionContents', token: cdata }, + { name: n(']]>'), token: cdata, next: function(stack){ stack.pop(); } } + ], + PI: [ + { name: 'DirPIContents', token: pi }, + { name: n('?'), token: pi }, + { name: n('?>'), token: pi, next: function(stack){ stack.pop(); } } + ], + AposString: [ + { name: n('\'\''), token: 'string', next: function(stack){ stack.pop(); } }, + { name: 'PredefinedEntityRef', token: 'constant.language.escape' }, + { name: 'CharRef', token: 'constant.language.escape' }, + { name: 'EscapeApos', token: 'constant.language.escape' }, + { name: 'AposChar', token: 'string' } + ], + QuotString: [ + { name: n('"'), token: 'string', next: function(stack){ stack.pop(); } }, + { name: 'JSONPredefinedCharRef', token: 'constant.language.escape' }, + { name: 'JSONCharRef', token: 'constant.language.escape' }, + { name: 'JSONChar', token: 'string' } + ] +}; + +exports.JSONiqLexer = function(){ return new Lexer(JSONiqTokenizer, Rules); }; +},{"./JSONiqTokenizer":"/node_modules/xqlint/lib/lexers/JSONiqTokenizer.js","./lexer":"/node_modules/xqlint/lib/lexers/lexer.js"}],"/node_modules/xqlint/lib/lexers/lexer.js":[function(_dereq_,module,exports){ +'use strict'; + +var TokenHandler = function(code) { + var input = code; + this.tokens = []; + + this.reset = function() { + input = input; + this.tokens = []; + }; + + this.startNonterminal = function() {}; + this.endNonterminal = function() {}; + + this.terminal = function(name, begin, end) { + this.tokens.push({ + name: name, + value: input.substring(begin, end) + }); + }; + + this.whitespace = function(begin, end) { + this.tokens.push({ + name: 'WS', + value: input.substring(begin, end) + }); + }; +}; + +exports.Lexer = function(Tokenizer, Rules) { + + this.tokens = []; + + this.getLineTokens = function(line, state) { + state = (state === 'start' || !state) ? '["start"]' : state; + var stack = JSON.parse(state); + var h = new TokenHandler(line); + var tokenizer = new Tokenizer(line, h); + var tokens = []; + + while(true) { + var currentState = stack[stack.length - 1]; + try { + h.tokens = []; + tokenizer['parse_' + currentState](); + var info = null; + + if(h.tokens.length > 1 && h.tokens[0].name === 'WS') { + tokens.push({ + type: 'text', + value: h.tokens[0].value + }); + h.tokens.splice(0, 1); + } + + var token = h.tokens[0]; + var rules = Rules[currentState]; + for(var k = 0; k < rules.length; k++) { + var rule = Rules[currentState][k]; + if((typeof(rule.name) === 'function' && rule.name(token)) || rule.name === token.name) { + info = rule; + break; + } + } + + if(token.name === 'EOF') { break; } + if(token.value === '') { throw 'Encountered empty string lexical rule.'; } + + tokens.push({ + type: info === null ? 'text' : (typeof(info.token) === 'function' ? info.token(token.value) : info.token), + value: token.value + }); + + if(info && info.next) { + info.next(stack); + } + + } catch(e) { + if(e instanceof tokenizer.ParseException) { + var index = 0; + for(var i=0; i < tokens.length; i++) { + index += tokens[i].value.length; + } + tokens.push({ type: 'text', value: line.substring(index) }); + return { + tokens: tokens, + state: JSON.stringify(['start']) + }; + } else { + throw e; + } + } + } + + return { + tokens: tokens, + state: JSON.stringify(stack) + }; + }; +}; +},{}],"/node_modules/xqlint/lib/lexers/xquery_lexer.js":[function(_dereq_,module,exports){ +'use strict'; + +var XQueryTokenizer = _dereq_('./XQueryTokenizer').XQueryTokenizer; +var Lexer = _dereq_('./lexer').Lexer; + +var keys = 'after|ancestor|ancestor-or-self|and|as|ascending|attribute|before|case|cast|castable|child|collation|comment|copy|count|declare|default|delete|descendant|descendant-or-self|descending|div|document|document-node|element|else|empty|empty-sequence|end|eq|every|except|first|following|following-sibling|for|function|ge|group|gt|idiv|if|import|insert|instance|intersect|into|is|item|last|le|let|lt|mod|modify|module|namespace|namespace-node|ne|node|only|or|order|ordered|parent|preceding|preceding-sibling|processing-instruction|rename|replace|return|satisfies|schema-attribute|schema-element|self|some|stable|start|switch|text|to|treat|try|typeswitch|union|unordered|validate|where|with|xquery|contains|paragraphs|sentences|times|words|by|collectionreturn|variable|version|option|when|encoding|toswitch|catch|tumbling|sliding|window|at|using|stemming|collection|schema|while|on|nodes|index|external|then|in|updating|value|of|containsbreak|loop|continue|exit|returning|append|json|position|strict'.split('|'); + +var keywords = keys.map(function(val) { return { name: '\'' + val + '\'', token: 'keyword' }; }); +var ncnames = keys.map(function(val) { return { name: '\'' + val + '\'', token: 'text', next: function(stack){ stack.pop(); } }; }); + +var cdata = 'constant.language'; +var number = 'constant'; +var xmlcomment = 'comment'; +var pi = 'xml-pe'; +var pragma = 'constant.buildin'; +var n = function(name){ + return '\'' + name + '\''; +}; +var Rules = { + start: [ + { name: n('(#'), token: pragma, next: function(stack){ stack.push('Pragma'); } }, + { name: n('(:'), token: 'comment', next: function(stack){ stack.push('Comment'); } }, + { name: n('(:~'), token: 'comment.doc', next: function(stack){ stack.push('CommentDoc'); } }, + { name: n(''), token: xmlcomment, next: function(stack){ stack.pop(); } } + ], + CData: [ + { name: 'CDataSectionContents', token: cdata }, + { name: n(']]>'), token: cdata, next: function(stack){ stack.pop(); } } + ], + PI: [ + { name: 'DirPIContents', token: pi }, + { name: n('?'), token: pi }, + { name: n('?>'), token: pi, next: function(stack){ stack.pop(); } } + ], + AposString: [ + { name: n('\'\''), token: 'string', next: function(stack){ stack.pop(); } }, + { name: 'PredefinedEntityRef', token: 'constant.language.escape' }, + { name: 'CharRef', token: 'constant.language.escape' }, + { name: 'EscapeApos', token: 'constant.language.escape' }, + { name: 'AposChar', token: 'string' } + ], + QuotString: [ + { name: n('"'), token: 'string', next: function(stack){ stack.pop(); } }, + { name: 'PredefinedEntityRef', token: 'constant.language.escape' }, + { name: 'CharRef', token: 'constant.language.escape' }, + { name: 'EscapeQuot', token: 'constant.language.escape' }, + { name: 'QuotChar', token: 'string' } + ] +}; + +exports.XQueryLexer = function(){ return new Lexer(XQueryTokenizer, Rules); }; +},{"./XQueryTokenizer":"/node_modules/xqlint/lib/lexers/XQueryTokenizer.js","./lexer":"/node_modules/xqlint/lib/lexers/lexer.js"}],"/node_modules/xqlint/lib/parsers/JSONParseTreeHandler.js":[function(_dereq_,module,exports){ +exports.JSONParseTreeHandler = function (code) { + 'use strict'; + var toBeIndex = ['VarDecl', 'FunctionDecl']; + var list = [ + 'OrExpr', 'AndExpr', 'ComparisonExpr', 'StringConcatExpr', 'RangeExpr', + 'AdditiveExpr', 'MultiplicativeExpr', + 'UnionExpr', 'IntersectExceptExpr', 'InstanceofExpr', 'TreatExpr', 'CastableExpr', 'CastExpr', 'UnaryExpr', 'ValueExpr', + 'FTContainsExpr', 'SimpleMapExpr', 'PathExpr', 'RelativePathExpr', 'PostfixExpr', 'StepExpr' + ]; + + var ast = null; + var ptr = null; + var remains = code; + var cursor = 0; + var lineCursor = 0; + var line = 0; + + function createNode(name) { + return { + name: name, + children: [], + getParent: null, + pos: { + sl: 0, + sc: 0, + el: 0, + ec: 0 + } + }; + } + + function pushNode(name) { //begin + var node = createNode(name); + if (ast === null) { + ast = node; + ast.index = []; + ptr = node; + } else { + node.getParent = ptr; + ptr.children.push(node); + ptr = ptr.children[ptr.children.length - 1]; + } + } + + function popNode() { + + if (ptr.children.length > 0) { + var s = ptr.children[0]; + var e = null; + for (var i = ptr.children.length - 1; i >= 0; i--) { + e = ptr.children[i]; + if (e.pos.el !== 0 || e.pos.ec !== 0) { + break; + } + } + ptr.pos.sl = s.pos.sl; + ptr.pos.sc = s.pos.sc; + ptr.pos.el = e.pos.el; + ptr.pos.ec = e.pos.ec; + } + if (ptr.name === 'FunctionName') { + ptr.name = 'EQName'; + } + if (ptr.name === 'EQName' && ptr.value === undefined) { + ptr.value = ptr.children[0].value; + ptr.children.pop(); + } + + if(toBeIndex.indexOf(ptr.name) !== -1) { + ast.index.push(ptr); + } + + if (ptr.getParent !== null) { + ptr = ptr.getParent; + } else { + } + if (ptr.children.length > 0) { + var lastChild = ptr.children[ptr.children.length - 1]; + if (lastChild.children.length === 1 && list.indexOf(lastChild.name) !== -1) { + ptr.children[ptr.children.length - 1] = lastChild.children[0]; + } + } + } + + this.closeParseTree = function () { + while (ptr.getParent !== null) { + popNode(); + } + popNode(); + }; + + this.peek = function () { + return ptr; + }; + + this.getParseTree = function () { + return ast; + }; + + this.reset = function () {}; //input + + this.startNonterminal = function (name, begin) { + pushNode(name, begin); + }; + + this.endNonterminal = function () {//name, end + popNode(); + }; + + this.terminal = function (name, begin, end) { + name = (name.substring(0, 1) === '\'' && name.substring(name.length - 1) === '\'') ? 'TOKEN' : name; + pushNode(name, begin); + setValue(ptr, begin, end); + popNode(); + }; + + this.whitespace = function (begin, end) { + var name = 'WS'; + pushNode(name, begin); + setValue(ptr, begin, end); + popNode(); + }; + + function setValue(node, begin, end) { + + var e = end - cursor; + ptr.value = remains.substring(0, e); + remains = remains.substring(e); + cursor = end; + + var sl = line; + var sc = lineCursor; + var el = sl + ptr.value.split('\n').length - 1; + var lastIdx = ptr.value.lastIndexOf('\n'); + var ec = lastIdx === -1 ? sc + ptr.value.length : ptr.value.substring(lastIdx + 1).length; + + line = el; + lineCursor = ec; + + ptr.pos.sl = sl; + ptr.pos.sc = sc; + ptr.pos.el = el; + ptr.pos.ec = ec; + } +}; + +},{}],"/node_modules/xqlint/lib/parsers/JSONiqParser.js":[function(_dereq_,module,exports){ + var JSONiqParser = exports.JSONiqParser = function JSONiqParser(string, parsingEventHandler) + { + init(string, parsingEventHandler); + var self = this; + + this.ParseException = function(b, e, s, o, x) + { + var + begin = b, + end = e, + state = s, + offending = o, + expected = x; + + this.getBegin = function() {return begin;}; + this.getEnd = function() {return end;}; + this.getState = function() {return state;}; + this.getExpected = function() {return expected;}; + this.getOffending = function() {return offending;}; + + this.getMessage = function() + { + return offending < 0 ? "lexical analysis failed" : "syntax error"; + }; + }; + + function init(string, parsingEventHandler) + { + eventHandler = parsingEventHandler; + input = string; + size = string.length; + reset(0, 0, 0); + } + + this.getInput = function() + { + return input; + }; + + function reset(l, b, e) + { + b0 = b; e0 = b; + l1 = l; b1 = b; e1 = e; + l2 = 0; + end = e; + ex = -1; + memo = {}; + eventHandler.reset(input); + } + + this.getOffendingToken = function(e) + { + var o = e.getOffending(); + return o >= 0 ? JSONiqParser.TOKEN[o] : null; + }; + + this.getExpectedTokenSet = function(e) + { + var expected; + if (e.getExpected() < 0) + { + expected = JSONiqParser.getTokenSet(- e.getState()); + } + else + { + expected = [JSONiqParser.TOKEN[e.getExpected()]]; + } + return expected; + }; + + this.getErrorMessage = function(e) + { + var tokenSet = this.getExpectedTokenSet(e); + var found = this.getOffendingToken(e); + var prefix = input.substring(0, e.getBegin()); + var lines = prefix.split("\n"); + var line = lines.length; + var column = lines[line - 1].length + 1; + var size = e.getEnd() - e.getBegin(); + return e.getMessage() + + (found == null ? "" : ", found " + found) + + "\nwhile expecting " + + (tokenSet.length == 1 ? tokenSet[0] : ("[" + tokenSet.join(", ") + "]")) + + "\n" + + (size == 0 || found != null ? "" : "after successfully scanning " + size + " characters beginning ") + + "at line " + line + ", column " + column + ":\n..." + + input.substring(e.getBegin(), Math.min(input.length, e.getBegin() + 64)) + + "..."; + }; + + this.parse_XQuery = function() + { + eventHandler.startNonterminal("XQuery", e0); + lookahead1W(277); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_Module(); + shift(25); // EOF + eventHandler.endNonterminal("XQuery", e0); + }; + + function parse_Module() + { + eventHandler.startNonterminal("Module", e0); + switch (l1) + { + case 170: // 'jsoniq' + lookahead2W(168); // S^WS | '#' | '(' | '(:' | 'encoding' | 'version' + break; + default: + lk = l1; + } + if (lk == 64682 // 'jsoniq' 'encoding' + || lk == 137898) // 'jsoniq' 'version' + { + parse_VersionDecl(); + } + lookahead1W(277); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + switch (l1) + { + case 185: // 'module' + lookahead2W(146); // S^WS | '#' | '(' | '(:' | 'namespace' + break; + default: + lk = l1; + } + switch (lk) + { + case 95929: // 'module' 'namespace' + whitespace(); + parse_LibraryModule(); + break; + default: + whitespace(); + parse_MainModule(); + } + eventHandler.endNonterminal("Module", e0); + } + + function parse_VersionDecl() + { + eventHandler.startNonterminal("VersionDecl", e0); + shift(170); // 'jsoniq' + lookahead1W(120); // S^WS | '(:' | 'encoding' | 'version' + switch (l1) + { + case 126: // 'encoding' + shift(126); // 'encoding' + lookahead1W(17); // StringLiteral | S^WS | '(:' + shift(11); // StringLiteral + break; + default: + shift(269); // 'version' + lookahead1W(17); // StringLiteral | S^WS | '(:' + shift(11); // StringLiteral + lookahead1W(113); // S^WS | '(:' | ';' | 'encoding' + if (l1 == 126) // 'encoding' + { + shift(126); // 'encoding' + lookahead1W(17); // StringLiteral | S^WS | '(:' + shift(11); // StringLiteral + } + } + lookahead1W(29); // S^WS | '(:' | ';' + whitespace(); + parse_Separator(); + eventHandler.endNonterminal("VersionDecl", e0); + } + + function parse_LibraryModule() + { + eventHandler.startNonterminal("LibraryModule", e0); + parse_ModuleDecl(); + lookahead1W(142); // S^WS | EOF | '(:' | 'declare' | 'import' + whitespace(); + parse_Prolog(); + eventHandler.endNonterminal("LibraryModule", e0); + } + + function parse_ModuleDecl() + { + eventHandler.startNonterminal("ModuleDecl", e0); + shift(185); // 'module' + lookahead1W(64); // S^WS | '(:' | 'namespace' + shift(187); // 'namespace' + lookahead1W(239); // NCName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_NCName(); + lookahead1W(30); // S^WS | '(:' | '=' + shift(61); // '=' + lookahead1W(15); // URILiteral | S^WS | '(:' + shift(7); // URILiteral + lookahead1W(29); // S^WS | '(:' | ';' + whitespace(); + parse_Separator(); + eventHandler.endNonterminal("ModuleDecl", e0); + } + + function parse_Prolog() + { + eventHandler.startNonterminal("Prolog", e0); + for (;;) + { + lookahead1W(277); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + switch (l1) + { + case 109: // 'declare' + lookahead2W(206); // S^WS | '#' | '%' | '(' | '(:' | 'base-uri' | 'boundary-space' | 'collection' | + break; + case 155: // 'import' + lookahead2W(169); // S^WS | '#' | '(' | '(:' | 'module' | 'schema' + break; + default: + lk = l1; + } + if (lk != 43117 // 'declare' 'base-uri' + && lk != 44141 // 'declare' 'boundary-space' + && lk != 50797 // 'declare' 'construction' + && lk != 53869 // 'declare' 'copy-namespaces' + && lk != 54893 // 'declare' 'decimal-format' + && lk != 56429 // 'declare' 'default' + && lk != 73325 // 'declare' 'ft-option' + && lk != 94875 // 'import' 'module' + && lk != 95853 // 'declare' 'namespace' + && lk != 106093 // 'declare' 'ordering' + && lk != 115821 // 'declare' 'revalidation' + && lk != 117403) // 'import' 'schema' + { + break; + } + switch (l1) + { + case 109: // 'declare' + lookahead2W(200); // S^WS | '(:' | 'base-uri' | 'boundary-space' | 'construction' | + break; + default: + lk = l1; + } + if (lk == 56429) // 'declare' 'default' + { + lk = memoized(0, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + try_DefaultNamespaceDecl(); + lk = -1; + } + catch (p1A) + { + lk = -2; + } + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(0, e0, lk); + } + } + switch (lk) + { + case -1: + whitespace(); + parse_DefaultNamespaceDecl(); + break; + case 95853: // 'declare' 'namespace' + whitespace(); + parse_NamespaceDecl(); + break; + case 155: // 'import' + whitespace(); + parse_Import(); + break; + case 73325: // 'declare' 'ft-option' + whitespace(); + parse_FTOptionDecl(); + break; + default: + whitespace(); + parse_Setter(); + } + lookahead1W(29); // S^WS | '(:' | ';' + whitespace(); + parse_Separator(); + } + for (;;) + { + lookahead1W(277); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + switch (l1) + { + case 109: // 'declare' + lookahead2W(201); // S^WS | '#' | '%' | '(' | '(:' | 'collection' | 'context' | 'function' | 'index' | + break; + default: + lk = l1; + } + if (lk != 17005 // 'declare' '%' + && lk != 49261 // 'declare' 'collection' + && lk != 52333 // 'declare' 'context' + && lk != 75373 // 'declare' 'function' + && lk != 80493 // 'declare' 'index' + && lk != 83565 // 'declare' 'integrity' + && lk != 104045 // 'declare' 'option' + && lk != 134765 // 'declare' 'updating' + && lk != 137325) // 'declare' 'variable' + { + break; + } + switch (l1) + { + case 109: // 'declare' + lookahead2W(197); // S^WS | '%' | '(:' | 'collection' | 'context' | 'function' | 'index' | + break; + default: + lk = l1; + } + switch (lk) + { + case 52333: // 'declare' 'context' + whitespace(); + parse_ContextItemDecl(); + break; + case 104045: // 'declare' 'option' + whitespace(); + parse_OptionDecl(); + break; + default: + whitespace(); + parse_AnnotatedDecl(); + } + lookahead1W(29); // S^WS | '(:' | ';' + whitespace(); + parse_Separator(); + } + eventHandler.endNonterminal("Prolog", e0); + } + + function parse_Separator() + { + eventHandler.startNonterminal("Separator", e0); + shift(54); // ';' + eventHandler.endNonterminal("Separator", e0); + } + + function parse_Setter() + { + eventHandler.startNonterminal("Setter", e0); + switch (l1) + { + case 109: // 'declare' + lookahead2W(194); // S^WS | '(:' | 'base-uri' | 'boundary-space' | 'construction' | + break; + default: + lk = l1; + } + if (lk == 56429) // 'declare' 'default' + { + lk = memoized(1, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + try_DefaultCollationDecl(); + lk = -2; + } + catch (p2A) + { + try + { + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + try_EmptyOrderDecl(); + lk = -6; + } + catch (p6A) + { + lk = -9; + } + } + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(1, e0, lk); + } + } + switch (lk) + { + case 44141: // 'declare' 'boundary-space' + parse_BoundarySpaceDecl(); + break; + case -2: + parse_DefaultCollationDecl(); + break; + case 43117: // 'declare' 'base-uri' + parse_BaseURIDecl(); + break; + case 50797: // 'declare' 'construction' + parse_ConstructionDecl(); + break; + case 106093: // 'declare' 'ordering' + parse_OrderingModeDecl(); + break; + case -6: + parse_EmptyOrderDecl(); + break; + case 115821: // 'declare' 'revalidation' + parse_RevalidationDecl(); + break; + case 53869: // 'declare' 'copy-namespaces' + parse_CopyNamespacesDecl(); + break; + default: + parse_DecimalFormatDecl(); + } + eventHandler.endNonterminal("Setter", e0); + } + + function parse_BoundarySpaceDecl() + { + eventHandler.startNonterminal("BoundarySpaceDecl", e0); + shift(109); // 'declare' + lookahead1W(36); // S^WS | '(:' | 'boundary-space' + shift(86); // 'boundary-space' + lookahead1W(137); // S^WS | '(:' | 'preserve' | 'strip' + switch (l1) + { + case 218: // 'preserve' + shift(218); // 'preserve' + break; + default: + shift(246); // 'strip' + } + eventHandler.endNonterminal("BoundarySpaceDecl", e0); + } + + function parse_DefaultCollationDecl() + { + eventHandler.startNonterminal("DefaultCollationDecl", e0); + shift(109); // 'declare' + lookahead1W(49); // S^WS | '(:' | 'default' + shift(110); // 'default' + lookahead1W(41); // S^WS | '(:' | 'collation' + shift(95); // 'collation' + lookahead1W(15); // URILiteral | S^WS | '(:' + shift(7); // URILiteral + eventHandler.endNonterminal("DefaultCollationDecl", e0); + } + + function try_DefaultCollationDecl() + { + shiftT(109); // 'declare' + lookahead1W(49); // S^WS | '(:' | 'default' + shiftT(110); // 'default' + lookahead1W(41); // S^WS | '(:' | 'collation' + shiftT(95); // 'collation' + lookahead1W(15); // URILiteral | S^WS | '(:' + shiftT(7); // URILiteral + } + + function parse_BaseURIDecl() + { + eventHandler.startNonterminal("BaseURIDecl", e0); + shift(109); // 'declare' + lookahead1W(35); // S^WS | '(:' | 'base-uri' + shift(84); // 'base-uri' + lookahead1W(15); // URILiteral | S^WS | '(:' + shift(7); // URILiteral + eventHandler.endNonterminal("BaseURIDecl", e0); + } + + function parse_ConstructionDecl() + { + eventHandler.startNonterminal("ConstructionDecl", e0); + shift(109); // 'declare' + lookahead1W(44); // S^WS | '(:' | 'construction' + shift(99); // 'construction' + lookahead1W(137); // S^WS | '(:' | 'preserve' | 'strip' + switch (l1) + { + case 246: // 'strip' + shift(246); // 'strip' + break; + default: + shift(218); // 'preserve' + } + eventHandler.endNonterminal("ConstructionDecl", e0); + } + + function parse_OrderingModeDecl() + { + eventHandler.startNonterminal("OrderingModeDecl", e0); + shift(109); // 'declare' + lookahead1W(71); // S^WS | '(:' | 'ordering' + shift(207); // 'ordering' + lookahead1W(135); // S^WS | '(:' | 'ordered' | 'unordered' + switch (l1) + { + case 206: // 'ordered' + shift(206); // 'ordered' + break; + default: + shift(262); // 'unordered' + } + eventHandler.endNonterminal("OrderingModeDecl", e0); + } + + function parse_EmptyOrderDecl() + { + eventHandler.startNonterminal("EmptyOrderDecl", e0); + shift(109); // 'declare' + lookahead1W(49); // S^WS | '(:' | 'default' + shift(110); // 'default' + lookahead1W(70); // S^WS | '(:' | 'order' + shift(205); // 'order' + lookahead1W(52); // S^WS | '(:' | 'empty' + shift(124); // 'empty' + lookahead1W(125); // S^WS | '(:' | 'greatest' | 'least' + switch (l1) + { + case 149: // 'greatest' + shift(149); // 'greatest' + break; + default: + shift(176); // 'least' + } + eventHandler.endNonterminal("EmptyOrderDecl", e0); + } + + function try_EmptyOrderDecl() + { + shiftT(109); // 'declare' + lookahead1W(49); // S^WS | '(:' | 'default' + shiftT(110); // 'default' + lookahead1W(70); // S^WS | '(:' | 'order' + shiftT(205); // 'order' + lookahead1W(52); // S^WS | '(:' | 'empty' + shiftT(124); // 'empty' + lookahead1W(125); // S^WS | '(:' | 'greatest' | 'least' + switch (l1) + { + case 149: // 'greatest' + shiftT(149); // 'greatest' + break; + default: + shiftT(176); // 'least' + } + } + + function parse_CopyNamespacesDecl() + { + eventHandler.startNonterminal("CopyNamespacesDecl", e0); + shift(109); // 'declare' + lookahead1W(47); // S^WS | '(:' | 'copy-namespaces' + shift(105); // 'copy-namespaces' + lookahead1W(132); // S^WS | '(:' | 'no-preserve' | 'preserve' + whitespace(); + parse_PreserveMode(); + lookahead1W(25); // S^WS | '(:' | ',' + shift(42); // ',' + lookahead1W(127); // S^WS | '(:' | 'inherit' | 'no-inherit' + whitespace(); + parse_InheritMode(); + eventHandler.endNonterminal("CopyNamespacesDecl", e0); + } + + function parse_PreserveMode() + { + eventHandler.startNonterminal("PreserveMode", e0); + switch (l1) + { + case 218: // 'preserve' + shift(218); // 'preserve' + break; + default: + shift(193); // 'no-preserve' + } + eventHandler.endNonterminal("PreserveMode", e0); + } + + function parse_InheritMode() + { + eventHandler.startNonterminal("InheritMode", e0); + switch (l1) + { + case 159: // 'inherit' + shift(159); // 'inherit' + break; + default: + shift(192); // 'no-inherit' + } + eventHandler.endNonterminal("InheritMode", e0); + } + + function parse_DecimalFormatDecl() + { + eventHandler.startNonterminal("DecimalFormatDecl", e0); + shift(109); // 'declare' + lookahead1W(118); // S^WS | '(:' | 'decimal-format' | 'default' + switch (l1) + { + case 107: // 'decimal-format' + shift(107); // 'decimal-format' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_EQName(); + break; + default: + shift(110); // 'default' + lookahead1W(48); // S^WS | '(:' | 'decimal-format' + shift(107); // 'decimal-format' + } + for (;;) + { + lookahead1W(203); // S^WS | '(:' | ';' | 'NaN' | 'decimal-separator' | 'digit' | + if (l1 == 54) // ';' + { + break; + } + whitespace(); + parse_DFPropertyName(); + lookahead1W(30); // S^WS | '(:' | '=' + shift(61); // '=' + lookahead1W(17); // StringLiteral | S^WS | '(:' + shift(11); // StringLiteral + } + eventHandler.endNonterminal("DecimalFormatDecl", e0); + } + + function parse_DFPropertyName() + { + eventHandler.startNonterminal("DFPropertyName", e0); + switch (l1) + { + case 108: // 'decimal-separator' + shift(108); // 'decimal-separator' + break; + case 151: // 'grouping-separator' + shift(151); // 'grouping-separator' + break; + case 158: // 'infinity' + shift(158); // 'infinity' + break; + case 182: // 'minus-sign' + shift(182); // 'minus-sign' + break; + case 68: // 'NaN' + shift(68); // 'NaN' + break; + case 213: // 'percent' + shift(213); // 'percent' + break; + case 212: // 'per-mille' + shift(212); // 'per-mille' + break; + case 280: // 'zero-digit' + shift(280); // 'zero-digit' + break; + case 117: // 'digit' + shift(117); // 'digit' + break; + default: + shift(211); // 'pattern-separator' + } + eventHandler.endNonterminal("DFPropertyName", e0); + } + + function parse_Import() + { + eventHandler.startNonterminal("Import", e0); + switch (l1) + { + case 155: // 'import' + lookahead2W(130); // S^WS | '(:' | 'module' | 'schema' + break; + default: + lk = l1; + } + switch (lk) + { + case 117403: // 'import' 'schema' + parse_SchemaImport(); + break; + default: + parse_ModuleImport(); + } + eventHandler.endNonterminal("Import", e0); + } + + function parse_SchemaImport() + { + eventHandler.startNonterminal("SchemaImport", e0); + shift(155); // 'import' + lookahead1W(76); // S^WS | '(:' | 'schema' + shift(229); // 'schema' + lookahead1W(141); // URILiteral | S^WS | '(:' | 'default' | 'namespace' + if (l1 != 7) // URILiteral + { + whitespace(); + parse_SchemaPrefix(); + } + lookahead1W(15); // URILiteral | S^WS | '(:' + shift(7); // URILiteral + lookahead1W(112); // S^WS | '(:' | ';' | 'at' + if (l1 == 82) // 'at' + { + shift(82); // 'at' + lookahead1W(15); // URILiteral | S^WS | '(:' + shift(7); // URILiteral + for (;;) + { + lookahead1W(107); // S^WS | '(:' | ',' | ';' + if (l1 != 42) // ',' + { + break; + } + shift(42); // ',' + lookahead1W(15); // URILiteral | S^WS | '(:' + shift(7); // URILiteral + } + } + eventHandler.endNonterminal("SchemaImport", e0); + } + + function parse_SchemaPrefix() + { + eventHandler.startNonterminal("SchemaPrefix", e0); + switch (l1) + { + case 187: // 'namespace' + shift(187); // 'namespace' + lookahead1W(239); // NCName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_NCName(); + lookahead1W(30); // S^WS | '(:' | '=' + shift(61); // '=' + break; + default: + shift(110); // 'default' + lookahead1W(50); // S^WS | '(:' | 'element' + shift(122); // 'element' + lookahead1W(64); // S^WS | '(:' | 'namespace' + shift(187); // 'namespace' + } + eventHandler.endNonterminal("SchemaPrefix", e0); + } + + function parse_ModuleImport() + { + eventHandler.startNonterminal("ModuleImport", e0); + shift(155); // 'import' + lookahead1W(63); // S^WS | '(:' | 'module' + shift(185); // 'module' + lookahead1W(93); // URILiteral | S^WS | '(:' | 'namespace' + if (l1 == 187) // 'namespace' + { + shift(187); // 'namespace' + lookahead1W(239); // NCName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_NCName(); + lookahead1W(30); // S^WS | '(:' | '=' + shift(61); // '=' + } + lookahead1W(15); // URILiteral | S^WS | '(:' + shift(7); // URILiteral + lookahead1W(112); // S^WS | '(:' | ';' | 'at' + if (l1 == 82) // 'at' + { + shift(82); // 'at' + lookahead1W(15); // URILiteral | S^WS | '(:' + shift(7); // URILiteral + for (;;) + { + lookahead1W(107); // S^WS | '(:' | ',' | ';' + if (l1 != 42) // ',' + { + break; + } + shift(42); // ',' + lookahead1W(15); // URILiteral | S^WS | '(:' + shift(7); // URILiteral + } + } + eventHandler.endNonterminal("ModuleImport", e0); + } + + function parse_NamespaceDecl() + { + eventHandler.startNonterminal("NamespaceDecl", e0); + shift(109); // 'declare' + lookahead1W(64); // S^WS | '(:' | 'namespace' + shift(187); // 'namespace' + lookahead1W(239); // NCName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_NCName(); + lookahead1W(30); // S^WS | '(:' | '=' + shift(61); // '=' + lookahead1W(15); // URILiteral | S^WS | '(:' + shift(7); // URILiteral + eventHandler.endNonterminal("NamespaceDecl", e0); + } + + function parse_DefaultNamespaceDecl() + { + eventHandler.startNonterminal("DefaultNamespaceDecl", e0); + shift(109); // 'declare' + lookahead1W(49); // S^WS | '(:' | 'default' + shift(110); // 'default' + lookahead1W(119); // S^WS | '(:' | 'element' | 'function' + switch (l1) + { + case 122: // 'element' + shift(122); // 'element' + break; + default: + shift(147); // 'function' + } + lookahead1W(64); // S^WS | '(:' | 'namespace' + shift(187); // 'namespace' + lookahead1W(15); // URILiteral | S^WS | '(:' + shift(7); // URILiteral + eventHandler.endNonterminal("DefaultNamespaceDecl", e0); + } + + function try_DefaultNamespaceDecl() + { + shiftT(109); // 'declare' + lookahead1W(49); // S^WS | '(:' | 'default' + shiftT(110); // 'default' + lookahead1W(119); // S^WS | '(:' | 'element' | 'function' + switch (l1) + { + case 122: // 'element' + shiftT(122); // 'element' + break; + default: + shiftT(147); // 'function' + } + lookahead1W(64); // S^WS | '(:' | 'namespace' + shiftT(187); // 'namespace' + lookahead1W(15); // URILiteral | S^WS | '(:' + shiftT(7); // URILiteral + } + + function parse_FTOptionDecl() + { + eventHandler.startNonterminal("FTOptionDecl", e0); + shift(109); // 'declare' + lookahead1W(55); // S^WS | '(:' | 'ft-option' + shift(143); // 'ft-option' + lookahead1W(84); // S^WS | '(:' | 'using' + whitespace(); + parse_FTMatchOptions(); + eventHandler.endNonterminal("FTOptionDecl", e0); + } + + function parse_AnnotatedDecl() + { + eventHandler.startNonterminal("AnnotatedDecl", e0); + shift(109); // 'declare' + for (;;) + { + lookahead1W(192); // S^WS | '%' | '(:' | 'collection' | 'function' | 'index' | 'integrity' | + if (l1 != 33 // '%' + && l1 != 263) // 'updating' + { + break; + } + switch (l1) + { + case 263: // 'updating' + whitespace(); + parse_CompatibilityAnnotation(); + break; + default: + whitespace(); + parse_Annotation(); + } + } + switch (l1) + { + case 268: // 'variable' + whitespace(); + parse_VarDecl(); + break; + case 147: // 'function' + whitespace(); + parse_FunctionDecl(); + break; + case 96: // 'collection' + whitespace(); + parse_CollectionDecl(); + break; + case 157: // 'index' + whitespace(); + parse_IndexDecl(); + break; + default: + whitespace(); + parse_ICDecl(); + } + eventHandler.endNonterminal("AnnotatedDecl", e0); + } + + function parse_CompatibilityAnnotation() + { + eventHandler.startNonterminal("CompatibilityAnnotation", e0); + shift(263); // 'updating' + eventHandler.endNonterminal("CompatibilityAnnotation", e0); + } + + function parse_Annotation() + { + eventHandler.startNonterminal("Annotation", e0); + shift(33); // '%' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_EQName(); + lookahead1W(193); // S^WS | '%' | '(' | '(:' | 'collection' | 'function' | 'index' | 'integrity' | + if (l1 == 35) // '(' + { + shift(35); // '(' + lookahead1W(190); // IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | S^WS | '(:' | + whitespace(); + parse_Literal(); + for (;;) + { + lookahead1W(105); // S^WS | '(:' | ')' | ',' + if (l1 != 42) // ',' + { + break; + } + shift(42); // ',' + lookahead1W(190); // IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | S^WS | '(:' | + whitespace(); + parse_Literal(); + } + shift(38); // ')' + } + eventHandler.endNonterminal("Annotation", e0); + } + + function try_Annotation() + { + shiftT(33); // '%' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + try_EQName(); + lookahead1W(193); // S^WS | '%' | '(' | '(:' | 'collection' | 'function' | 'index' | 'integrity' | + if (l1 == 35) // '(' + { + shiftT(35); // '(' + lookahead1W(190); // IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | S^WS | '(:' | + try_Literal(); + for (;;) + { + lookahead1W(105); // S^WS | '(:' | ')' | ',' + if (l1 != 42) // ',' + { + break; + } + shiftT(42); // ',' + lookahead1W(190); // IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | S^WS | '(:' | + try_Literal(); + } + shiftT(38); // ')' + } + } + + function parse_VarDecl() + { + eventHandler.startNonterminal("VarDecl", e0); + shift(268); // 'variable' + lookahead1W(21); // S^WS | '$' | '(:' + shift(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_VarName(); + lookahead1W(157); // S^WS | '(:' | ':=' | 'as' | 'external' + if (l1 == 80) // 'as' + { + whitespace(); + parse_TypeDeclaration(); + } + lookahead1W(110); // S^WS | '(:' | ':=' | 'external' + switch (l1) + { + case 53: // ':=' + shift(53); // ':=' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_VarValue(); + break; + default: + shift(134); // 'external' + lookahead1W(108); // S^WS | '(:' | ':=' | ';' + if (l1 == 53) // ':=' + { + shift(53); // ':=' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_VarDefaultValue(); + } + } + eventHandler.endNonterminal("VarDecl", e0); + } + + function parse_VarValue() + { + eventHandler.startNonterminal("VarValue", e0); + parse_ExprSingle(); + eventHandler.endNonterminal("VarValue", e0); + } + + function parse_VarDefaultValue() + { + eventHandler.startNonterminal("VarDefaultValue", e0); + parse_ExprSingle(); + eventHandler.endNonterminal("VarDefaultValue", e0); + } + + function parse_ContextItemDecl() + { + eventHandler.startNonterminal("ContextItemDecl", e0); + shift(109); // 'declare' + lookahead1W(46); // S^WS | '(:' | 'context' + shift(102); // 'context' + lookahead1W(58); // S^WS | '(:' | 'item' + shift(167); // 'item' + lookahead1W(157); // S^WS | '(:' | ':=' | 'as' | 'external' + if (l1 == 80) // 'as' + { + shift(80); // 'as' + lookahead1W(253); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_ItemType(); + } + lookahead1W(110); // S^WS | '(:' | ':=' | 'external' + switch (l1) + { + case 53: // ':=' + shift(53); // ':=' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_VarValue(); + break; + default: + shift(134); // 'external' + lookahead1W(108); // S^WS | '(:' | ':=' | ';' + if (l1 == 53) // ':=' + { + shift(53); // ':=' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_VarDefaultValue(); + } + } + eventHandler.endNonterminal("ContextItemDecl", e0); + } + + function parse_ParamList() + { + eventHandler.startNonterminal("ParamList", e0); + parse_Param(); + for (;;) + { + lookahead1W(105); // S^WS | '(:' | ')' | ',' + if (l1 != 42) // ',' + { + break; + } + shift(42); // ',' + lookahead1W(21); // S^WS | '$' | '(:' + whitespace(); + parse_Param(); + } + eventHandler.endNonterminal("ParamList", e0); + } + + function try_ParamList() + { + try_Param(); + for (;;) + { + lookahead1W(105); // S^WS | '(:' | ')' | ',' + if (l1 != 42) // ',' + { + break; + } + shiftT(42); // ',' + lookahead1W(21); // S^WS | '$' | '(:' + try_Param(); + } + } + + function parse_Param() + { + eventHandler.startNonterminal("Param", e0); + shift(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_EQName(); + lookahead1W(153); // S^WS | '(:' | ')' | ',' | 'as' + if (l1 == 80) // 'as' + { + whitespace(); + parse_TypeDeclaration(); + } + eventHandler.endNonterminal("Param", e0); + } + + function try_Param() + { + shiftT(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + try_EQName(); + lookahead1W(153); // S^WS | '(:' | ')' | ',' | 'as' + if (l1 == 80) // 'as' + { + try_TypeDeclaration(); + } + } + + function parse_FunctionBody() + { + eventHandler.startNonterminal("FunctionBody", e0); + parse_EnclosedExpr(); + eventHandler.endNonterminal("FunctionBody", e0); + } + + function try_FunctionBody() + { + try_EnclosedExpr(); + } + + function parse_EnclosedExpr() + { + eventHandler.startNonterminal("EnclosedExpr", e0); + shift(281); // '{' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_Expr(); + shift(287); // '}' + eventHandler.endNonterminal("EnclosedExpr", e0); + } + + function try_EnclosedExpr() + { + shiftT(281); // '{' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_Expr(); + shiftT(287); // '}' + } + + function parse_OptionDecl() + { + eventHandler.startNonterminal("OptionDecl", e0); + shift(109); // 'declare' + lookahead1W(69); // S^WS | '(:' | 'option' + shift(203); // 'option' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_EQName(); + lookahead1W(17); // StringLiteral | S^WS | '(:' + shift(11); // StringLiteral + eventHandler.endNonterminal("OptionDecl", e0); + } + + function parse_Expr() + { + eventHandler.startNonterminal("Expr", e0); + parse_ExprSingle(); + for (;;) + { + if (l1 != 42) // ',' + { + break; + } + shift(42); // ',' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_ExprSingle(); + } + eventHandler.endNonterminal("Expr", e0); + } + + function try_Expr() + { + try_ExprSingle(); + for (;;) + { + if (l1 != 42) // ',' + { + break; + } + shiftT(42); // ',' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_ExprSingle(); + } + } + + function parse_FLWORExpr() + { + eventHandler.startNonterminal("FLWORExpr", e0); + parse_InitialClause(); + for (;;) + { + lookahead1W(195); // S^WS | '(:' | 'count' | 'for' | 'group' | 'let' | 'order' | 'return' | 'stable' | + if (l1 == 224) // 'return' + { + break; + } + whitespace(); + parse_IntermediateClause(); + } + whitespace(); + parse_ReturnClause(); + eventHandler.endNonterminal("FLWORExpr", e0); + } + + function try_FLWORExpr() + { + try_InitialClause(); + for (;;) + { + lookahead1W(195); // S^WS | '(:' | 'count' | 'for' | 'group' | 'let' | 'order' | 'return' | 'stable' | + if (l1 == 224) // 'return' + { + break; + } + try_IntermediateClause(); + } + try_ReturnClause(); + } + + function parse_InitialClause() + { + eventHandler.startNonterminal("InitialClause", e0); + switch (l1) + { + case 139: // 'for' + lookahead2W(151); // S^WS | '$' | '(:' | 'sliding' | 'tumbling' + break; + default: + lk = l1; + } + switch (lk) + { + case 16011: // 'for' '$' + parse_ForClause(); + break; + case 177: // 'let' + parse_LetClause(); + break; + default: + parse_WindowClause(); + } + eventHandler.endNonterminal("InitialClause", e0); + } + + function try_InitialClause() + { + switch (l1) + { + case 139: // 'for' + lookahead2W(151); // S^WS | '$' | '(:' | 'sliding' | 'tumbling' + break; + default: + lk = l1; + } + switch (lk) + { + case 16011: // 'for' '$' + try_ForClause(); + break; + case 177: // 'let' + try_LetClause(); + break; + default: + try_WindowClause(); + } + } + + function parse_IntermediateClause() + { + eventHandler.startNonterminal("IntermediateClause", e0); + switch (l1) + { + case 139: // 'for' + case 177: // 'let' + parse_InitialClause(); + break; + case 272: // 'where' + parse_WhereClause(); + break; + case 150: // 'group' + parse_GroupByClause(); + break; + case 106: // 'count' + parse_CountClause(); + break; + default: + parse_OrderByClause(); + } + eventHandler.endNonterminal("IntermediateClause", e0); + } + + function try_IntermediateClause() + { + switch (l1) + { + case 139: // 'for' + case 177: // 'let' + try_InitialClause(); + break; + case 272: // 'where' + try_WhereClause(); + break; + case 150: // 'group' + try_GroupByClause(); + break; + case 106: // 'count' + try_CountClause(); + break; + default: + try_OrderByClause(); + } + } + + function parse_ForClause() + { + eventHandler.startNonterminal("ForClause", e0); + shift(139); // 'for' + lookahead1W(21); // S^WS | '$' | '(:' + whitespace(); + parse_ForBinding(); + for (;;) + { + if (l1 != 42) // ',' + { + break; + } + shift(42); // ',' + lookahead1W(21); // S^WS | '$' | '(:' + whitespace(); + parse_ForBinding(); + } + eventHandler.endNonterminal("ForClause", e0); + } + + function try_ForClause() + { + shiftT(139); // 'for' + lookahead1W(21); // S^WS | '$' | '(:' + try_ForBinding(); + for (;;) + { + if (l1 != 42) // ',' + { + break; + } + shiftT(42); // ',' + lookahead1W(21); // S^WS | '$' | '(:' + try_ForBinding(); + } + } + + function parse_ForBinding() + { + eventHandler.startNonterminal("ForBinding", e0); + shift(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_VarName(); + lookahead1W(182); // S^WS | '(:' | 'allowing' | 'as' | 'at' | 'in' | 'score' + if (l1 == 80) // 'as' + { + whitespace(); + parse_TypeDeclaration(); + } + lookahead1W(173); // S^WS | '(:' | 'allowing' | 'at' | 'in' | 'score' + if (l1 == 73) // 'allowing' + { + whitespace(); + parse_AllowingEmpty(); + } + lookahead1W(160); // S^WS | '(:' | 'at' | 'in' | 'score' + if (l1 == 82) // 'at' + { + whitespace(); + parse_PositionalVar(); + } + lookahead1W(126); // S^WS | '(:' | 'in' | 'score' + if (l1 == 232) // 'score' + { + whitespace(); + parse_FTScoreVar(); + } + lookahead1W(56); // S^WS | '(:' | 'in' + shift(156); // 'in' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("ForBinding", e0); + } + + function try_ForBinding() + { + shiftT(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + try_VarName(); + lookahead1W(182); // S^WS | '(:' | 'allowing' | 'as' | 'at' | 'in' | 'score' + if (l1 == 80) // 'as' + { + try_TypeDeclaration(); + } + lookahead1W(173); // S^WS | '(:' | 'allowing' | 'at' | 'in' | 'score' + if (l1 == 73) // 'allowing' + { + try_AllowingEmpty(); + } + lookahead1W(160); // S^WS | '(:' | 'at' | 'in' | 'score' + if (l1 == 82) // 'at' + { + try_PositionalVar(); + } + lookahead1W(126); // S^WS | '(:' | 'in' | 'score' + if (l1 == 232) // 'score' + { + try_FTScoreVar(); + } + lookahead1W(56); // S^WS | '(:' | 'in' + shiftT(156); // 'in' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_ExprSingle(); + } + + function parse_AllowingEmpty() + { + eventHandler.startNonterminal("AllowingEmpty", e0); + shift(73); // 'allowing' + lookahead1W(52); // S^WS | '(:' | 'empty' + shift(124); // 'empty' + eventHandler.endNonterminal("AllowingEmpty", e0); + } + + function try_AllowingEmpty() + { + shiftT(73); // 'allowing' + lookahead1W(52); // S^WS | '(:' | 'empty' + shiftT(124); // 'empty' + } + + function parse_PositionalVar() + { + eventHandler.startNonterminal("PositionalVar", e0); + shift(82); // 'at' + lookahead1W(21); // S^WS | '$' | '(:' + shift(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_VarName(); + eventHandler.endNonterminal("PositionalVar", e0); + } + + function try_PositionalVar() + { + shiftT(82); // 'at' + lookahead1W(21); // S^WS | '$' | '(:' + shiftT(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + try_VarName(); + } + + function parse_FTScoreVar() + { + eventHandler.startNonterminal("FTScoreVar", e0); + shift(232); // 'score' + lookahead1W(21); // S^WS | '$' | '(:' + shift(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_VarName(); + eventHandler.endNonterminal("FTScoreVar", e0); + } + + function try_FTScoreVar() + { + shiftT(232); // 'score' + lookahead1W(21); // S^WS | '$' | '(:' + shiftT(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + try_VarName(); + } + + function parse_LetClause() + { + eventHandler.startNonterminal("LetClause", e0); + shift(177); // 'let' + lookahead1W(100); // S^WS | '$' | '(:' | 'score' + whitespace(); + parse_LetBinding(); + for (;;) + { + if (l1 != 42) // ',' + { + break; + } + shift(42); // ',' + lookahead1W(100); // S^WS | '$' | '(:' | 'score' + whitespace(); + parse_LetBinding(); + } + eventHandler.endNonterminal("LetClause", e0); + } + + function try_LetClause() + { + shiftT(177); // 'let' + lookahead1W(100); // S^WS | '$' | '(:' | 'score' + try_LetBinding(); + for (;;) + { + if (l1 != 42) // ',' + { + break; + } + shiftT(42); // ',' + lookahead1W(100); // S^WS | '$' | '(:' | 'score' + try_LetBinding(); + } + } + + function parse_LetBinding() + { + eventHandler.startNonterminal("LetBinding", e0); + switch (l1) + { + case 31: // '$' + shift(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_VarName(); + lookahead1W(109); // S^WS | '(:' | ':=' | 'as' + if (l1 == 80) // 'as' + { + whitespace(); + parse_TypeDeclaration(); + } + break; + default: + parse_FTScoreVar(); + } + lookahead1W(28); // S^WS | '(:' | ':=' + shift(53); // ':=' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("LetBinding", e0); + } + + function try_LetBinding() + { + switch (l1) + { + case 31: // '$' + shiftT(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + try_VarName(); + lookahead1W(109); // S^WS | '(:' | ':=' | 'as' + if (l1 == 80) // 'as' + { + try_TypeDeclaration(); + } + break; + default: + try_FTScoreVar(); + } + lookahead1W(28); // S^WS | '(:' | ':=' + shiftT(53); // ':=' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_ExprSingle(); + } + + function parse_WindowClause() + { + eventHandler.startNonterminal("WindowClause", e0); + shift(139); // 'for' + lookahead1W(139); // S^WS | '(:' | 'sliding' | 'tumbling' + switch (l1) + { + case 257: // 'tumbling' + whitespace(); + parse_TumblingWindowClause(); + break; + default: + whitespace(); + parse_SlidingWindowClause(); + } + eventHandler.endNonterminal("WindowClause", e0); + } + + function try_WindowClause() + { + shiftT(139); // 'for' + lookahead1W(139); // S^WS | '(:' | 'sliding' | 'tumbling' + switch (l1) + { + case 257: // 'tumbling' + try_TumblingWindowClause(); + break; + default: + try_SlidingWindowClause(); + } + } + + function parse_TumblingWindowClause() + { + eventHandler.startNonterminal("TumblingWindowClause", e0); + shift(257); // 'tumbling' + lookahead1W(88); // S^WS | '(:' | 'window' + shift(275); // 'window' + lookahead1W(21); // S^WS | '$' | '(:' + shift(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_VarName(); + lookahead1W(114); // S^WS | '(:' | 'as' | 'in' + if (l1 == 80) // 'as' + { + whitespace(); + parse_TypeDeclaration(); + } + lookahead1W(56); // S^WS | '(:' | 'in' + shift(156); // 'in' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_ExprSingle(); + whitespace(); + parse_WindowStartCondition(); + if (l1 == 127 // 'end' + || l1 == 202) // 'only' + { + whitespace(); + parse_WindowEndCondition(); + } + eventHandler.endNonterminal("TumblingWindowClause", e0); + } + + function try_TumblingWindowClause() + { + shiftT(257); // 'tumbling' + lookahead1W(88); // S^WS | '(:' | 'window' + shiftT(275); // 'window' + lookahead1W(21); // S^WS | '$' | '(:' + shiftT(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + try_VarName(); + lookahead1W(114); // S^WS | '(:' | 'as' | 'in' + if (l1 == 80) // 'as' + { + try_TypeDeclaration(); + } + lookahead1W(56); // S^WS | '(:' | 'in' + shiftT(156); // 'in' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_ExprSingle(); + try_WindowStartCondition(); + if (l1 == 127 // 'end' + || l1 == 202) // 'only' + { + try_WindowEndCondition(); + } + } + + function parse_SlidingWindowClause() + { + eventHandler.startNonterminal("SlidingWindowClause", e0); + shift(239); // 'sliding' + lookahead1W(88); // S^WS | '(:' | 'window' + shift(275); // 'window' + lookahead1W(21); // S^WS | '$' | '(:' + shift(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_VarName(); + lookahead1W(114); // S^WS | '(:' | 'as' | 'in' + if (l1 == 80) // 'as' + { + whitespace(); + parse_TypeDeclaration(); + } + lookahead1W(56); // S^WS | '(:' | 'in' + shift(156); // 'in' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_ExprSingle(); + whitespace(); + parse_WindowStartCondition(); + whitespace(); + parse_WindowEndCondition(); + eventHandler.endNonterminal("SlidingWindowClause", e0); + } + + function try_SlidingWindowClause() + { + shiftT(239); // 'sliding' + lookahead1W(88); // S^WS | '(:' | 'window' + shiftT(275); // 'window' + lookahead1W(21); // S^WS | '$' | '(:' + shiftT(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + try_VarName(); + lookahead1W(114); // S^WS | '(:' | 'as' | 'in' + if (l1 == 80) // 'as' + { + try_TypeDeclaration(); + } + lookahead1W(56); // S^WS | '(:' | 'in' + shiftT(156); // 'in' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_ExprSingle(); + try_WindowStartCondition(); + try_WindowEndCondition(); + } + + function parse_WindowStartCondition() + { + eventHandler.startNonterminal("WindowStartCondition", e0); + shift(242); // 'start' + lookahead1W(181); // S^WS | '$' | '(:' | 'at' | 'next' | 'previous' | 'when' + whitespace(); + parse_WindowVars(); + lookahead1W(86); // S^WS | '(:' | 'when' + shift(271); // 'when' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("WindowStartCondition", e0); + } + + function try_WindowStartCondition() + { + shiftT(242); // 'start' + lookahead1W(181); // S^WS | '$' | '(:' | 'at' | 'next' | 'previous' | 'when' + try_WindowVars(); + lookahead1W(86); // S^WS | '(:' | 'when' + shiftT(271); // 'when' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_ExprSingle(); + } + + function parse_WindowEndCondition() + { + eventHandler.startNonterminal("WindowEndCondition", e0); + if (l1 == 202) // 'only' + { + shift(202); // 'only' + } + lookahead1W(53); // S^WS | '(:' | 'end' + shift(127); // 'end' + lookahead1W(181); // S^WS | '$' | '(:' | 'at' | 'next' | 'previous' | 'when' + whitespace(); + parse_WindowVars(); + lookahead1W(86); // S^WS | '(:' | 'when' + shift(271); // 'when' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("WindowEndCondition", e0); + } + + function try_WindowEndCondition() + { + if (l1 == 202) // 'only' + { + shiftT(202); // 'only' + } + lookahead1W(53); // S^WS | '(:' | 'end' + shiftT(127); // 'end' + lookahead1W(181); // S^WS | '$' | '(:' | 'at' | 'next' | 'previous' | 'when' + try_WindowVars(); + lookahead1W(86); // S^WS | '(:' | 'when' + shiftT(271); // 'when' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_ExprSingle(); + } + + function parse_WindowVars() + { + eventHandler.startNonterminal("WindowVars", e0); + if (l1 == 31) // '$' + { + shift(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_CurrentItem(); + } + lookahead1W(174); // S^WS | '(:' | 'at' | 'next' | 'previous' | 'when' + if (l1 == 82) // 'at' + { + whitespace(); + parse_PositionalVar(); + } + lookahead1W(163); // S^WS | '(:' | 'next' | 'previous' | 'when' + if (l1 == 219) // 'previous' + { + shift(219); // 'previous' + lookahead1W(21); // S^WS | '$' | '(:' + shift(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_PreviousItem(); + } + lookahead1W(131); // S^WS | '(:' | 'next' | 'when' + if (l1 == 190) // 'next' + { + shift(190); // 'next' + lookahead1W(21); // S^WS | '$' | '(:' + shift(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_NextItem(); + } + eventHandler.endNonterminal("WindowVars", e0); + } + + function try_WindowVars() + { + if (l1 == 31) // '$' + { + shiftT(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + try_CurrentItem(); + } + lookahead1W(174); // S^WS | '(:' | 'at' | 'next' | 'previous' | 'when' + if (l1 == 82) // 'at' + { + try_PositionalVar(); + } + lookahead1W(163); // S^WS | '(:' | 'next' | 'previous' | 'when' + if (l1 == 219) // 'previous' + { + shiftT(219); // 'previous' + lookahead1W(21); // S^WS | '$' | '(:' + shiftT(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + try_PreviousItem(); + } + lookahead1W(131); // S^WS | '(:' | 'next' | 'when' + if (l1 == 190) // 'next' + { + shiftT(190); // 'next' + lookahead1W(21); // S^WS | '$' | '(:' + shiftT(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + try_NextItem(); + } + } + + function parse_CurrentItem() + { + eventHandler.startNonterminal("CurrentItem", e0); + parse_EQName(); + eventHandler.endNonterminal("CurrentItem", e0); + } + + function try_CurrentItem() + { + try_EQName(); + } + + function parse_PreviousItem() + { + eventHandler.startNonterminal("PreviousItem", e0); + parse_EQName(); + eventHandler.endNonterminal("PreviousItem", e0); + } + + function try_PreviousItem() + { + try_EQName(); + } + + function parse_NextItem() + { + eventHandler.startNonterminal("NextItem", e0); + parse_EQName(); + eventHandler.endNonterminal("NextItem", e0); + } + + function try_NextItem() + { + try_EQName(); + } + + function parse_CountClause() + { + eventHandler.startNonterminal("CountClause", e0); + shift(106); // 'count' + lookahead1W(21); // S^WS | '$' | '(:' + shift(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_VarName(); + eventHandler.endNonterminal("CountClause", e0); + } + + function try_CountClause() + { + shiftT(106); // 'count' + lookahead1W(21); // S^WS | '$' | '(:' + shiftT(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + try_VarName(); + } + + function parse_WhereClause() + { + eventHandler.startNonterminal("WhereClause", e0); + shift(272); // 'where' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("WhereClause", e0); + } + + function try_WhereClause() + { + shiftT(272); // 'where' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_ExprSingle(); + } + + function parse_GroupByClause() + { + eventHandler.startNonterminal("GroupByClause", e0); + shift(150); // 'group' + lookahead1W(37); // S^WS | '(:' | 'by' + shift(88); // 'by' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_GroupingSpecList(); + eventHandler.endNonterminal("GroupByClause", e0); + } + + function try_GroupByClause() + { + shiftT(150); // 'group' + lookahead1W(37); // S^WS | '(:' | 'by' + shiftT(88); // 'by' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_GroupingSpecList(); + } + + function parse_GroupingSpecList() + { + eventHandler.startNonterminal("GroupingSpecList", e0); + parse_GroupingSpec(); + for (;;) + { + lookahead1W(198); // S^WS | '(:' | ',' | 'count' | 'for' | 'group' | 'let' | 'order' | 'return' | + if (l1 != 42) // ',' + { + break; + } + shift(42); // ',' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_GroupingSpec(); + } + eventHandler.endNonterminal("GroupingSpecList", e0); + } + + function try_GroupingSpecList() + { + try_GroupingSpec(); + for (;;) + { + lookahead1W(198); // S^WS | '(:' | ',' | 'count' | 'for' | 'group' | 'let' | 'order' | 'return' | + if (l1 != 42) // ',' + { + break; + } + shiftT(42); // ',' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_GroupingSpec(); + } + } + + function parse_GroupingSpec() + { + eventHandler.startNonterminal("GroupingSpec", e0); + switch (l1) + { + case 31: // '$' + lookahead2W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + break; + default: + lk = l1; + } + if (lk == 3103 // '$' EQName^Token + || lk == 36383 // '$' 'after' + || lk == 37407 // '$' 'allowing' + || lk == 37919 // '$' 'ancestor' + || lk == 38431 // '$' 'ancestor-or-self' + || lk == 38943 // '$' 'and' + || lk == 39967 // '$' 'append' + || lk == 40479 // '$' 'array' + || lk == 40991 // '$' 'as' + || lk == 41503 // '$' 'ascending' + || lk == 42015 // '$' 'at' + || lk == 42527 // '$' 'attribute' + || lk == 43039 // '$' 'base-uri' + || lk == 43551 // '$' 'before' + || lk == 44063 // '$' 'boundary-space' + || lk == 44575 // '$' 'break' + || lk == 45599 // '$' 'case' + || lk == 46111 // '$' 'cast' + || lk == 46623 // '$' 'castable' + || lk == 47135 // '$' 'catch' + || lk == 48159 // '$' 'child' + || lk == 48671 // '$' 'collation' + || lk == 49695 // '$' 'comment' + || lk == 50207 // '$' 'constraint' + || lk == 50719 // '$' 'construction' + || lk == 52255 // '$' 'context' + || lk == 52767 // '$' 'continue' + || lk == 53279 // '$' 'copy' + || lk == 53791 // '$' 'copy-namespaces' + || lk == 54303 // '$' 'count' + || lk == 54815 // '$' 'decimal-format' + || lk == 55839 // '$' 'declare' + || lk == 56351 // '$' 'default' + || lk == 56863 // '$' 'delete' + || lk == 57375 // '$' 'descendant' + || lk == 57887 // '$' 'descendant-or-self' + || lk == 58399 // '$' 'descending' + || lk == 60959 // '$' 'div' + || lk == 61471 // '$' 'document' + || lk == 61983 // '$' 'document-node' + || lk == 62495 // '$' 'element' + || lk == 63007 // '$' 'else' + || lk == 63519 // '$' 'empty' + || lk == 64031 // '$' 'empty-sequence' + || lk == 64543 // '$' 'encoding' + || lk == 65055 // '$' 'end' + || lk == 66079 // '$' 'eq' + || lk == 66591 // '$' 'every' + || lk == 67615 // '$' 'except' + || lk == 68127 // '$' 'exit' + || lk == 68639 // '$' 'external' + || lk == 69151 // '$' 'false' + || lk == 69663 // '$' 'first' + || lk == 70175 // '$' 'following' + || lk == 70687 // '$' 'following-sibling' + || lk == 71199 // '$' 'for' + || lk == 72735 // '$' 'from' + || lk == 73247 // '$' 'ft-option' + || lk == 75295 // '$' 'function' + || lk == 75807 // '$' 'ge' + || lk == 76831 // '$' 'group' + || lk == 77855 // '$' 'gt' + || lk == 78367 // '$' 'idiv' + || lk == 78879 // '$' 'if' + || lk == 79391 // '$' 'import' + || lk == 79903 // '$' 'in' + || lk == 80415 // '$' 'index' + || lk == 82463 // '$' 'insert' + || lk == 82975 // '$' 'instance' + || lk == 83487 // '$' 'integrity' + || lk == 83999 // '$' 'intersect' + || lk == 84511 // '$' 'into' + || lk == 85023 // '$' 'is' + || lk == 85535 // '$' 'item' + || lk == 86047 // '$' 'json' + || lk == 86559 // '$' 'json-item' + || lk == 87071 // '$' 'jsoniq' + || lk == 88607 // '$' 'last' + || lk == 89119 // '$' 'lax' + || lk == 89631 // '$' 'le' + || lk == 90655 // '$' 'let' + || lk == 91679 // '$' 'loop' + || lk == 92703 // '$' 'lt' + || lk == 93727 // '$' 'mod' + || lk == 94239 // '$' 'modify' + || lk == 94751 // '$' 'module' + || lk == 95775 // '$' 'namespace' + || lk == 96287 // '$' 'namespace-node' + || lk == 96799 // '$' 'ne' + || lk == 99359 // '$' 'node' + || lk == 99871 // '$' 'nodes' + || lk == 100895 // '$' 'null' + || lk == 101407 // '$' 'object' + || lk == 103455 // '$' 'only' + || lk == 103967 // '$' 'option' + || lk == 104479 // '$' 'or' + || lk == 104991 // '$' 'order' + || lk == 105503 // '$' 'ordered' + || lk == 106015 // '$' 'ordering' + || lk == 107551 // '$' 'parent' + || lk == 110623 // '$' 'preceding' + || lk == 111135 // '$' 'preceding-sibling' + || lk == 112671 // '$' 'processing-instruction' + || lk == 113695 // '$' 'rename' + || lk == 114207 // '$' 'replace' + || lk == 114719 // '$' 'return' + || lk == 115231 // '$' 'returning' + || lk == 115743 // '$' 'revalidation' + || lk == 116767 // '$' 'satisfies' + || lk == 117279 // '$' 'schema' + || lk == 117791 // '$' 'schema-attribute' + || lk == 118303 // '$' 'schema-element' + || lk == 118815 // '$' 'score' + || lk == 119327 // '$' 'select' + || lk == 119839 // '$' 'self' + || lk == 122399 // '$' 'sliding' + || lk == 122911 // '$' 'some' + || lk == 123423 // '$' 'stable' + || lk == 123935 // '$' 'start' + || lk == 125471 // '$' 'strict' + || lk == 126495 // '$' 'structured-item' + || lk == 127007 // '$' 'switch' + || lk == 127519 // '$' 'text' + || lk == 129567 // '$' 'to' + || lk == 130079 // '$' 'treat' + || lk == 130591 // '$' 'true' + || lk == 131103 // '$' 'try' + || lk == 131615 // '$' 'tumbling' + || lk == 132127 // '$' 'type' + || lk == 132639 // '$' 'typeswitch' + || lk == 133151 // '$' 'union' + || lk == 134175 // '$' 'unordered' + || lk == 134687 // '$' 'updating' + || lk == 136223 // '$' 'validate' + || lk == 136735 // '$' 'value' + || lk == 137247 // '$' 'variable' + || lk == 137759 // '$' 'version' + || lk == 139295 // '$' 'where' + || lk == 139807 // '$' 'while' + || lk == 141343) // '$' 'with' + { + lk = memoized(2, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + try_GroupingVariable(); + lookahead1W(205); // S^WS | '(:' | ',' | ':=' | 'as' | 'collation' | 'count' | 'for' | 'group' | + if (l1 == 53 // ':=' + || l1 == 80) // 'as' + { + if (l1 == 80) // 'as' + { + try_TypeDeclaration(); + } + lookahead1W(28); // S^WS | '(:' | ':=' + shiftT(53); // ':=' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_ExprSingle(); + } + if (l1 == 95) // 'collation' + { + shiftT(95); // 'collation' + lookahead1W(15); // URILiteral | S^WS | '(:' + shiftT(7); // URILiteral + } + lk = -1; + } + catch (p1A) + { + lk = -2; + } + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(2, e0, lk); + } + } + switch (lk) + { + case -1: + parse_GroupingVariable(); + lookahead1W(205); // S^WS | '(:' | ',' | ':=' | 'as' | 'collation' | 'count' | 'for' | 'group' | + if (l1 == 53 // ':=' + || l1 == 80) // 'as' + { + if (l1 == 80) // 'as' + { + whitespace(); + parse_TypeDeclaration(); + } + lookahead1W(28); // S^WS | '(:' | ':=' + shift(53); // ':=' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_ExprSingle(); + } + if (l1 == 95) // 'collation' + { + shift(95); // 'collation' + lookahead1W(15); // URILiteral | S^WS | '(:' + shift(7); // URILiteral + } + break; + default: + parse_ExprSingle(); + } + eventHandler.endNonterminal("GroupingSpec", e0); + } + + function try_GroupingSpec() + { + switch (l1) + { + case 31: // '$' + lookahead2W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + break; + default: + lk = l1; + } + if (lk == 3103 // '$' EQName^Token + || lk == 36383 // '$' 'after' + || lk == 37407 // '$' 'allowing' + || lk == 37919 // '$' 'ancestor' + || lk == 38431 // '$' 'ancestor-or-self' + || lk == 38943 // '$' 'and' + || lk == 39967 // '$' 'append' + || lk == 40479 // '$' 'array' + || lk == 40991 // '$' 'as' + || lk == 41503 // '$' 'ascending' + || lk == 42015 // '$' 'at' + || lk == 42527 // '$' 'attribute' + || lk == 43039 // '$' 'base-uri' + || lk == 43551 // '$' 'before' + || lk == 44063 // '$' 'boundary-space' + || lk == 44575 // '$' 'break' + || lk == 45599 // '$' 'case' + || lk == 46111 // '$' 'cast' + || lk == 46623 // '$' 'castable' + || lk == 47135 // '$' 'catch' + || lk == 48159 // '$' 'child' + || lk == 48671 // '$' 'collation' + || lk == 49695 // '$' 'comment' + || lk == 50207 // '$' 'constraint' + || lk == 50719 // '$' 'construction' + || lk == 52255 // '$' 'context' + || lk == 52767 // '$' 'continue' + || lk == 53279 // '$' 'copy' + || lk == 53791 // '$' 'copy-namespaces' + || lk == 54303 // '$' 'count' + || lk == 54815 // '$' 'decimal-format' + || lk == 55839 // '$' 'declare' + || lk == 56351 // '$' 'default' + || lk == 56863 // '$' 'delete' + || lk == 57375 // '$' 'descendant' + || lk == 57887 // '$' 'descendant-or-self' + || lk == 58399 // '$' 'descending' + || lk == 60959 // '$' 'div' + || lk == 61471 // '$' 'document' + || lk == 61983 // '$' 'document-node' + || lk == 62495 // '$' 'element' + || lk == 63007 // '$' 'else' + || lk == 63519 // '$' 'empty' + || lk == 64031 // '$' 'empty-sequence' + || lk == 64543 // '$' 'encoding' + || lk == 65055 // '$' 'end' + || lk == 66079 // '$' 'eq' + || lk == 66591 // '$' 'every' + || lk == 67615 // '$' 'except' + || lk == 68127 // '$' 'exit' + || lk == 68639 // '$' 'external' + || lk == 69151 // '$' 'false' + || lk == 69663 // '$' 'first' + || lk == 70175 // '$' 'following' + || lk == 70687 // '$' 'following-sibling' + || lk == 71199 // '$' 'for' + || lk == 72735 // '$' 'from' + || lk == 73247 // '$' 'ft-option' + || lk == 75295 // '$' 'function' + || lk == 75807 // '$' 'ge' + || lk == 76831 // '$' 'group' + || lk == 77855 // '$' 'gt' + || lk == 78367 // '$' 'idiv' + || lk == 78879 // '$' 'if' + || lk == 79391 // '$' 'import' + || lk == 79903 // '$' 'in' + || lk == 80415 // '$' 'index' + || lk == 82463 // '$' 'insert' + || lk == 82975 // '$' 'instance' + || lk == 83487 // '$' 'integrity' + || lk == 83999 // '$' 'intersect' + || lk == 84511 // '$' 'into' + || lk == 85023 // '$' 'is' + || lk == 85535 // '$' 'item' + || lk == 86047 // '$' 'json' + || lk == 86559 // '$' 'json-item' + || lk == 87071 // '$' 'jsoniq' + || lk == 88607 // '$' 'last' + || lk == 89119 // '$' 'lax' + || lk == 89631 // '$' 'le' + || lk == 90655 // '$' 'let' + || lk == 91679 // '$' 'loop' + || lk == 92703 // '$' 'lt' + || lk == 93727 // '$' 'mod' + || lk == 94239 // '$' 'modify' + || lk == 94751 // '$' 'module' + || lk == 95775 // '$' 'namespace' + || lk == 96287 // '$' 'namespace-node' + || lk == 96799 // '$' 'ne' + || lk == 99359 // '$' 'node' + || lk == 99871 // '$' 'nodes' + || lk == 100895 // '$' 'null' + || lk == 101407 // '$' 'object' + || lk == 103455 // '$' 'only' + || lk == 103967 // '$' 'option' + || lk == 104479 // '$' 'or' + || lk == 104991 // '$' 'order' + || lk == 105503 // '$' 'ordered' + || lk == 106015 // '$' 'ordering' + || lk == 107551 // '$' 'parent' + || lk == 110623 // '$' 'preceding' + || lk == 111135 // '$' 'preceding-sibling' + || lk == 112671 // '$' 'processing-instruction' + || lk == 113695 // '$' 'rename' + || lk == 114207 // '$' 'replace' + || lk == 114719 // '$' 'return' + || lk == 115231 // '$' 'returning' + || lk == 115743 // '$' 'revalidation' + || lk == 116767 // '$' 'satisfies' + || lk == 117279 // '$' 'schema' + || lk == 117791 // '$' 'schema-attribute' + || lk == 118303 // '$' 'schema-element' + || lk == 118815 // '$' 'score' + || lk == 119327 // '$' 'select' + || lk == 119839 // '$' 'self' + || lk == 122399 // '$' 'sliding' + || lk == 122911 // '$' 'some' + || lk == 123423 // '$' 'stable' + || lk == 123935 // '$' 'start' + || lk == 125471 // '$' 'strict' + || lk == 126495 // '$' 'structured-item' + || lk == 127007 // '$' 'switch' + || lk == 127519 // '$' 'text' + || lk == 129567 // '$' 'to' + || lk == 130079 // '$' 'treat' + || lk == 130591 // '$' 'true' + || lk == 131103 // '$' 'try' + || lk == 131615 // '$' 'tumbling' + || lk == 132127 // '$' 'type' + || lk == 132639 // '$' 'typeswitch' + || lk == 133151 // '$' 'union' + || lk == 134175 // '$' 'unordered' + || lk == 134687 // '$' 'updating' + || lk == 136223 // '$' 'validate' + || lk == 136735 // '$' 'value' + || lk == 137247 // '$' 'variable' + || lk == 137759 // '$' 'version' + || lk == 139295 // '$' 'where' + || lk == 139807 // '$' 'while' + || lk == 141343) // '$' 'with' + { + lk = memoized(2, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + try_GroupingVariable(); + lookahead1W(205); // S^WS | '(:' | ',' | ':=' | 'as' | 'collation' | 'count' | 'for' | 'group' | + if (l1 == 53 // ':=' + || l1 == 80) // 'as' + { + if (l1 == 80) // 'as' + { + try_TypeDeclaration(); + } + lookahead1W(28); // S^WS | '(:' | ':=' + shiftT(53); // ':=' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_ExprSingle(); + } + if (l1 == 95) // 'collation' + { + shiftT(95); // 'collation' + lookahead1W(15); // URILiteral | S^WS | '(:' + shiftT(7); // URILiteral + } + memoize(2, e0A, -1); + lk = -3; + } + catch (p1A) + { + lk = -2; + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(2, e0A, -2); + } + } + } + switch (lk) + { + case -1: + try_GroupingVariable(); + lookahead1W(205); // S^WS | '(:' | ',' | ':=' | 'as' | 'collation' | 'count' | 'for' | 'group' | + if (l1 == 53 // ':=' + || l1 == 80) // 'as' + { + if (l1 == 80) // 'as' + { + try_TypeDeclaration(); + } + lookahead1W(28); // S^WS | '(:' | ':=' + shiftT(53); // ':=' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_ExprSingle(); + } + if (l1 == 95) // 'collation' + { + shiftT(95); // 'collation' + lookahead1W(15); // URILiteral | S^WS | '(:' + shiftT(7); // URILiteral + } + break; + case -3: + break; + default: + try_ExprSingle(); + } + } + + function parse_GroupingVariable() + { + eventHandler.startNonterminal("GroupingVariable", e0); + shift(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_VarName(); + eventHandler.endNonterminal("GroupingVariable", e0); + } + + function try_GroupingVariable() + { + shiftT(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + try_VarName(); + } + + function parse_OrderByClause() + { + eventHandler.startNonterminal("OrderByClause", e0); + switch (l1) + { + case 205: // 'order' + shift(205); // 'order' + lookahead1W(37); // S^WS | '(:' | 'by' + shift(88); // 'by' + break; + default: + shift(241); // 'stable' + lookahead1W(70); // S^WS | '(:' | 'order' + shift(205); // 'order' + lookahead1W(37); // S^WS | '(:' | 'by' + shift(88); // 'by' + } + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_OrderSpecList(); + eventHandler.endNonterminal("OrderByClause", e0); + } + + function try_OrderByClause() + { + switch (l1) + { + case 205: // 'order' + shiftT(205); // 'order' + lookahead1W(37); // S^WS | '(:' | 'by' + shiftT(88); // 'by' + break; + default: + shiftT(241); // 'stable' + lookahead1W(70); // S^WS | '(:' | 'order' + shiftT(205); // 'order' + lookahead1W(37); // S^WS | '(:' | 'by' + shiftT(88); // 'by' + } + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_OrderSpecList(); + } + + function parse_OrderSpecList() + { + eventHandler.startNonterminal("OrderSpecList", e0); + parse_OrderSpec(); + for (;;) + { + lookahead1W(198); // S^WS | '(:' | ',' | 'count' | 'for' | 'group' | 'let' | 'order' | 'return' | + if (l1 != 42) // ',' + { + break; + } + shift(42); // ',' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_OrderSpec(); + } + eventHandler.endNonterminal("OrderSpecList", e0); + } + + function try_OrderSpecList() + { + try_OrderSpec(); + for (;;) + { + lookahead1W(198); // S^WS | '(:' | ',' | 'count' | 'for' | 'group' | 'let' | 'order' | 'return' | + if (l1 != 42) // ',' + { + break; + } + shiftT(42); // ',' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_OrderSpec(); + } + } + + function parse_OrderSpec() + { + eventHandler.startNonterminal("OrderSpec", e0); + parse_ExprSingle(); + whitespace(); + parse_OrderModifier(); + eventHandler.endNonterminal("OrderSpec", e0); + } + + function try_OrderSpec() + { + try_ExprSingle(); + try_OrderModifier(); + } + + function parse_OrderModifier() + { + eventHandler.startNonterminal("OrderModifier", e0); + if (l1 == 81 // 'ascending' + || l1 == 114) // 'descending' + { + switch (l1) + { + case 81: // 'ascending' + shift(81); // 'ascending' + break; + default: + shift(114); // 'descending' + } + } + lookahead1W(202); // S^WS | '(:' | ',' | 'collation' | 'count' | 'empty' | 'for' | 'group' | 'let' | + if (l1 == 124) // 'empty' + { + shift(124); // 'empty' + lookahead1W(125); // S^WS | '(:' | 'greatest' | 'least' + switch (l1) + { + case 149: // 'greatest' + shift(149); // 'greatest' + break; + default: + shift(176); // 'least' + } + } + lookahead1W(199); // S^WS | '(:' | ',' | 'collation' | 'count' | 'for' | 'group' | 'let' | 'order' | + if (l1 == 95) // 'collation' + { + shift(95); // 'collation' + lookahead1W(15); // URILiteral | S^WS | '(:' + shift(7); // URILiteral + } + eventHandler.endNonterminal("OrderModifier", e0); + } + + function try_OrderModifier() + { + if (l1 == 81 // 'ascending' + || l1 == 114) // 'descending' + { + switch (l1) + { + case 81: // 'ascending' + shiftT(81); // 'ascending' + break; + default: + shiftT(114); // 'descending' + } + } + lookahead1W(202); // S^WS | '(:' | ',' | 'collation' | 'count' | 'empty' | 'for' | 'group' | 'let' | + if (l1 == 124) // 'empty' + { + shiftT(124); // 'empty' + lookahead1W(125); // S^WS | '(:' | 'greatest' | 'least' + switch (l1) + { + case 149: // 'greatest' + shiftT(149); // 'greatest' + break; + default: + shiftT(176); // 'least' + } + } + lookahead1W(199); // S^WS | '(:' | ',' | 'collation' | 'count' | 'for' | 'group' | 'let' | 'order' | + if (l1 == 95) // 'collation' + { + shiftT(95); // 'collation' + lookahead1W(15); // URILiteral | S^WS | '(:' + shiftT(7); // URILiteral + } + } + + function parse_ReturnClause() + { + eventHandler.startNonterminal("ReturnClause", e0); + shift(224); // 'return' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("ReturnClause", e0); + } + + function try_ReturnClause() + { + shiftT(224); // 'return' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_ExprSingle(); + } + + function parse_QuantifiedExpr() + { + eventHandler.startNonterminal("QuantifiedExpr", e0); + switch (l1) + { + case 240: // 'some' + shift(240); // 'some' + break; + default: + shift(130); // 'every' + } + lookahead1W(21); // S^WS | '$' | '(:' + whitespace(); + parse_QuantifiedVarDecl(); + for (;;) + { + if (l1 != 42) // ',' + { + break; + } + shift(42); // ',' + lookahead1W(21); // S^WS | '$' | '(:' + whitespace(); + parse_QuantifiedVarDecl(); + } + shift(228); // 'satisfies' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("QuantifiedExpr", e0); + } + + function try_QuantifiedExpr() + { + switch (l1) + { + case 240: // 'some' + shiftT(240); // 'some' + break; + default: + shiftT(130); // 'every' + } + lookahead1W(21); // S^WS | '$' | '(:' + try_QuantifiedVarDecl(); + for (;;) + { + if (l1 != 42) // ',' + { + break; + } + shiftT(42); // ',' + lookahead1W(21); // S^WS | '$' | '(:' + try_QuantifiedVarDecl(); + } + shiftT(228); // 'satisfies' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_ExprSingle(); + } + + function parse_QuantifiedVarDecl() + { + eventHandler.startNonterminal("QuantifiedVarDecl", e0); + shift(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_VarName(); + lookahead1W(114); // S^WS | '(:' | 'as' | 'in' + if (l1 == 80) // 'as' + { + whitespace(); + parse_TypeDeclaration(); + } + lookahead1W(56); // S^WS | '(:' | 'in' + shift(156); // 'in' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("QuantifiedVarDecl", e0); + } + + function try_QuantifiedVarDecl() + { + shiftT(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + try_VarName(); + lookahead1W(114); // S^WS | '(:' | 'as' | 'in' + if (l1 == 80) // 'as' + { + try_TypeDeclaration(); + } + lookahead1W(56); // S^WS | '(:' | 'in' + shiftT(156); // 'in' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_ExprSingle(); + } + + function parse_SwitchExpr() + { + eventHandler.startNonterminal("SwitchExpr", e0); + shift(248); // 'switch' + lookahead1W(22); // S^WS | '(' | '(:' + shift(35); // '(' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_Expr(); + shift(38); // ')' + for (;;) + { + lookahead1W(38); // S^WS | '(:' | 'case' + whitespace(); + parse_SwitchCaseClause(); + if (l1 != 89) // 'case' + { + break; + } + } + shift(110); // 'default' + lookahead1W(73); // S^WS | '(:' | 'return' + shift(224); // 'return' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("SwitchExpr", e0); + } + + function try_SwitchExpr() + { + shiftT(248); // 'switch' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(35); // '(' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_Expr(); + shiftT(38); // ')' + for (;;) + { + lookahead1W(38); // S^WS | '(:' | 'case' + try_SwitchCaseClause(); + if (l1 != 89) // 'case' + { + break; + } + } + shiftT(110); // 'default' + lookahead1W(73); // S^WS | '(:' | 'return' + shiftT(224); // 'return' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_ExprSingle(); + } + + function parse_SwitchCaseClause() + { + eventHandler.startNonterminal("SwitchCaseClause", e0); + for (;;) + { + shift(89); // 'case' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_SwitchCaseOperand(); + if (l1 != 89) // 'case' + { + break; + } + } + shift(224); // 'return' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("SwitchCaseClause", e0); + } + + function try_SwitchCaseClause() + { + for (;;) + { + shiftT(89); // 'case' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_SwitchCaseOperand(); + if (l1 != 89) // 'case' + { + break; + } + } + shiftT(224); // 'return' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_ExprSingle(); + } + + function parse_SwitchCaseOperand() + { + eventHandler.startNonterminal("SwitchCaseOperand", e0); + parse_ExprSingle(); + eventHandler.endNonterminal("SwitchCaseOperand", e0); + } + + function try_SwitchCaseOperand() + { + try_ExprSingle(); + } + + function parse_TypeswitchExpr() + { + eventHandler.startNonterminal("TypeswitchExpr", e0); + shift(259); // 'typeswitch' + lookahead1W(22); // S^WS | '(' | '(:' + shift(35); // '(' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_Expr(); + shift(38); // ')' + for (;;) + { + lookahead1W(38); // S^WS | '(:' | 'case' + whitespace(); + parse_CaseClause(); + if (l1 != 89) // 'case' + { + break; + } + } + shift(110); // 'default' + lookahead1W(99); // S^WS | '$' | '(:' | 'return' + if (l1 == 31) // '$' + { + shift(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_VarName(); + } + lookahead1W(73); // S^WS | '(:' | 'return' + shift(224); // 'return' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("TypeswitchExpr", e0); + } + + function try_TypeswitchExpr() + { + shiftT(259); // 'typeswitch' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(35); // '(' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_Expr(); + shiftT(38); // ')' + for (;;) + { + lookahead1W(38); // S^WS | '(:' | 'case' + try_CaseClause(); + if (l1 != 89) // 'case' + { + break; + } + } + shiftT(110); // 'default' + lookahead1W(99); // S^WS | '$' | '(:' | 'return' + if (l1 == 31) // '$' + { + shiftT(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + try_VarName(); + } + lookahead1W(73); // S^WS | '(:' | 'return' + shiftT(224); // 'return' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_ExprSingle(); + } + + function parse_CaseClause() + { + eventHandler.startNonterminal("CaseClause", e0); + shift(89); // 'case' + lookahead1W(257); // EQName^Token | S^WS | '$' | '%' | '(' | '(:' | 'after' | 'allowing' | + if (l1 == 31) // '$' + { + shift(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_VarName(); + lookahead1W(33); // S^WS | '(:' | 'as' + shift(80); // 'as' + } + lookahead1W(253); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_SequenceTypeUnion(); + shift(224); // 'return' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("CaseClause", e0); + } + + function try_CaseClause() + { + shiftT(89); // 'case' + lookahead1W(257); // EQName^Token | S^WS | '$' | '%' | '(' | '(:' | 'after' | 'allowing' | + if (l1 == 31) // '$' + { + shiftT(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + try_VarName(); + lookahead1W(33); // S^WS | '(:' | 'as' + shiftT(80); // 'as' + } + lookahead1W(253); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + try_SequenceTypeUnion(); + shiftT(224); // 'return' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_ExprSingle(); + } + + function parse_SequenceTypeUnion() + { + eventHandler.startNonterminal("SequenceTypeUnion", e0); + parse_SequenceType(); + for (;;) + { + lookahead1W(138); // S^WS | '(:' | 'return' | '|' + if (l1 != 284) // '|' + { + break; + } + shift(284); // '|' + lookahead1W(253); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_SequenceType(); + } + eventHandler.endNonterminal("SequenceTypeUnion", e0); + } + + function try_SequenceTypeUnion() + { + try_SequenceType(); + for (;;) + { + lookahead1W(138); // S^WS | '(:' | 'return' | '|' + if (l1 != 284) // '|' + { + break; + } + shiftT(284); // '|' + lookahead1W(253); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + try_SequenceType(); + } + } + + function parse_IfExpr() + { + eventHandler.startNonterminal("IfExpr", e0); + shift(154); // 'if' + lookahead1W(22); // S^WS | '(' | '(:' + shift(35); // '(' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_Expr(); + shift(38); // ')' + lookahead1W(80); // S^WS | '(:' | 'then' + shift(250); // 'then' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_ExprSingle(); + shift(123); // 'else' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("IfExpr", e0); + } + + function try_IfExpr() + { + shiftT(154); // 'if' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(35); // '(' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_Expr(); + shiftT(38); // ')' + lookahead1W(80); // S^WS | '(:' | 'then' + shiftT(250); // 'then' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_ExprSingle(); + shiftT(123); // 'else' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_ExprSingle(); + } + + function parse_TryCatchExpr() + { + eventHandler.startNonterminal("TryCatchExpr", e0); + parse_TryClause(); + for (;;) + { + lookahead1W(39); // S^WS | '(:' | 'catch' + whitespace(); + parse_CatchClause(); + lookahead1W(207); // S^WS | EOF | '(:' | ')' | ',' | ':' | ';' | ']' | 'after' | 'as' | 'ascending' | + if (l1 != 92) // 'catch' + { + break; + } + } + eventHandler.endNonterminal("TryCatchExpr", e0); + } + + function try_TryCatchExpr() + { + try_TryClause(); + for (;;) + { + lookahead1W(39); // S^WS | '(:' | 'catch' + try_CatchClause(); + lookahead1W(207); // S^WS | EOF | '(:' | ')' | ',' | ':' | ';' | ']' | 'after' | 'as' | 'ascending' | + if (l1 != 92) // 'catch' + { + break; + } + } + } + + function parse_TryClause() + { + eventHandler.startNonterminal("TryClause", e0); + shift(256); // 'try' + lookahead1W(90); // S^WS | '(:' | '{' + shift(281); // '{' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_TryTargetExpr(); + shift(287); // '}' + eventHandler.endNonterminal("TryClause", e0); + } + + function try_TryClause() + { + shiftT(256); // 'try' + lookahead1W(90); // S^WS | '(:' | '{' + shiftT(281); // '{' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_TryTargetExpr(); + shiftT(287); // '}' + } + + function parse_TryTargetExpr() + { + eventHandler.startNonterminal("TryTargetExpr", e0); + parse_Expr(); + eventHandler.endNonterminal("TryTargetExpr", e0); + } + + function try_TryTargetExpr() + { + try_Expr(); + } + + function parse_CatchClause() + { + eventHandler.startNonterminal("CatchClause", e0); + shift(92); // 'catch' + lookahead1W(248); // Wildcard | EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_CatchErrorList(); + shift(281); // '{' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_Expr(); + shift(287); // '}' + eventHandler.endNonterminal("CatchClause", e0); + } + + function try_CatchClause() + { + shiftT(92); // 'catch' + lookahead1W(248); // Wildcard | EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + try_CatchErrorList(); + shiftT(281); // '{' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_Expr(); + shiftT(287); // '}' + } + + function parse_CatchErrorList() + { + eventHandler.startNonterminal("CatchErrorList", e0); + parse_NameTest(); + for (;;) + { + lookahead1W(140); // S^WS | '(:' | '{' | '|' + if (l1 != 284) // '|' + { + break; + } + shift(284); // '|' + lookahead1W(248); // Wildcard | EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_NameTest(); + } + eventHandler.endNonterminal("CatchErrorList", e0); + } + + function try_CatchErrorList() + { + try_NameTest(); + for (;;) + { + lookahead1W(140); // S^WS | '(:' | '{' | '|' + if (l1 != 284) // '|' + { + break; + } + shiftT(284); // '|' + lookahead1W(248); // Wildcard | EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + try_NameTest(); + } + } + + function parse_OrExpr() + { + eventHandler.startNonterminal("OrExpr", e0); + parse_AndExpr(); + for (;;) + { + if (l1 != 204) // 'or' + { + break; + } + shift(204); // 'or' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_AndExpr(); + } + eventHandler.endNonterminal("OrExpr", e0); + } + + function try_OrExpr() + { + try_AndExpr(); + for (;;) + { + if (l1 != 204) // 'or' + { + break; + } + shiftT(204); // 'or' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_AndExpr(); + } + } + + function parse_AndExpr() + { + eventHandler.startNonterminal("AndExpr", e0); + parse_NotExpr(); + for (;;) + { + if (l1 != 76) // 'and' + { + break; + } + shift(76); // 'and' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_NotExpr(); + } + eventHandler.endNonterminal("AndExpr", e0); + } + + function try_AndExpr() + { + try_NotExpr(); + for (;;) + { + if (l1 != 76) // 'and' + { + break; + } + shiftT(76); // 'and' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_NotExpr(); + } + } + + function parse_NotExpr() + { + eventHandler.startNonterminal("NotExpr", e0); + if (l1 == 196) // 'not' + { + shift(196); // 'not' + } + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_ComparisonExpr(); + eventHandler.endNonterminal("NotExpr", e0); + } + + function try_NotExpr() + { + if (l1 == 196) // 'not' + { + shiftT(196); // 'not' + } + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_ComparisonExpr(); + } + + function parse_ComparisonExpr() + { + eventHandler.startNonterminal("ComparisonExpr", e0); + parse_FTContainsExpr(); + if (l1 == 27 // '!=' + || l1 == 55 // '<' + || l1 == 58 // '<<' + || l1 == 59 // '<=' + || l1 == 61 // '=' + || l1 == 62 // '>' + || l1 == 63 // '>=' + || l1 == 64 // '>>' + || l1 == 129 // 'eq' + || l1 == 148 // 'ge' + || l1 == 152 // 'gt' + || l1 == 166 // 'is' + || l1 == 175 // 'le' + || l1 == 181 // 'lt' + || l1 == 189) // 'ne' + { + switch (l1) + { + case 129: // 'eq' + case 148: // 'ge' + case 152: // 'gt' + case 175: // 'le' + case 181: // 'lt' + case 189: // 'ne' + whitespace(); + parse_ValueComp(); + break; + case 58: // '<<' + case 64: // '>>' + case 166: // 'is' + whitespace(); + parse_NodeComp(); + break; + default: + whitespace(); + parse_GeneralComp(); + } + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_FTContainsExpr(); + } + eventHandler.endNonterminal("ComparisonExpr", e0); + } + + function try_ComparisonExpr() + { + try_FTContainsExpr(); + if (l1 == 27 // '!=' + || l1 == 55 // '<' + || l1 == 58 // '<<' + || l1 == 59 // '<=' + || l1 == 61 // '=' + || l1 == 62 // '>' + || l1 == 63 // '>=' + || l1 == 64 // '>>' + || l1 == 129 // 'eq' + || l1 == 148 // 'ge' + || l1 == 152 // 'gt' + || l1 == 166 // 'is' + || l1 == 175 // 'le' + || l1 == 181 // 'lt' + || l1 == 189) // 'ne' + { + switch (l1) + { + case 129: // 'eq' + case 148: // 'ge' + case 152: // 'gt' + case 175: // 'le' + case 181: // 'lt' + case 189: // 'ne' + try_ValueComp(); + break; + case 58: // '<<' + case 64: // '>>' + case 166: // 'is' + try_NodeComp(); + break; + default: + try_GeneralComp(); + } + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_FTContainsExpr(); + } + } + + function parse_FTContainsExpr() + { + eventHandler.startNonterminal("FTContainsExpr", e0); + parse_StringConcatExpr(); + if (l1 == 100) // 'contains' + { + shift(100); // 'contains' + lookahead1W(79); // S^WS | '(:' | 'text' + shift(249); // 'text' + lookahead1W(177); // StringLiteral | S^WS | '(' | '(#' | '(:' | 'ftnot' | '{' + whitespace(); + parse_FTSelection(); + if (l1 == 277) // 'without' + { + whitespace(); + parse_FTIgnoreOption(); + } + } + eventHandler.endNonterminal("FTContainsExpr", e0); + } + + function try_FTContainsExpr() + { + try_StringConcatExpr(); + if (l1 == 100) // 'contains' + { + shiftT(100); // 'contains' + lookahead1W(79); // S^WS | '(:' | 'text' + shiftT(249); // 'text' + lookahead1W(177); // StringLiteral | S^WS | '(' | '(#' | '(:' | 'ftnot' | '{' + try_FTSelection(); + if (l1 == 277) // 'without' + { + try_FTIgnoreOption(); + } + } + } + + function parse_StringConcatExpr() + { + eventHandler.startNonterminal("StringConcatExpr", e0); + parse_RangeExpr(); + for (;;) + { + if (l1 != 285) // '||' + { + break; + } + shift(285); // '||' + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_RangeExpr(); + } + eventHandler.endNonterminal("StringConcatExpr", e0); + } + + function try_StringConcatExpr() + { + try_RangeExpr(); + for (;;) + { + if (l1 != 285) // '||' + { + break; + } + shiftT(285); // '||' + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_RangeExpr(); + } + } + + function parse_RangeExpr() + { + eventHandler.startNonterminal("RangeExpr", e0); + parse_AdditiveExpr(); + if (l1 == 253) // 'to' + { + shift(253); // 'to' + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_AdditiveExpr(); + } + eventHandler.endNonterminal("RangeExpr", e0); + } + + function try_RangeExpr() + { + try_AdditiveExpr(); + if (l1 == 253) // 'to' + { + shiftT(253); // 'to' + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_AdditiveExpr(); + } + } + + function parse_AdditiveExpr() + { + eventHandler.startNonterminal("AdditiveExpr", e0); + parse_MultiplicativeExpr(); + for (;;) + { + if (l1 != 41 // '+' + && l1 != 43) // '-' + { + break; + } + switch (l1) + { + case 41: // '+' + shift(41); // '+' + break; + default: + shift(43); // '-' + } + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_MultiplicativeExpr(); + } + eventHandler.endNonterminal("AdditiveExpr", e0); + } + + function try_AdditiveExpr() + { + try_MultiplicativeExpr(); + for (;;) + { + if (l1 != 41 // '+' + && l1 != 43) // '-' + { + break; + } + switch (l1) + { + case 41: // '+' + shiftT(41); // '+' + break; + default: + shiftT(43); // '-' + } + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_MultiplicativeExpr(); + } + } + + function parse_MultiplicativeExpr() + { + eventHandler.startNonterminal("MultiplicativeExpr", e0); + parse_UnionExpr(); + for (;;) + { + if (l1 != 39 // '*' + && l1 != 119 // 'div' + && l1 != 153 // 'idiv' + && l1 != 183) // 'mod' + { + break; + } + switch (l1) + { + case 39: // '*' + shift(39); // '*' + break; + case 119: // 'div' + shift(119); // 'div' + break; + case 153: // 'idiv' + shift(153); // 'idiv' + break; + default: + shift(183); // 'mod' + } + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_UnionExpr(); + } + eventHandler.endNonterminal("MultiplicativeExpr", e0); + } + + function try_MultiplicativeExpr() + { + try_UnionExpr(); + for (;;) + { + if (l1 != 39 // '*' + && l1 != 119 // 'div' + && l1 != 153 // 'idiv' + && l1 != 183) // 'mod' + { + break; + } + switch (l1) + { + case 39: // '*' + shiftT(39); // '*' + break; + case 119: // 'div' + shiftT(119); // 'div' + break; + case 153: // 'idiv' + shiftT(153); // 'idiv' + break; + default: + shiftT(183); // 'mod' + } + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_UnionExpr(); + } + } + + function parse_UnionExpr() + { + eventHandler.startNonterminal("UnionExpr", e0); + parse_IntersectExceptExpr(); + for (;;) + { + if (l1 != 260 // 'union' + && l1 != 284) // '|' + { + break; + } + switch (l1) + { + case 260: // 'union' + shift(260); // 'union' + break; + default: + shift(284); // '|' + } + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_IntersectExceptExpr(); + } + eventHandler.endNonterminal("UnionExpr", e0); + } + + function try_UnionExpr() + { + try_IntersectExceptExpr(); + for (;;) + { + if (l1 != 260 // 'union' + && l1 != 284) // '|' + { + break; + } + switch (l1) + { + case 260: // 'union' + shiftT(260); // 'union' + break; + default: + shiftT(284); // '|' + } + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_IntersectExceptExpr(); + } + } + + function parse_IntersectExceptExpr() + { + eventHandler.startNonterminal("IntersectExceptExpr", e0); + parse_InstanceofExpr(); + for (;;) + { + lookahead1W(221); // S^WS | EOF | '!=' | '(:' | ')' | '*' | '+' | ',' | '-' | ':' | ';' | '<' | '<<' | + if (l1 != 132 // 'except' + && l1 != 164) // 'intersect' + { + break; + } + switch (l1) + { + case 164: // 'intersect' + shift(164); // 'intersect' + break; + default: + shift(132); // 'except' + } + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_InstanceofExpr(); + } + eventHandler.endNonterminal("IntersectExceptExpr", e0); + } + + function try_IntersectExceptExpr() + { + try_InstanceofExpr(); + for (;;) + { + lookahead1W(221); // S^WS | EOF | '!=' | '(:' | ')' | '*' | '+' | ',' | '-' | ':' | ';' | '<' | '<<' | + if (l1 != 132 // 'except' + && l1 != 164) // 'intersect' + { + break; + } + switch (l1) + { + case 164: // 'intersect' + shiftT(164); // 'intersect' + break; + default: + shiftT(132); // 'except' + } + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_InstanceofExpr(); + } + } + + function parse_InstanceofExpr() + { + eventHandler.startNonterminal("InstanceofExpr", e0); + parse_TreatExpr(); + lookahead1W(222); // S^WS | EOF | '!=' | '(:' | ')' | '*' | '+' | ',' | '-' | ':' | ';' | '<' | '<<' | + if (l1 == 162) // 'instance' + { + shift(162); // 'instance' + lookahead1W(67); // S^WS | '(:' | 'of' + shift(200); // 'of' + lookahead1W(253); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_SequenceType(); + } + eventHandler.endNonterminal("InstanceofExpr", e0); + } + + function try_InstanceofExpr() + { + try_TreatExpr(); + lookahead1W(222); // S^WS | EOF | '!=' | '(:' | ')' | '*' | '+' | ',' | '-' | ':' | ';' | '<' | '<<' | + if (l1 == 162) // 'instance' + { + shiftT(162); // 'instance' + lookahead1W(67); // S^WS | '(:' | 'of' + shiftT(200); // 'of' + lookahead1W(253); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + try_SequenceType(); + } + } + + function parse_TreatExpr() + { + eventHandler.startNonterminal("TreatExpr", e0); + parse_CastableExpr(); + lookahead1W(223); // S^WS | EOF | '!=' | '(:' | ')' | '*' | '+' | ',' | '-' | ':' | ';' | '<' | '<<' | + if (l1 == 254) // 'treat' + { + shift(254); // 'treat' + lookahead1W(33); // S^WS | '(:' | 'as' + shift(80); // 'as' + lookahead1W(253); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_SequenceType(); + } + eventHandler.endNonterminal("TreatExpr", e0); + } + + function try_TreatExpr() + { + try_CastableExpr(); + lookahead1W(223); // S^WS | EOF | '!=' | '(:' | ')' | '*' | '+' | ',' | '-' | ':' | ';' | '<' | '<<' | + if (l1 == 254) // 'treat' + { + shiftT(254); // 'treat' + lookahead1W(33); // S^WS | '(:' | 'as' + shiftT(80); // 'as' + lookahead1W(253); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + try_SequenceType(); + } + } + + function parse_CastableExpr() + { + eventHandler.startNonterminal("CastableExpr", e0); + parse_CastExpr(); + lookahead1W(224); // S^WS | EOF | '!=' | '(:' | ')' | '*' | '+' | ',' | '-' | ':' | ';' | '<' | '<<' | + if (l1 == 91) // 'castable' + { + shift(91); // 'castable' + lookahead1W(33); // S^WS | '(:' | 'as' + shift(80); // 'as' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_SingleType(); + } + eventHandler.endNonterminal("CastableExpr", e0); + } + + function try_CastableExpr() + { + try_CastExpr(); + lookahead1W(224); // S^WS | EOF | '!=' | '(:' | ')' | '*' | '+' | ',' | '-' | ':' | ';' | '<' | '<<' | + if (l1 == 91) // 'castable' + { + shiftT(91); // 'castable' + lookahead1W(33); // S^WS | '(:' | 'as' + shiftT(80); // 'as' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + try_SingleType(); + } + } + + function parse_CastExpr() + { + eventHandler.startNonterminal("CastExpr", e0); + parse_UnaryExpr(); + lookahead1W(226); // S^WS | EOF | '!=' | '(:' | ')' | '*' | '+' | ',' | '-' | ':' | ';' | '<' | '<<' | + if (l1 == 90) // 'cast' + { + shift(90); // 'cast' + lookahead1W(33); // S^WS | '(:' | 'as' + shift(80); // 'as' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_SingleType(); + } + eventHandler.endNonterminal("CastExpr", e0); + } + + function try_CastExpr() + { + try_UnaryExpr(); + lookahead1W(226); // S^WS | EOF | '!=' | '(:' | ')' | '*' | '+' | ',' | '-' | ':' | ';' | '<' | '<<' | + if (l1 == 90) // 'cast' + { + shiftT(90); // 'cast' + lookahead1W(33); // S^WS | '(:' | 'as' + shiftT(80); // 'as' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + try_SingleType(); + } + } + + function parse_UnaryExpr() + { + eventHandler.startNonterminal("UnaryExpr", e0); + for (;;) + { + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + if (l1 != 41 // '+' + && l1 != 43) // '-' + { + break; + } + switch (l1) + { + case 43: // '-' + shift(43); // '-' + break; + default: + shift(41); // '+' + } + } + whitespace(); + parse_ValueExpr(); + eventHandler.endNonterminal("UnaryExpr", e0); + } + + function try_UnaryExpr() + { + for (;;) + { + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + if (l1 != 41 // '+' + && l1 != 43) // '-' + { + break; + } + switch (l1) + { + case 43: // '-' + shiftT(43); // '-' + break; + default: + shiftT(41); // '+' + } + } + try_ValueExpr(); + } + + function parse_ValueExpr() + { + eventHandler.startNonterminal("ValueExpr", e0); + switch (l1) + { + case 266: // 'validate' + lookahead2W(188); // S^WS | '#' | '(' | '(:' | 'lax' | 'strict' | 'type' | '{' + break; + default: + lk = l1; + } + switch (lk) + { + case 89354: // 'validate' 'lax' + case 125706: // 'validate' 'strict' + case 132362: // 'validate' 'type' + case 144138: // 'validate' '{' + parse_ValidateExpr(); + break; + case 36: // '(#' + parse_ExtensionExpr(); + break; + default: + parse_SimpleMapExpr(); + } + eventHandler.endNonterminal("ValueExpr", e0); + } + + function try_ValueExpr() + { + switch (l1) + { + case 266: // 'validate' + lookahead2W(188); // S^WS | '#' | '(' | '(:' | 'lax' | 'strict' | 'type' | '{' + break; + default: + lk = l1; + } + switch (lk) + { + case 89354: // 'validate' 'lax' + case 125706: // 'validate' 'strict' + case 132362: // 'validate' 'type' + case 144138: // 'validate' '{' + try_ValidateExpr(); + break; + case 36: // '(#' + try_ExtensionExpr(); + break; + default: + try_SimpleMapExpr(); + } + } + + function parse_SimpleMapExpr() + { + eventHandler.startNonterminal("SimpleMapExpr", e0); + parse_PathExpr(); + for (;;) + { + if (l1 != 26) // '!' + { + break; + } + shift(26); // '!' + lookahead1W(262); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_PathExpr(); + } + eventHandler.endNonterminal("SimpleMapExpr", e0); + } + + function try_SimpleMapExpr() + { + try_PathExpr(); + for (;;) + { + if (l1 != 26) // '!' + { + break; + } + shiftT(26); // '!' + lookahead1W(262); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_PathExpr(); + } + } + + function parse_GeneralComp() + { + eventHandler.startNonterminal("GeneralComp", e0); + switch (l1) + { + case 61: // '=' + shift(61); // '=' + break; + case 27: // '!=' + shift(27); // '!=' + break; + case 55: // '<' + shift(55); // '<' + break; + case 59: // '<=' + shift(59); // '<=' + break; + case 62: // '>' + shift(62); // '>' + break; + default: + shift(63); // '>=' + } + eventHandler.endNonterminal("GeneralComp", e0); + } + + function try_GeneralComp() + { + switch (l1) + { + case 61: // '=' + shiftT(61); // '=' + break; + case 27: // '!=' + shiftT(27); // '!=' + break; + case 55: // '<' + shiftT(55); // '<' + break; + case 59: // '<=' + shiftT(59); // '<=' + break; + case 62: // '>' + shiftT(62); // '>' + break; + default: + shiftT(63); // '>=' + } + } + + function parse_ValueComp() + { + eventHandler.startNonterminal("ValueComp", e0); + switch (l1) + { + case 129: // 'eq' + shift(129); // 'eq' + break; + case 189: // 'ne' + shift(189); // 'ne' + break; + case 181: // 'lt' + shift(181); // 'lt' + break; + case 175: // 'le' + shift(175); // 'le' + break; + case 152: // 'gt' + shift(152); // 'gt' + break; + default: + shift(148); // 'ge' + } + eventHandler.endNonterminal("ValueComp", e0); + } + + function try_ValueComp() + { + switch (l1) + { + case 129: // 'eq' + shiftT(129); // 'eq' + break; + case 189: // 'ne' + shiftT(189); // 'ne' + break; + case 181: // 'lt' + shiftT(181); // 'lt' + break; + case 175: // 'le' + shiftT(175); // 'le' + break; + case 152: // 'gt' + shiftT(152); // 'gt' + break; + default: + shiftT(148); // 'ge' + } + } + + function parse_NodeComp() + { + eventHandler.startNonterminal("NodeComp", e0); + switch (l1) + { + case 166: // 'is' + shift(166); // 'is' + break; + case 58: // '<<' + shift(58); // '<<' + break; + default: + shift(64); // '>>' + } + eventHandler.endNonterminal("NodeComp", e0); + } + + function try_NodeComp() + { + switch (l1) + { + case 166: // 'is' + shiftT(166); // 'is' + break; + case 58: // '<<' + shiftT(58); // '<<' + break; + default: + shiftT(64); // '>>' + } + } + + function parse_ValidateExpr() + { + eventHandler.startNonterminal("ValidateExpr", e0); + shift(266); // 'validate' + lookahead1W(175); // S^WS | '(:' | 'lax' | 'strict' | 'type' | '{' + if (l1 != 281) // '{' + { + switch (l1) + { + case 258: // 'type' + shift(258); // 'type' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_TypeName(); + break; + default: + whitespace(); + parse_ValidationMode(); + } + } + lookahead1W(90); // S^WS | '(:' | '{' + shift(281); // '{' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_Expr(); + shift(287); // '}' + eventHandler.endNonterminal("ValidateExpr", e0); + } + + function try_ValidateExpr() + { + shiftT(266); // 'validate' + lookahead1W(175); // S^WS | '(:' | 'lax' | 'strict' | 'type' | '{' + if (l1 != 281) // '{' + { + switch (l1) + { + case 258: // 'type' + shiftT(258); // 'type' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + try_TypeName(); + break; + default: + try_ValidationMode(); + } + } + lookahead1W(90); // S^WS | '(:' | '{' + shiftT(281); // '{' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_Expr(); + shiftT(287); // '}' + } + + function parse_ValidationMode() + { + eventHandler.startNonterminal("ValidationMode", e0); + switch (l1) + { + case 174: // 'lax' + shift(174); // 'lax' + break; + default: + shift(245); // 'strict' + } + eventHandler.endNonterminal("ValidationMode", e0); + } + + function try_ValidationMode() + { + switch (l1) + { + case 174: // 'lax' + shiftT(174); // 'lax' + break; + default: + shiftT(245); // 'strict' + } + } + + function parse_ExtensionExpr() + { + eventHandler.startNonterminal("ExtensionExpr", e0); + for (;;) + { + whitespace(); + parse_Pragma(); + lookahead1W(104); // S^WS | '(#' | '(:' | '{' + if (l1 != 36) // '(#' + { + break; + } + } + shift(281); // '{' + lookahead1W(274); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + if (l1 != 287) // '}' + { + whitespace(); + parse_Expr(); + } + shift(287); // '}' + eventHandler.endNonterminal("ExtensionExpr", e0); + } + + function try_ExtensionExpr() + { + for (;;) + { + try_Pragma(); + lookahead1W(104); // S^WS | '(#' | '(:' | '{' + if (l1 != 36) // '(#' + { + break; + } + } + shiftT(281); // '{' + lookahead1W(274); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + if (l1 != 287) // '}' + { + try_Expr(); + } + shiftT(287); // '}' + } + + function parse_Pragma() + { + eventHandler.startNonterminal("Pragma", e0); + shift(36); // '(#' + lookahead1(242); // EQName^Token | S | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + if (l1 == 21) // S + { + shift(21); // S + } + parse_EQName(); + lookahead1(10); // S | '#)' + if (l1 == 21) // S + { + shift(21); // S + lookahead1(0); // PragmaContents + shift(1); // PragmaContents + } + lookahead1(5); // '#)' + shift(30); // '#)' + eventHandler.endNonterminal("Pragma", e0); + } + + function try_Pragma() + { + shiftT(36); // '(#' + lookahead1(242); // EQName^Token | S | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + if (l1 == 21) // S + { + shiftT(21); // S + } + try_EQName(); + lookahead1(10); // S | '#)' + if (l1 == 21) // S + { + shiftT(21); // S + lookahead1(0); // PragmaContents + shiftT(1); // PragmaContents + } + lookahead1(5); // '#)' + shiftT(30); // '#)' + } + + function parse_PathExpr() + { + eventHandler.startNonterminal("PathExpr", e0); + switch (l1) + { + case 47: // '/' + shift(47); // '/' + lookahead1W(288); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + switch (l1) + { + case 25: // EOF + case 26: // '!' + case 27: // '!=' + case 38: // ')' + case 39: // '*' + case 41: // '+' + case 42: // ',' + case 43: // '-' + case 50: // ':' + case 54: // ';' + case 58: // '<<' + case 59: // '<=' + case 61: // '=' + case 62: // '>' + case 63: // '>=' + case 64: // '>>' + case 70: // ']' + case 88: // 'by' + case 100: // 'contains' + case 209: // 'paragraphs' + case 237: // 'sentences' + case 252: // 'times' + case 279: // 'words' + case 284: // '|' + case 285: // '||' + case 286: // '|}' + case 287: // '}' + break; + default: + whitespace(); + parse_RelativePathExpr(); + } + break; + case 48: // '//' + shift(48); // '//' + lookahead1W(259); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_RelativePathExpr(); + break; + default: + parse_RelativePathExpr(); + } + eventHandler.endNonterminal("PathExpr", e0); + } + + function try_PathExpr() + { + switch (l1) + { + case 47: // '/' + shiftT(47); // '/' + lookahead1W(288); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + switch (l1) + { + case 25: // EOF + case 26: // '!' + case 27: // '!=' + case 38: // ')' + case 39: // '*' + case 41: // '+' + case 42: // ',' + case 43: // '-' + case 50: // ':' + case 54: // ';' + case 58: // '<<' + case 59: // '<=' + case 61: // '=' + case 62: // '>' + case 63: // '>=' + case 64: // '>>' + case 70: // ']' + case 88: // 'by' + case 100: // 'contains' + case 209: // 'paragraphs' + case 237: // 'sentences' + case 252: // 'times' + case 279: // 'words' + case 284: // '|' + case 285: // '||' + case 286: // '|}' + case 287: // '}' + break; + default: + try_RelativePathExpr(); + } + break; + case 48: // '//' + shiftT(48); // '//' + lookahead1W(259); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_RelativePathExpr(); + break; + default: + try_RelativePathExpr(); + } + } + + function parse_RelativePathExpr() + { + eventHandler.startNonterminal("RelativePathExpr", e0); + parse_PostfixExpr(); + for (;;) + { + switch (l1) + { + case 26: // '!' + lookahead2W(264); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + break; + default: + lk = l1; + } + if (lk != 25 // EOF + && lk != 27 // '!=' + && lk != 38 // ')' + && lk != 39 // '*' + && lk != 41 // '+' + && lk != 42 // ',' + && lk != 43 // '-' + && lk != 47 // '/' + && lk != 48 // '//' + && lk != 50 // ':' + && lk != 54 // ';' + && lk != 55 // '<' + && lk != 58 // '<<' + && lk != 59 // '<=' + && lk != 61 // '=' + && lk != 62 // '>' + && lk != 63 // '>=' + && lk != 64 // '>>' + && lk != 70 // ']' + && lk != 71 // 'after' + && lk != 76 // 'and' + && lk != 80 // 'as' + && lk != 81 // 'ascending' + && lk != 82 // 'at' + && lk != 85 // 'before' + && lk != 88 // 'by' + && lk != 89 // 'case' + && lk != 90 // 'cast' + && lk != 91 // 'castable' + && lk != 95 // 'collation' + && lk != 100 // 'contains' + && lk != 106 // 'count' + && lk != 110 // 'default' + && lk != 114 // 'descending' + && lk != 119 // 'div' + && lk != 123 // 'else' + && lk != 124 // 'empty' + && lk != 127 // 'end' + && lk != 129 // 'eq' + && lk != 132 // 'except' + && lk != 139 // 'for' + && lk != 148 // 'ge' + && lk != 150 // 'group' + && lk != 152 // 'gt' + && lk != 153 // 'idiv' + && lk != 162 // 'instance' + && lk != 164 // 'intersect' + && lk != 165 // 'into' + && lk != 166 // 'is' + && lk != 175 // 'le' + && lk != 177 // 'let' + && lk != 181 // 'lt' + && lk != 183 // 'mod' + && lk != 184 // 'modify' + && lk != 189 // 'ne' + && lk != 202 // 'only' + && lk != 204 // 'or' + && lk != 205 // 'order' + && lk != 209 // 'paragraphs' + && lk != 224 // 'return' + && lk != 228 // 'satisfies' + && lk != 237 // 'sentences' + && lk != 241 // 'stable' + && lk != 242 // 'start' + && lk != 252 // 'times' + && lk != 253 // 'to' + && lk != 254 // 'treat' + && lk != 260 // 'union' + && lk != 272 // 'where' + && lk != 276 // 'with' + && lk != 279 // 'words' + && lk != 284 // '|' + && lk != 285 // '||' + && lk != 286 // '|}' + && lk != 287 // '}' + && lk != 2586 // '!' Wildcard + && lk != 23578 // '!' '..' + && lk != 24090 // '!' '/' + && lk != 24602 // '!' '//' + && lk != 34330) // '!' '@' + { + lk = memoized(3, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + switch (l1) + { + case 47: // '/' + shiftT(47); // '/' + break; + case 48: // '//' + shiftT(48); // '//' + break; + default: + shiftT(26); // '!' + } + lookahead1W(263); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + try_StepExpr(); + lk = -1; + } + catch (p1A) + { + lk = -2; + } + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(3, e0, lk); + } + } + if (lk != -1 + && lk != 47 // '/' + && lk != 48 // '//' + && lk != 2586 // '!' Wildcard + && lk != 23578 // '!' '..' + && lk != 34330) // '!' '@' + { + break; + } + switch (l1) + { + case 47: // '/' + shift(47); // '/' + break; + case 48: // '//' + shift(48); // '//' + break; + default: + shift(26); // '!' + } + lookahead1W(263); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + whitespace(); + parse_StepExpr(); + } + eventHandler.endNonterminal("RelativePathExpr", e0); + } + + function try_RelativePathExpr() + { + try_PostfixExpr(); + for (;;) + { + switch (l1) + { + case 26: // '!' + lookahead2W(264); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + break; + default: + lk = l1; + } + if (lk != 25 // EOF + && lk != 27 // '!=' + && lk != 38 // ')' + && lk != 39 // '*' + && lk != 41 // '+' + && lk != 42 // ',' + && lk != 43 // '-' + && lk != 47 // '/' + && lk != 48 // '//' + && lk != 50 // ':' + && lk != 54 // ';' + && lk != 55 // '<' + && lk != 58 // '<<' + && lk != 59 // '<=' + && lk != 61 // '=' + && lk != 62 // '>' + && lk != 63 // '>=' + && lk != 64 // '>>' + && lk != 70 // ']' + && lk != 71 // 'after' + && lk != 76 // 'and' + && lk != 80 // 'as' + && lk != 81 // 'ascending' + && lk != 82 // 'at' + && lk != 85 // 'before' + && lk != 88 // 'by' + && lk != 89 // 'case' + && lk != 90 // 'cast' + && lk != 91 // 'castable' + && lk != 95 // 'collation' + && lk != 100 // 'contains' + && lk != 106 // 'count' + && lk != 110 // 'default' + && lk != 114 // 'descending' + && lk != 119 // 'div' + && lk != 123 // 'else' + && lk != 124 // 'empty' + && lk != 127 // 'end' + && lk != 129 // 'eq' + && lk != 132 // 'except' + && lk != 139 // 'for' + && lk != 148 // 'ge' + && lk != 150 // 'group' + && lk != 152 // 'gt' + && lk != 153 // 'idiv' + && lk != 162 // 'instance' + && lk != 164 // 'intersect' + && lk != 165 // 'into' + && lk != 166 // 'is' + && lk != 175 // 'le' + && lk != 177 // 'let' + && lk != 181 // 'lt' + && lk != 183 // 'mod' + && lk != 184 // 'modify' + && lk != 189 // 'ne' + && lk != 202 // 'only' + && lk != 204 // 'or' + && lk != 205 // 'order' + && lk != 209 // 'paragraphs' + && lk != 224 // 'return' + && lk != 228 // 'satisfies' + && lk != 237 // 'sentences' + && lk != 241 // 'stable' + && lk != 242 // 'start' + && lk != 252 // 'times' + && lk != 253 // 'to' + && lk != 254 // 'treat' + && lk != 260 // 'union' + && lk != 272 // 'where' + && lk != 276 // 'with' + && lk != 279 // 'words' + && lk != 284 // '|' + && lk != 285 // '||' + && lk != 286 // '|}' + && lk != 287 // '}' + && lk != 2586 // '!' Wildcard + && lk != 23578 // '!' '..' + && lk != 24090 // '!' '/' + && lk != 24602 // '!' '//' + && lk != 34330) // '!' '@' + { + lk = memoized(3, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + switch (l1) + { + case 47: // '/' + shiftT(47); // '/' + break; + case 48: // '//' + shiftT(48); // '//' + break; + default: + shiftT(26); // '!' + } + lookahead1W(263); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + try_StepExpr(); + memoize(3, e0A, -1); + continue; + } + catch (p1A) + { + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(3, e0A, -2); + break; + } + } + } + if (lk != -1 + && lk != 47 // '/' + && lk != 48 // '//' + && lk != 2586 // '!' Wildcard + && lk != 23578 // '!' '..' + && lk != 34330) // '!' '@' + { + break; + } + switch (l1) + { + case 47: // '/' + shiftT(47); // '/' + break; + case 48: // '//' + shiftT(48); // '//' + break; + default: + shiftT(26); // '!' + } + lookahead1W(263); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + try_StepExpr(); + } + } + + function parse_StepExpr() + { + eventHandler.startNonterminal("StepExpr", e0); + switch (l1) + { + case 83: // 'attribute' + lookahead2W(287); // EQName^Token | S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | ')' | '*' | '+' | + break; + case 122: // 'element' + lookahead2W(286); // EQName^Token | S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | ')' | '*' | '+' | + break; + case 187: // 'namespace' + case 220: // 'processing-instruction' + lookahead2W(284); // NCName^Token | S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | ')' | '*' | '+' | + break; + case 135: // 'false' + case 197: // 'null' + case 255: // 'true' + lookahead2W(236); // S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | ')' | '*' | '+' | ',' | '-' | '.' | + break; + case 97: // 'comment' + case 120: // 'document' + case 206: // 'ordered' + case 249: // 'text' + case 262: // 'unordered' + lookahead2W(238); // S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | ')' | '*' | '+' | ',' | '-' | '/' | + break; + case 79: // 'array' + case 125: // 'empty-sequence' + case 154: // 'if' + case 167: // 'item' + case 169: // 'json-item' + case 247: // 'structured-item' + case 248: // 'switch' + case 259: // 'typeswitch' + lookahead2W(229); // S^WS | EOF | '!' | '!=' | '#' | '(:' | ')' | '*' | '+' | ',' | '-' | '/' | '//' | + break; + case 74: // 'ancestor' + case 75: // 'ancestor-or-self' + case 94: // 'child' + case 112: // 'descendant' + case 113: // 'descendant-or-self' + case 137: // 'following' + case 138: // 'following-sibling' + case 210: // 'parent' + case 216: // 'preceding' + case 217: // 'preceding-sibling' + case 234: // 'self' + lookahead2W(237); // S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | ')' | '*' | '+' | ',' | '-' | '/' | + break; + case 6: // EQName^Token + case 71: // 'after' + case 73: // 'allowing' + case 76: // 'and' + case 78: // 'append' + case 80: // 'as' + case 81: // 'ascending' + case 82: // 'at' + case 84: // 'base-uri' + case 85: // 'before' + case 86: // 'boundary-space' + case 87: // 'break' + case 89: // 'case' + case 90: // 'cast' + case 91: // 'castable' + case 92: // 'catch' + case 95: // 'collation' + case 98: // 'constraint' + case 99: // 'construction' + case 102: // 'context' + case 103: // 'continue' + case 104: // 'copy' + case 105: // 'copy-namespaces' + case 106: // 'count' + case 107: // 'decimal-format' + case 109: // 'declare' + case 110: // 'default' + case 111: // 'delete' + case 114: // 'descending' + case 119: // 'div' + case 121: // 'document-node' + case 123: // 'else' + case 124: // 'empty' + case 126: // 'encoding' + case 127: // 'end' + case 129: // 'eq' + case 130: // 'every' + case 132: // 'except' + case 133: // 'exit' + case 134: // 'external' + case 136: // 'first' + case 139: // 'for' + case 142: // 'from' + case 143: // 'ft-option' + case 147: // 'function' + case 148: // 'ge' + case 150: // 'group' + case 152: // 'gt' + case 153: // 'idiv' + case 155: // 'import' + case 156: // 'in' + case 157: // 'index' + case 161: // 'insert' + case 162: // 'instance' + case 163: // 'integrity' + case 164: // 'intersect' + case 165: // 'into' + case 166: // 'is' + case 168: // 'json' + case 170: // 'jsoniq' + case 173: // 'last' + case 174: // 'lax' + case 175: // 'le' + case 177: // 'let' + case 179: // 'loop' + case 181: // 'lt' + case 183: // 'mod' + case 184: // 'modify' + case 185: // 'module' + case 188: // 'namespace-node' + case 189: // 'ne' + case 194: // 'node' + case 195: // 'nodes' + case 198: // 'object' + case 202: // 'only' + case 203: // 'option' + case 204: // 'or' + case 205: // 'order' + case 207: // 'ordering' + case 222: // 'rename' + case 223: // 'replace' + case 224: // 'return' + case 225: // 'returning' + case 226: // 'revalidation' + case 228: // 'satisfies' + case 229: // 'schema' + case 230: // 'schema-attribute' + case 231: // 'schema-element' + case 232: // 'score' + case 233: // 'select' + case 239: // 'sliding' + case 240: // 'some' + case 241: // 'stable' + case 242: // 'start' + case 245: // 'strict' + case 253: // 'to' + case 254: // 'treat' + case 256: // 'try' + case 257: // 'tumbling' + case 258: // 'type' + case 260: // 'union' + case 263: // 'updating' + case 266: // 'validate' + case 267: // 'value' + case 268: // 'variable' + case 269: // 'version' + case 272: // 'where' + case 273: // 'while' + case 276: // 'with' + lookahead2W(233); // S^WS | EOF | '!' | '!=' | '#' | '(' | '(:' | ')' | '*' | '+' | ',' | '-' | '/' | + break; + default: + lk = l1; + } + if (lk == 12935 // 'false' EOF + || lk == 12997 // 'null' EOF + || lk == 13055 // 'true' EOF + || lk == 13447 // 'false' '!' + || lk == 13509 // 'null' '!' + || lk == 13567 // 'true' '!' + || lk == 13959 // 'false' '!=' + || lk == 14021 // 'null' '!=' + || lk == 14079 // 'true' '!=' + || lk == 19591 // 'false' ')' + || lk == 19653 // 'null' ')' + || lk == 19711 // 'true' ')' + || lk == 20103 // 'false' '*' + || lk == 20165 // 'null' '*' + || lk == 20223 // 'true' '*' + || lk == 21127 // 'false' '+' + || lk == 21189 // 'null' '+' + || lk == 21247 // 'true' '+' + || lk == 21639 // 'false' ',' + || lk == 21701 // 'null' ',' + || lk == 21759 // 'true' ',' + || lk == 22151 // 'false' '-' + || lk == 22213 // 'null' '-' + || lk == 22271 // 'true' '-' + || lk == 24199 // 'false' '/' + || lk == 24261 // 'null' '/' + || lk == 24319 // 'true' '/' + || lk == 24711 // 'false' '//' + || lk == 24773 // 'null' '//' + || lk == 24831 // 'true' '//' + || lk == 25735 // 'false' ':' + || lk == 25797 // 'null' ':' + || lk == 25855 // 'true' ':' + || lk == 27783 // 'false' ';' + || lk == 27845 // 'null' ';' + || lk == 27903 // 'true' ';' + || lk == 28295 // 'false' '<' + || lk == 28357 // 'null' '<' + || lk == 28415 // 'true' '<' + || lk == 29831 // 'false' '<<' + || lk == 29893 // 'null' '<<' + || lk == 29951 // 'true' '<<' + || lk == 30343 // 'false' '<=' + || lk == 30405 // 'null' '<=' + || lk == 30463 // 'true' '<=' + || lk == 31367 // 'false' '=' + || lk == 31429 // 'null' '=' + || lk == 31487 // 'true' '=' + || lk == 31879 // 'false' '>' + || lk == 31941 // 'null' '>' + || lk == 31999 // 'true' '>' + || lk == 32391 // 'false' '>=' + || lk == 32453 // 'null' '>=' + || lk == 32511 // 'true' '>=' + || lk == 32903 // 'false' '>>' + || lk == 32965 // 'null' '>>' + || lk == 33023 // 'true' '>>' + || lk == 35463 // 'false' '[' + || lk == 35525 // 'null' '[' + || lk == 35583 // 'true' '[' + || lk == 35975 // 'false' ']' + || lk == 36037 // 'null' ']' + || lk == 36095 // 'true' ']' + || lk == 36435 // 'attribute' 'after' + || lk == 36474 // 'element' 'after' + || lk == 36487 // 'false' 'after' + || lk == 36539 // 'namespace' 'after' + || lk == 36549 // 'null' 'after' + || lk == 36572 // 'processing-instruction' 'after' + || lk == 36607 // 'true' 'after' + || lk == 38995 // 'attribute' 'and' + || lk == 39034 // 'element' 'and' + || lk == 39047 // 'false' 'and' + || lk == 39099 // 'namespace' 'and' + || lk == 39109 // 'null' 'and' + || lk == 39132 // 'processing-instruction' 'and' + || lk == 39167 // 'true' 'and' + || lk == 41043 // 'attribute' 'as' + || lk == 41082 // 'element' 'as' + || lk == 41095 // 'false' 'as' + || lk == 41147 // 'namespace' 'as' + || lk == 41157 // 'null' 'as' + || lk == 41180 // 'processing-instruction' 'as' + || lk == 41215 // 'true' 'as' + || lk == 41555 // 'attribute' 'ascending' + || lk == 41594 // 'element' 'ascending' + || lk == 41607 // 'false' 'ascending' + || lk == 41659 // 'namespace' 'ascending' + || lk == 41669 // 'null' 'ascending' + || lk == 41692 // 'processing-instruction' 'ascending' + || lk == 41727 // 'true' 'ascending' + || lk == 42067 // 'attribute' 'at' + || lk == 42106 // 'element' 'at' + || lk == 42119 // 'false' 'at' + || lk == 42171 // 'namespace' 'at' + || lk == 42181 // 'null' 'at' + || lk == 42204 // 'processing-instruction' 'at' + || lk == 42239 // 'true' 'at' + || lk == 43603 // 'attribute' 'before' + || lk == 43642 // 'element' 'before' + || lk == 43655 // 'false' 'before' + || lk == 43707 // 'namespace' 'before' + || lk == 43717 // 'null' 'before' + || lk == 43740 // 'processing-instruction' 'before' + || lk == 43775 // 'true' 'before' + || lk == 45191 // 'false' 'by' + || lk == 45253 // 'null' 'by' + || lk == 45311 // 'true' 'by' + || lk == 45651 // 'attribute' 'case' + || lk == 45690 // 'element' 'case' + || lk == 45703 // 'false' 'case' + || lk == 45755 // 'namespace' 'case' + || lk == 45765 // 'null' 'case' + || lk == 45788 // 'processing-instruction' 'case' + || lk == 45823 // 'true' 'case' + || lk == 46163 // 'attribute' 'cast' + || lk == 46202 // 'element' 'cast' + || lk == 46215 // 'false' 'cast' + || lk == 46267 // 'namespace' 'cast' + || lk == 46277 // 'null' 'cast' + || lk == 46300 // 'processing-instruction' 'cast' + || lk == 46335 // 'true' 'cast' + || lk == 46675 // 'attribute' 'castable' + || lk == 46714 // 'element' 'castable' + || lk == 46727 // 'false' 'castable' + || lk == 46779 // 'namespace' 'castable' + || lk == 46789 // 'null' 'castable' + || lk == 46812 // 'processing-instruction' 'castable' + || lk == 46847 // 'true' 'castable' + || lk == 48723 // 'attribute' 'collation' + || lk == 48762 // 'element' 'collation' + || lk == 48775 // 'false' 'collation' + || lk == 48827 // 'namespace' 'collation' + || lk == 48837 // 'null' 'collation' + || lk == 48860 // 'processing-instruction' 'collation' + || lk == 48895 // 'true' 'collation' + || lk == 51335 // 'false' 'contains' + || lk == 51397 // 'null' 'contains' + || lk == 51455 // 'true' 'contains' + || lk == 54355 // 'attribute' 'count' + || lk == 54394 // 'element' 'count' + || lk == 54407 // 'false' 'count' + || lk == 54459 // 'namespace' 'count' + || lk == 54469 // 'null' 'count' + || lk == 54492 // 'processing-instruction' 'count' + || lk == 54527 // 'true' 'count' + || lk == 56403 // 'attribute' 'default' + || lk == 56442 // 'element' 'default' + || lk == 56455 // 'false' 'default' + || lk == 56507 // 'namespace' 'default' + || lk == 56517 // 'null' 'default' + || lk == 56540 // 'processing-instruction' 'default' + || lk == 56575 // 'true' 'default' + || lk == 58451 // 'attribute' 'descending' + || lk == 58490 // 'element' 'descending' + || lk == 58503 // 'false' 'descending' + || lk == 58555 // 'namespace' 'descending' + || lk == 58565 // 'null' 'descending' + || lk == 58588 // 'processing-instruction' 'descending' + || lk == 58623 // 'true' 'descending' + || lk == 61011 // 'attribute' 'div' + || lk == 61050 // 'element' 'div' + || lk == 61063 // 'false' 'div' + || lk == 61115 // 'namespace' 'div' + || lk == 61125 // 'null' 'div' + || lk == 61148 // 'processing-instruction' 'div' + || lk == 61183 // 'true' 'div' + || lk == 63059 // 'attribute' 'else' + || lk == 63098 // 'element' 'else' + || lk == 63111 // 'false' 'else' + || lk == 63163 // 'namespace' 'else' + || lk == 63173 // 'null' 'else' + || lk == 63196 // 'processing-instruction' 'else' + || lk == 63231 // 'true' 'else' + || lk == 63571 // 'attribute' 'empty' + || lk == 63610 // 'element' 'empty' + || lk == 63623 // 'false' 'empty' + || lk == 63675 // 'namespace' 'empty' + || lk == 63685 // 'null' 'empty' + || lk == 63708 // 'processing-instruction' 'empty' + || lk == 63743 // 'true' 'empty' + || lk == 65107 // 'attribute' 'end' + || lk == 65146 // 'element' 'end' + || lk == 65159 // 'false' 'end' + || lk == 65211 // 'namespace' 'end' + || lk == 65221 // 'null' 'end' + || lk == 65244 // 'processing-instruction' 'end' + || lk == 65279 // 'true' 'end' + || lk == 66131 // 'attribute' 'eq' + || lk == 66170 // 'element' 'eq' + || lk == 66183 // 'false' 'eq' + || lk == 66235 // 'namespace' 'eq' + || lk == 66245 // 'null' 'eq' + || lk == 66268 // 'processing-instruction' 'eq' + || lk == 66303 // 'true' 'eq' + || lk == 67667 // 'attribute' 'except' + || lk == 67706 // 'element' 'except' + || lk == 67719 // 'false' 'except' + || lk == 67771 // 'namespace' 'except' + || lk == 67781 // 'null' 'except' + || lk == 67804 // 'processing-instruction' 'except' + || lk == 67839 // 'true' 'except' + || lk == 71251 // 'attribute' 'for' + || lk == 71290 // 'element' 'for' + || lk == 71303 // 'false' 'for' + || lk == 71355 // 'namespace' 'for' + || lk == 71365 // 'null' 'for' + || lk == 71388 // 'processing-instruction' 'for' + || lk == 71423 // 'true' 'for' + || lk == 75859 // 'attribute' 'ge' + || lk == 75898 // 'element' 'ge' + || lk == 75911 // 'false' 'ge' + || lk == 75963 // 'namespace' 'ge' + || lk == 75973 // 'null' 'ge' + || lk == 75996 // 'processing-instruction' 'ge' + || lk == 76031 // 'true' 'ge' + || lk == 76883 // 'attribute' 'group' + || lk == 76922 // 'element' 'group' + || lk == 76935 // 'false' 'group' + || lk == 76987 // 'namespace' 'group' + || lk == 76997 // 'null' 'group' + || lk == 77020 // 'processing-instruction' 'group' + || lk == 77055 // 'true' 'group' + || lk == 77907 // 'attribute' 'gt' + || lk == 77946 // 'element' 'gt' + || lk == 77959 // 'false' 'gt' + || lk == 78011 // 'namespace' 'gt' + || lk == 78021 // 'null' 'gt' + || lk == 78044 // 'processing-instruction' 'gt' + || lk == 78079 // 'true' 'gt' + || lk == 78419 // 'attribute' 'idiv' + || lk == 78458 // 'element' 'idiv' + || lk == 78471 // 'false' 'idiv' + || lk == 78523 // 'namespace' 'idiv' + || lk == 78533 // 'null' 'idiv' + || lk == 78556 // 'processing-instruction' 'idiv' + || lk == 78591 // 'true' 'idiv' + || lk == 83027 // 'attribute' 'instance' + || lk == 83066 // 'element' 'instance' + || lk == 83079 // 'false' 'instance' + || lk == 83131 // 'namespace' 'instance' + || lk == 83141 // 'null' 'instance' + || lk == 83164 // 'processing-instruction' 'instance' + || lk == 83199 // 'true' 'instance' + || lk == 84051 // 'attribute' 'intersect' + || lk == 84090 // 'element' 'intersect' + || lk == 84103 // 'false' 'intersect' + || lk == 84155 // 'namespace' 'intersect' + || lk == 84165 // 'null' 'intersect' + || lk == 84188 // 'processing-instruction' 'intersect' + || lk == 84223 // 'true' 'intersect' + || lk == 84563 // 'attribute' 'into' + || lk == 84602 // 'element' 'into' + || lk == 84615 // 'false' 'into' + || lk == 84667 // 'namespace' 'into' + || lk == 84677 // 'null' 'into' + || lk == 84700 // 'processing-instruction' 'into' + || lk == 84735 // 'true' 'into' + || lk == 85075 // 'attribute' 'is' + || lk == 85114 // 'element' 'is' + || lk == 85127 // 'false' 'is' + || lk == 85179 // 'namespace' 'is' + || lk == 85189 // 'null' 'is' + || lk == 85212 // 'processing-instruction' 'is' + || lk == 85247 // 'true' 'is' + || lk == 89683 // 'attribute' 'le' + || lk == 89722 // 'element' 'le' + || lk == 89735 // 'false' 'le' + || lk == 89787 // 'namespace' 'le' + || lk == 89797 // 'null' 'le' + || lk == 89820 // 'processing-instruction' 'le' + || lk == 89855 // 'true' 'le' + || lk == 90707 // 'attribute' 'let' + || lk == 90746 // 'element' 'let' + || lk == 90759 // 'false' 'let' + || lk == 90811 // 'namespace' 'let' + || lk == 90821 // 'null' 'let' + || lk == 90844 // 'processing-instruction' 'let' + || lk == 90879 // 'true' 'let' + || lk == 92755 // 'attribute' 'lt' + || lk == 92794 // 'element' 'lt' + || lk == 92807 // 'false' 'lt' + || lk == 92859 // 'namespace' 'lt' + || lk == 92869 // 'null' 'lt' + || lk == 92892 // 'processing-instruction' 'lt' + || lk == 92927 // 'true' 'lt' + || lk == 93779 // 'attribute' 'mod' + || lk == 93818 // 'element' 'mod' + || lk == 93831 // 'false' 'mod' + || lk == 93883 // 'namespace' 'mod' + || lk == 93893 // 'null' 'mod' + || lk == 93916 // 'processing-instruction' 'mod' + || lk == 93951 // 'true' 'mod' + || lk == 94291 // 'attribute' 'modify' + || lk == 94330 // 'element' 'modify' + || lk == 94343 // 'false' 'modify' + || lk == 94395 // 'namespace' 'modify' + || lk == 94405 // 'null' 'modify' + || lk == 94428 // 'processing-instruction' 'modify' + || lk == 94463 // 'true' 'modify' + || lk == 96851 // 'attribute' 'ne' + || lk == 96890 // 'element' 'ne' + || lk == 96903 // 'false' 'ne' + || lk == 96955 // 'namespace' 'ne' + || lk == 96965 // 'null' 'ne' + || lk == 96988 // 'processing-instruction' 'ne' + || lk == 97023 // 'true' 'ne' + || lk == 103507 // 'attribute' 'only' + || lk == 103546 // 'element' 'only' + || lk == 103559 // 'false' 'only' + || lk == 103611 // 'namespace' 'only' + || lk == 103621 // 'null' 'only' + || lk == 103644 // 'processing-instruction' 'only' + || lk == 103679 // 'true' 'only' + || lk == 104531 // 'attribute' 'or' + || lk == 104570 // 'element' 'or' + || lk == 104583 // 'false' 'or' + || lk == 104635 // 'namespace' 'or' + || lk == 104645 // 'null' 'or' + || lk == 104668 // 'processing-instruction' 'or' + || lk == 104703 // 'true' 'or' + || lk == 105043 // 'attribute' 'order' + || lk == 105082 // 'element' 'order' + || lk == 105095 // 'false' 'order' + || lk == 105147 // 'namespace' 'order' + || lk == 105157 // 'null' 'order' + || lk == 105180 // 'processing-instruction' 'order' + || lk == 105215 // 'true' 'order' + || lk == 107143 // 'false' 'paragraphs' + || lk == 107205 // 'null' 'paragraphs' + || lk == 107263 // 'true' 'paragraphs' + || lk == 114771 // 'attribute' 'return' + || lk == 114810 // 'element' 'return' + || lk == 114823 // 'false' 'return' + || lk == 114875 // 'namespace' 'return' + || lk == 114885 // 'null' 'return' + || lk == 114908 // 'processing-instruction' 'return' + || lk == 114943 // 'true' 'return' + || lk == 116819 // 'attribute' 'satisfies' + || lk == 116858 // 'element' 'satisfies' + || lk == 116871 // 'false' 'satisfies' + || lk == 116923 // 'namespace' 'satisfies' + || lk == 116933 // 'null' 'satisfies' + || lk == 116956 // 'processing-instruction' 'satisfies' + || lk == 116991 // 'true' 'satisfies' + || lk == 121479 // 'false' 'sentences' + || lk == 121541 // 'null' 'sentences' + || lk == 121599 // 'true' 'sentences' + || lk == 123475 // 'attribute' 'stable' + || lk == 123514 // 'element' 'stable' + || lk == 123527 // 'false' 'stable' + || lk == 123579 // 'namespace' 'stable' + || lk == 123589 // 'null' 'stable' + || lk == 123612 // 'processing-instruction' 'stable' + || lk == 123647 // 'true' 'stable' + || lk == 123987 // 'attribute' 'start' + || lk == 124026 // 'element' 'start' + || lk == 124039 // 'false' 'start' + || lk == 124091 // 'namespace' 'start' + || lk == 124101 // 'null' 'start' + || lk == 124124 // 'processing-instruction' 'start' + || lk == 124159 // 'true' 'start' + || lk == 129159 // 'false' 'times' + || lk == 129221 // 'null' 'times' + || lk == 129279 // 'true' 'times' + || lk == 129619 // 'attribute' 'to' + || lk == 129658 // 'element' 'to' + || lk == 129671 // 'false' 'to' + || lk == 129723 // 'namespace' 'to' + || lk == 129733 // 'null' 'to' + || lk == 129756 // 'processing-instruction' 'to' + || lk == 129791 // 'true' 'to' + || lk == 130131 // 'attribute' 'treat' + || lk == 130170 // 'element' 'treat' + || lk == 130183 // 'false' 'treat' + || lk == 130235 // 'namespace' 'treat' + || lk == 130245 // 'null' 'treat' + || lk == 130268 // 'processing-instruction' 'treat' + || lk == 130303 // 'true' 'treat' + || lk == 133203 // 'attribute' 'union' + || lk == 133242 // 'element' 'union' + || lk == 133255 // 'false' 'union' + || lk == 133307 // 'namespace' 'union' + || lk == 133317 // 'null' 'union' + || lk == 133340 // 'processing-instruction' 'union' + || lk == 133375 // 'true' 'union' + || lk == 139347 // 'attribute' 'where' + || lk == 139386 // 'element' 'where' + || lk == 139399 // 'false' 'where' + || lk == 139451 // 'namespace' 'where' + || lk == 139461 // 'null' 'where' + || lk == 139484 // 'processing-instruction' 'where' + || lk == 139519 // 'true' 'where' + || lk == 141395 // 'attribute' 'with' + || lk == 141434 // 'element' 'with' + || lk == 141447 // 'false' 'with' + || lk == 141499 // 'namespace' 'with' + || lk == 141509 // 'null' 'with' + || lk == 141532 // 'processing-instruction' 'with' + || lk == 141567 // 'true' 'with' + || lk == 142983 // 'false' 'words' + || lk == 143045 // 'null' 'words' + || lk == 143103 // 'true' 'words' + || lk == 145543 // 'false' '|' + || lk == 145605 // 'null' '|' + || lk == 145663 // 'true' '|' + || lk == 146055 // 'false' '||' + || lk == 146117 // 'null' '||' + || lk == 146175 // 'true' '||' + || lk == 146567 // 'false' '|}' + || lk == 146629 // 'null' '|}' + || lk == 146687 // 'true' '|}' + || lk == 147079 // 'false' '}' + || lk == 147141 // 'null' '}' + || lk == 147199) // 'true' '}' + { + lk = memoized(4, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + try_PostfixExpr(); + lk = -1; + } + catch (p1A) + { + lk = -2; + } + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(4, e0, lk); + } + } + switch (lk) + { + case -1: + case 8: // IntegerLiteral + case 9: // DecimalLiteral + case 10: // DoubleLiteral + case 11: // StringLiteral + case 31: // '$' + case 32: // '$$' + case 33: // '%' + case 35: // '(' + case 55: // '<' + case 56: // '' + shift(44); // '-->' + eventHandler.endNonterminal("DirCommentConstructor", e0); + } + + function try_DirCommentConstructor() + { + shiftT(56); // '' + shiftT(44); // '-->' + } + + function parse_DirPIConstructor() + { + eventHandler.startNonterminal("DirPIConstructor", e0); + shift(60); // '' + if (l1 == 21) // S + { + shift(21); // S + lookahead1(2); // DirPIContents + shift(3); // DirPIContents + } + lookahead1(9); // '?>' + shift(66); // '?>' + eventHandler.endNonterminal("DirPIConstructor", e0); + } + + function try_DirPIConstructor() + { + shiftT(60); // '' + if (l1 == 21) // S + { + shiftT(21); // S + lookahead1(2); // DirPIContents + shiftT(3); // DirPIContents + } + lookahead1(9); // '?>' + shiftT(66); // '?>' + } + + function parse_ComputedConstructor() + { + eventHandler.startNonterminal("ComputedConstructor", e0); + switch (l1) + { + case 120: // 'document' + parse_CompDocConstructor(); + break; + case 122: // 'element' + parse_CompElemConstructor(); + break; + case 83: // 'attribute' + parse_CompAttrConstructor(); + break; + case 187: // 'namespace' + parse_CompNamespaceConstructor(); + break; + case 249: // 'text' + parse_CompTextConstructor(); + break; + case 97: // 'comment' + parse_CompCommentConstructor(); + break; + default: + parse_CompPIConstructor(); + } + eventHandler.endNonterminal("ComputedConstructor", e0); + } + + function try_ComputedConstructor() + { + switch (l1) + { + case 120: // 'document' + try_CompDocConstructor(); + break; + case 122: // 'element' + try_CompElemConstructor(); + break; + case 83: // 'attribute' + try_CompAttrConstructor(); + break; + case 187: // 'namespace' + try_CompNamespaceConstructor(); + break; + case 249: // 'text' + try_CompTextConstructor(); + break; + case 97: // 'comment' + try_CompCommentConstructor(); + break; + default: + try_CompPIConstructor(); + } + } + + function parse_CompElemConstructor() + { + eventHandler.startNonterminal("CompElemConstructor", e0); + shift(122); // 'element' + lookahead1W(249); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + switch (l1) + { + case 281: // '{' + shift(281); // '{' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_Expr(); + shift(287); // '}' + break; + default: + whitespace(); + parse_EQName(); + } + lookahead1W(90); // S^WS | '(:' | '{' + shift(281); // '{' + lookahead1W(280); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + if (l1 != 287) // '}' + { + whitespace(); + parse_ContentExpr(); + } + shift(287); // '}' + eventHandler.endNonterminal("CompElemConstructor", e0); + } + + function try_CompElemConstructor() + { + shiftT(122); // 'element' + lookahead1W(249); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + switch (l1) + { + case 281: // '{' + shiftT(281); // '{' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_Expr(); + shiftT(287); // '}' + break; + default: + try_EQName(); + } + lookahead1W(90); // S^WS | '(:' | '{' + shiftT(281); // '{' + lookahead1W(280); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + if (l1 != 287) // '}' + { + try_ContentExpr(); + } + shiftT(287); // '}' + } + + function parse_CompNamespaceConstructor() + { + eventHandler.startNonterminal("CompNamespaceConstructor", e0); + shift(187); // 'namespace' + lookahead1W(241); // NCName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + switch (l1) + { + case 281: // '{' + shift(281); // '{' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_PrefixExpr(); + shift(287); // '}' + break; + default: + whitespace(); + parse_Prefix(); + } + lookahead1W(90); // S^WS | '(:' | '{' + shift(281); // '{' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_URIExpr(); + shift(287); // '}' + eventHandler.endNonterminal("CompNamespaceConstructor", e0); + } + + function try_CompNamespaceConstructor() + { + shiftT(187); // 'namespace' + lookahead1W(241); // NCName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + switch (l1) + { + case 281: // '{' + shiftT(281); // '{' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_PrefixExpr(); + shiftT(287); // '}' + break; + default: + try_Prefix(); + } + lookahead1W(90); // S^WS | '(:' | '{' + shiftT(281); // '{' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_URIExpr(); + shiftT(287); // '}' + } + + function parse_Prefix() + { + eventHandler.startNonterminal("Prefix", e0); + parse_NCName(); + eventHandler.endNonterminal("Prefix", e0); + } + + function try_Prefix() + { + try_NCName(); + } + + function parse_PrefixExpr() + { + eventHandler.startNonterminal("PrefixExpr", e0); + parse_Expr(); + eventHandler.endNonterminal("PrefixExpr", e0); + } + + function try_PrefixExpr() + { + try_Expr(); + } + + function parse_URIExpr() + { + eventHandler.startNonterminal("URIExpr", e0); + parse_Expr(); + eventHandler.endNonterminal("URIExpr", e0); + } + + function try_URIExpr() + { + try_Expr(); + } + + function parse_FunctionItemExpr() + { + eventHandler.startNonterminal("FunctionItemExpr", e0); + switch (l1) + { + case 147: // 'function' + lookahead2W(95); // S^WS | '#' | '(' | '(:' + break; + default: + lk = l1; + } + switch (lk) + { + case 33: // '%' + case 18067: // 'function' '(' + parse_InlineFunctionExpr(); + break; + default: + parse_NamedFunctionRef(); + } + eventHandler.endNonterminal("FunctionItemExpr", e0); + } + + function try_FunctionItemExpr() + { + switch (l1) + { + case 147: // 'function' + lookahead2W(95); // S^WS | '#' | '(' | '(:' + break; + default: + lk = l1; + } + switch (lk) + { + case 33: // '%' + case 18067: // 'function' '(' + try_InlineFunctionExpr(); + break; + default: + try_NamedFunctionRef(); + } + } + + function parse_NamedFunctionRef() + { + eventHandler.startNonterminal("NamedFunctionRef", e0); + parse_EQName(); + lookahead1W(20); // S^WS | '#' | '(:' + shift(29); // '#' + lookahead1W(16); // IntegerLiteral | S^WS | '(:' + shift(8); // IntegerLiteral + eventHandler.endNonterminal("NamedFunctionRef", e0); + } + + function try_NamedFunctionRef() + { + try_EQName(); + lookahead1W(20); // S^WS | '#' | '(:' + shiftT(29); // '#' + lookahead1W(16); // IntegerLiteral | S^WS | '(:' + shiftT(8); // IntegerLiteral + } + + function parse_InlineFunctionExpr() + { + eventHandler.startNonterminal("InlineFunctionExpr", e0); + for (;;) + { + lookahead1W(101); // S^WS | '%' | '(:' | 'function' + if (l1 != 33) // '%' + { + break; + } + whitespace(); + parse_Annotation(); + } + shift(147); // 'function' + lookahead1W(22); // S^WS | '(' | '(:' + shift(35); // '(' + lookahead1W(98); // S^WS | '$' | '(:' | ')' + if (l1 == 31) // '$' + { + whitespace(); + parse_ParamList(); + } + shift(38); // ')' + lookahead1W(115); // S^WS | '(:' | 'as' | '{' + if (l1 == 80) // 'as' + { + shift(80); // 'as' + lookahead1W(253); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_SequenceType(); + } + lookahead1W(90); // S^WS | '(:' | '{' + whitespace(); + parse_FunctionBody(); + eventHandler.endNonterminal("InlineFunctionExpr", e0); + } + + function try_InlineFunctionExpr() + { + for (;;) + { + lookahead1W(101); // S^WS | '%' | '(:' | 'function' + if (l1 != 33) // '%' + { + break; + } + try_Annotation(); + } + shiftT(147); // 'function' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(35); // '(' + lookahead1W(98); // S^WS | '$' | '(:' | ')' + if (l1 == 31) // '$' + { + try_ParamList(); + } + shiftT(38); // ')' + lookahead1W(115); // S^WS | '(:' | 'as' | '{' + if (l1 == 80) // 'as' + { + shiftT(80); // 'as' + lookahead1W(253); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + try_SequenceType(); + } + lookahead1W(90); // S^WS | '(:' | '{' + try_FunctionBody(); + } + + function parse_SingleType() + { + eventHandler.startNonterminal("SingleType", e0); + parse_SimpleTypeName(); + lookahead1W(225); // S^WS | EOF | '!=' | '(:' | ')' | '*' | '+' | ',' | '-' | ':' | ';' | '<' | '<<' | + if (l1 == 65) // '?' + { + shift(65); // '?' + } + eventHandler.endNonterminal("SingleType", e0); + } + + function try_SingleType() + { + try_SimpleTypeName(); + lookahead1W(225); // S^WS | EOF | '!=' | '(:' | ')' | '*' | '+' | ',' | '-' | ':' | ';' | '<' | '<<' | + if (l1 == 65) // '?' + { + shiftT(65); // '?' + } + } + + function parse_TypeDeclaration() + { + eventHandler.startNonterminal("TypeDeclaration", e0); + shift(80); // 'as' + lookahead1W(253); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_SequenceType(); + eventHandler.endNonterminal("TypeDeclaration", e0); + } + + function try_TypeDeclaration() + { + shiftT(80); // 'as' + lookahead1W(253); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + try_SequenceType(); + } + + function parse_SequenceType() + { + eventHandler.startNonterminal("SequenceType", e0); + switch (l1) + { + case 35: // '(' + lookahead2W(258); // EQName^Token | S^WS | '%' | '(' | '(:' | ')' | 'after' | 'allowing' | + break; + case 125: // 'empty-sequence' + lookahead2W(232); // S^WS | EOF | '!=' | '(' | '(:' | ')' | '*' | '*' | '+' | ',' | '-' | ':' | ':=' | + break; + default: + lk = l1; + } + switch (lk) + { + case 18045: // 'empty-sequence' '(' + case 19491: // '(' ')' + if (l1 == 125) // 'empty-sequence' + { + shift(125); // 'empty-sequence' + } + lookahead1W(22); // S^WS | '(' | '(:' + shift(35); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shift(38); // ')' + break; + default: + parse_ItemType(); + lookahead1W(228); // S^WS | EOF | '!=' | '(:' | ')' | '*' | '*' | '+' | ',' | '-' | ':' | ':=' | ';' | + switch (l1) + { + case 40: // '*' + case 41: // '+' + case 65: // '?' + whitespace(); + parse_OccurrenceIndicator(); + break; + default: + break; + } + } + eventHandler.endNonterminal("SequenceType", e0); + } + + function try_SequenceType() + { + switch (l1) + { + case 35: // '(' + lookahead2W(258); // EQName^Token | S^WS | '%' | '(' | '(:' | ')' | 'after' | 'allowing' | + break; + case 125: // 'empty-sequence' + lookahead2W(232); // S^WS | EOF | '!=' | '(' | '(:' | ')' | '*' | '*' | '+' | ',' | '-' | ':' | ':=' | + break; + default: + lk = l1; + } + switch (lk) + { + case 18045: // 'empty-sequence' '(' + case 19491: // '(' ')' + if (l1 == 125) // 'empty-sequence' + { + shiftT(125); // 'empty-sequence' + } + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(35); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(38); // ')' + break; + default: + try_ItemType(); + lookahead1W(228); // S^WS | EOF | '!=' | '(:' | ')' | '*' | '*' | '+' | ',' | '-' | ':' | ':=' | ';' | + switch (l1) + { + case 40: // '*' + case 41: // '+' + case 65: // '?' + try_OccurrenceIndicator(); + break; + default: + break; + } + } + } + + function parse_OccurrenceIndicator() + { + eventHandler.startNonterminal("OccurrenceIndicator", e0); + switch (l1) + { + case 65: // '?' + shift(65); // '?' + break; + case 40: // '*' + shift(40); // '*' + break; + default: + shift(41); // '+' + } + eventHandler.endNonterminal("OccurrenceIndicator", e0); + } + + function try_OccurrenceIndicator() + { + switch (l1) + { + case 65: // '?' + shiftT(65); // '?' + break; + case 40: // '*' + shiftT(40); // '*' + break; + default: + shiftT(41); // '+' + } + } + + function parse_ItemType() + { + eventHandler.startNonterminal("ItemType", e0); + switch (l1) + { + case 79: // 'array' + case 83: // 'attribute' + case 97: // 'comment' + case 121: // 'document-node' + case 122: // 'element' + case 147: // 'function' + case 167: // 'item' + case 169: // 'json-item' + case 188: // 'namespace-node' + case 194: // 'node' + case 198: // 'object' + case 220: // 'processing-instruction' + case 230: // 'schema-attribute' + case 231: // 'schema-element' + case 247: // 'structured-item' + case 249: // 'text' + lookahead2W(232); // S^WS | EOF | '!=' | '(' | '(:' | ')' | '*' | '*' | '+' | ',' | '-' | ':' | ':=' | + break; + default: + lk = l1; + } + if (lk == 12879 // 'array' EOF + || lk == 12969 // 'json-item' EOF + || lk == 12998 // 'object' EOF + || lk == 13047 // 'structured-item' EOF + || lk == 13903 // 'array' '!=' + || lk == 13993 // 'json-item' '!=' + || lk == 14022 // 'object' '!=' + || lk == 14071 // 'structured-item' '!=' + || lk == 19535 // 'array' ')' + || lk == 19625 // 'json-item' ')' + || lk == 19654 // 'object' ')' + || lk == 19703 // 'structured-item' ')' + || lk == 20047 // 'array' '*' + || lk == 20137 // 'json-item' '*' + || lk == 20166 // 'object' '*' + || lk == 20215 // 'structured-item' '*' + || lk == 20559 // 'array' '*' + || lk == 20649 // 'json-item' '*' + || lk == 20678 // 'object' '*' + || lk == 20727 // 'structured-item' '*' + || lk == 21071 // 'array' '+' + || lk == 21161 // 'json-item' '+' + || lk == 21190 // 'object' '+' + || lk == 21239 // 'structured-item' '+' + || lk == 21583 // 'array' ',' + || lk == 21673 // 'json-item' ',' + || lk == 21702 // 'object' ',' + || lk == 21751 // 'structured-item' ',' + || lk == 22095 // 'array' '-' + || lk == 22185 // 'json-item' '-' + || lk == 22214 // 'object' '-' + || lk == 22263 // 'structured-item' '-' + || lk == 25679 // 'array' ':' + || lk == 25769 // 'json-item' ':' + || lk == 25798 // 'object' ':' + || lk == 25847 // 'structured-item' ':' + || lk == 27215 // 'array' ':=' + || lk == 27305 // 'json-item' ':=' + || lk == 27334 // 'object' ':=' + || lk == 27383 // 'structured-item' ':=' + || lk == 27727 // 'array' ';' + || lk == 27817 // 'json-item' ';' + || lk == 27846 // 'object' ';' + || lk == 27895 // 'structured-item' ';' + || lk == 28239 // 'array' '<' + || lk == 28329 // 'json-item' '<' + || lk == 28358 // 'object' '<' + || lk == 28407 // 'structured-item' '<' + || lk == 29775 // 'array' '<<' + || lk == 29865 // 'json-item' '<<' + || lk == 29894 // 'object' '<<' + || lk == 29943 // 'structured-item' '<<' + || lk == 30287 // 'array' '<=' + || lk == 30377 // 'json-item' '<=' + || lk == 30406 // 'object' '<=' + || lk == 30455 // 'structured-item' '<=' + || lk == 31311 // 'array' '=' + || lk == 31401 // 'json-item' '=' + || lk == 31430 // 'object' '=' + || lk == 31479 // 'structured-item' '=' + || lk == 31823 // 'array' '>' + || lk == 31913 // 'json-item' '>' + || lk == 31942 // 'object' '>' + || lk == 31991 // 'structured-item' '>' + || lk == 32335 // 'array' '>=' + || lk == 32425 // 'json-item' '>=' + || lk == 32454 // 'object' '>=' + || lk == 32503 // 'structured-item' '>=' + || lk == 32847 // 'array' '>>' + || lk == 32937 // 'json-item' '>>' + || lk == 32966 // 'object' '>>' + || lk == 33015 // 'structured-item' '>>' + || lk == 33359 // 'array' '?' + || lk == 33449 // 'json-item' '?' + || lk == 33478 // 'object' '?' + || lk == 33527 // 'structured-item' '?' + || lk == 35919 // 'array' ']' + || lk == 36009 // 'json-item' ']' + || lk == 36038 // 'object' ']' + || lk == 36087 // 'structured-item' ']' + || lk == 36431 // 'array' 'after' + || lk == 36521 // 'json-item' 'after' + || lk == 36550 // 'object' 'after' + || lk == 36599 // 'structured-item' 'after' + || lk == 37455 // 'array' 'allowing' + || lk == 37545 // 'json-item' 'allowing' + || lk == 37574 // 'object' 'allowing' + || lk == 37623 // 'structured-item' 'allowing' + || lk == 38991 // 'array' 'and' + || lk == 39081 // 'json-item' 'and' + || lk == 39110 // 'object' 'and' + || lk == 39159 // 'structured-item' 'and' + || lk == 41039 // 'array' 'as' + || lk == 41129 // 'json-item' 'as' + || lk == 41158 // 'object' 'as' + || lk == 41207 // 'structured-item' 'as' + || lk == 41551 // 'array' 'ascending' + || lk == 41641 // 'json-item' 'ascending' + || lk == 41670 // 'object' 'ascending' + || lk == 41719 // 'structured-item' 'ascending' + || lk == 42063 // 'array' 'at' + || lk == 42153 // 'json-item' 'at' + || lk == 42182 // 'object' 'at' + || lk == 42231 // 'structured-item' 'at' + || lk == 43599 // 'array' 'before' + || lk == 43689 // 'json-item' 'before' + || lk == 43718 // 'object' 'before' + || lk == 43767 // 'structured-item' 'before' + || lk == 45647 // 'array' 'case' + || lk == 45737 // 'json-item' 'case' + || lk == 45766 // 'object' 'case' + || lk == 45815 // 'structured-item' 'case' + || lk == 48719 // 'array' 'collation' + || lk == 48809 // 'json-item' 'collation' + || lk == 48838 // 'object' 'collation' + || lk == 48887 // 'structured-item' 'collation' + || lk == 51279 // 'array' 'contains' + || lk == 51369 // 'json-item' 'contains' + || lk == 51398 // 'object' 'contains' + || lk == 51447 // 'structured-item' 'contains' + || lk == 54351 // 'array' 'count' + || lk == 54441 // 'json-item' 'count' + || lk == 54470 // 'object' 'count' + || lk == 54519 // 'structured-item' 'count' + || lk == 56399 // 'array' 'default' + || lk == 56489 // 'json-item' 'default' + || lk == 56518 // 'object' 'default' + || lk == 56567 // 'structured-item' 'default' + || lk == 58447 // 'array' 'descending' + || lk == 58537 // 'json-item' 'descending' + || lk == 58566 // 'object' 'descending' + || lk == 58615 // 'structured-item' 'descending' + || lk == 61007 // 'array' 'div' + || lk == 61097 // 'json-item' 'div' + || lk == 61126 // 'object' 'div' + || lk == 61175 // 'structured-item' 'div' + || lk == 63055 // 'array' 'else' + || lk == 63145 // 'json-item' 'else' + || lk == 63174 // 'object' 'else' + || lk == 63223 // 'structured-item' 'else' + || lk == 63567 // 'array' 'empty' + || lk == 63657 // 'json-item' 'empty' + || lk == 63686 // 'object' 'empty' + || lk == 63735 // 'structured-item' 'empty' + || lk == 65103 // 'array' 'end' + || lk == 65193 // 'json-item' 'end' + || lk == 65222 // 'object' 'end' + || lk == 65271 // 'structured-item' 'end' + || lk == 66127 // 'array' 'eq' + || lk == 66217 // 'json-item' 'eq' + || lk == 66246 // 'object' 'eq' + || lk == 66295 // 'structured-item' 'eq' + || lk == 67663 // 'array' 'except' + || lk == 67753 // 'json-item' 'except' + || lk == 67782 // 'object' 'except' + || lk == 67831 // 'structured-item' 'except' + || lk == 68687 // 'array' 'external' + || lk == 68777 // 'json-item' 'external' + || lk == 68806 // 'object' 'external' + || lk == 68855 // 'structured-item' 'external' + || lk == 71247 // 'array' 'for' + || lk == 71337 // 'json-item' 'for' + || lk == 71366 // 'object' 'for' + || lk == 71415 // 'structured-item' 'for' + || lk == 75855 // 'array' 'ge' + || lk == 75945 // 'json-item' 'ge' + || lk == 75974 // 'object' 'ge' + || lk == 76023 // 'structured-item' 'ge' + || lk == 76879 // 'array' 'group' + || lk == 76969 // 'json-item' 'group' + || lk == 76998 // 'object' 'group' + || lk == 77047 // 'structured-item' 'group' + || lk == 77903 // 'array' 'gt' + || lk == 77993 // 'json-item' 'gt' + || lk == 78022 // 'object' 'gt' + || lk == 78071 // 'structured-item' 'gt' + || lk == 78415 // 'array' 'idiv' + || lk == 78505 // 'json-item' 'idiv' + || lk == 78534 // 'object' 'idiv' + || lk == 78583 // 'structured-item' 'idiv' + || lk == 79951 // 'array' 'in' + || lk == 80041 // 'json-item' 'in' + || lk == 80070 // 'object' 'in' + || lk == 80119 // 'structured-item' 'in' + || lk == 83023 // 'array' 'instance' + || lk == 83113 // 'json-item' 'instance' + || lk == 83142 // 'object' 'instance' + || lk == 83191 // 'structured-item' 'instance' + || lk == 84047 // 'array' 'intersect' + || lk == 84137 // 'json-item' 'intersect' + || lk == 84166 // 'object' 'intersect' + || lk == 84215 // 'structured-item' 'intersect' + || lk == 84559 // 'array' 'into' + || lk == 84649 // 'json-item' 'into' + || lk == 84678 // 'object' 'into' + || lk == 84727 // 'structured-item' 'into' + || lk == 85071 // 'array' 'is' + || lk == 85161 // 'json-item' 'is' + || lk == 85190 // 'object' 'is' + || lk == 85239 // 'structured-item' 'is' + || lk == 89679 // 'array' 'le' + || lk == 89769 // 'json-item' 'le' + || lk == 89798 // 'object' 'le' + || lk == 89847 // 'structured-item' 'le' + || lk == 90703 // 'array' 'let' + || lk == 90793 // 'json-item' 'let' + || lk == 90822 // 'object' 'let' + || lk == 90871 // 'structured-item' 'let' + || lk == 92751 // 'array' 'lt' + || lk == 92841 // 'json-item' 'lt' + || lk == 92870 // 'object' 'lt' + || lk == 92919 // 'structured-item' 'lt' + || lk == 93775 // 'array' 'mod' + || lk == 93865 // 'json-item' 'mod' + || lk == 93894 // 'object' 'mod' + || lk == 93943 // 'structured-item' 'mod' + || lk == 94287 // 'array' 'modify' + || lk == 94377 // 'json-item' 'modify' + || lk == 94406 // 'object' 'modify' + || lk == 94455 // 'structured-item' 'modify' + || lk == 96847 // 'array' 'ne' + || lk == 96937 // 'json-item' 'ne' + || lk == 96966 // 'object' 'ne' + || lk == 97015 // 'structured-item' 'ne' + || lk == 103503 // 'array' 'only' + || lk == 103593 // 'json-item' 'only' + || lk == 103622 // 'object' 'only' + || lk == 103671 // 'structured-item' 'only' + || lk == 104527 // 'array' 'or' + || lk == 104617 // 'json-item' 'or' + || lk == 104646 // 'object' 'or' + || lk == 104695 // 'structured-item' 'or' + || lk == 105039 // 'array' 'order' + || lk == 105129 // 'json-item' 'order' + || lk == 105158 // 'object' 'order' + || lk == 105207 // 'structured-item' 'order' + || lk == 107087 // 'array' 'paragraphs' + || lk == 107177 // 'json-item' 'paragraphs' + || lk == 107206 // 'object' 'paragraphs' + || lk == 107255 // 'structured-item' 'paragraphs' + || lk == 114767 // 'array' 'return' + || lk == 114857 // 'json-item' 'return' + || lk == 114886 // 'object' 'return' + || lk == 114935 // 'structured-item' 'return' + || lk == 116815 // 'array' 'satisfies' + || lk == 116905 // 'json-item' 'satisfies' + || lk == 116934 // 'object' 'satisfies' + || lk == 116983 // 'structured-item' 'satisfies' + || lk == 118863 // 'array' 'score' + || lk == 118953 // 'json-item' 'score' + || lk == 118982 // 'object' 'score' + || lk == 119031 // 'structured-item' 'score' + || lk == 121423 // 'array' 'sentences' + || lk == 121513 // 'json-item' 'sentences' + || lk == 121542 // 'object' 'sentences' + || lk == 121591 // 'structured-item' 'sentences' + || lk == 123471 // 'array' 'stable' + || lk == 123561 // 'json-item' 'stable' + || lk == 123590 // 'object' 'stable' + || lk == 123639 // 'structured-item' 'stable' + || lk == 123983 // 'array' 'start' + || lk == 124073 // 'json-item' 'start' + || lk == 124102 // 'object' 'start' + || lk == 124151 // 'structured-item' 'start' + || lk == 129103 // 'array' 'times' + || lk == 129193 // 'json-item' 'times' + || lk == 129222 // 'object' 'times' + || lk == 129271 // 'structured-item' 'times' + || lk == 129615 // 'array' 'to' + || lk == 129705 // 'json-item' 'to' + || lk == 129734 // 'object' 'to' + || lk == 129783 // 'structured-item' 'to' + || lk == 133199 // 'array' 'union' + || lk == 133289 // 'json-item' 'union' + || lk == 133318 // 'object' 'union' + || lk == 133367 // 'structured-item' 'union' + || lk == 139343 // 'array' 'where' + || lk == 139433 // 'json-item' 'where' + || lk == 139462 // 'object' 'where' + || lk == 139511 // 'structured-item' 'where' + || lk == 141391 // 'array' 'with' + || lk == 141481 // 'json-item' 'with' + || lk == 141510 // 'object' 'with' + || lk == 141559 // 'structured-item' 'with' + || lk == 142927 // 'array' 'words' + || lk == 143017 // 'json-item' 'words' + || lk == 143046 // 'object' 'words' + || lk == 143095 // 'structured-item' 'words' + || lk == 143951 // 'array' '{' + || lk == 144041 // 'json-item' '{' + || lk == 144070 // 'object' '{' + || lk == 144119 // 'structured-item' '{' + || lk == 145487 // 'array' '|' + || lk == 145577 // 'json-item' '|' + || lk == 145606 // 'object' '|' + || lk == 145655 // 'structured-item' '|' + || lk == 145999 // 'array' '||' + || lk == 146089 // 'json-item' '||' + || lk == 146118 // 'object' '||' + || lk == 146167 // 'structured-item' '||' + || lk == 146511 // 'array' '|}' + || lk == 146601 // 'json-item' '|}' + || lk == 146630 // 'object' '|}' + || lk == 146679 // 'structured-item' '|}' + || lk == 147023 // 'array' '}' + || lk == 147113 // 'json-item' '}' + || lk == 147142 // 'object' '}' + || lk == 147191) // 'structured-item' '}' + { + lk = memoized(6, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + try_AtomicOrUnionType(); + lk = -4; + } + catch (p4A) + { + try + { + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + try_JSONTest(); + lk = -6; + } + catch (p6A) + { + lk = -7; + } + } + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(6, e0, lk); + } + } + switch (lk) + { + case 18003: // 'attribute' '(' + case 18017: // 'comment' '(' + case 18041: // 'document-node' '(' + case 18042: // 'element' '(' + case 18108: // 'namespace-node' '(' + case 18114: // 'node' '(' + case 18140: // 'processing-instruction' '(' + case 18150: // 'schema-attribute' '(' + case 18151: // 'schema-element' '(' + case 18169: // 'text' '(' + parse_KindTest(); + break; + case 18087: // 'item' '(' + shift(167); // 'item' + lookahead1W(22); // S^WS | '(' | '(:' + shift(35); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shift(38); // ')' + break; + case 33: // '%' + case 18067: // 'function' '(' + parse_FunctionTest(); + break; + case 35: // '(' + parse_ParenthesizedItemType(); + break; + case -6: + case 17999: // 'array' '(' + case 18089: // 'json-item' '(' + case 18118: // 'object' '(' + parse_JSONTest(); + break; + case -7: + case 18167: // 'structured-item' '(' + parse_StructuredItemTest(); + break; + default: + parse_AtomicOrUnionType(); + } + eventHandler.endNonterminal("ItemType", e0); + } + + function try_ItemType() + { + switch (l1) + { + case 79: // 'array' + case 83: // 'attribute' + case 97: // 'comment' + case 121: // 'document-node' + case 122: // 'element' + case 147: // 'function' + case 167: // 'item' + case 169: // 'json-item' + case 188: // 'namespace-node' + case 194: // 'node' + case 198: // 'object' + case 220: // 'processing-instruction' + case 230: // 'schema-attribute' + case 231: // 'schema-element' + case 247: // 'structured-item' + case 249: // 'text' + lookahead2W(232); // S^WS | EOF | '!=' | '(' | '(:' | ')' | '*' | '*' | '+' | ',' | '-' | ':' | ':=' | + break; + default: + lk = l1; + } + if (lk == 12879 // 'array' EOF + || lk == 12969 // 'json-item' EOF + || lk == 12998 // 'object' EOF + || lk == 13047 // 'structured-item' EOF + || lk == 13903 // 'array' '!=' + || lk == 13993 // 'json-item' '!=' + || lk == 14022 // 'object' '!=' + || lk == 14071 // 'structured-item' '!=' + || lk == 19535 // 'array' ')' + || lk == 19625 // 'json-item' ')' + || lk == 19654 // 'object' ')' + || lk == 19703 // 'structured-item' ')' + || lk == 20047 // 'array' '*' + || lk == 20137 // 'json-item' '*' + || lk == 20166 // 'object' '*' + || lk == 20215 // 'structured-item' '*' + || lk == 20559 // 'array' '*' + || lk == 20649 // 'json-item' '*' + || lk == 20678 // 'object' '*' + || lk == 20727 // 'structured-item' '*' + || lk == 21071 // 'array' '+' + || lk == 21161 // 'json-item' '+' + || lk == 21190 // 'object' '+' + || lk == 21239 // 'structured-item' '+' + || lk == 21583 // 'array' ',' + || lk == 21673 // 'json-item' ',' + || lk == 21702 // 'object' ',' + || lk == 21751 // 'structured-item' ',' + || lk == 22095 // 'array' '-' + || lk == 22185 // 'json-item' '-' + || lk == 22214 // 'object' '-' + || lk == 22263 // 'structured-item' '-' + || lk == 25679 // 'array' ':' + || lk == 25769 // 'json-item' ':' + || lk == 25798 // 'object' ':' + || lk == 25847 // 'structured-item' ':' + || lk == 27215 // 'array' ':=' + || lk == 27305 // 'json-item' ':=' + || lk == 27334 // 'object' ':=' + || lk == 27383 // 'structured-item' ':=' + || lk == 27727 // 'array' ';' + || lk == 27817 // 'json-item' ';' + || lk == 27846 // 'object' ';' + || lk == 27895 // 'structured-item' ';' + || lk == 28239 // 'array' '<' + || lk == 28329 // 'json-item' '<' + || lk == 28358 // 'object' '<' + || lk == 28407 // 'structured-item' '<' + || lk == 29775 // 'array' '<<' + || lk == 29865 // 'json-item' '<<' + || lk == 29894 // 'object' '<<' + || lk == 29943 // 'structured-item' '<<' + || lk == 30287 // 'array' '<=' + || lk == 30377 // 'json-item' '<=' + || lk == 30406 // 'object' '<=' + || lk == 30455 // 'structured-item' '<=' + || lk == 31311 // 'array' '=' + || lk == 31401 // 'json-item' '=' + || lk == 31430 // 'object' '=' + || lk == 31479 // 'structured-item' '=' + || lk == 31823 // 'array' '>' + || lk == 31913 // 'json-item' '>' + || lk == 31942 // 'object' '>' + || lk == 31991 // 'structured-item' '>' + || lk == 32335 // 'array' '>=' + || lk == 32425 // 'json-item' '>=' + || lk == 32454 // 'object' '>=' + || lk == 32503 // 'structured-item' '>=' + || lk == 32847 // 'array' '>>' + || lk == 32937 // 'json-item' '>>' + || lk == 32966 // 'object' '>>' + || lk == 33015 // 'structured-item' '>>' + || lk == 33359 // 'array' '?' + || lk == 33449 // 'json-item' '?' + || lk == 33478 // 'object' '?' + || lk == 33527 // 'structured-item' '?' + || lk == 35919 // 'array' ']' + || lk == 36009 // 'json-item' ']' + || lk == 36038 // 'object' ']' + || lk == 36087 // 'structured-item' ']' + || lk == 36431 // 'array' 'after' + || lk == 36521 // 'json-item' 'after' + || lk == 36550 // 'object' 'after' + || lk == 36599 // 'structured-item' 'after' + || lk == 37455 // 'array' 'allowing' + || lk == 37545 // 'json-item' 'allowing' + || lk == 37574 // 'object' 'allowing' + || lk == 37623 // 'structured-item' 'allowing' + || lk == 38991 // 'array' 'and' + || lk == 39081 // 'json-item' 'and' + || lk == 39110 // 'object' 'and' + || lk == 39159 // 'structured-item' 'and' + || lk == 41039 // 'array' 'as' + || lk == 41129 // 'json-item' 'as' + || lk == 41158 // 'object' 'as' + || lk == 41207 // 'structured-item' 'as' + || lk == 41551 // 'array' 'ascending' + || lk == 41641 // 'json-item' 'ascending' + || lk == 41670 // 'object' 'ascending' + || lk == 41719 // 'structured-item' 'ascending' + || lk == 42063 // 'array' 'at' + || lk == 42153 // 'json-item' 'at' + || lk == 42182 // 'object' 'at' + || lk == 42231 // 'structured-item' 'at' + || lk == 43599 // 'array' 'before' + || lk == 43689 // 'json-item' 'before' + || lk == 43718 // 'object' 'before' + || lk == 43767 // 'structured-item' 'before' + || lk == 45647 // 'array' 'case' + || lk == 45737 // 'json-item' 'case' + || lk == 45766 // 'object' 'case' + || lk == 45815 // 'structured-item' 'case' + || lk == 48719 // 'array' 'collation' + || lk == 48809 // 'json-item' 'collation' + || lk == 48838 // 'object' 'collation' + || lk == 48887 // 'structured-item' 'collation' + || lk == 51279 // 'array' 'contains' + || lk == 51369 // 'json-item' 'contains' + || lk == 51398 // 'object' 'contains' + || lk == 51447 // 'structured-item' 'contains' + || lk == 54351 // 'array' 'count' + || lk == 54441 // 'json-item' 'count' + || lk == 54470 // 'object' 'count' + || lk == 54519 // 'structured-item' 'count' + || lk == 56399 // 'array' 'default' + || lk == 56489 // 'json-item' 'default' + || lk == 56518 // 'object' 'default' + || lk == 56567 // 'structured-item' 'default' + || lk == 58447 // 'array' 'descending' + || lk == 58537 // 'json-item' 'descending' + || lk == 58566 // 'object' 'descending' + || lk == 58615 // 'structured-item' 'descending' + || lk == 61007 // 'array' 'div' + || lk == 61097 // 'json-item' 'div' + || lk == 61126 // 'object' 'div' + || lk == 61175 // 'structured-item' 'div' + || lk == 63055 // 'array' 'else' + || lk == 63145 // 'json-item' 'else' + || lk == 63174 // 'object' 'else' + || lk == 63223 // 'structured-item' 'else' + || lk == 63567 // 'array' 'empty' + || lk == 63657 // 'json-item' 'empty' + || lk == 63686 // 'object' 'empty' + || lk == 63735 // 'structured-item' 'empty' + || lk == 65103 // 'array' 'end' + || lk == 65193 // 'json-item' 'end' + || lk == 65222 // 'object' 'end' + || lk == 65271 // 'structured-item' 'end' + || lk == 66127 // 'array' 'eq' + || lk == 66217 // 'json-item' 'eq' + || lk == 66246 // 'object' 'eq' + || lk == 66295 // 'structured-item' 'eq' + || lk == 67663 // 'array' 'except' + || lk == 67753 // 'json-item' 'except' + || lk == 67782 // 'object' 'except' + || lk == 67831 // 'structured-item' 'except' + || lk == 68687 // 'array' 'external' + || lk == 68777 // 'json-item' 'external' + || lk == 68806 // 'object' 'external' + || lk == 68855 // 'structured-item' 'external' + || lk == 71247 // 'array' 'for' + || lk == 71337 // 'json-item' 'for' + || lk == 71366 // 'object' 'for' + || lk == 71415 // 'structured-item' 'for' + || lk == 75855 // 'array' 'ge' + || lk == 75945 // 'json-item' 'ge' + || lk == 75974 // 'object' 'ge' + || lk == 76023 // 'structured-item' 'ge' + || lk == 76879 // 'array' 'group' + || lk == 76969 // 'json-item' 'group' + || lk == 76998 // 'object' 'group' + || lk == 77047 // 'structured-item' 'group' + || lk == 77903 // 'array' 'gt' + || lk == 77993 // 'json-item' 'gt' + || lk == 78022 // 'object' 'gt' + || lk == 78071 // 'structured-item' 'gt' + || lk == 78415 // 'array' 'idiv' + || lk == 78505 // 'json-item' 'idiv' + || lk == 78534 // 'object' 'idiv' + || lk == 78583 // 'structured-item' 'idiv' + || lk == 79951 // 'array' 'in' + || lk == 80041 // 'json-item' 'in' + || lk == 80070 // 'object' 'in' + || lk == 80119 // 'structured-item' 'in' + || lk == 83023 // 'array' 'instance' + || lk == 83113 // 'json-item' 'instance' + || lk == 83142 // 'object' 'instance' + || lk == 83191 // 'structured-item' 'instance' + || lk == 84047 // 'array' 'intersect' + || lk == 84137 // 'json-item' 'intersect' + || lk == 84166 // 'object' 'intersect' + || lk == 84215 // 'structured-item' 'intersect' + || lk == 84559 // 'array' 'into' + || lk == 84649 // 'json-item' 'into' + || lk == 84678 // 'object' 'into' + || lk == 84727 // 'structured-item' 'into' + || lk == 85071 // 'array' 'is' + || lk == 85161 // 'json-item' 'is' + || lk == 85190 // 'object' 'is' + || lk == 85239 // 'structured-item' 'is' + || lk == 89679 // 'array' 'le' + || lk == 89769 // 'json-item' 'le' + || lk == 89798 // 'object' 'le' + || lk == 89847 // 'structured-item' 'le' + || lk == 90703 // 'array' 'let' + || lk == 90793 // 'json-item' 'let' + || lk == 90822 // 'object' 'let' + || lk == 90871 // 'structured-item' 'let' + || lk == 92751 // 'array' 'lt' + || lk == 92841 // 'json-item' 'lt' + || lk == 92870 // 'object' 'lt' + || lk == 92919 // 'structured-item' 'lt' + || lk == 93775 // 'array' 'mod' + || lk == 93865 // 'json-item' 'mod' + || lk == 93894 // 'object' 'mod' + || lk == 93943 // 'structured-item' 'mod' + || lk == 94287 // 'array' 'modify' + || lk == 94377 // 'json-item' 'modify' + || lk == 94406 // 'object' 'modify' + || lk == 94455 // 'structured-item' 'modify' + || lk == 96847 // 'array' 'ne' + || lk == 96937 // 'json-item' 'ne' + || lk == 96966 // 'object' 'ne' + || lk == 97015 // 'structured-item' 'ne' + || lk == 103503 // 'array' 'only' + || lk == 103593 // 'json-item' 'only' + || lk == 103622 // 'object' 'only' + || lk == 103671 // 'structured-item' 'only' + || lk == 104527 // 'array' 'or' + || lk == 104617 // 'json-item' 'or' + || lk == 104646 // 'object' 'or' + || lk == 104695 // 'structured-item' 'or' + || lk == 105039 // 'array' 'order' + || lk == 105129 // 'json-item' 'order' + || lk == 105158 // 'object' 'order' + || lk == 105207 // 'structured-item' 'order' + || lk == 107087 // 'array' 'paragraphs' + || lk == 107177 // 'json-item' 'paragraphs' + || lk == 107206 // 'object' 'paragraphs' + || lk == 107255 // 'structured-item' 'paragraphs' + || lk == 114767 // 'array' 'return' + || lk == 114857 // 'json-item' 'return' + || lk == 114886 // 'object' 'return' + || lk == 114935 // 'structured-item' 'return' + || lk == 116815 // 'array' 'satisfies' + || lk == 116905 // 'json-item' 'satisfies' + || lk == 116934 // 'object' 'satisfies' + || lk == 116983 // 'structured-item' 'satisfies' + || lk == 118863 // 'array' 'score' + || lk == 118953 // 'json-item' 'score' + || lk == 118982 // 'object' 'score' + || lk == 119031 // 'structured-item' 'score' + || lk == 121423 // 'array' 'sentences' + || lk == 121513 // 'json-item' 'sentences' + || lk == 121542 // 'object' 'sentences' + || lk == 121591 // 'structured-item' 'sentences' + || lk == 123471 // 'array' 'stable' + || lk == 123561 // 'json-item' 'stable' + || lk == 123590 // 'object' 'stable' + || lk == 123639 // 'structured-item' 'stable' + || lk == 123983 // 'array' 'start' + || lk == 124073 // 'json-item' 'start' + || lk == 124102 // 'object' 'start' + || lk == 124151 // 'structured-item' 'start' + || lk == 129103 // 'array' 'times' + || lk == 129193 // 'json-item' 'times' + || lk == 129222 // 'object' 'times' + || lk == 129271 // 'structured-item' 'times' + || lk == 129615 // 'array' 'to' + || lk == 129705 // 'json-item' 'to' + || lk == 129734 // 'object' 'to' + || lk == 129783 // 'structured-item' 'to' + || lk == 133199 // 'array' 'union' + || lk == 133289 // 'json-item' 'union' + || lk == 133318 // 'object' 'union' + || lk == 133367 // 'structured-item' 'union' + || lk == 139343 // 'array' 'where' + || lk == 139433 // 'json-item' 'where' + || lk == 139462 // 'object' 'where' + || lk == 139511 // 'structured-item' 'where' + || lk == 141391 // 'array' 'with' + || lk == 141481 // 'json-item' 'with' + || lk == 141510 // 'object' 'with' + || lk == 141559 // 'structured-item' 'with' + || lk == 142927 // 'array' 'words' + || lk == 143017 // 'json-item' 'words' + || lk == 143046 // 'object' 'words' + || lk == 143095 // 'structured-item' 'words' + || lk == 143951 // 'array' '{' + || lk == 144041 // 'json-item' '{' + || lk == 144070 // 'object' '{' + || lk == 144119 // 'structured-item' '{' + || lk == 145487 // 'array' '|' + || lk == 145577 // 'json-item' '|' + || lk == 145606 // 'object' '|' + || lk == 145655 // 'structured-item' '|' + || lk == 145999 // 'array' '||' + || lk == 146089 // 'json-item' '||' + || lk == 146118 // 'object' '||' + || lk == 146167 // 'structured-item' '||' + || lk == 146511 // 'array' '|}' + || lk == 146601 // 'json-item' '|}' + || lk == 146630 // 'object' '|}' + || lk == 146679 // 'structured-item' '|}' + || lk == 147023 // 'array' '}' + || lk == 147113 // 'json-item' '}' + || lk == 147142 // 'object' '}' + || lk == 147191) // 'structured-item' '}' + { + lk = memoized(6, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + try_AtomicOrUnionType(); + memoize(6, e0A, -4); + lk = -8; + } + catch (p4A) + { + try + { + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + try_JSONTest(); + memoize(6, e0A, -6); + lk = -8; + } + catch (p6A) + { + lk = -7; + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(6, e0A, -7); + } + } + } + } + switch (lk) + { + case 18003: // 'attribute' '(' + case 18017: // 'comment' '(' + case 18041: // 'document-node' '(' + case 18042: // 'element' '(' + case 18108: // 'namespace-node' '(' + case 18114: // 'node' '(' + case 18140: // 'processing-instruction' '(' + case 18150: // 'schema-attribute' '(' + case 18151: // 'schema-element' '(' + case 18169: // 'text' '(' + try_KindTest(); + break; + case 18087: // 'item' '(' + shiftT(167); // 'item' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(35); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(38); // ')' + break; + case 33: // '%' + case 18067: // 'function' '(' + try_FunctionTest(); + break; + case 35: // '(' + try_ParenthesizedItemType(); + break; + case -6: + case 17999: // 'array' '(' + case 18089: // 'json-item' '(' + case 18118: // 'object' '(' + try_JSONTest(); + break; + case -7: + case 18167: // 'structured-item' '(' + try_StructuredItemTest(); + break; + case -8: + break; + default: + try_AtomicOrUnionType(); + } + } + + function parse_JSONTest() + { + eventHandler.startNonterminal("JSONTest", e0); + switch (l1) + { + case 169: // 'json-item' + parse_JSONItemTest(); + break; + case 198: // 'object' + parse_JSONObjectTest(); + break; + default: + parse_JSONArrayTest(); + } + eventHandler.endNonterminal("JSONTest", e0); + } + + function try_JSONTest() + { + switch (l1) + { + case 169: // 'json-item' + try_JSONItemTest(); + break; + case 198: // 'object' + try_JSONObjectTest(); + break; + default: + try_JSONArrayTest(); + } + } + + function parse_StructuredItemTest() + { + eventHandler.startNonterminal("StructuredItemTest", e0); + shift(247); // 'structured-item' + lookahead1W(232); // S^WS | EOF | '!=' | '(' | '(:' | ')' | '*' | '*' | '+' | ',' | '-' | ':' | ':=' | + if (l1 == 35) // '(' + { + shift(35); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shift(38); // ')' + } + eventHandler.endNonterminal("StructuredItemTest", e0); + } + + function try_StructuredItemTest() + { + shiftT(247); // 'structured-item' + lookahead1W(232); // S^WS | EOF | '!=' | '(' | '(:' | ')' | '*' | '*' | '+' | ',' | '-' | ':' | ':=' | + if (l1 == 35) // '(' + { + shiftT(35); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(38); // ')' + } + } + + function parse_JSONItemTest() + { + eventHandler.startNonterminal("JSONItemTest", e0); + shift(169); // 'json-item' + lookahead1W(232); // S^WS | EOF | '!=' | '(' | '(:' | ')' | '*' | '*' | '+' | ',' | '-' | ':' | ':=' | + if (l1 == 35) // '(' + { + shift(35); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shift(38); // ')' + } + eventHandler.endNonterminal("JSONItemTest", e0); + } + + function try_JSONItemTest() + { + shiftT(169); // 'json-item' + lookahead1W(232); // S^WS | EOF | '!=' | '(' | '(:' | ')' | '*' | '*' | '+' | ',' | '-' | ':' | ':=' | + if (l1 == 35) // '(' + { + shiftT(35); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(38); // ')' + } + } + + function parse_JSONObjectTest() + { + eventHandler.startNonterminal("JSONObjectTest", e0); + shift(198); // 'object' + lookahead1W(232); // S^WS | EOF | '!=' | '(' | '(:' | ')' | '*' | '*' | '+' | ',' | '-' | ':' | ':=' | + if (l1 == 35) // '(' + { + shift(35); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shift(38); // ')' + } + eventHandler.endNonterminal("JSONObjectTest", e0); + } + + function try_JSONObjectTest() + { + shiftT(198); // 'object' + lookahead1W(232); // S^WS | EOF | '!=' | '(' | '(:' | ')' | '*' | '*' | '+' | ',' | '-' | ':' | ':=' | + if (l1 == 35) // '(' + { + shiftT(35); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(38); // ')' + } + } + + function parse_JSONArrayTest() + { + eventHandler.startNonterminal("JSONArrayTest", e0); + shift(79); // 'array' + lookahead1W(232); // S^WS | EOF | '!=' | '(' | '(:' | ')' | '*' | '*' | '+' | ',' | '-' | ':' | ':=' | + if (l1 == 35) // '(' + { + shift(35); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shift(38); // ')' + } + eventHandler.endNonterminal("JSONArrayTest", e0); + } + + function try_JSONArrayTest() + { + shiftT(79); // 'array' + lookahead1W(232); // S^WS | EOF | '!=' | '(' | '(:' | ')' | '*' | '*' | '+' | ',' | '-' | ':' | ':=' | + if (l1 == 35) // '(' + { + shiftT(35); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(38); // ')' + } + } + + function parse_AtomicOrUnionType() + { + eventHandler.startNonterminal("AtomicOrUnionType", e0); + parse_EQName(); + eventHandler.endNonterminal("AtomicOrUnionType", e0); + } + + function try_AtomicOrUnionType() + { + try_EQName(); + } + + function parse_KindTest() + { + eventHandler.startNonterminal("KindTest", e0); + switch (l1) + { + case 121: // 'document-node' + parse_DocumentTest(); + break; + case 122: // 'element' + parse_ElementTest(); + break; + case 83: // 'attribute' + parse_AttributeTest(); + break; + case 231: // 'schema-element' + parse_SchemaElementTest(); + break; + case 230: // 'schema-attribute' + parse_SchemaAttributeTest(); + break; + case 220: // 'processing-instruction' + parse_PITest(); + break; + case 97: // 'comment' + parse_CommentTest(); + break; + case 249: // 'text' + parse_TextTest(); + break; + case 188: // 'namespace-node' + parse_NamespaceNodeTest(); + break; + default: + parse_AnyKindTest(); + } + eventHandler.endNonterminal("KindTest", e0); + } + + function try_KindTest() + { + switch (l1) + { + case 121: // 'document-node' + try_DocumentTest(); + break; + case 122: // 'element' + try_ElementTest(); + break; + case 83: // 'attribute' + try_AttributeTest(); + break; + case 231: // 'schema-element' + try_SchemaElementTest(); + break; + case 230: // 'schema-attribute' + try_SchemaAttributeTest(); + break; + case 220: // 'processing-instruction' + try_PITest(); + break; + case 97: // 'comment' + try_CommentTest(); + break; + case 249: // 'text' + try_TextTest(); + break; + case 188: // 'namespace-node' + try_NamespaceNodeTest(); + break; + default: + try_AnyKindTest(); + } + } + + function parse_AnyKindTest() + { + eventHandler.startNonterminal("AnyKindTest", e0); + shift(194); // 'node' + lookahead1W(22); // S^WS | '(' | '(:' + shift(35); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shift(38); // ')' + eventHandler.endNonterminal("AnyKindTest", e0); + } + + function try_AnyKindTest() + { + shiftT(194); // 'node' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(35); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(38); // ')' + } + + function parse_DocumentTest() + { + eventHandler.startNonterminal("DocumentTest", e0); + shift(121); // 'document-node' + lookahead1W(22); // S^WS | '(' | '(:' + shift(35); // '(' + lookahead1W(154); // S^WS | '(:' | ')' | 'element' | 'schema-element' + if (l1 != 38) // ')' + { + switch (l1) + { + case 122: // 'element' + whitespace(); + parse_ElementTest(); + break; + default: + whitespace(); + parse_SchemaElementTest(); + } + } + lookahead1W(23); // S^WS | '(:' | ')' + shift(38); // ')' + eventHandler.endNonterminal("DocumentTest", e0); + } + + function try_DocumentTest() + { + shiftT(121); // 'document-node' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(35); // '(' + lookahead1W(154); // S^WS | '(:' | ')' | 'element' | 'schema-element' + if (l1 != 38) // ')' + { + switch (l1) + { + case 122: // 'element' + try_ElementTest(); + break; + default: + try_SchemaElementTest(); + } + } + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(38); // ')' + } + + function parse_TextTest() + { + eventHandler.startNonterminal("TextTest", e0); + shift(249); // 'text' + lookahead1W(22); // S^WS | '(' | '(:' + shift(35); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shift(38); // ')' + eventHandler.endNonterminal("TextTest", e0); + } + + function try_TextTest() + { + shiftT(249); // 'text' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(35); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(38); // ')' + } + + function parse_CommentTest() + { + eventHandler.startNonterminal("CommentTest", e0); + shift(97); // 'comment' + lookahead1W(22); // S^WS | '(' | '(:' + shift(35); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shift(38); // ')' + eventHandler.endNonterminal("CommentTest", e0); + } + + function try_CommentTest() + { + shiftT(97); // 'comment' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(35); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(38); // ')' + } + + function parse_NamespaceNodeTest() + { + eventHandler.startNonterminal("NamespaceNodeTest", e0); + shift(188); // 'namespace-node' + lookahead1W(22); // S^WS | '(' | '(:' + shift(35); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shift(38); // ')' + eventHandler.endNonterminal("NamespaceNodeTest", e0); + } + + function try_NamespaceNodeTest() + { + shiftT(188); // 'namespace-node' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(35); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(38); // ')' + } + + function parse_PITest() + { + eventHandler.startNonterminal("PITest", e0); + shift(220); // 'processing-instruction' + lookahead1W(22); // S^WS | '(' | '(:' + shift(35); // '(' + lookahead1W(243); // StringLiteral | NCName^Token | S^WS | '(:' | ')' | 'after' | 'allowing' | + if (l1 != 38) // ')' + { + switch (l1) + { + case 11: // StringLiteral + shift(11); // StringLiteral + break; + default: + whitespace(); + parse_NCName(); + } + } + lookahead1W(23); // S^WS | '(:' | ')' + shift(38); // ')' + eventHandler.endNonterminal("PITest", e0); + } + + function try_PITest() + { + shiftT(220); // 'processing-instruction' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(35); // '(' + lookahead1W(243); // StringLiteral | NCName^Token | S^WS | '(:' | ')' | 'after' | 'allowing' | + if (l1 != 38) // ')' + { + switch (l1) + { + case 11: // StringLiteral + shiftT(11); // StringLiteral + break; + default: + try_NCName(); + } + } + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(38); // ')' + } + + function parse_AttributeTest() + { + eventHandler.startNonterminal("AttributeTest", e0); + shift(83); // 'attribute' + lookahead1W(22); // S^WS | '(' | '(:' + shift(35); // '(' + lookahead1W(254); // EQName^Token | S^WS | '(:' | ')' | '*' | 'after' | 'allowing' | 'ancestor' | + if (l1 != 38) // ')' + { + whitespace(); + parse_AttribNameOrWildcard(); + lookahead1W(105); // S^WS | '(:' | ')' | ',' + if (l1 == 42) // ',' + { + shift(42); // ',' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_TypeName(); + } + } + lookahead1W(23); // S^WS | '(:' | ')' + shift(38); // ')' + eventHandler.endNonterminal("AttributeTest", e0); + } + + function try_AttributeTest() + { + shiftT(83); // 'attribute' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(35); // '(' + lookahead1W(254); // EQName^Token | S^WS | '(:' | ')' | '*' | 'after' | 'allowing' | 'ancestor' | + if (l1 != 38) // ')' + { + try_AttribNameOrWildcard(); + lookahead1W(105); // S^WS | '(:' | ')' | ',' + if (l1 == 42) // ',' + { + shiftT(42); // ',' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + try_TypeName(); + } + } + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(38); // ')' + } + + function parse_AttribNameOrWildcard() + { + eventHandler.startNonterminal("AttribNameOrWildcard", e0); + switch (l1) + { + case 39: // '*' + shift(39); // '*' + break; + default: + parse_AttributeName(); + } + eventHandler.endNonterminal("AttribNameOrWildcard", e0); + } + + function try_AttribNameOrWildcard() + { + switch (l1) + { + case 39: // '*' + shiftT(39); // '*' + break; + default: + try_AttributeName(); + } + } + + function parse_SchemaAttributeTest() + { + eventHandler.startNonterminal("SchemaAttributeTest", e0); + shift(230); // 'schema-attribute' + lookahead1W(22); // S^WS | '(' | '(:' + shift(35); // '(' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_AttributeDeclaration(); + lookahead1W(23); // S^WS | '(:' | ')' + shift(38); // ')' + eventHandler.endNonterminal("SchemaAttributeTest", e0); + } + + function try_SchemaAttributeTest() + { + shiftT(230); // 'schema-attribute' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(35); // '(' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + try_AttributeDeclaration(); + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(38); // ')' + } + + function parse_AttributeDeclaration() + { + eventHandler.startNonterminal("AttributeDeclaration", e0); + parse_AttributeName(); + eventHandler.endNonterminal("AttributeDeclaration", e0); + } + + function try_AttributeDeclaration() + { + try_AttributeName(); + } + + function parse_ElementTest() + { + eventHandler.startNonterminal("ElementTest", e0); + shift(122); // 'element' + lookahead1W(22); // S^WS | '(' | '(:' + shift(35); // '(' + lookahead1W(254); // EQName^Token | S^WS | '(:' | ')' | '*' | 'after' | 'allowing' | 'ancestor' | + if (l1 != 38) // ')' + { + whitespace(); + parse_ElementNameOrWildcard(); + lookahead1W(105); // S^WS | '(:' | ')' | ',' + if (l1 == 42) // ',' + { + shift(42); // ',' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_TypeName(); + lookahead1W(106); // S^WS | '(:' | ')' | '?' + if (l1 == 65) // '?' + { + shift(65); // '?' + } + } + } + lookahead1W(23); // S^WS | '(:' | ')' + shift(38); // ')' + eventHandler.endNonterminal("ElementTest", e0); + } + + function try_ElementTest() + { + shiftT(122); // 'element' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(35); // '(' + lookahead1W(254); // EQName^Token | S^WS | '(:' | ')' | '*' | 'after' | 'allowing' | 'ancestor' | + if (l1 != 38) // ')' + { + try_ElementNameOrWildcard(); + lookahead1W(105); // S^WS | '(:' | ')' | ',' + if (l1 == 42) // ',' + { + shiftT(42); // ',' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + try_TypeName(); + lookahead1W(106); // S^WS | '(:' | ')' | '?' + if (l1 == 65) // '?' + { + shiftT(65); // '?' + } + } + } + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(38); // ')' + } + + function parse_ElementNameOrWildcard() + { + eventHandler.startNonterminal("ElementNameOrWildcard", e0); + switch (l1) + { + case 39: // '*' + shift(39); // '*' + break; + default: + parse_ElementName(); + } + eventHandler.endNonterminal("ElementNameOrWildcard", e0); + } + + function try_ElementNameOrWildcard() + { + switch (l1) + { + case 39: // '*' + shiftT(39); // '*' + break; + default: + try_ElementName(); + } + } + + function parse_SchemaElementTest() + { + eventHandler.startNonterminal("SchemaElementTest", e0); + shift(231); // 'schema-element' + lookahead1W(22); // S^WS | '(' | '(:' + shift(35); // '(' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_ElementDeclaration(); + lookahead1W(23); // S^WS | '(:' | ')' + shift(38); // ')' + eventHandler.endNonterminal("SchemaElementTest", e0); + } + + function try_SchemaElementTest() + { + shiftT(231); // 'schema-element' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(35); // '(' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + try_ElementDeclaration(); + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(38); // ')' + } + + function parse_ElementDeclaration() + { + eventHandler.startNonterminal("ElementDeclaration", e0); + parse_ElementName(); + eventHandler.endNonterminal("ElementDeclaration", e0); + } + + function try_ElementDeclaration() + { + try_ElementName(); + } + + function parse_AttributeName() + { + eventHandler.startNonterminal("AttributeName", e0); + parse_EQName(); + eventHandler.endNonterminal("AttributeName", e0); + } + + function try_AttributeName() + { + try_EQName(); + } + + function parse_ElementName() + { + eventHandler.startNonterminal("ElementName", e0); + parse_EQName(); + eventHandler.endNonterminal("ElementName", e0); + } + + function try_ElementName() + { + try_EQName(); + } + + function parse_SimpleTypeName() + { + eventHandler.startNonterminal("SimpleTypeName", e0); + parse_TypeName(); + eventHandler.endNonterminal("SimpleTypeName", e0); + } + + function try_SimpleTypeName() + { + try_TypeName(); + } + + function parse_TypeName() + { + eventHandler.startNonterminal("TypeName", e0); + parse_EQName(); + eventHandler.endNonterminal("TypeName", e0); + } + + function try_TypeName() + { + try_EQName(); + } + + function parse_FunctionTest() + { + eventHandler.startNonterminal("FunctionTest", e0); + for (;;) + { + lookahead1W(101); // S^WS | '%' | '(:' | 'function' + if (l1 != 33) // '%' + { + break; + } + whitespace(); + parse_Annotation(); + } + switch (l1) + { + case 147: // 'function' + lookahead2W(22); // S^WS | '(' | '(:' + break; + default: + lk = l1; + } + lk = memoized(7, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + try_AnyFunctionTest(); + lk = -1; + } + catch (p1A) + { + lk = -2; + } + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(7, e0, lk); + } + switch (lk) + { + case -1: + whitespace(); + parse_AnyFunctionTest(); + break; + default: + whitespace(); + parse_TypedFunctionTest(); + } + eventHandler.endNonterminal("FunctionTest", e0); + } + + function try_FunctionTest() + { + for (;;) + { + lookahead1W(101); // S^WS | '%' | '(:' | 'function' + if (l1 != 33) // '%' + { + break; + } + try_Annotation(); + } + switch (l1) + { + case 147: // 'function' + lookahead2W(22); // S^WS | '(' | '(:' + break; + default: + lk = l1; + } + lk = memoized(7, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + try_AnyFunctionTest(); + memoize(7, e0A, -1); + lk = -3; + } + catch (p1A) + { + lk = -2; + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(7, e0A, -2); + } + } + switch (lk) + { + case -1: + try_AnyFunctionTest(); + break; + case -3: + break; + default: + try_TypedFunctionTest(); + } + } + + function parse_AnyFunctionTest() + { + eventHandler.startNonterminal("AnyFunctionTest", e0); + shift(147); // 'function' + lookahead1W(22); // S^WS | '(' | '(:' + shift(35); // '(' + lookahead1W(24); // S^WS | '(:' | '*' + shift(39); // '*' + lookahead1W(23); // S^WS | '(:' | ')' + shift(38); // ')' + eventHandler.endNonterminal("AnyFunctionTest", e0); + } + + function try_AnyFunctionTest() + { + shiftT(147); // 'function' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(35); // '(' + lookahead1W(24); // S^WS | '(:' | '*' + shiftT(39); // '*' + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(38); // ')' + } + + function parse_TypedFunctionTest() + { + eventHandler.startNonterminal("TypedFunctionTest", e0); + shift(147); // 'function' + lookahead1W(22); // S^WS | '(' | '(:' + shift(35); // '(' + lookahead1W(258); // EQName^Token | S^WS | '%' | '(' | '(:' | ')' | 'after' | 'allowing' | + if (l1 != 38) // ')' + { + whitespace(); + parse_SequenceType(); + for (;;) + { + lookahead1W(105); // S^WS | '(:' | ')' | ',' + if (l1 != 42) // ',' + { + break; + } + shift(42); // ',' + lookahead1W(253); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_SequenceType(); + } + } + shift(38); // ')' + lookahead1W(33); // S^WS | '(:' | 'as' + shift(80); // 'as' + lookahead1W(253); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_SequenceType(); + eventHandler.endNonterminal("TypedFunctionTest", e0); + } + + function try_TypedFunctionTest() + { + shiftT(147); // 'function' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(35); // '(' + lookahead1W(258); // EQName^Token | S^WS | '%' | '(' | '(:' | ')' | 'after' | 'allowing' | + if (l1 != 38) // ')' + { + try_SequenceType(); + for (;;) + { + lookahead1W(105); // S^WS | '(:' | ')' | ',' + if (l1 != 42) // ',' + { + break; + } + shiftT(42); // ',' + lookahead1W(253); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + try_SequenceType(); + } + } + shiftT(38); // ')' + lookahead1W(33); // S^WS | '(:' | 'as' + shiftT(80); // 'as' + lookahead1W(253); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + try_SequenceType(); + } + + function parse_ParenthesizedItemType() + { + eventHandler.startNonterminal("ParenthesizedItemType", e0); + shift(35); // '(' + lookahead1W(253); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_ItemType(); + lookahead1W(23); // S^WS | '(:' | ')' + shift(38); // ')' + eventHandler.endNonterminal("ParenthesizedItemType", e0); + } + + function try_ParenthesizedItemType() + { + shiftT(35); // '(' + lookahead1W(253); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + try_ItemType(); + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(38); // ')' + } + + function parse_RevalidationDecl() + { + eventHandler.startNonterminal("RevalidationDecl", e0); + shift(109); // 'declare' + lookahead1W(75); // S^WS | '(:' | 'revalidation' + shift(226); // 'revalidation' + lookahead1W(162); // S^WS | '(:' | 'lax' | 'skip' | 'strict' + switch (l1) + { + case 245: // 'strict' + shift(245); // 'strict' + break; + case 174: // 'lax' + shift(174); // 'lax' + break; + default: + shift(238); // 'skip' + } + eventHandler.endNonterminal("RevalidationDecl", e0); + } + + function parse_InsertExprTargetChoice() + { + eventHandler.startNonterminal("InsertExprTargetChoice", e0); + switch (l1) + { + case 71: // 'after' + shift(71); // 'after' + break; + case 85: // 'before' + shift(85); // 'before' + break; + default: + if (l1 == 80) // 'as' + { + shift(80); // 'as' + lookahead1W(123); // S^WS | '(:' | 'first' | 'last' + switch (l1) + { + case 136: // 'first' + shift(136); // 'first' + break; + default: + shift(173); // 'last' + } + } + lookahead1W(57); // S^WS | '(:' | 'into' + shift(165); // 'into' + } + eventHandler.endNonterminal("InsertExprTargetChoice", e0); + } + + function try_InsertExprTargetChoice() + { + switch (l1) + { + case 71: // 'after' + shiftT(71); // 'after' + break; + case 85: // 'before' + shiftT(85); // 'before' + break; + default: + if (l1 == 80) // 'as' + { + shiftT(80); // 'as' + lookahead1W(123); // S^WS | '(:' | 'first' | 'last' + switch (l1) + { + case 136: // 'first' + shiftT(136); // 'first' + break; + default: + shiftT(173); // 'last' + } + } + lookahead1W(57); // S^WS | '(:' | 'into' + shiftT(165); // 'into' + } + } + + function parse_InsertExpr() + { + eventHandler.startNonterminal("InsertExpr", e0); + shift(161); // 'insert' + lookahead1W(133); // S^WS | '(:' | 'node' | 'nodes' + switch (l1) + { + case 194: // 'node' + shift(194); // 'node' + break; + default: + shift(195); // 'nodes' + } + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_SourceExpr(); + whitespace(); + parse_InsertExprTargetChoice(); + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_TargetExpr(); + eventHandler.endNonterminal("InsertExpr", e0); + } + + function try_InsertExpr() + { + shiftT(161); // 'insert' + lookahead1W(133); // S^WS | '(:' | 'node' | 'nodes' + switch (l1) + { + case 194: // 'node' + shiftT(194); // 'node' + break; + default: + shiftT(195); // 'nodes' + } + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_SourceExpr(); + try_InsertExprTargetChoice(); + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_TargetExpr(); + } + + function parse_DeleteExpr() + { + eventHandler.startNonterminal("DeleteExpr", e0); + shift(111); // 'delete' + lookahead1W(133); // S^WS | '(:' | 'node' | 'nodes' + switch (l1) + { + case 194: // 'node' + shift(194); // 'node' + break; + default: + shift(195); // 'nodes' + } + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_TargetExpr(); + eventHandler.endNonterminal("DeleteExpr", e0); + } + + function try_DeleteExpr() + { + shiftT(111); // 'delete' + lookahead1W(133); // S^WS | '(:' | 'node' | 'nodes' + switch (l1) + { + case 194: // 'node' + shiftT(194); // 'node' + break; + default: + shiftT(195); // 'nodes' + } + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_TargetExpr(); + } + + function parse_ReplaceExpr() + { + eventHandler.startNonterminal("ReplaceExpr", e0); + shift(223); // 'replace' + lookahead1W(134); // S^WS | '(:' | 'node' | 'value' + if (l1 == 267) // 'value' + { + shift(267); // 'value' + lookahead1W(67); // S^WS | '(:' | 'of' + shift(200); // 'of' + } + lookahead1W(65); // S^WS | '(:' | 'node' + shift(194); // 'node' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_TargetExpr(); + shift(276); // 'with' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("ReplaceExpr", e0); + } + + function try_ReplaceExpr() + { + shiftT(223); // 'replace' + lookahead1W(134); // S^WS | '(:' | 'node' | 'value' + if (l1 == 267) // 'value' + { + shiftT(267); // 'value' + lookahead1W(67); // S^WS | '(:' | 'of' + shiftT(200); // 'of' + } + lookahead1W(65); // S^WS | '(:' | 'node' + shiftT(194); // 'node' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_TargetExpr(); + shiftT(276); // 'with' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_ExprSingle(); + } + + function parse_RenameExpr() + { + eventHandler.startNonterminal("RenameExpr", e0); + shift(222); // 'rename' + lookahead1W(65); // S^WS | '(:' | 'node' + shift(194); // 'node' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_TargetExpr(); + shift(80); // 'as' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_NewNameExpr(); + eventHandler.endNonterminal("RenameExpr", e0); + } + + function try_RenameExpr() + { + shiftT(222); // 'rename' + lookahead1W(65); // S^WS | '(:' | 'node' + shiftT(194); // 'node' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_TargetExpr(); + shiftT(80); // 'as' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_NewNameExpr(); + } + + function parse_SourceExpr() + { + eventHandler.startNonterminal("SourceExpr", e0); + parse_ExprSingle(); + eventHandler.endNonterminal("SourceExpr", e0); + } + + function try_SourceExpr() + { + try_ExprSingle(); + } + + function parse_TargetExpr() + { + eventHandler.startNonterminal("TargetExpr", e0); + parse_ExprSingle(); + eventHandler.endNonterminal("TargetExpr", e0); + } + + function try_TargetExpr() + { + try_ExprSingle(); + } + + function parse_NewNameExpr() + { + eventHandler.startNonterminal("NewNameExpr", e0); + parse_ExprSingle(); + eventHandler.endNonterminal("NewNameExpr", e0); + } + + function try_NewNameExpr() + { + try_ExprSingle(); + } + + function parse_TransformExpr() + { + eventHandler.startNonterminal("TransformExpr", e0); + shift(104); // 'copy' + lookahead1W(21); // S^WS | '$' | '(:' + whitespace(); + parse_TransformSpec(); + for (;;) + { + if (l1 != 42) // ',' + { + break; + } + shift(42); // ',' + lookahead1W(21); // S^WS | '$' | '(:' + whitespace(); + parse_TransformSpec(); + } + shift(184); // 'modify' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_ExprSingle(); + shift(224); // 'return' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("TransformExpr", e0); + } + + function try_TransformExpr() + { + shiftT(104); // 'copy' + lookahead1W(21); // S^WS | '$' | '(:' + try_TransformSpec(); + for (;;) + { + if (l1 != 42) // ',' + { + break; + } + shiftT(42); // ',' + lookahead1W(21); // S^WS | '$' | '(:' + try_TransformSpec(); + } + shiftT(184); // 'modify' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_ExprSingle(); + shiftT(224); // 'return' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_ExprSingle(); + } + + function parse_TransformSpec() + { + eventHandler.startNonterminal("TransformSpec", e0); + shift(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_VarName(); + lookahead1W(28); // S^WS | '(:' | ':=' + shift(53); // ':=' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("TransformSpec", e0); + } + + function try_TransformSpec() + { + shiftT(31); // '$' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + try_VarName(); + lookahead1W(28); // S^WS | '(:' | ':=' + shiftT(53); // ':=' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_ExprSingle(); + } + + function parse_FTSelection() + { + eventHandler.startNonterminal("FTSelection", e0); + parse_FTOr(); + for (;;) + { + lookahead1W(211); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + switch (l1) + { + case 82: // 'at' + lookahead2W(161); // S^WS | '(:' | 'end' | 'position' | 'start' + break; + default: + lk = l1; + } + if (lk != 116 // 'different' + && lk != 118 // 'distance' + && lk != 128 // 'entire' + && lk != 206 // 'ordered' + && lk != 227 // 'same' + && lk != 275 // 'window' + && lk != 65106 // 'at' 'end' + && lk != 123986) // 'at' 'start' + { + break; + } + whitespace(); + parse_FTPosFilter(); + } + eventHandler.endNonterminal("FTSelection", e0); + } + + function try_FTSelection() + { + try_FTOr(); + for (;;) + { + lookahead1W(211); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + switch (l1) + { + case 82: // 'at' + lookahead2W(161); // S^WS | '(:' | 'end' | 'position' | 'start' + break; + default: + lk = l1; + } + if (lk != 116 // 'different' + && lk != 118 // 'distance' + && lk != 128 // 'entire' + && lk != 206 // 'ordered' + && lk != 227 // 'same' + && lk != 275 // 'window' + && lk != 65106 // 'at' 'end' + && lk != 123986) // 'at' 'start' + { + break; + } + try_FTPosFilter(); + } + } + + function parse_FTWeight() + { + eventHandler.startNonterminal("FTWeight", e0); + shift(270); // 'weight' + lookahead1W(90); // S^WS | '(:' | '{' + shift(281); // '{' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_Expr(); + shift(287); // '}' + eventHandler.endNonterminal("FTWeight", e0); + } + + function try_FTWeight() + { + shiftT(270); // 'weight' + lookahead1W(90); // S^WS | '(:' | '{' + shiftT(281); // '{' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_Expr(); + shiftT(287); // '}' + } + + function parse_FTOr() + { + eventHandler.startNonterminal("FTOr", e0); + parse_FTAnd(); + for (;;) + { + if (l1 != 146) // 'ftor' + { + break; + } + shift(146); // 'ftor' + lookahead1W(177); // StringLiteral | S^WS | '(' | '(#' | '(:' | 'ftnot' | '{' + whitespace(); + parse_FTAnd(); + } + eventHandler.endNonterminal("FTOr", e0); + } + + function try_FTOr() + { + try_FTAnd(); + for (;;) + { + if (l1 != 146) // 'ftor' + { + break; + } + shiftT(146); // 'ftor' + lookahead1W(177); // StringLiteral | S^WS | '(' | '(#' | '(:' | 'ftnot' | '{' + try_FTAnd(); + } + } + + function parse_FTAnd() + { + eventHandler.startNonterminal("FTAnd", e0); + parse_FTMildNot(); + for (;;) + { + if (l1 != 144) // 'ftand' + { + break; + } + shift(144); // 'ftand' + lookahead1W(177); // StringLiteral | S^WS | '(' | '(#' | '(:' | 'ftnot' | '{' + whitespace(); + parse_FTMildNot(); + } + eventHandler.endNonterminal("FTAnd", e0); + } + + function try_FTAnd() + { + try_FTMildNot(); + for (;;) + { + if (l1 != 144) // 'ftand' + { + break; + } + shiftT(144); // 'ftand' + lookahead1W(177); // StringLiteral | S^WS | '(' | '(#' | '(:' | 'ftnot' | '{' + try_FTMildNot(); + } + } + + function parse_FTMildNot() + { + eventHandler.startNonterminal("FTMildNot", e0); + parse_FTUnaryNot(); + for (;;) + { + lookahead1W(212); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + if (l1 != 196) // 'not' + { + break; + } + shift(196); // 'not' + lookahead1W(56); // S^WS | '(:' | 'in' + shift(156); // 'in' + lookahead1W(177); // StringLiteral | S^WS | '(' | '(#' | '(:' | 'ftnot' | '{' + whitespace(); + parse_FTUnaryNot(); + } + eventHandler.endNonterminal("FTMildNot", e0); + } + + function try_FTMildNot() + { + try_FTUnaryNot(); + for (;;) + { + lookahead1W(212); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + if (l1 != 196) // 'not' + { + break; + } + shiftT(196); // 'not' + lookahead1W(56); // S^WS | '(:' | 'in' + shiftT(156); // 'in' + lookahead1W(177); // StringLiteral | S^WS | '(' | '(#' | '(:' | 'ftnot' | '{' + try_FTUnaryNot(); + } + } + + function parse_FTUnaryNot() + { + eventHandler.startNonterminal("FTUnaryNot", e0); + if (l1 == 145) // 'ftnot' + { + shift(145); // 'ftnot' + } + lookahead1W(164); // StringLiteral | S^WS | '(' | '(#' | '(:' | '{' + whitespace(); + parse_FTPrimaryWithOptions(); + eventHandler.endNonterminal("FTUnaryNot", e0); + } + + function try_FTUnaryNot() + { + if (l1 == 145) // 'ftnot' + { + shiftT(145); // 'ftnot' + } + lookahead1W(164); // StringLiteral | S^WS | '(' | '(#' | '(:' | '{' + try_FTPrimaryWithOptions(); + } + + function parse_FTPrimaryWithOptions() + { + eventHandler.startNonterminal("FTPrimaryWithOptions", e0); + parse_FTPrimary(); + lookahead1W(213); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + if (l1 == 265) // 'using' + { + whitespace(); + parse_FTMatchOptions(); + } + if (l1 == 270) // 'weight' + { + whitespace(); + parse_FTWeight(); + } + eventHandler.endNonterminal("FTPrimaryWithOptions", e0); + } + + function try_FTPrimaryWithOptions() + { + try_FTPrimary(); + lookahead1W(213); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + if (l1 == 265) // 'using' + { + try_FTMatchOptions(); + } + if (l1 == 270) // 'weight' + { + try_FTWeight(); + } + } + + function parse_FTPrimary() + { + eventHandler.startNonterminal("FTPrimary", e0); + switch (l1) + { + case 35: // '(' + shift(35); // '(' + lookahead1W(177); // StringLiteral | S^WS | '(' | '(#' | '(:' | 'ftnot' | '{' + whitespace(); + parse_FTSelection(); + shift(38); // ')' + break; + case 36: // '(#' + parse_FTExtensionSelection(); + break; + default: + parse_FTWords(); + lookahead1W(214); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + if (l1 == 199) // 'occurs' + { + whitespace(); + parse_FTTimes(); + } + } + eventHandler.endNonterminal("FTPrimary", e0); + } + + function try_FTPrimary() + { + switch (l1) + { + case 35: // '(' + shiftT(35); // '(' + lookahead1W(177); // StringLiteral | S^WS | '(' | '(#' | '(:' | 'ftnot' | '{' + try_FTSelection(); + shiftT(38); // ')' + break; + case 36: // '(#' + try_FTExtensionSelection(); + break; + default: + try_FTWords(); + lookahead1W(214); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + if (l1 == 199) // 'occurs' + { + try_FTTimes(); + } + } + } + + function parse_FTWords() + { + eventHandler.startNonterminal("FTWords", e0); + parse_FTWordsValue(); + lookahead1W(220); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + if (l1 == 72 // 'all' + || l1 == 77 // 'any' + || l1 == 214) // 'phrase' + { + whitespace(); + parse_FTAnyallOption(); + } + eventHandler.endNonterminal("FTWords", e0); + } + + function try_FTWords() + { + try_FTWordsValue(); + lookahead1W(220); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + if (l1 == 72 // 'all' + || l1 == 77 // 'any' + || l1 == 214) // 'phrase' + { + try_FTAnyallOption(); + } + } + + function parse_FTWordsValue() + { + eventHandler.startNonterminal("FTWordsValue", e0); + switch (l1) + { + case 11: // StringLiteral + shift(11); // StringLiteral + break; + default: + shift(281); // '{' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_Expr(); + shift(287); // '}' + } + eventHandler.endNonterminal("FTWordsValue", e0); + } + + function try_FTWordsValue() + { + switch (l1) + { + case 11: // StringLiteral + shiftT(11); // StringLiteral + break; + default: + shiftT(281); // '{' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_Expr(); + shiftT(287); // '}' + } + } + + function parse_FTExtensionSelection() + { + eventHandler.startNonterminal("FTExtensionSelection", e0); + for (;;) + { + whitespace(); + parse_Pragma(); + lookahead1W(104); // S^WS | '(#' | '(:' | '{' + if (l1 != 36) // '(#' + { + break; + } + } + shift(281); // '{' + lookahead1W(184); // StringLiteral | S^WS | '(' | '(#' | '(:' | 'ftnot' | '{' | '}' + if (l1 != 287) // '}' + { + whitespace(); + parse_FTSelection(); + } + shift(287); // '}' + eventHandler.endNonterminal("FTExtensionSelection", e0); + } + + function try_FTExtensionSelection() + { + for (;;) + { + try_Pragma(); + lookahead1W(104); // S^WS | '(#' | '(:' | '{' + if (l1 != 36) // '(#' + { + break; + } + } + shiftT(281); // '{' + lookahead1W(184); // StringLiteral | S^WS | '(' | '(#' | '(:' | 'ftnot' | '{' | '}' + if (l1 != 287) // '}' + { + try_FTSelection(); + } + shiftT(287); // '}' + } + + function parse_FTAnyallOption() + { + eventHandler.startNonterminal("FTAnyallOption", e0); + switch (l1) + { + case 77: // 'any' + shift(77); // 'any' + lookahead1W(217); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + if (l1 == 278) // 'word' + { + shift(278); // 'word' + } + break; + case 72: // 'all' + shift(72); // 'all' + lookahead1W(218); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + if (l1 == 279) // 'words' + { + shift(279); // 'words' + } + break; + default: + shift(214); // 'phrase' + } + eventHandler.endNonterminal("FTAnyallOption", e0); + } + + function try_FTAnyallOption() + { + switch (l1) + { + case 77: // 'any' + shiftT(77); // 'any' + lookahead1W(217); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + if (l1 == 278) // 'word' + { + shiftT(278); // 'word' + } + break; + case 72: // 'all' + shiftT(72); // 'all' + lookahead1W(218); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + if (l1 == 279) // 'words' + { + shiftT(279); // 'words' + } + break; + default: + shiftT(214); // 'phrase' + } + } + + function parse_FTTimes() + { + eventHandler.startNonterminal("FTTimes", e0); + shift(199); // 'occurs' + lookahead1W(159); // S^WS | '(:' | 'at' | 'exactly' | 'from' + whitespace(); + parse_FTRange(); + shift(252); // 'times' + eventHandler.endNonterminal("FTTimes", e0); + } + + function try_FTTimes() + { + shiftT(199); // 'occurs' + lookahead1W(159); // S^WS | '(:' | 'at' | 'exactly' | 'from' + try_FTRange(); + shiftT(252); // 'times' + } + + function parse_FTRange() + { + eventHandler.startNonterminal("FTRange", e0); + switch (l1) + { + case 131: // 'exactly' + shift(131); // 'exactly' + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_AdditiveExpr(); + break; + case 82: // 'at' + shift(82); // 'at' + lookahead1W(129); // S^WS | '(:' | 'least' | 'most' + switch (l1) + { + case 176: // 'least' + shift(176); // 'least' + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_AdditiveExpr(); + break; + default: + shift(186); // 'most' + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_AdditiveExpr(); + } + break; + default: + shift(142); // 'from' + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_AdditiveExpr(); + shift(253); // 'to' + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_AdditiveExpr(); + } + eventHandler.endNonterminal("FTRange", e0); + } + + function try_FTRange() + { + switch (l1) + { + case 131: // 'exactly' + shiftT(131); // 'exactly' + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_AdditiveExpr(); + break; + case 82: // 'at' + shiftT(82); // 'at' + lookahead1W(129); // S^WS | '(:' | 'least' | 'most' + switch (l1) + { + case 176: // 'least' + shiftT(176); // 'least' + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_AdditiveExpr(); + break; + default: + shiftT(186); // 'most' + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_AdditiveExpr(); + } + break; + default: + shiftT(142); // 'from' + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_AdditiveExpr(); + shiftT(253); // 'to' + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_AdditiveExpr(); + } + } + + function parse_FTPosFilter() + { + eventHandler.startNonterminal("FTPosFilter", e0); + switch (l1) + { + case 206: // 'ordered' + parse_FTOrder(); + break; + case 275: // 'window' + parse_FTWindow(); + break; + case 118: // 'distance' + parse_FTDistance(); + break; + case 116: // 'different' + case 227: // 'same' + parse_FTScope(); + break; + default: + parse_FTContent(); + } + eventHandler.endNonterminal("FTPosFilter", e0); + } + + function try_FTPosFilter() + { + switch (l1) + { + case 206: // 'ordered' + try_FTOrder(); + break; + case 275: // 'window' + try_FTWindow(); + break; + case 118: // 'distance' + try_FTDistance(); + break; + case 116: // 'different' + case 227: // 'same' + try_FTScope(); + break; + default: + try_FTContent(); + } + } + + function parse_FTOrder() + { + eventHandler.startNonterminal("FTOrder", e0); + shift(206); // 'ordered' + eventHandler.endNonterminal("FTOrder", e0); + } + + function try_FTOrder() + { + shiftT(206); // 'ordered' + } + + function parse_FTWindow() + { + eventHandler.startNonterminal("FTWindow", e0); + shift(275); // 'window' + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_AdditiveExpr(); + whitespace(); + parse_FTUnit(); + eventHandler.endNonterminal("FTWindow", e0); + } + + function try_FTWindow() + { + shiftT(275); // 'window' + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_AdditiveExpr(); + try_FTUnit(); + } + + function parse_FTDistance() + { + eventHandler.startNonterminal("FTDistance", e0); + shift(118); // 'distance' + lookahead1W(159); // S^WS | '(:' | 'at' | 'exactly' | 'from' + whitespace(); + parse_FTRange(); + whitespace(); + parse_FTUnit(); + eventHandler.endNonterminal("FTDistance", e0); + } + + function try_FTDistance() + { + shiftT(118); // 'distance' + lookahead1W(159); // S^WS | '(:' | 'at' | 'exactly' | 'from' + try_FTRange(); + try_FTUnit(); + } + + function parse_FTUnit() + { + eventHandler.startNonterminal("FTUnit", e0); + switch (l1) + { + case 279: // 'words' + shift(279); // 'words' + break; + case 237: // 'sentences' + shift(237); // 'sentences' + break; + default: + shift(209); // 'paragraphs' + } + eventHandler.endNonterminal("FTUnit", e0); + } + + function try_FTUnit() + { + switch (l1) + { + case 279: // 'words' + shiftT(279); // 'words' + break; + case 237: // 'sentences' + shiftT(237); // 'sentences' + break; + default: + shiftT(209); // 'paragraphs' + } + } + + function parse_FTScope() + { + eventHandler.startNonterminal("FTScope", e0); + switch (l1) + { + case 227: // 'same' + shift(227); // 'same' + break; + default: + shift(116); // 'different' + } + lookahead1W(136); // S^WS | '(:' | 'paragraph' | 'sentence' + whitespace(); + parse_FTBigUnit(); + eventHandler.endNonterminal("FTScope", e0); + } + + function try_FTScope() + { + switch (l1) + { + case 227: // 'same' + shiftT(227); // 'same' + break; + default: + shiftT(116); // 'different' + } + lookahead1W(136); // S^WS | '(:' | 'paragraph' | 'sentence' + try_FTBigUnit(); + } + + function parse_FTBigUnit() + { + eventHandler.startNonterminal("FTBigUnit", e0); + switch (l1) + { + case 236: // 'sentence' + shift(236); // 'sentence' + break; + default: + shift(208); // 'paragraph' + } + eventHandler.endNonterminal("FTBigUnit", e0); + } + + function try_FTBigUnit() + { + switch (l1) + { + case 236: // 'sentence' + shiftT(236); // 'sentence' + break; + default: + shiftT(208); // 'paragraph' + } + } + + function parse_FTContent() + { + eventHandler.startNonterminal("FTContent", e0); + switch (l1) + { + case 82: // 'at' + shift(82); // 'at' + lookahead1W(121); // S^WS | '(:' | 'end' | 'start' + switch (l1) + { + case 242: // 'start' + shift(242); // 'start' + break; + default: + shift(127); // 'end' + } + break; + default: + shift(128); // 'entire' + lookahead1W(45); // S^WS | '(:' | 'content' + shift(101); // 'content' + } + eventHandler.endNonterminal("FTContent", e0); + } + + function try_FTContent() + { + switch (l1) + { + case 82: // 'at' + shiftT(82); // 'at' + lookahead1W(121); // S^WS | '(:' | 'end' | 'start' + switch (l1) + { + case 242: // 'start' + shiftT(242); // 'start' + break; + default: + shiftT(127); // 'end' + } + break; + default: + shiftT(128); // 'entire' + lookahead1W(45); // S^WS | '(:' | 'content' + shiftT(101); // 'content' + } + } + + function parse_FTMatchOptions() + { + eventHandler.startNonterminal("FTMatchOptions", e0); + for (;;) + { + shift(265); // 'using' + lookahead1W(204); // S^WS | '(:' | 'case' | 'diacritics' | 'language' | 'lowercase' | 'no' | + whitespace(); + parse_FTMatchOption(); + lookahead1W(213); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + if (l1 != 265) // 'using' + { + break; + } + } + eventHandler.endNonterminal("FTMatchOptions", e0); + } + + function try_FTMatchOptions() + { + for (;;) + { + shiftT(265); // 'using' + lookahead1W(204); // S^WS | '(:' | 'case' | 'diacritics' | 'language' | 'lowercase' | 'no' | + try_FTMatchOption(); + lookahead1W(213); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + if (l1 != 265) // 'using' + { + break; + } + } + } + + function parse_FTMatchOption() + { + eventHandler.startNonterminal("FTMatchOption", e0); + switch (l1) + { + case 191: // 'no' + lookahead2W(176); // S^WS | '(:' | 'stemming' | 'stop' | 'thesaurus' | 'wildcards' + break; + default: + lk = l1; + } + switch (lk) + { + case 172: // 'language' + parse_FTLanguageOption(); + break; + case 274: // 'wildcards' + case 140479: // 'no' 'wildcards' + parse_FTWildCardOption(); + break; + case 251: // 'thesaurus' + case 128703: // 'no' 'thesaurus' + parse_FTThesaurusOption(); + break; + case 243: // 'stemming' + case 124607: // 'no' 'stemming' + parse_FTStemOption(); + break; + case 115: // 'diacritics' + parse_FTDiacriticsOption(); + break; + case 244: // 'stop' + case 125119: // 'no' 'stop' + parse_FTStopWordOption(); + break; + case 203: // 'option' + parse_FTExtensionOption(); + break; + default: + parse_FTCaseOption(); + } + eventHandler.endNonterminal("FTMatchOption", e0); + } + + function try_FTMatchOption() + { + switch (l1) + { + case 191: // 'no' + lookahead2W(176); // S^WS | '(:' | 'stemming' | 'stop' | 'thesaurus' | 'wildcards' + break; + default: + lk = l1; + } + switch (lk) + { + case 172: // 'language' + try_FTLanguageOption(); + break; + case 274: // 'wildcards' + case 140479: // 'no' 'wildcards' + try_FTWildCardOption(); + break; + case 251: // 'thesaurus' + case 128703: // 'no' 'thesaurus' + try_FTThesaurusOption(); + break; + case 243: // 'stemming' + case 124607: // 'no' 'stemming' + try_FTStemOption(); + break; + case 115: // 'diacritics' + try_FTDiacriticsOption(); + break; + case 244: // 'stop' + case 125119: // 'no' 'stop' + try_FTStopWordOption(); + break; + case 203: // 'option' + try_FTExtensionOption(); + break; + default: + try_FTCaseOption(); + } + } + + function parse_FTCaseOption() + { + eventHandler.startNonterminal("FTCaseOption", e0); + switch (l1) + { + case 89: // 'case' + shift(89); // 'case' + lookahead1W(128); // S^WS | '(:' | 'insensitive' | 'sensitive' + switch (l1) + { + case 160: // 'insensitive' + shift(160); // 'insensitive' + break; + default: + shift(235); // 'sensitive' + } + break; + case 180: // 'lowercase' + shift(180); // 'lowercase' + break; + default: + shift(264); // 'uppercase' + } + eventHandler.endNonterminal("FTCaseOption", e0); + } + + function try_FTCaseOption() + { + switch (l1) + { + case 89: // 'case' + shiftT(89); // 'case' + lookahead1W(128); // S^WS | '(:' | 'insensitive' | 'sensitive' + switch (l1) + { + case 160: // 'insensitive' + shiftT(160); // 'insensitive' + break; + default: + shiftT(235); // 'sensitive' + } + break; + case 180: // 'lowercase' + shiftT(180); // 'lowercase' + break; + default: + shiftT(264); // 'uppercase' + } + } + + function parse_FTDiacriticsOption() + { + eventHandler.startNonterminal("FTDiacriticsOption", e0); + shift(115); // 'diacritics' + lookahead1W(128); // S^WS | '(:' | 'insensitive' | 'sensitive' + switch (l1) + { + case 160: // 'insensitive' + shift(160); // 'insensitive' + break; + default: + shift(235); // 'sensitive' + } + eventHandler.endNonterminal("FTDiacriticsOption", e0); + } + + function try_FTDiacriticsOption() + { + shiftT(115); // 'diacritics' + lookahead1W(128); // S^WS | '(:' | 'insensitive' | 'sensitive' + switch (l1) + { + case 160: // 'insensitive' + shiftT(160); // 'insensitive' + break; + default: + shiftT(235); // 'sensitive' + } + } + + function parse_FTStemOption() + { + eventHandler.startNonterminal("FTStemOption", e0); + switch (l1) + { + case 243: // 'stemming' + shift(243); // 'stemming' + break; + default: + shift(191); // 'no' + lookahead1W(77); // S^WS | '(:' | 'stemming' + shift(243); // 'stemming' + } + eventHandler.endNonterminal("FTStemOption", e0); + } + + function try_FTStemOption() + { + switch (l1) + { + case 243: // 'stemming' + shiftT(243); // 'stemming' + break; + default: + shiftT(191); // 'no' + lookahead1W(77); // S^WS | '(:' | 'stemming' + shiftT(243); // 'stemming' + } + } + + function parse_FTThesaurusOption() + { + eventHandler.startNonterminal("FTThesaurusOption", e0); + switch (l1) + { + case 251: // 'thesaurus' + shift(251); // 'thesaurus' + lookahead1W(152); // S^WS | '(' | '(:' | 'at' | 'default' + switch (l1) + { + case 82: // 'at' + whitespace(); + parse_FTThesaurusID(); + break; + case 110: // 'default' + shift(110); // 'default' + break; + default: + shift(35); // '(' + lookahead1W(116); // S^WS | '(:' | 'at' | 'default' + switch (l1) + { + case 82: // 'at' + whitespace(); + parse_FTThesaurusID(); + break; + default: + shift(110); // 'default' + } + for (;;) + { + lookahead1W(105); // S^WS | '(:' | ')' | ',' + if (l1 != 42) // ',' + { + break; + } + shift(42); // ',' + lookahead1W(34); // S^WS | '(:' | 'at' + whitespace(); + parse_FTThesaurusID(); + } + shift(38); // ')' + } + break; + default: + shift(191); // 'no' + lookahead1W(81); // S^WS | '(:' | 'thesaurus' + shift(251); // 'thesaurus' + } + eventHandler.endNonterminal("FTThesaurusOption", e0); + } + + function try_FTThesaurusOption() + { + switch (l1) + { + case 251: // 'thesaurus' + shiftT(251); // 'thesaurus' + lookahead1W(152); // S^WS | '(' | '(:' | 'at' | 'default' + switch (l1) + { + case 82: // 'at' + try_FTThesaurusID(); + break; + case 110: // 'default' + shiftT(110); // 'default' + break; + default: + shiftT(35); // '(' + lookahead1W(116); // S^WS | '(:' | 'at' | 'default' + switch (l1) + { + case 82: // 'at' + try_FTThesaurusID(); + break; + default: + shiftT(110); // 'default' + } + for (;;) + { + lookahead1W(105); // S^WS | '(:' | ')' | ',' + if (l1 != 42) // ',' + { + break; + } + shiftT(42); // ',' + lookahead1W(34); // S^WS | '(:' | 'at' + try_FTThesaurusID(); + } + shiftT(38); // ')' + } + break; + default: + shiftT(191); // 'no' + lookahead1W(81); // S^WS | '(:' | 'thesaurus' + shiftT(251); // 'thesaurus' + } + } + + function parse_FTThesaurusID() + { + eventHandler.startNonterminal("FTThesaurusID", e0); + shift(82); // 'at' + lookahead1W(15); // URILiteral | S^WS | '(:' + shift(7); // URILiteral + lookahead1W(219); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + if (l1 == 221) // 'relationship' + { + shift(221); // 'relationship' + lookahead1W(17); // StringLiteral | S^WS | '(:' + shift(11); // StringLiteral + } + lookahead1W(215); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + switch (l1) + { + case 82: // 'at' + lookahead2W(183); // S^WS | '(:' | 'end' | 'least' | 'most' | 'position' | 'start' + break; + default: + lk = l1; + } + if (lk == 131 // 'exactly' + || lk == 142 // 'from' + || lk == 90194 // 'at' 'least' + || lk == 95314) // 'at' 'most' + { + whitespace(); + parse_FTLiteralRange(); + lookahead1W(61); // S^WS | '(:' | 'levels' + shift(178); // 'levels' + } + eventHandler.endNonterminal("FTThesaurusID", e0); + } + + function try_FTThesaurusID() + { + shiftT(82); // 'at' + lookahead1W(15); // URILiteral | S^WS | '(:' + shiftT(7); // URILiteral + lookahead1W(219); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + if (l1 == 221) // 'relationship' + { + shiftT(221); // 'relationship' + lookahead1W(17); // StringLiteral | S^WS | '(:' + shiftT(11); // StringLiteral + } + lookahead1W(215); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + switch (l1) + { + case 82: // 'at' + lookahead2W(183); // S^WS | '(:' | 'end' | 'least' | 'most' | 'position' | 'start' + break; + default: + lk = l1; + } + if (lk == 131 // 'exactly' + || lk == 142 // 'from' + || lk == 90194 // 'at' 'least' + || lk == 95314) // 'at' 'most' + { + try_FTLiteralRange(); + lookahead1W(61); // S^WS | '(:' | 'levels' + shiftT(178); // 'levels' + } + } + + function parse_FTLiteralRange() + { + eventHandler.startNonterminal("FTLiteralRange", e0); + switch (l1) + { + case 131: // 'exactly' + shift(131); // 'exactly' + lookahead1W(16); // IntegerLiteral | S^WS | '(:' + shift(8); // IntegerLiteral + break; + case 82: // 'at' + shift(82); // 'at' + lookahead1W(129); // S^WS | '(:' | 'least' | 'most' + switch (l1) + { + case 176: // 'least' + shift(176); // 'least' + lookahead1W(16); // IntegerLiteral | S^WS | '(:' + shift(8); // IntegerLiteral + break; + default: + shift(186); // 'most' + lookahead1W(16); // IntegerLiteral | S^WS | '(:' + shift(8); // IntegerLiteral + } + break; + default: + shift(142); // 'from' + lookahead1W(16); // IntegerLiteral | S^WS | '(:' + shift(8); // IntegerLiteral + lookahead1W(82); // S^WS | '(:' | 'to' + shift(253); // 'to' + lookahead1W(16); // IntegerLiteral | S^WS | '(:' + shift(8); // IntegerLiteral + } + eventHandler.endNonterminal("FTLiteralRange", e0); + } + + function try_FTLiteralRange() + { + switch (l1) + { + case 131: // 'exactly' + shiftT(131); // 'exactly' + lookahead1W(16); // IntegerLiteral | S^WS | '(:' + shiftT(8); // IntegerLiteral + break; + case 82: // 'at' + shiftT(82); // 'at' + lookahead1W(129); // S^WS | '(:' | 'least' | 'most' + switch (l1) + { + case 176: // 'least' + shiftT(176); // 'least' + lookahead1W(16); // IntegerLiteral | S^WS | '(:' + shiftT(8); // IntegerLiteral + break; + default: + shiftT(186); // 'most' + lookahead1W(16); // IntegerLiteral | S^WS | '(:' + shiftT(8); // IntegerLiteral + } + break; + default: + shiftT(142); // 'from' + lookahead1W(16); // IntegerLiteral | S^WS | '(:' + shiftT(8); // IntegerLiteral + lookahead1W(82); // S^WS | '(:' | 'to' + shiftT(253); // 'to' + lookahead1W(16); // IntegerLiteral | S^WS | '(:' + shiftT(8); // IntegerLiteral + } + } + + function parse_FTStopWordOption() + { + eventHandler.startNonterminal("FTStopWordOption", e0); + switch (l1) + { + case 244: // 'stop' + shift(244); // 'stop' + lookahead1W(89); // S^WS | '(:' | 'words' + shift(279); // 'words' + lookahead1W(152); // S^WS | '(' | '(:' | 'at' | 'default' + switch (l1) + { + case 110: // 'default' + shift(110); // 'default' + for (;;) + { + lookahead1W(216); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + if (l1 != 132 // 'except' + && l1 != 260) // 'union' + { + break; + } + whitespace(); + parse_FTStopWordsInclExcl(); + } + break; + default: + whitespace(); + parse_FTStopWords(); + for (;;) + { + lookahead1W(216); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + if (l1 != 132 // 'except' + && l1 != 260) // 'union' + { + break; + } + whitespace(); + parse_FTStopWordsInclExcl(); + } + } + break; + default: + shift(191); // 'no' + lookahead1W(78); // S^WS | '(:' | 'stop' + shift(244); // 'stop' + lookahead1W(89); // S^WS | '(:' | 'words' + shift(279); // 'words' + } + eventHandler.endNonterminal("FTStopWordOption", e0); + } + + function try_FTStopWordOption() + { + switch (l1) + { + case 244: // 'stop' + shiftT(244); // 'stop' + lookahead1W(89); // S^WS | '(:' | 'words' + shiftT(279); // 'words' + lookahead1W(152); // S^WS | '(' | '(:' | 'at' | 'default' + switch (l1) + { + case 110: // 'default' + shiftT(110); // 'default' + for (;;) + { + lookahead1W(216); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + if (l1 != 132 // 'except' + && l1 != 260) // 'union' + { + break; + } + try_FTStopWordsInclExcl(); + } + break; + default: + try_FTStopWords(); + for (;;) + { + lookahead1W(216); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + if (l1 != 132 // 'except' + && l1 != 260) // 'union' + { + break; + } + try_FTStopWordsInclExcl(); + } + } + break; + default: + shiftT(191); // 'no' + lookahead1W(78); // S^WS | '(:' | 'stop' + shiftT(244); // 'stop' + lookahead1W(89); // S^WS | '(:' | 'words' + shiftT(279); // 'words' + } + } + + function parse_FTStopWords() + { + eventHandler.startNonterminal("FTStopWords", e0); + switch (l1) + { + case 82: // 'at' + shift(82); // 'at' + lookahead1W(15); // URILiteral | S^WS | '(:' + shift(7); // URILiteral + break; + default: + shift(35); // '(' + lookahead1W(17); // StringLiteral | S^WS | '(:' + shift(11); // StringLiteral + for (;;) + { + lookahead1W(105); // S^WS | '(:' | ')' | ',' + if (l1 != 42) // ',' + { + break; + } + shift(42); // ',' + lookahead1W(17); // StringLiteral | S^WS | '(:' + shift(11); // StringLiteral + } + shift(38); // ')' + } + eventHandler.endNonterminal("FTStopWords", e0); + } + + function try_FTStopWords() + { + switch (l1) + { + case 82: // 'at' + shiftT(82); // 'at' + lookahead1W(15); // URILiteral | S^WS | '(:' + shiftT(7); // URILiteral + break; + default: + shiftT(35); // '(' + lookahead1W(17); // StringLiteral | S^WS | '(:' + shiftT(11); // StringLiteral + for (;;) + { + lookahead1W(105); // S^WS | '(:' | ')' | ',' + if (l1 != 42) // ',' + { + break; + } + shiftT(42); // ',' + lookahead1W(17); // StringLiteral | S^WS | '(:' + shiftT(11); // StringLiteral + } + shiftT(38); // ')' + } + } + + function parse_FTStopWordsInclExcl() + { + eventHandler.startNonterminal("FTStopWordsInclExcl", e0); + switch (l1) + { + case 260: // 'union' + shift(260); // 'union' + break; + default: + shift(132); // 'except' + } + lookahead1W(103); // S^WS | '(' | '(:' | 'at' + whitespace(); + parse_FTStopWords(); + eventHandler.endNonterminal("FTStopWordsInclExcl", e0); + } + + function try_FTStopWordsInclExcl() + { + switch (l1) + { + case 260: // 'union' + shiftT(260); // 'union' + break; + default: + shiftT(132); // 'except' + } + lookahead1W(103); // S^WS | '(' | '(:' | 'at' + try_FTStopWords(); + } + + function parse_FTLanguageOption() + { + eventHandler.startNonterminal("FTLanguageOption", e0); + shift(172); // 'language' + lookahead1W(17); // StringLiteral | S^WS | '(:' + shift(11); // StringLiteral + eventHandler.endNonterminal("FTLanguageOption", e0); + } + + function try_FTLanguageOption() + { + shiftT(172); // 'language' + lookahead1W(17); // StringLiteral | S^WS | '(:' + shiftT(11); // StringLiteral + } + + function parse_FTWildCardOption() + { + eventHandler.startNonterminal("FTWildCardOption", e0); + switch (l1) + { + case 274: // 'wildcards' + shift(274); // 'wildcards' + break; + default: + shift(191); // 'no' + lookahead1W(87); // S^WS | '(:' | 'wildcards' + shift(274); // 'wildcards' + } + eventHandler.endNonterminal("FTWildCardOption", e0); + } + + function try_FTWildCardOption() + { + switch (l1) + { + case 274: // 'wildcards' + shiftT(274); // 'wildcards' + break; + default: + shiftT(191); // 'no' + lookahead1W(87); // S^WS | '(:' | 'wildcards' + shiftT(274); // 'wildcards' + } + } + + function parse_FTExtensionOption() + { + eventHandler.startNonterminal("FTExtensionOption", e0); + shift(203); // 'option' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_EQName(); + lookahead1W(17); // StringLiteral | S^WS | '(:' + shift(11); // StringLiteral + eventHandler.endNonterminal("FTExtensionOption", e0); + } + + function try_FTExtensionOption() + { + shiftT(203); // 'option' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + try_EQName(); + lookahead1W(17); // StringLiteral | S^WS | '(:' + shiftT(11); // StringLiteral + } + + function parse_FTIgnoreOption() + { + eventHandler.startNonterminal("FTIgnoreOption", e0); + shift(277); // 'without' + lookahead1W(45); // S^WS | '(:' | 'content' + shift(101); // 'content' + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_UnionExpr(); + eventHandler.endNonterminal("FTIgnoreOption", e0); + } + + function try_FTIgnoreOption() + { + shiftT(277); // 'without' + lookahead1W(45); // S^WS | '(:' | 'content' + shiftT(101); // 'content' + lookahead1W(265); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + try_UnionExpr(); + } + + function parse_CollectionDecl() + { + eventHandler.startNonterminal("CollectionDecl", e0); + shift(96); // 'collection' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_EQName(); + lookahead1W(111); // S^WS | '(:' | ';' | 'as' + if (l1 == 80) // 'as' + { + whitespace(); + parse_CollectionTypeDecl(); + } + eventHandler.endNonterminal("CollectionDecl", e0); + } + + function parse_CollectionTypeDecl() + { + eventHandler.startNonterminal("CollectionTypeDecl", e0); + shift(80); // 'as' + lookahead1W(253); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_ItemType(); + lookahead1W(171); // S^WS | '(:' | '*' | '+' | ';' | '?' + if (l1 != 54) // ';' + { + whitespace(); + parse_OccurrenceIndicator(); + } + eventHandler.endNonterminal("CollectionTypeDecl", e0); + } + + function parse_IndexName() + { + eventHandler.startNonterminal("IndexName", e0); + parse_EQName(); + eventHandler.endNonterminal("IndexName", e0); + } + + function parse_IndexDomainExpr() + { + eventHandler.startNonterminal("IndexDomainExpr", e0); + parse_PathExpr(); + eventHandler.endNonterminal("IndexDomainExpr", e0); + } + + function parse_IndexKeySpec() + { + eventHandler.startNonterminal("IndexKeySpec", e0); + parse_IndexKeyExpr(); + if (l1 == 80) // 'as' + { + whitespace(); + parse_IndexKeyTypeDecl(); + } + lookahead1W(156); // S^WS | '(:' | ',' | ';' | 'collation' + if (l1 == 95) // 'collation' + { + whitespace(); + parse_IndexKeyCollation(); + } + eventHandler.endNonterminal("IndexKeySpec", e0); + } + + function parse_IndexKeyExpr() + { + eventHandler.startNonterminal("IndexKeyExpr", e0); + parse_PathExpr(); + eventHandler.endNonterminal("IndexKeyExpr", e0); + } + + function parse_IndexKeyTypeDecl() + { + eventHandler.startNonterminal("IndexKeyTypeDecl", e0); + shift(80); // 'as' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_AtomicType(); + lookahead1W(189); // S^WS | '(:' | '*' | '+' | ',' | ';' | '?' | 'collation' + if (l1 == 40 // '*' + || l1 == 41 // '+' + || l1 == 65) // '?' + { + whitespace(); + parse_OccurrenceIndicator(); + } + eventHandler.endNonterminal("IndexKeyTypeDecl", e0); + } + + function parse_AtomicType() + { + eventHandler.startNonterminal("AtomicType", e0); + parse_EQName(); + eventHandler.endNonterminal("AtomicType", e0); + } + + function parse_IndexKeyCollation() + { + eventHandler.startNonterminal("IndexKeyCollation", e0); + shift(95); // 'collation' + lookahead1W(15); // URILiteral | S^WS | '(:' + shift(7); // URILiteral + eventHandler.endNonterminal("IndexKeyCollation", e0); + } + + function parse_IndexDecl() + { + eventHandler.startNonterminal("IndexDecl", e0); + shift(157); // 'index' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_IndexName(); + lookahead1W(68); // S^WS | '(:' | 'on' + shift(201); // 'on' + lookahead1W(66); // S^WS | '(:' | 'nodes' + shift(195); // 'nodes' + lookahead1W(262); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_IndexDomainExpr(); + shift(88); // 'by' + lookahead1W(262); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_IndexKeySpec(); + for (;;) + { + lookahead1W(107); // S^WS | '(:' | ',' | ';' + if (l1 != 42) // ',' + { + break; + } + shift(42); // ',' + lookahead1W(262); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_IndexKeySpec(); + } + eventHandler.endNonterminal("IndexDecl", e0); + } + + function parse_ICDecl() + { + eventHandler.startNonterminal("ICDecl", e0); + shift(163); // 'integrity' + lookahead1W(43); // S^WS | '(:' | 'constraint' + shift(98); // 'constraint' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_EQName(); + lookahead1W(124); // S^WS | '(:' | 'foreign' | 'on' + switch (l1) + { + case 201: // 'on' + whitespace(); + parse_ICCollection(); + break; + default: + whitespace(); + parse_ICForeignKey(); + } + eventHandler.endNonterminal("ICDecl", e0); + } + + function parse_ICCollection() + { + eventHandler.startNonterminal("ICCollection", e0); + shift(201); // 'on' + lookahead1W(42); // S^WS | '(:' | 'collection' + shift(96); // 'collection' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_EQName(); + lookahead1W(150); // S^WS | '$' | '(:' | 'foreach' | 'node' + switch (l1) + { + case 31: // '$' + whitespace(); + parse_ICCollSequence(); + break; + case 194: // 'node' + whitespace(); + parse_ICCollSequenceUnique(); + break; + default: + whitespace(); + parse_ICCollNode(); + } + eventHandler.endNonterminal("ICCollection", e0); + } + + function parse_ICCollSequence() + { + eventHandler.startNonterminal("ICCollSequence", e0); + parse_VarRef(); + lookahead1W(40); // S^WS | '(:' | 'check' + shift(93); // 'check' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("ICCollSequence", e0); + } + + function parse_ICCollSequenceUnique() + { + eventHandler.startNonterminal("ICCollSequenceUnique", e0); + shift(194); // 'node' + lookahead1W(21); // S^WS | '$' | '(:' + whitespace(); + parse_VarRef(); + lookahead1W(40); // S^WS | '(:' | 'check' + shift(93); // 'check' + lookahead1W(83); // S^WS | '(:' | 'unique' + shift(261); // 'unique' + lookahead1W(60); // S^WS | '(:' | 'key' + shift(171); // 'key' + lookahead1W(262); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_PathExpr(); + eventHandler.endNonterminal("ICCollSequenceUnique", e0); + } + + function parse_ICCollNode() + { + eventHandler.startNonterminal("ICCollNode", e0); + shift(140); // 'foreach' + lookahead1W(65); // S^WS | '(:' | 'node' + shift(194); // 'node' + lookahead1W(21); // S^WS | '$' | '(:' + whitespace(); + parse_VarRef(); + lookahead1W(40); // S^WS | '(:' | 'check' + shift(93); // 'check' + lookahead1W(266); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("ICCollNode", e0); + } + + function parse_ICForeignKey() + { + eventHandler.startNonterminal("ICForeignKey", e0); + shift(141); // 'foreign' + lookahead1W(60); // S^WS | '(:' | 'key' + shift(171); // 'key' + lookahead1W(54); // S^WS | '(:' | 'from' + whitespace(); + parse_ICForeignKeySource(); + whitespace(); + parse_ICForeignKeyTarget(); + eventHandler.endNonterminal("ICForeignKey", e0); + } + + function parse_ICForeignKeySource() + { + eventHandler.startNonterminal("ICForeignKeySource", e0); + shift(142); // 'from' + lookahead1W(42); // S^WS | '(:' | 'collection' + whitespace(); + parse_ICForeignKeyValues(); + eventHandler.endNonterminal("ICForeignKeySource", e0); + } + + function parse_ICForeignKeyTarget() + { + eventHandler.startNonterminal("ICForeignKeyTarget", e0); + shift(253); // 'to' + lookahead1W(42); // S^WS | '(:' | 'collection' + whitespace(); + parse_ICForeignKeyValues(); + eventHandler.endNonterminal("ICForeignKeyTarget", e0); + } + + function parse_ICForeignKeyValues() + { + eventHandler.startNonterminal("ICForeignKeyValues", e0); + shift(96); // 'collection' + lookahead1W(245); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_EQName(); + lookahead1W(65); // S^WS | '(:' | 'node' + shift(194); // 'node' + lookahead1W(21); // S^WS | '$' | '(:' + whitespace(); + parse_VarRef(); + lookahead1W(60); // S^WS | '(:' | 'key' + shift(171); // 'key' + lookahead1W(262); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + whitespace(); + parse_PathExpr(); + eventHandler.endNonterminal("ICForeignKeyValues", e0); + } + + function try_Comment() + { + shiftT(37); // '(:' + for (;;) + { + lookahead1(92); // CommentContents | '(:' | ':)' + if (l1 == 51) // ':)' + { + break; + } + switch (l1) + { + case 24: // CommentContents + shiftT(24); // CommentContents + break; + default: + try_Comment(); + } + } + shiftT(51); // ':)' + } + + function try_Whitespace() + { + switch (l1) + { + case 22: // S^WS + shiftT(22); // S^WS + break; + default: + try_Comment(); + } + } + + function parse_EQName() + { + eventHandler.startNonterminal("EQName", e0); + lookahead1(240); // EQName^Token | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | + switch (l1) + { + case 83: // 'attribute' + shift(83); // 'attribute' + break; + case 97: // 'comment' + shift(97); // 'comment' + break; + case 121: // 'document-node' + shift(121); // 'document-node' + break; + case 122: // 'element' + shift(122); // 'element' + break; + case 125: // 'empty-sequence' + shift(125); // 'empty-sequence' + break; + case 147: // 'function' + shift(147); // 'function' + break; + case 154: // 'if' + shift(154); // 'if' + break; + case 167: // 'item' + shift(167); // 'item' + break; + case 188: // 'namespace-node' + shift(188); // 'namespace-node' + break; + case 194: // 'node' + shift(194); // 'node' + break; + case 220: // 'processing-instruction' + shift(220); // 'processing-instruction' + break; + case 230: // 'schema-attribute' + shift(230); // 'schema-attribute' + break; + case 231: // 'schema-element' + shift(231); // 'schema-element' + break; + case 248: // 'switch' + shift(248); // 'switch' + break; + case 249: // 'text' + shift(249); // 'text' + break; + case 259: // 'typeswitch' + shift(259); // 'typeswitch' + break; + case 79: // 'array' + shift(79); // 'array' + break; + case 169: // 'json-item' + shift(169); // 'json-item' + break; + case 247: // 'structured-item' + shift(247); // 'structured-item' + break; + default: + parse_FunctionName(); + } + eventHandler.endNonterminal("EQName", e0); + } + + function try_EQName() + { + lookahead1(240); // EQName^Token | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | + switch (l1) + { + case 83: // 'attribute' + shiftT(83); // 'attribute' + break; + case 97: // 'comment' + shiftT(97); // 'comment' + break; + case 121: // 'document-node' + shiftT(121); // 'document-node' + break; + case 122: // 'element' + shiftT(122); // 'element' + break; + case 125: // 'empty-sequence' + shiftT(125); // 'empty-sequence' + break; + case 147: // 'function' + shiftT(147); // 'function' + break; + case 154: // 'if' + shiftT(154); // 'if' + break; + case 167: // 'item' + shiftT(167); // 'item' + break; + case 188: // 'namespace-node' + shiftT(188); // 'namespace-node' + break; + case 194: // 'node' + shiftT(194); // 'node' + break; + case 220: // 'processing-instruction' + shiftT(220); // 'processing-instruction' + break; + case 230: // 'schema-attribute' + shiftT(230); // 'schema-attribute' + break; + case 231: // 'schema-element' + shiftT(231); // 'schema-element' + break; + case 248: // 'switch' + shiftT(248); // 'switch' + break; + case 249: // 'text' + shiftT(249); // 'text' + break; + case 259: // 'typeswitch' + shiftT(259); // 'typeswitch' + break; + case 79: // 'array' + shiftT(79); // 'array' + break; + case 169: // 'json-item' + shiftT(169); // 'json-item' + break; + case 247: // 'structured-item' + shiftT(247); // 'structured-item' + break; + default: + try_FunctionName(); + } + } + + function parse_FunctionName() + { + eventHandler.startNonterminal("FunctionName", e0); + switch (l1) + { + case 6: // EQName^Token + shift(6); // EQName^Token + break; + case 71: // 'after' + shift(71); // 'after' + break; + case 74: // 'ancestor' + shift(74); // 'ancestor' + break; + case 75: // 'ancestor-or-self' + shift(75); // 'ancestor-or-self' + break; + case 76: // 'and' + shift(76); // 'and' + break; + case 80: // 'as' + shift(80); // 'as' + break; + case 81: // 'ascending' + shift(81); // 'ascending' + break; + case 85: // 'before' + shift(85); // 'before' + break; + case 89: // 'case' + shift(89); // 'case' + break; + case 90: // 'cast' + shift(90); // 'cast' + break; + case 91: // 'castable' + shift(91); // 'castable' + break; + case 94: // 'child' + shift(94); // 'child' + break; + case 95: // 'collation' + shift(95); // 'collation' + break; + case 104: // 'copy' + shift(104); // 'copy' + break; + case 106: // 'count' + shift(106); // 'count' + break; + case 109: // 'declare' + shift(109); // 'declare' + break; + case 110: // 'default' + shift(110); // 'default' + break; + case 111: // 'delete' + shift(111); // 'delete' + break; + case 112: // 'descendant' + shift(112); // 'descendant' + break; + case 113: // 'descendant-or-self' + shift(113); // 'descendant-or-self' + break; + case 114: // 'descending' + shift(114); // 'descending' + break; + case 119: // 'div' + shift(119); // 'div' + break; + case 120: // 'document' + shift(120); // 'document' + break; + case 123: // 'else' + shift(123); // 'else' + break; + case 124: // 'empty' + shift(124); // 'empty' + break; + case 127: // 'end' + shift(127); // 'end' + break; + case 129: // 'eq' + shift(129); // 'eq' + break; + case 130: // 'every' + shift(130); // 'every' + break; + case 132: // 'except' + shift(132); // 'except' + break; + case 136: // 'first' + shift(136); // 'first' + break; + case 137: // 'following' + shift(137); // 'following' + break; + case 138: // 'following-sibling' + shift(138); // 'following-sibling' + break; + case 139: // 'for' + shift(139); // 'for' + break; + case 148: // 'ge' + shift(148); // 'ge' + break; + case 150: // 'group' + shift(150); // 'group' + break; + case 152: // 'gt' + shift(152); // 'gt' + break; + case 153: // 'idiv' + shift(153); // 'idiv' + break; + case 155: // 'import' + shift(155); // 'import' + break; + case 161: // 'insert' + shift(161); // 'insert' + break; + case 162: // 'instance' + shift(162); // 'instance' + break; + case 164: // 'intersect' + shift(164); // 'intersect' + break; + case 165: // 'into' + shift(165); // 'into' + break; + case 166: // 'is' + shift(166); // 'is' + break; + case 173: // 'last' + shift(173); // 'last' + break; + case 175: // 'le' + shift(175); // 'le' + break; + case 177: // 'let' + shift(177); // 'let' + break; + case 181: // 'lt' + shift(181); // 'lt' + break; + case 183: // 'mod' + shift(183); // 'mod' + break; + case 184: // 'modify' + shift(184); // 'modify' + break; + case 185: // 'module' + shift(185); // 'module' + break; + case 187: // 'namespace' + shift(187); // 'namespace' + break; + case 189: // 'ne' + shift(189); // 'ne' + break; + case 202: // 'only' + shift(202); // 'only' + break; + case 204: // 'or' + shift(204); // 'or' + break; + case 205: // 'order' + shift(205); // 'order' + break; + case 206: // 'ordered' + shift(206); // 'ordered' + break; + case 210: // 'parent' + shift(210); // 'parent' + break; + case 216: // 'preceding' + shift(216); // 'preceding' + break; + case 217: // 'preceding-sibling' + shift(217); // 'preceding-sibling' + break; + case 222: // 'rename' + shift(222); // 'rename' + break; + case 223: // 'replace' + shift(223); // 'replace' + break; + case 224: // 'return' + shift(224); // 'return' + break; + case 228: // 'satisfies' + shift(228); // 'satisfies' + break; + case 234: // 'self' + shift(234); // 'self' + break; + case 240: // 'some' + shift(240); // 'some' + break; + case 241: // 'stable' + shift(241); // 'stable' + break; + case 242: // 'start' + shift(242); // 'start' + break; + case 253: // 'to' + shift(253); // 'to' + break; + case 254: // 'treat' + shift(254); // 'treat' + break; + case 256: // 'try' + shift(256); // 'try' + break; + case 260: // 'union' + shift(260); // 'union' + break; + case 262: // 'unordered' + shift(262); // 'unordered' + break; + case 266: // 'validate' + shift(266); // 'validate' + break; + case 272: // 'where' + shift(272); // 'where' + break; + case 276: // 'with' + shift(276); // 'with' + break; + case 170: // 'jsoniq' + shift(170); // 'jsoniq' + break; + case 73: // 'allowing' + shift(73); // 'allowing' + break; + case 82: // 'at' + shift(82); // 'at' + break; + case 84: // 'base-uri' + shift(84); // 'base-uri' + break; + case 86: // 'boundary-space' + shift(86); // 'boundary-space' + break; + case 87: // 'break' + shift(87); // 'break' + break; + case 92: // 'catch' + shift(92); // 'catch' + break; + case 99: // 'construction' + shift(99); // 'construction' + break; + case 102: // 'context' + shift(102); // 'context' + break; + case 103: // 'continue' + shift(103); // 'continue' + break; + case 105: // 'copy-namespaces' + shift(105); // 'copy-namespaces' + break; + case 107: // 'decimal-format' + shift(107); // 'decimal-format' + break; + case 126: // 'encoding' + shift(126); // 'encoding' + break; + case 133: // 'exit' + shift(133); // 'exit' + break; + case 134: // 'external' + shift(134); // 'external' + break; + case 143: // 'ft-option' + shift(143); // 'ft-option' + break; + case 156: // 'in' + shift(156); // 'in' + break; + case 157: // 'index' + shift(157); // 'index' + break; + case 163: // 'integrity' + shift(163); // 'integrity' + break; + case 174: // 'lax' + shift(174); // 'lax' + break; + case 195: // 'nodes' + shift(195); // 'nodes' + break; + case 203: // 'option' + shift(203); // 'option' + break; + case 207: // 'ordering' + shift(207); // 'ordering' + break; + case 226: // 'revalidation' + shift(226); // 'revalidation' + break; + case 229: // 'schema' + shift(229); // 'schema' + break; + case 232: // 'score' + shift(232); // 'score' + break; + case 239: // 'sliding' + shift(239); // 'sliding' + break; + case 245: // 'strict' + shift(245); // 'strict' + break; + case 257: // 'tumbling' + shift(257); // 'tumbling' + break; + case 258: // 'type' + shift(258); // 'type' + break; + case 263: // 'updating' + shift(263); // 'updating' + break; + case 267: // 'value' + shift(267); // 'value' + break; + case 268: // 'variable' + shift(268); // 'variable' + break; + case 269: // 'version' + shift(269); // 'version' + break; + case 273: // 'while' + shift(273); // 'while' + break; + case 98: // 'constraint' + shift(98); // 'constraint' + break; + case 179: // 'loop' + shift(179); // 'loop' + break; + case 225: // 'returning' + shift(225); // 'returning' + break; + case 78: // 'append' + shift(78); // 'append' + break; + case 135: // 'false' + shift(135); // 'false' + break; + case 142: // 'from' + shift(142); // 'from' + break; + case 197: // 'null' + shift(197); // 'null' + break; + case 168: // 'json' + shift(168); // 'json' + break; + case 198: // 'object' + shift(198); // 'object' + break; + case 233: // 'select' + shift(233); // 'select' + break; + default: + shift(255); // 'true' + } + eventHandler.endNonterminal("FunctionName", e0); + } + + function try_FunctionName() + { + switch (l1) + { + case 6: // EQName^Token + shiftT(6); // EQName^Token + break; + case 71: // 'after' + shiftT(71); // 'after' + break; + case 74: // 'ancestor' + shiftT(74); // 'ancestor' + break; + case 75: // 'ancestor-or-self' + shiftT(75); // 'ancestor-or-self' + break; + case 76: // 'and' + shiftT(76); // 'and' + break; + case 80: // 'as' + shiftT(80); // 'as' + break; + case 81: // 'ascending' + shiftT(81); // 'ascending' + break; + case 85: // 'before' + shiftT(85); // 'before' + break; + case 89: // 'case' + shiftT(89); // 'case' + break; + case 90: // 'cast' + shiftT(90); // 'cast' + break; + case 91: // 'castable' + shiftT(91); // 'castable' + break; + case 94: // 'child' + shiftT(94); // 'child' + break; + case 95: // 'collation' + shiftT(95); // 'collation' + break; + case 104: // 'copy' + shiftT(104); // 'copy' + break; + case 106: // 'count' + shiftT(106); // 'count' + break; + case 109: // 'declare' + shiftT(109); // 'declare' + break; + case 110: // 'default' + shiftT(110); // 'default' + break; + case 111: // 'delete' + shiftT(111); // 'delete' + break; + case 112: // 'descendant' + shiftT(112); // 'descendant' + break; + case 113: // 'descendant-or-self' + shiftT(113); // 'descendant-or-self' + break; + case 114: // 'descending' + shiftT(114); // 'descending' + break; + case 119: // 'div' + shiftT(119); // 'div' + break; + case 120: // 'document' + shiftT(120); // 'document' + break; + case 123: // 'else' + shiftT(123); // 'else' + break; + case 124: // 'empty' + shiftT(124); // 'empty' + break; + case 127: // 'end' + shiftT(127); // 'end' + break; + case 129: // 'eq' + shiftT(129); // 'eq' + break; + case 130: // 'every' + shiftT(130); // 'every' + break; + case 132: // 'except' + shiftT(132); // 'except' + break; + case 136: // 'first' + shiftT(136); // 'first' + break; + case 137: // 'following' + shiftT(137); // 'following' + break; + case 138: // 'following-sibling' + shiftT(138); // 'following-sibling' + break; + case 139: // 'for' + shiftT(139); // 'for' + break; + case 148: // 'ge' + shiftT(148); // 'ge' + break; + case 150: // 'group' + shiftT(150); // 'group' + break; + case 152: // 'gt' + shiftT(152); // 'gt' + break; + case 153: // 'idiv' + shiftT(153); // 'idiv' + break; + case 155: // 'import' + shiftT(155); // 'import' + break; + case 161: // 'insert' + shiftT(161); // 'insert' + break; + case 162: // 'instance' + shiftT(162); // 'instance' + break; + case 164: // 'intersect' + shiftT(164); // 'intersect' + break; + case 165: // 'into' + shiftT(165); // 'into' + break; + case 166: // 'is' + shiftT(166); // 'is' + break; + case 173: // 'last' + shiftT(173); // 'last' + break; + case 175: // 'le' + shiftT(175); // 'le' + break; + case 177: // 'let' + shiftT(177); // 'let' + break; + case 181: // 'lt' + shiftT(181); // 'lt' + break; + case 183: // 'mod' + shiftT(183); // 'mod' + break; + case 184: // 'modify' + shiftT(184); // 'modify' + break; + case 185: // 'module' + shiftT(185); // 'module' + break; + case 187: // 'namespace' + shiftT(187); // 'namespace' + break; + case 189: // 'ne' + shiftT(189); // 'ne' + break; + case 202: // 'only' + shiftT(202); // 'only' + break; + case 204: // 'or' + shiftT(204); // 'or' + break; + case 205: // 'order' + shiftT(205); // 'order' + break; + case 206: // 'ordered' + shiftT(206); // 'ordered' + break; + case 210: // 'parent' + shiftT(210); // 'parent' + break; + case 216: // 'preceding' + shiftT(216); // 'preceding' + break; + case 217: // 'preceding-sibling' + shiftT(217); // 'preceding-sibling' + break; + case 222: // 'rename' + shiftT(222); // 'rename' + break; + case 223: // 'replace' + shiftT(223); // 'replace' + break; + case 224: // 'return' + shiftT(224); // 'return' + break; + case 228: // 'satisfies' + shiftT(228); // 'satisfies' + break; + case 234: // 'self' + shiftT(234); // 'self' + break; + case 240: // 'some' + shiftT(240); // 'some' + break; + case 241: // 'stable' + shiftT(241); // 'stable' + break; + case 242: // 'start' + shiftT(242); // 'start' + break; + case 253: // 'to' + shiftT(253); // 'to' + break; + case 254: // 'treat' + shiftT(254); // 'treat' + break; + case 256: // 'try' + shiftT(256); // 'try' + break; + case 260: // 'union' + shiftT(260); // 'union' + break; + case 262: // 'unordered' + shiftT(262); // 'unordered' + break; + case 266: // 'validate' + shiftT(266); // 'validate' + break; + case 272: // 'where' + shiftT(272); // 'where' + break; + case 276: // 'with' + shiftT(276); // 'with' + break; + case 170: // 'jsoniq' + shiftT(170); // 'jsoniq' + break; + case 73: // 'allowing' + shiftT(73); // 'allowing' + break; + case 82: // 'at' + shiftT(82); // 'at' + break; + case 84: // 'base-uri' + shiftT(84); // 'base-uri' + break; + case 86: // 'boundary-space' + shiftT(86); // 'boundary-space' + break; + case 87: // 'break' + shiftT(87); // 'break' + break; + case 92: // 'catch' + shiftT(92); // 'catch' + break; + case 99: // 'construction' + shiftT(99); // 'construction' + break; + case 102: // 'context' + shiftT(102); // 'context' + break; + case 103: // 'continue' + shiftT(103); // 'continue' + break; + case 105: // 'copy-namespaces' + shiftT(105); // 'copy-namespaces' + break; + case 107: // 'decimal-format' + shiftT(107); // 'decimal-format' + break; + case 126: // 'encoding' + shiftT(126); // 'encoding' + break; + case 133: // 'exit' + shiftT(133); // 'exit' + break; + case 134: // 'external' + shiftT(134); // 'external' + break; + case 143: // 'ft-option' + shiftT(143); // 'ft-option' + break; + case 156: // 'in' + shiftT(156); // 'in' + break; + case 157: // 'index' + shiftT(157); // 'index' + break; + case 163: // 'integrity' + shiftT(163); // 'integrity' + break; + case 174: // 'lax' + shiftT(174); // 'lax' + break; + case 195: // 'nodes' + shiftT(195); // 'nodes' + break; + case 203: // 'option' + shiftT(203); // 'option' + break; + case 207: // 'ordering' + shiftT(207); // 'ordering' + break; + case 226: // 'revalidation' + shiftT(226); // 'revalidation' + break; + case 229: // 'schema' + shiftT(229); // 'schema' + break; + case 232: // 'score' + shiftT(232); // 'score' + break; + case 239: // 'sliding' + shiftT(239); // 'sliding' + break; + case 245: // 'strict' + shiftT(245); // 'strict' + break; + case 257: // 'tumbling' + shiftT(257); // 'tumbling' + break; + case 258: // 'type' + shiftT(258); // 'type' + break; + case 263: // 'updating' + shiftT(263); // 'updating' + break; + case 267: // 'value' + shiftT(267); // 'value' + break; + case 268: // 'variable' + shiftT(268); // 'variable' + break; + case 269: // 'version' + shiftT(269); // 'version' + break; + case 273: // 'while' + shiftT(273); // 'while' + break; + case 98: // 'constraint' + shiftT(98); // 'constraint' + break; + case 179: // 'loop' + shiftT(179); // 'loop' + break; + case 225: // 'returning' + shiftT(225); // 'returning' + break; + case 78: // 'append' + shiftT(78); // 'append' + break; + case 135: // 'false' + shiftT(135); // 'false' + break; + case 142: // 'from' + shiftT(142); // 'from' + break; + case 197: // 'null' + shiftT(197); // 'null' + break; + case 168: // 'json' + shiftT(168); // 'json' + break; + case 198: // 'object' + shiftT(198); // 'object' + break; + case 233: // 'select' + shiftT(233); // 'select' + break; + default: + shiftT(255); // 'true' + } + } + + function parse_NCName() + { + eventHandler.startNonterminal("NCName", e0); + switch (l1) + { + case 19: // NCName^Token + shift(19); // NCName^Token + break; + case 71: // 'after' + shift(71); // 'after' + break; + case 76: // 'and' + shift(76); // 'and' + break; + case 80: // 'as' + shift(80); // 'as' + break; + case 81: // 'ascending' + shift(81); // 'ascending' + break; + case 85: // 'before' + shift(85); // 'before' + break; + case 89: // 'case' + shift(89); // 'case' + break; + case 90: // 'cast' + shift(90); // 'cast' + break; + case 91: // 'castable' + shift(91); // 'castable' + break; + case 95: // 'collation' + shift(95); // 'collation' + break; + case 106: // 'count' + shift(106); // 'count' + break; + case 110: // 'default' + shift(110); // 'default' + break; + case 114: // 'descending' + shift(114); // 'descending' + break; + case 119: // 'div' + shift(119); // 'div' + break; + case 123: // 'else' + shift(123); // 'else' + break; + case 124: // 'empty' + shift(124); // 'empty' + break; + case 127: // 'end' + shift(127); // 'end' + break; + case 129: // 'eq' + shift(129); // 'eq' + break; + case 132: // 'except' + shift(132); // 'except' + break; + case 139: // 'for' + shift(139); // 'for' + break; + case 148: // 'ge' + shift(148); // 'ge' + break; + case 150: // 'group' + shift(150); // 'group' + break; + case 152: // 'gt' + shift(152); // 'gt' + break; + case 153: // 'idiv' + shift(153); // 'idiv' + break; + case 162: // 'instance' + shift(162); // 'instance' + break; + case 164: // 'intersect' + shift(164); // 'intersect' + break; + case 165: // 'into' + shift(165); // 'into' + break; + case 166: // 'is' + shift(166); // 'is' + break; + case 175: // 'le' + shift(175); // 'le' + break; + case 177: // 'let' + shift(177); // 'let' + break; + case 181: // 'lt' + shift(181); // 'lt' + break; + case 183: // 'mod' + shift(183); // 'mod' + break; + case 184: // 'modify' + shift(184); // 'modify' + break; + case 189: // 'ne' + shift(189); // 'ne' + break; + case 202: // 'only' + shift(202); // 'only' + break; + case 204: // 'or' + shift(204); // 'or' + break; + case 205: // 'order' + shift(205); // 'order' + break; + case 224: // 'return' + shift(224); // 'return' + break; + case 228: // 'satisfies' + shift(228); // 'satisfies' + break; + case 241: // 'stable' + shift(241); // 'stable' + break; + case 242: // 'start' + shift(242); // 'start' + break; + case 253: // 'to' + shift(253); // 'to' + break; + case 254: // 'treat' + shift(254); // 'treat' + break; + case 260: // 'union' + shift(260); // 'union' + break; + case 272: // 'where' + shift(272); // 'where' + break; + case 276: // 'with' + shift(276); // 'with' + break; + case 74: // 'ancestor' + shift(74); // 'ancestor' + break; + case 75: // 'ancestor-or-self' + shift(75); // 'ancestor-or-self' + break; + case 83: // 'attribute' + shift(83); // 'attribute' + break; + case 94: // 'child' + shift(94); // 'child' + break; + case 97: // 'comment' + shift(97); // 'comment' + break; + case 104: // 'copy' + shift(104); // 'copy' + break; + case 109: // 'declare' + shift(109); // 'declare' + break; + case 111: // 'delete' + shift(111); // 'delete' + break; + case 112: // 'descendant' + shift(112); // 'descendant' + break; + case 113: // 'descendant-or-self' + shift(113); // 'descendant-or-self' + break; + case 120: // 'document' + shift(120); // 'document' + break; + case 121: // 'document-node' + shift(121); // 'document-node' + break; + case 122: // 'element' + shift(122); // 'element' + break; + case 125: // 'empty-sequence' + shift(125); // 'empty-sequence' + break; + case 130: // 'every' + shift(130); // 'every' + break; + case 136: // 'first' + shift(136); // 'first' + break; + case 137: // 'following' + shift(137); // 'following' + break; + case 138: // 'following-sibling' + shift(138); // 'following-sibling' + break; + case 147: // 'function' + shift(147); // 'function' + break; + case 154: // 'if' + shift(154); // 'if' + break; + case 155: // 'import' + shift(155); // 'import' + break; + case 161: // 'insert' + shift(161); // 'insert' + break; + case 167: // 'item' + shift(167); // 'item' + break; + case 173: // 'last' + shift(173); // 'last' + break; + case 185: // 'module' + shift(185); // 'module' + break; + case 187: // 'namespace' + shift(187); // 'namespace' + break; + case 188: // 'namespace-node' + shift(188); // 'namespace-node' + break; + case 194: // 'node' + shift(194); // 'node' + break; + case 206: // 'ordered' + shift(206); // 'ordered' + break; + case 210: // 'parent' + shift(210); // 'parent' + break; + case 216: // 'preceding' + shift(216); // 'preceding' + break; + case 217: // 'preceding-sibling' + shift(217); // 'preceding-sibling' + break; + case 220: // 'processing-instruction' + shift(220); // 'processing-instruction' + break; + case 222: // 'rename' + shift(222); // 'rename' + break; + case 223: // 'replace' + shift(223); // 'replace' + break; + case 230: // 'schema-attribute' + shift(230); // 'schema-attribute' + break; + case 231: // 'schema-element' + shift(231); // 'schema-element' + break; + case 234: // 'self' + shift(234); // 'self' + break; + case 240: // 'some' + shift(240); // 'some' + break; + case 248: // 'switch' + shift(248); // 'switch' + break; + case 249: // 'text' + shift(249); // 'text' + break; + case 256: // 'try' + shift(256); // 'try' + break; + case 259: // 'typeswitch' + shift(259); // 'typeswitch' + break; + case 262: // 'unordered' + shift(262); // 'unordered' + break; + case 266: // 'validate' + shift(266); // 'validate' + break; + case 268: // 'variable' + shift(268); // 'variable' + break; + case 170: // 'jsoniq' + shift(170); // 'jsoniq' + break; + case 73: // 'allowing' + shift(73); // 'allowing' + break; + case 82: // 'at' + shift(82); // 'at' + break; + case 84: // 'base-uri' + shift(84); // 'base-uri' + break; + case 86: // 'boundary-space' + shift(86); // 'boundary-space' + break; + case 87: // 'break' + shift(87); // 'break' + break; + case 92: // 'catch' + shift(92); // 'catch' + break; + case 99: // 'construction' + shift(99); // 'construction' + break; + case 102: // 'context' + shift(102); // 'context' + break; + case 103: // 'continue' + shift(103); // 'continue' + break; + case 105: // 'copy-namespaces' + shift(105); // 'copy-namespaces' + break; + case 107: // 'decimal-format' + shift(107); // 'decimal-format' + break; + case 126: // 'encoding' + shift(126); // 'encoding' + break; + case 133: // 'exit' + shift(133); // 'exit' + break; + case 134: // 'external' + shift(134); // 'external' + break; + case 143: // 'ft-option' + shift(143); // 'ft-option' + break; + case 156: // 'in' + shift(156); // 'in' + break; + case 157: // 'index' + shift(157); // 'index' + break; + case 163: // 'integrity' + shift(163); // 'integrity' + break; + case 174: // 'lax' + shift(174); // 'lax' + break; + case 195: // 'nodes' + shift(195); // 'nodes' + break; + case 203: // 'option' + shift(203); // 'option' + break; + case 207: // 'ordering' + shift(207); // 'ordering' + break; + case 226: // 'revalidation' + shift(226); // 'revalidation' + break; + case 229: // 'schema' + shift(229); // 'schema' + break; + case 232: // 'score' + shift(232); // 'score' + break; + case 239: // 'sliding' + shift(239); // 'sliding' + break; + case 245: // 'strict' + shift(245); // 'strict' + break; + case 257: // 'tumbling' + shift(257); // 'tumbling' + break; + case 258: // 'type' + shift(258); // 'type' + break; + case 263: // 'updating' + shift(263); // 'updating' + break; + case 267: // 'value' + shift(267); // 'value' + break; + case 269: // 'version' + shift(269); // 'version' + break; + case 273: // 'while' + shift(273); // 'while' + break; + case 98: // 'constraint' + shift(98); // 'constraint' + break; + case 179: // 'loop' + shift(179); // 'loop' + break; + case 225: // 'returning' + shift(225); // 'returning' + break; + case 78: // 'append' + shift(78); // 'append' + break; + case 135: // 'false' + shift(135); // 'false' + break; + case 142: // 'from' + shift(142); // 'from' + break; + case 197: // 'null' + shift(197); // 'null' + break; + case 168: // 'json' + shift(168); // 'json' + break; + case 198: // 'object' + shift(198); // 'object' + break; + case 233: // 'select' + shift(233); // 'select' + break; + default: + shift(255); // 'true' + } + eventHandler.endNonterminal("NCName", e0); + } + + function try_NCName() + { + switch (l1) + { + case 19: // NCName^Token + shiftT(19); // NCName^Token + break; + case 71: // 'after' + shiftT(71); // 'after' + break; + case 76: // 'and' + shiftT(76); // 'and' + break; + case 80: // 'as' + shiftT(80); // 'as' + break; + case 81: // 'ascending' + shiftT(81); // 'ascending' + break; + case 85: // 'before' + shiftT(85); // 'before' + break; + case 89: // 'case' + shiftT(89); // 'case' + break; + case 90: // 'cast' + shiftT(90); // 'cast' + break; + case 91: // 'castable' + shiftT(91); // 'castable' + break; + case 95: // 'collation' + shiftT(95); // 'collation' + break; + case 106: // 'count' + shiftT(106); // 'count' + break; + case 110: // 'default' + shiftT(110); // 'default' + break; + case 114: // 'descending' + shiftT(114); // 'descending' + break; + case 119: // 'div' + shiftT(119); // 'div' + break; + case 123: // 'else' + shiftT(123); // 'else' + break; + case 124: // 'empty' + shiftT(124); // 'empty' + break; + case 127: // 'end' + shiftT(127); // 'end' + break; + case 129: // 'eq' + shiftT(129); // 'eq' + break; + case 132: // 'except' + shiftT(132); // 'except' + break; + case 139: // 'for' + shiftT(139); // 'for' + break; + case 148: // 'ge' + shiftT(148); // 'ge' + break; + case 150: // 'group' + shiftT(150); // 'group' + break; + case 152: // 'gt' + shiftT(152); // 'gt' + break; + case 153: // 'idiv' + shiftT(153); // 'idiv' + break; + case 162: // 'instance' + shiftT(162); // 'instance' + break; + case 164: // 'intersect' + shiftT(164); // 'intersect' + break; + case 165: // 'into' + shiftT(165); // 'into' + break; + case 166: // 'is' + shiftT(166); // 'is' + break; + case 175: // 'le' + shiftT(175); // 'le' + break; + case 177: // 'let' + shiftT(177); // 'let' + break; + case 181: // 'lt' + shiftT(181); // 'lt' + break; + case 183: // 'mod' + shiftT(183); // 'mod' + break; + case 184: // 'modify' + shiftT(184); // 'modify' + break; + case 189: // 'ne' + shiftT(189); // 'ne' + break; + case 202: // 'only' + shiftT(202); // 'only' + break; + case 204: // 'or' + shiftT(204); // 'or' + break; + case 205: // 'order' + shiftT(205); // 'order' + break; + case 224: // 'return' + shiftT(224); // 'return' + break; + case 228: // 'satisfies' + shiftT(228); // 'satisfies' + break; + case 241: // 'stable' + shiftT(241); // 'stable' + break; + case 242: // 'start' + shiftT(242); // 'start' + break; + case 253: // 'to' + shiftT(253); // 'to' + break; + case 254: // 'treat' + shiftT(254); // 'treat' + break; + case 260: // 'union' + shiftT(260); // 'union' + break; + case 272: // 'where' + shiftT(272); // 'where' + break; + case 276: // 'with' + shiftT(276); // 'with' + break; + case 74: // 'ancestor' + shiftT(74); // 'ancestor' + break; + case 75: // 'ancestor-or-self' + shiftT(75); // 'ancestor-or-self' + break; + case 83: // 'attribute' + shiftT(83); // 'attribute' + break; + case 94: // 'child' + shiftT(94); // 'child' + break; + case 97: // 'comment' + shiftT(97); // 'comment' + break; + case 104: // 'copy' + shiftT(104); // 'copy' + break; + case 109: // 'declare' + shiftT(109); // 'declare' + break; + case 111: // 'delete' + shiftT(111); // 'delete' + break; + case 112: // 'descendant' + shiftT(112); // 'descendant' + break; + case 113: // 'descendant-or-self' + shiftT(113); // 'descendant-or-self' + break; + case 120: // 'document' + shiftT(120); // 'document' + break; + case 121: // 'document-node' + shiftT(121); // 'document-node' + break; + case 122: // 'element' + shiftT(122); // 'element' + break; + case 125: // 'empty-sequence' + shiftT(125); // 'empty-sequence' + break; + case 130: // 'every' + shiftT(130); // 'every' + break; + case 136: // 'first' + shiftT(136); // 'first' + break; + case 137: // 'following' + shiftT(137); // 'following' + break; + case 138: // 'following-sibling' + shiftT(138); // 'following-sibling' + break; + case 147: // 'function' + shiftT(147); // 'function' + break; + case 154: // 'if' + shiftT(154); // 'if' + break; + case 155: // 'import' + shiftT(155); // 'import' + break; + case 161: // 'insert' + shiftT(161); // 'insert' + break; + case 167: // 'item' + shiftT(167); // 'item' + break; + case 173: // 'last' + shiftT(173); // 'last' + break; + case 185: // 'module' + shiftT(185); // 'module' + break; + case 187: // 'namespace' + shiftT(187); // 'namespace' + break; + case 188: // 'namespace-node' + shiftT(188); // 'namespace-node' + break; + case 194: // 'node' + shiftT(194); // 'node' + break; + case 206: // 'ordered' + shiftT(206); // 'ordered' + break; + case 210: // 'parent' + shiftT(210); // 'parent' + break; + case 216: // 'preceding' + shiftT(216); // 'preceding' + break; + case 217: // 'preceding-sibling' + shiftT(217); // 'preceding-sibling' + break; + case 220: // 'processing-instruction' + shiftT(220); // 'processing-instruction' + break; + case 222: // 'rename' + shiftT(222); // 'rename' + break; + case 223: // 'replace' + shiftT(223); // 'replace' + break; + case 230: // 'schema-attribute' + shiftT(230); // 'schema-attribute' + break; + case 231: // 'schema-element' + shiftT(231); // 'schema-element' + break; + case 234: // 'self' + shiftT(234); // 'self' + break; + case 240: // 'some' + shiftT(240); // 'some' + break; + case 248: // 'switch' + shiftT(248); // 'switch' + break; + case 249: // 'text' + shiftT(249); // 'text' + break; + case 256: // 'try' + shiftT(256); // 'try' + break; + case 259: // 'typeswitch' + shiftT(259); // 'typeswitch' + break; + case 262: // 'unordered' + shiftT(262); // 'unordered' + break; + case 266: // 'validate' + shiftT(266); // 'validate' + break; + case 268: // 'variable' + shiftT(268); // 'variable' + break; + case 170: // 'jsoniq' + shiftT(170); // 'jsoniq' + break; + case 73: // 'allowing' + shiftT(73); // 'allowing' + break; + case 82: // 'at' + shiftT(82); // 'at' + break; + case 84: // 'base-uri' + shiftT(84); // 'base-uri' + break; + case 86: // 'boundary-space' + shiftT(86); // 'boundary-space' + break; + case 87: // 'break' + shiftT(87); // 'break' + break; + case 92: // 'catch' + shiftT(92); // 'catch' + break; + case 99: // 'construction' + shiftT(99); // 'construction' + break; + case 102: // 'context' + shiftT(102); // 'context' + break; + case 103: // 'continue' + shiftT(103); // 'continue' + break; + case 105: // 'copy-namespaces' + shiftT(105); // 'copy-namespaces' + break; + case 107: // 'decimal-format' + shiftT(107); // 'decimal-format' + break; + case 126: // 'encoding' + shiftT(126); // 'encoding' + break; + case 133: // 'exit' + shiftT(133); // 'exit' + break; + case 134: // 'external' + shiftT(134); // 'external' + break; + case 143: // 'ft-option' + shiftT(143); // 'ft-option' + break; + case 156: // 'in' + shiftT(156); // 'in' + break; + case 157: // 'index' + shiftT(157); // 'index' + break; + case 163: // 'integrity' + shiftT(163); // 'integrity' + break; + case 174: // 'lax' + shiftT(174); // 'lax' + break; + case 195: // 'nodes' + shiftT(195); // 'nodes' + break; + case 203: // 'option' + shiftT(203); // 'option' + break; + case 207: // 'ordering' + shiftT(207); // 'ordering' + break; + case 226: // 'revalidation' + shiftT(226); // 'revalidation' + break; + case 229: // 'schema' + shiftT(229); // 'schema' + break; + case 232: // 'score' + shiftT(232); // 'score' + break; + case 239: // 'sliding' + shiftT(239); // 'sliding' + break; + case 245: // 'strict' + shiftT(245); // 'strict' + break; + case 257: // 'tumbling' + shiftT(257); // 'tumbling' + break; + case 258: // 'type' + shiftT(258); // 'type' + break; + case 263: // 'updating' + shiftT(263); // 'updating' + break; + case 267: // 'value' + shiftT(267); // 'value' + break; + case 269: // 'version' + shiftT(269); // 'version' + break; + case 273: // 'while' + shiftT(273); // 'while' + break; + case 98: // 'constraint' + shiftT(98); // 'constraint' + break; + case 179: // 'loop' + shiftT(179); // 'loop' + break; + case 225: // 'returning' + shiftT(225); // 'returning' + break; + case 78: // 'append' + shiftT(78); // 'append' + break; + case 135: // 'false' + shiftT(135); // 'false' + break; + case 142: // 'from' + shiftT(142); // 'from' + break; + case 197: // 'null' + shiftT(197); // 'null' + break; + case 168: // 'json' + shiftT(168); // 'json' + break; + case 198: // 'object' + shiftT(198); // 'object' + break; + case 233: // 'select' + shiftT(233); // 'select' + break; + default: + shiftT(255); // 'true' + } + } + + function parse_MainModule() + { + eventHandler.startNonterminal("MainModule", e0); + parse_Prolog(); + whitespace(); + parse_Program(); + eventHandler.endNonterminal("MainModule", e0); + } + + function parse_Program() + { + eventHandler.startNonterminal("Program", e0); + parse_StatementsAndOptionalExpr(); + eventHandler.endNonterminal("Program", e0); + } + + function parse_Statements() + { + eventHandler.startNonterminal("Statements", e0); + for (;;) + { + lookahead1W(283); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + switch (l1) + { + case 35: // '(' + lookahead2W(269); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + break; + case 36: // '(#' + lookahead2(242); // EQName^Token | S | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + break; + case 47: // '/' + lookahead2W(285); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + break; + case 48: // '//' + lookahead2W(259); // EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | StringLiteral | + break; + case 55: // '<' + lookahead2(4); // QName + break; + case 56: // ''", + "'.'", + "'..'", + "'/'", + "'//'", + "'/>'", + "':'", + "':)'", + "'::'", + "':='", + "';'", + "'<'", + "'' + shift(43); // '-->' + eventHandler.endNonterminal("DirCommentConstructor", e0); + } + + function try_DirCommentConstructor() + { + shiftT(55); // '' + shiftT(43); // '-->' + } + + function parse_DirPIConstructor() + { + eventHandler.startNonterminal("DirPIConstructor", e0); + shift(59); // '' + if (l1 == 21) // S + { + shift(21); // S + lookahead1(2); // DirPIContents + shift(3); // DirPIContents + } + lookahead1(9); // '?>' + shift(65); // '?>' + eventHandler.endNonterminal("DirPIConstructor", e0); + } + + function try_DirPIConstructor() + { + shiftT(59); // '' + if (l1 == 21) // S + { + shiftT(21); // S + lookahead1(2); // DirPIContents + shiftT(3); // DirPIContents + } + lookahead1(9); // '?>' + shiftT(65); // '?>' + } + + function parse_ComputedConstructor() + { + eventHandler.startNonterminal("ComputedConstructor", e0); + switch (l1) + { + case 119: // 'document' + parse_CompDocConstructor(); + break; + case 121: // 'element' + parse_CompElemConstructor(); + break; + case 82: // 'attribute' + parse_CompAttrConstructor(); + break; + case 184: // 'namespace' + parse_CompNamespaceConstructor(); + break; + case 244: // 'text' + parse_CompTextConstructor(); + break; + case 96: // 'comment' + parse_CompCommentConstructor(); + break; + default: + parse_CompPIConstructor(); + } + eventHandler.endNonterminal("ComputedConstructor", e0); + } + + function try_ComputedConstructor() + { + switch (l1) + { + case 119: // 'document' + try_CompDocConstructor(); + break; + case 121: // 'element' + try_CompElemConstructor(); + break; + case 82: // 'attribute' + try_CompAttrConstructor(); + break; + case 184: // 'namespace' + try_CompNamespaceConstructor(); + break; + case 244: // 'text' + try_CompTextConstructor(); + break; + case 96: // 'comment' + try_CompCommentConstructor(); + break; + default: + try_CompPIConstructor(); + } + } + + function parse_CompElemConstructor() + { + eventHandler.startNonterminal("CompElemConstructor", e0); + shift(121); // 'element' + lookahead1W(257); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + switch (l1) + { + case 276: // '{' + shift(276); // '{' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + whitespace(); + parse_Expr(); + shift(282); // '}' + break; + default: + whitespace(); + parse_EQName(); + } + lookahead1W(87); // S^WS | '(:' | '{' + shift(276); // '{' + lookahead1W(276); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + if (l1 != 282) // '}' + { + whitespace(); + parse_ContentExpr(); + } + shift(282); // '}' + eventHandler.endNonterminal("CompElemConstructor", e0); + } + + function try_CompElemConstructor() + { + shiftT(121); // 'element' + lookahead1W(257); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + switch (l1) + { + case 276: // '{' + shiftT(276); // '{' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + try_Expr(); + shiftT(282); // '}' + break; + default: + try_EQName(); + } + lookahead1W(87); // S^WS | '(:' | '{' + shiftT(276); // '{' + lookahead1W(276); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + if (l1 != 282) // '}' + { + try_ContentExpr(); + } + shiftT(282); // '}' + } + + function parse_CompNamespaceConstructor() + { + eventHandler.startNonterminal("CompNamespaceConstructor", e0); + shift(184); // 'namespace' + lookahead1W(250); // NCName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + switch (l1) + { + case 276: // '{' + shift(276); // '{' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + whitespace(); + parse_PrefixExpr(); + shift(282); // '}' + break; + default: + whitespace(); + parse_Prefix(); + } + lookahead1W(87); // S^WS | '(:' | '{' + shift(276); // '{' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + whitespace(); + parse_URIExpr(); + shift(282); // '}' + eventHandler.endNonterminal("CompNamespaceConstructor", e0); + } + + function try_CompNamespaceConstructor() + { + shiftT(184); // 'namespace' + lookahead1W(250); // NCName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + switch (l1) + { + case 276: // '{' + shiftT(276); // '{' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + try_PrefixExpr(); + shiftT(282); // '}' + break; + default: + try_Prefix(); + } + lookahead1W(87); // S^WS | '(:' | '{' + shiftT(276); // '{' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + try_URIExpr(); + shiftT(282); // '}' + } + + function parse_Prefix() + { + eventHandler.startNonterminal("Prefix", e0); + parse_NCName(); + eventHandler.endNonterminal("Prefix", e0); + } + + function try_Prefix() + { + try_NCName(); + } + + function parse_PrefixExpr() + { + eventHandler.startNonterminal("PrefixExpr", e0); + parse_Expr(); + eventHandler.endNonterminal("PrefixExpr", e0); + } + + function try_PrefixExpr() + { + try_Expr(); + } + + function parse_URIExpr() + { + eventHandler.startNonterminal("URIExpr", e0); + parse_Expr(); + eventHandler.endNonterminal("URIExpr", e0); + } + + function try_URIExpr() + { + try_Expr(); + } + + function parse_FunctionItemExpr() + { + eventHandler.startNonterminal("FunctionItemExpr", e0); + switch (l1) + { + case 145: // 'function' + lookahead2W(92); // S^WS | '#' | '(' | '(:' + break; + default: + lk = l1; + } + switch (lk) + { + case 32: // '%' + case 17553: // 'function' '(' + parse_InlineFunctionExpr(); + break; + default: + parse_NamedFunctionRef(); + } + eventHandler.endNonterminal("FunctionItemExpr", e0); + } + + function try_FunctionItemExpr() + { + switch (l1) + { + case 145: // 'function' + lookahead2W(92); // S^WS | '#' | '(' | '(:' + break; + default: + lk = l1; + } + switch (lk) + { + case 32: // '%' + case 17553: // 'function' '(' + try_InlineFunctionExpr(); + break; + default: + try_NamedFunctionRef(); + } + } + + function parse_NamedFunctionRef() + { + eventHandler.startNonterminal("NamedFunctionRef", e0); + parse_EQName(); + lookahead1W(20); // S^WS | '#' | '(:' + shift(29); // '#' + lookahead1W(16); // IntegerLiteral | S^WS | '(:' + shift(8); // IntegerLiteral + eventHandler.endNonterminal("NamedFunctionRef", e0); + } + + function try_NamedFunctionRef() + { + try_EQName(); + lookahead1W(20); // S^WS | '#' | '(:' + shiftT(29); // '#' + lookahead1W(16); // IntegerLiteral | S^WS | '(:' + shiftT(8); // IntegerLiteral + } + + function parse_InlineFunctionExpr() + { + eventHandler.startNonterminal("InlineFunctionExpr", e0); + for (;;) + { + lookahead1W(97); // S^WS | '%' | '(:' | 'function' + if (l1 != 32) // '%' + { + break; + } + whitespace(); + parse_Annotation(); + } + shift(145); // 'function' + lookahead1W(22); // S^WS | '(' | '(:' + shift(34); // '(' + lookahead1W(94); // S^WS | '$' | '(:' | ')' + if (l1 == 31) // '$' + { + whitespace(); + parse_ParamList(); + } + shift(37); // ')' + lookahead1W(111); // S^WS | '(:' | 'as' | '{' + if (l1 == 79) // 'as' + { + shift(79); // 'as' + lookahead1W(259); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_SequenceType(); + } + lookahead1W(87); // S^WS | '(:' | '{' + whitespace(); + parse_FunctionBody(); + eventHandler.endNonterminal("InlineFunctionExpr", e0); + } + + function try_InlineFunctionExpr() + { + for (;;) + { + lookahead1W(97); // S^WS | '%' | '(:' | 'function' + if (l1 != 32) // '%' + { + break; + } + try_Annotation(); + } + shiftT(145); // 'function' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(34); // '(' + lookahead1W(94); // S^WS | '$' | '(:' | ')' + if (l1 == 31) // '$' + { + try_ParamList(); + } + shiftT(37); // ')' + lookahead1W(111); // S^WS | '(:' | 'as' | '{' + if (l1 == 79) // 'as' + { + shiftT(79); // 'as' + lookahead1W(259); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + try_SequenceType(); + } + lookahead1W(87); // S^WS | '(:' | '{' + try_FunctionBody(); + } + + function parse_SingleType() + { + eventHandler.startNonterminal("SingleType", e0); + parse_SimpleTypeName(); + lookahead1W(226); // S^WS | EOF | '!=' | '(:' | ')' | '*' | '+' | ',' | '-' | ':' | ';' | '<' | '<<' | + if (l1 == 64) // '?' + { + shift(64); // '?' + } + eventHandler.endNonterminal("SingleType", e0); + } + + function try_SingleType() + { + try_SimpleTypeName(); + lookahead1W(226); // S^WS | EOF | '!=' | '(:' | ')' | '*' | '+' | ',' | '-' | ':' | ';' | '<' | '<<' | + if (l1 == 64) // '?' + { + shiftT(64); // '?' + } + } + + function parse_TypeDeclaration() + { + eventHandler.startNonterminal("TypeDeclaration", e0); + shift(79); // 'as' + lookahead1W(259); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_SequenceType(); + eventHandler.endNonterminal("TypeDeclaration", e0); + } + + function try_TypeDeclaration() + { + shiftT(79); // 'as' + lookahead1W(259); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + try_SequenceType(); + } + + function parse_SequenceType() + { + eventHandler.startNonterminal("SequenceType", e0); + switch (l1) + { + case 124: // 'empty-sequence' + lookahead2W(242); // S^WS | EOF | '!=' | '(' | '(:' | ')' | '*' | '*' | '+' | ',' | '-' | ':' | ':=' | + break; + default: + lk = l1; + } + switch (lk) + { + case 17532: // 'empty-sequence' '(' + shift(124); // 'empty-sequence' + lookahead1W(22); // S^WS | '(' | '(:' + shift(34); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shift(37); // ')' + break; + default: + parse_ItemType(); + lookahead1W(238); // S^WS | EOF | '!=' | '(:' | ')' | '*' | '*' | '+' | ',' | '-' | ':' | ':=' | ';' | + switch (l1) + { + case 39: // '*' + case 40: // '+' + case 64: // '?' + whitespace(); + parse_OccurrenceIndicator(); + break; + default: + break; + } + } + eventHandler.endNonterminal("SequenceType", e0); + } + + function try_SequenceType() + { + switch (l1) + { + case 124: // 'empty-sequence' + lookahead2W(242); // S^WS | EOF | '!=' | '(' | '(:' | ')' | '*' | '*' | '+' | ',' | '-' | ':' | ':=' | + break; + default: + lk = l1; + } + switch (lk) + { + case 17532: // 'empty-sequence' '(' + shiftT(124); // 'empty-sequence' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(34); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(37); // ')' + break; + default: + try_ItemType(); + lookahead1W(238); // S^WS | EOF | '!=' | '(:' | ')' | '*' | '*' | '+' | ',' | '-' | ':' | ':=' | ';' | + switch (l1) + { + case 39: // '*' + case 40: // '+' + case 64: // '?' + try_OccurrenceIndicator(); + break; + default: + break; + } + } + } + + function parse_OccurrenceIndicator() + { + eventHandler.startNonterminal("OccurrenceIndicator", e0); + switch (l1) + { + case 64: // '?' + shift(64); // '?' + break; + case 39: // '*' + shift(39); // '*' + break; + default: + shift(40); // '+' + } + eventHandler.endNonterminal("OccurrenceIndicator", e0); + } + + function try_OccurrenceIndicator() + { + switch (l1) + { + case 64: // '?' + shiftT(64); // '?' + break; + case 39: // '*' + shiftT(39); // '*' + break; + default: + shiftT(40); // '+' + } + } + + function parse_ItemType() + { + eventHandler.startNonterminal("ItemType", e0); + switch (l1) + { + case 78: // 'array' + case 82: // 'attribute' + case 96: // 'comment' + case 120: // 'document-node' + case 121: // 'element' + case 145: // 'function' + case 165: // 'item' + case 167: // 'json-item' + case 185: // 'namespace-node' + case 191: // 'node' + case 194: // 'object' + case 216: // 'processing-instruction' + case 226: // 'schema-attribute' + case 227: // 'schema-element' + case 242: // 'structured-item' + case 244: // 'text' + lookahead2W(242); // S^WS | EOF | '!=' | '(' | '(:' | ')' | '*' | '*' | '+' | ',' | '-' | ':' | ':=' | + break; + default: + lk = l1; + } + switch (lk) + { + case 17490: // 'attribute' '(' + case 17504: // 'comment' '(' + case 17528: // 'document-node' '(' + case 17529: // 'element' '(' + case 17593: // 'namespace-node' '(' + case 17599: // 'node' '(' + case 17624: // 'processing-instruction' '(' + case 17634: // 'schema-attribute' '(' + case 17635: // 'schema-element' '(' + case 17652: // 'text' '(' + parse_KindTest(); + break; + case 17573: // 'item' '(' + shift(165); // 'item' + lookahead1W(22); // S^WS | '(' | '(:' + shift(34); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shift(37); // ')' + break; + case 32: // '%' + case 17553: // 'function' '(' + parse_FunctionTest(); + break; + case 34: // '(' + parse_ParenthesizedItemType(); + break; + case 17486: // 'array' '(' + case 17575: // 'json-item' '(' + case 17602: // 'object' '(' + parse_JSONTest(); + break; + case 17650: // 'structured-item' '(' + parse_StructuredItemTest(); + break; + default: + parse_AtomicOrUnionType(); + } + eventHandler.endNonterminal("ItemType", e0); + } + + function try_ItemType() + { + switch (l1) + { + case 78: // 'array' + case 82: // 'attribute' + case 96: // 'comment' + case 120: // 'document-node' + case 121: // 'element' + case 145: // 'function' + case 165: // 'item' + case 167: // 'json-item' + case 185: // 'namespace-node' + case 191: // 'node' + case 194: // 'object' + case 216: // 'processing-instruction' + case 226: // 'schema-attribute' + case 227: // 'schema-element' + case 242: // 'structured-item' + case 244: // 'text' + lookahead2W(242); // S^WS | EOF | '!=' | '(' | '(:' | ')' | '*' | '*' | '+' | ',' | '-' | ':' | ':=' | + break; + default: + lk = l1; + } + switch (lk) + { + case 17490: // 'attribute' '(' + case 17504: // 'comment' '(' + case 17528: // 'document-node' '(' + case 17529: // 'element' '(' + case 17593: // 'namespace-node' '(' + case 17599: // 'node' '(' + case 17624: // 'processing-instruction' '(' + case 17634: // 'schema-attribute' '(' + case 17635: // 'schema-element' '(' + case 17652: // 'text' '(' + try_KindTest(); + break; + case 17573: // 'item' '(' + shiftT(165); // 'item' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(34); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(37); // ')' + break; + case 32: // '%' + case 17553: // 'function' '(' + try_FunctionTest(); + break; + case 34: // '(' + try_ParenthesizedItemType(); + break; + case 17486: // 'array' '(' + case 17575: // 'json-item' '(' + case 17602: // 'object' '(' + try_JSONTest(); + break; + case 17650: // 'structured-item' '(' + try_StructuredItemTest(); + break; + default: + try_AtomicOrUnionType(); + } + } + + function parse_JSONTest() + { + eventHandler.startNonterminal("JSONTest", e0); + switch (l1) + { + case 167: // 'json-item' + parse_JSONItemTest(); + break; + case 194: // 'object' + parse_JSONObjectTest(); + break; + default: + parse_JSONArrayTest(); + } + eventHandler.endNonterminal("JSONTest", e0); + } + + function try_JSONTest() + { + switch (l1) + { + case 167: // 'json-item' + try_JSONItemTest(); + break; + case 194: // 'object' + try_JSONObjectTest(); + break; + default: + try_JSONArrayTest(); + } + } + + function parse_StructuredItemTest() + { + eventHandler.startNonterminal("StructuredItemTest", e0); + shift(242); // 'structured-item' + lookahead1W(22); // S^WS | '(' | '(:' + shift(34); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shift(37); // ')' + eventHandler.endNonterminal("StructuredItemTest", e0); + } + + function try_StructuredItemTest() + { + shiftT(242); // 'structured-item' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(34); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(37); // ')' + } + + function parse_JSONItemTest() + { + eventHandler.startNonterminal("JSONItemTest", e0); + shift(167); // 'json-item' + lookahead1W(22); // S^WS | '(' | '(:' + shift(34); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shift(37); // ')' + eventHandler.endNonterminal("JSONItemTest", e0); + } + + function try_JSONItemTest() + { + shiftT(167); // 'json-item' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(34); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(37); // ')' + } + + function parse_JSONObjectTest() + { + eventHandler.startNonterminal("JSONObjectTest", e0); + shift(194); // 'object' + lookahead1W(22); // S^WS | '(' | '(:' + shift(34); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shift(37); // ')' + eventHandler.endNonterminal("JSONObjectTest", e0); + } + + function try_JSONObjectTest() + { + shiftT(194); // 'object' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(34); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(37); // ')' + } + + function parse_JSONArrayTest() + { + eventHandler.startNonterminal("JSONArrayTest", e0); + shift(78); // 'array' + lookahead1W(22); // S^WS | '(' | '(:' + shift(34); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shift(37); // ')' + eventHandler.endNonterminal("JSONArrayTest", e0); + } + + function try_JSONArrayTest() + { + shiftT(78); // 'array' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(34); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(37); // ')' + } + + function parse_AtomicOrUnionType() + { + eventHandler.startNonterminal("AtomicOrUnionType", e0); + parse_EQName(); + eventHandler.endNonterminal("AtomicOrUnionType", e0); + } + + function try_AtomicOrUnionType() + { + try_EQName(); + } + + function parse_KindTest() + { + eventHandler.startNonterminal("KindTest", e0); + switch (l1) + { + case 120: // 'document-node' + parse_DocumentTest(); + break; + case 121: // 'element' + parse_ElementTest(); + break; + case 82: // 'attribute' + parse_AttributeTest(); + break; + case 227: // 'schema-element' + parse_SchemaElementTest(); + break; + case 226: // 'schema-attribute' + parse_SchemaAttributeTest(); + break; + case 216: // 'processing-instruction' + parse_PITest(); + break; + case 96: // 'comment' + parse_CommentTest(); + break; + case 244: // 'text' + parse_TextTest(); + break; + case 185: // 'namespace-node' + parse_NamespaceNodeTest(); + break; + default: + parse_AnyKindTest(); + } + eventHandler.endNonterminal("KindTest", e0); + } + + function try_KindTest() + { + switch (l1) + { + case 120: // 'document-node' + try_DocumentTest(); + break; + case 121: // 'element' + try_ElementTest(); + break; + case 82: // 'attribute' + try_AttributeTest(); + break; + case 227: // 'schema-element' + try_SchemaElementTest(); + break; + case 226: // 'schema-attribute' + try_SchemaAttributeTest(); + break; + case 216: // 'processing-instruction' + try_PITest(); + break; + case 96: // 'comment' + try_CommentTest(); + break; + case 244: // 'text' + try_TextTest(); + break; + case 185: // 'namespace-node' + try_NamespaceNodeTest(); + break; + default: + try_AnyKindTest(); + } + } + + function parse_AnyKindTest() + { + eventHandler.startNonterminal("AnyKindTest", e0); + shift(191); // 'node' + lookahead1W(22); // S^WS | '(' | '(:' + shift(34); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shift(37); // ')' + eventHandler.endNonterminal("AnyKindTest", e0); + } + + function try_AnyKindTest() + { + shiftT(191); // 'node' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(34); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(37); // ')' + } + + function parse_DocumentTest() + { + eventHandler.startNonterminal("DocumentTest", e0); + shift(120); // 'document-node' + lookahead1W(22); // S^WS | '(' | '(:' + shift(34); // '(' + lookahead1W(144); // S^WS | '(:' | ')' | 'element' | 'schema-element' + if (l1 != 37) // ')' + { + switch (l1) + { + case 121: // 'element' + whitespace(); + parse_ElementTest(); + break; + default: + whitespace(); + parse_SchemaElementTest(); + } + } + lookahead1W(23); // S^WS | '(:' | ')' + shift(37); // ')' + eventHandler.endNonterminal("DocumentTest", e0); + } + + function try_DocumentTest() + { + shiftT(120); // 'document-node' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(34); // '(' + lookahead1W(144); // S^WS | '(:' | ')' | 'element' | 'schema-element' + if (l1 != 37) // ')' + { + switch (l1) + { + case 121: // 'element' + try_ElementTest(); + break; + default: + try_SchemaElementTest(); + } + } + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(37); // ')' + } + + function parse_TextTest() + { + eventHandler.startNonterminal("TextTest", e0); + shift(244); // 'text' + lookahead1W(22); // S^WS | '(' | '(:' + shift(34); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shift(37); // ')' + eventHandler.endNonterminal("TextTest", e0); + } + + function try_TextTest() + { + shiftT(244); // 'text' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(34); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(37); // ')' + } + + function parse_CommentTest() + { + eventHandler.startNonterminal("CommentTest", e0); + shift(96); // 'comment' + lookahead1W(22); // S^WS | '(' | '(:' + shift(34); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shift(37); // ')' + eventHandler.endNonterminal("CommentTest", e0); + } + + function try_CommentTest() + { + shiftT(96); // 'comment' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(34); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(37); // ')' + } + + function parse_NamespaceNodeTest() + { + eventHandler.startNonterminal("NamespaceNodeTest", e0); + shift(185); // 'namespace-node' + lookahead1W(22); // S^WS | '(' | '(:' + shift(34); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shift(37); // ')' + eventHandler.endNonterminal("NamespaceNodeTest", e0); + } + + function try_NamespaceNodeTest() + { + shiftT(185); // 'namespace-node' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(34); // '(' + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(37); // ')' + } + + function parse_PITest() + { + eventHandler.startNonterminal("PITest", e0); + shift(216); // 'processing-instruction' + lookahead1W(22); // S^WS | '(' | '(:' + shift(34); // '(' + lookahead1W(252); // StringLiteral | NCName^Token | S^WS | '(:' | ')' | 'after' | 'allowing' | + if (l1 != 37) // ')' + { + switch (l1) + { + case 11: // StringLiteral + shift(11); // StringLiteral + break; + default: + whitespace(); + parse_NCName(); + } + } + lookahead1W(23); // S^WS | '(:' | ')' + shift(37); // ')' + eventHandler.endNonterminal("PITest", e0); + } + + function try_PITest() + { + shiftT(216); // 'processing-instruction' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(34); // '(' + lookahead1W(252); // StringLiteral | NCName^Token | S^WS | '(:' | ')' | 'after' | 'allowing' | + if (l1 != 37) // ')' + { + switch (l1) + { + case 11: // StringLiteral + shiftT(11); // StringLiteral + break; + default: + try_NCName(); + } + } + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(37); // ')' + } + + function parse_AttributeTest() + { + eventHandler.startNonterminal("AttributeTest", e0); + shift(82); // 'attribute' + lookahead1W(22); // S^WS | '(' | '(:' + shift(34); // '(' + lookahead1W(260); // EQName^Token | S^WS | '(:' | ')' | '*' | 'after' | 'allowing' | 'ancestor' | + if (l1 != 37) // ')' + { + whitespace(); + parse_AttribNameOrWildcard(); + lookahead1W(101); // S^WS | '(:' | ')' | ',' + if (l1 == 41) // ',' + { + shift(41); // ',' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_TypeName(); + } + } + lookahead1W(23); // S^WS | '(:' | ')' + shift(37); // ')' + eventHandler.endNonterminal("AttributeTest", e0); + } + + function try_AttributeTest() + { + shiftT(82); // 'attribute' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(34); // '(' + lookahead1W(260); // EQName^Token | S^WS | '(:' | ')' | '*' | 'after' | 'allowing' | 'ancestor' | + if (l1 != 37) // ')' + { + try_AttribNameOrWildcard(); + lookahead1W(101); // S^WS | '(:' | ')' | ',' + if (l1 == 41) // ',' + { + shiftT(41); // ',' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + try_TypeName(); + } + } + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(37); // ')' + } + + function parse_AttribNameOrWildcard() + { + eventHandler.startNonterminal("AttribNameOrWildcard", e0); + switch (l1) + { + case 38: // '*' + shift(38); // '*' + break; + default: + parse_AttributeName(); + } + eventHandler.endNonterminal("AttribNameOrWildcard", e0); + } + + function try_AttribNameOrWildcard() + { + switch (l1) + { + case 38: // '*' + shiftT(38); // '*' + break; + default: + try_AttributeName(); + } + } + + function parse_SchemaAttributeTest() + { + eventHandler.startNonterminal("SchemaAttributeTest", e0); + shift(226); // 'schema-attribute' + lookahead1W(22); // S^WS | '(' | '(:' + shift(34); // '(' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_AttributeDeclaration(); + lookahead1W(23); // S^WS | '(:' | ')' + shift(37); // ')' + eventHandler.endNonterminal("SchemaAttributeTest", e0); + } + + function try_SchemaAttributeTest() + { + shiftT(226); // 'schema-attribute' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(34); // '(' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + try_AttributeDeclaration(); + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(37); // ')' + } + + function parse_AttributeDeclaration() + { + eventHandler.startNonterminal("AttributeDeclaration", e0); + parse_AttributeName(); + eventHandler.endNonterminal("AttributeDeclaration", e0); + } + + function try_AttributeDeclaration() + { + try_AttributeName(); + } + + function parse_ElementTest() + { + eventHandler.startNonterminal("ElementTest", e0); + shift(121); // 'element' + lookahead1W(22); // S^WS | '(' | '(:' + shift(34); // '(' + lookahead1W(260); // EQName^Token | S^WS | '(:' | ')' | '*' | 'after' | 'allowing' | 'ancestor' | + if (l1 != 37) // ')' + { + whitespace(); + parse_ElementNameOrWildcard(); + lookahead1W(101); // S^WS | '(:' | ')' | ',' + if (l1 == 41) // ',' + { + shift(41); // ',' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_TypeName(); + lookahead1W(102); // S^WS | '(:' | ')' | '?' + if (l1 == 64) // '?' + { + shift(64); // '?' + } + } + } + lookahead1W(23); // S^WS | '(:' | ')' + shift(37); // ')' + eventHandler.endNonterminal("ElementTest", e0); + } + + function try_ElementTest() + { + shiftT(121); // 'element' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(34); // '(' + lookahead1W(260); // EQName^Token | S^WS | '(:' | ')' | '*' | 'after' | 'allowing' | 'ancestor' | + if (l1 != 37) // ')' + { + try_ElementNameOrWildcard(); + lookahead1W(101); // S^WS | '(:' | ')' | ',' + if (l1 == 41) // ',' + { + shiftT(41); // ',' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + try_TypeName(); + lookahead1W(102); // S^WS | '(:' | ')' | '?' + if (l1 == 64) // '?' + { + shiftT(64); // '?' + } + } + } + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(37); // ')' + } + + function parse_ElementNameOrWildcard() + { + eventHandler.startNonterminal("ElementNameOrWildcard", e0); + switch (l1) + { + case 38: // '*' + shift(38); // '*' + break; + default: + parse_ElementName(); + } + eventHandler.endNonterminal("ElementNameOrWildcard", e0); + } + + function try_ElementNameOrWildcard() + { + switch (l1) + { + case 38: // '*' + shiftT(38); // '*' + break; + default: + try_ElementName(); + } + } + + function parse_SchemaElementTest() + { + eventHandler.startNonterminal("SchemaElementTest", e0); + shift(227); // 'schema-element' + lookahead1W(22); // S^WS | '(' | '(:' + shift(34); // '(' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_ElementDeclaration(); + lookahead1W(23); // S^WS | '(:' | ')' + shift(37); // ')' + eventHandler.endNonterminal("SchemaElementTest", e0); + } + + function try_SchemaElementTest() + { + shiftT(227); // 'schema-element' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(34); // '(' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + try_ElementDeclaration(); + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(37); // ')' + } + + function parse_ElementDeclaration() + { + eventHandler.startNonterminal("ElementDeclaration", e0); + parse_ElementName(); + eventHandler.endNonterminal("ElementDeclaration", e0); + } + + function try_ElementDeclaration() + { + try_ElementName(); + } + + function parse_AttributeName() + { + eventHandler.startNonterminal("AttributeName", e0); + parse_EQName(); + eventHandler.endNonterminal("AttributeName", e0); + } + + function try_AttributeName() + { + try_EQName(); + } + + function parse_ElementName() + { + eventHandler.startNonterminal("ElementName", e0); + parse_EQName(); + eventHandler.endNonterminal("ElementName", e0); + } + + function try_ElementName() + { + try_EQName(); + } + + function parse_SimpleTypeName() + { + eventHandler.startNonterminal("SimpleTypeName", e0); + parse_TypeName(); + eventHandler.endNonterminal("SimpleTypeName", e0); + } + + function try_SimpleTypeName() + { + try_TypeName(); + } + + function parse_TypeName() + { + eventHandler.startNonterminal("TypeName", e0); + parse_EQName(); + eventHandler.endNonterminal("TypeName", e0); + } + + function try_TypeName() + { + try_EQName(); + } + + function parse_FunctionTest() + { + eventHandler.startNonterminal("FunctionTest", e0); + for (;;) + { + lookahead1W(97); // S^WS | '%' | '(:' | 'function' + if (l1 != 32) // '%' + { + break; + } + whitespace(); + parse_Annotation(); + } + switch (l1) + { + case 145: // 'function' + lookahead2W(22); // S^WS | '(' | '(:' + break; + default: + lk = l1; + } + lk = memoized(5, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + try_AnyFunctionTest(); + lk = -1; + } + catch (p1A) + { + lk = -2; + } + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(5, e0, lk); + } + switch (lk) + { + case -1: + whitespace(); + parse_AnyFunctionTest(); + break; + default: + whitespace(); + parse_TypedFunctionTest(); + } + eventHandler.endNonterminal("FunctionTest", e0); + } + + function try_FunctionTest() + { + for (;;) + { + lookahead1W(97); // S^WS | '%' | '(:' | 'function' + if (l1 != 32) // '%' + { + break; + } + try_Annotation(); + } + switch (l1) + { + case 145: // 'function' + lookahead2W(22); // S^WS | '(' | '(:' + break; + default: + lk = l1; + } + lk = memoized(5, e0); + if (lk == 0) + { + var b0A = b0; var e0A = e0; var l1A = l1; + var b1A = b1; var e1A = e1; var l2A = l2; + var b2A = b2; var e2A = e2; + try + { + try_AnyFunctionTest(); + memoize(5, e0A, -1); + lk = -3; + } + catch (p1A) + { + lk = -2; + b0 = b0A; e0 = e0A; l1 = l1A; if (l1 == 0) {end = e0A;} else { + b1 = b1A; e1 = e1A; l2 = l2A; if (l2 == 0) {end = e1A;} else { + b2 = b2A; e2 = e2A; end = e2A; }} + memoize(5, e0A, -2); + } + } + switch (lk) + { + case -1: + try_AnyFunctionTest(); + break; + case -3: + break; + default: + try_TypedFunctionTest(); + } + } + + function parse_AnyFunctionTest() + { + eventHandler.startNonterminal("AnyFunctionTest", e0); + shift(145); // 'function' + lookahead1W(22); // S^WS | '(' | '(:' + shift(34); // '(' + lookahead1W(24); // S^WS | '(:' | '*' + shift(38); // '*' + lookahead1W(23); // S^WS | '(:' | ')' + shift(37); // ')' + eventHandler.endNonterminal("AnyFunctionTest", e0); + } + + function try_AnyFunctionTest() + { + shiftT(145); // 'function' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(34); // '(' + lookahead1W(24); // S^WS | '(:' | '*' + shiftT(38); // '*' + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(37); // ')' + } + + function parse_TypedFunctionTest() + { + eventHandler.startNonterminal("TypedFunctionTest", e0); + shift(145); // 'function' + lookahead1W(22); // S^WS | '(' | '(:' + shift(34); // '(' + lookahead1W(262); // EQName^Token | S^WS | '%' | '(' | '(:' | ')' | 'after' | 'allowing' | + if (l1 != 37) // ')' + { + whitespace(); + parse_SequenceType(); + for (;;) + { + lookahead1W(101); // S^WS | '(:' | ')' | ',' + if (l1 != 41) // ',' + { + break; + } + shift(41); // ',' + lookahead1W(259); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_SequenceType(); + } + } + shift(37); // ')' + lookahead1W(30); // S^WS | '(:' | 'as' + shift(79); // 'as' + lookahead1W(259); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_SequenceType(); + eventHandler.endNonterminal("TypedFunctionTest", e0); + } + + function try_TypedFunctionTest() + { + shiftT(145); // 'function' + lookahead1W(22); // S^WS | '(' | '(:' + shiftT(34); // '(' + lookahead1W(262); // EQName^Token | S^WS | '%' | '(' | '(:' | ')' | 'after' | 'allowing' | + if (l1 != 37) // ')' + { + try_SequenceType(); + for (;;) + { + lookahead1W(101); // S^WS | '(:' | ')' | ',' + if (l1 != 41) // ',' + { + break; + } + shiftT(41); // ',' + lookahead1W(259); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + try_SequenceType(); + } + } + shiftT(37); // ')' + lookahead1W(30); // S^WS | '(:' | 'as' + shiftT(79); // 'as' + lookahead1W(259); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + try_SequenceType(); + } + + function parse_ParenthesizedItemType() + { + eventHandler.startNonterminal("ParenthesizedItemType", e0); + shift(34); // '(' + lookahead1W(259); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_ItemType(); + lookahead1W(23); // S^WS | '(:' | ')' + shift(37); // ')' + eventHandler.endNonterminal("ParenthesizedItemType", e0); + } + + function try_ParenthesizedItemType() + { + shiftT(34); // '(' + lookahead1W(259); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + try_ItemType(); + lookahead1W(23); // S^WS | '(:' | ')' + shiftT(37); // ')' + } + + function parse_RevalidationDecl() + { + eventHandler.startNonterminal("RevalidationDecl", e0); + shift(108); // 'declare' + lookahead1W(72); // S^WS | '(:' | 'revalidation' + shift(222); // 'revalidation' + lookahead1W(152); // S^WS | '(:' | 'lax' | 'skip' | 'strict' + switch (l1) + { + case 240: // 'strict' + shift(240); // 'strict' + break; + case 171: // 'lax' + shift(171); // 'lax' + break; + default: + shift(233); // 'skip' + } + eventHandler.endNonterminal("RevalidationDecl", e0); + } + + function parse_InsertExprTargetChoice() + { + eventHandler.startNonterminal("InsertExprTargetChoice", e0); + switch (l1) + { + case 70: // 'after' + shift(70); // 'after' + break; + case 84: // 'before' + shift(84); // 'before' + break; + default: + if (l1 == 79) // 'as' + { + shift(79); // 'as' + lookahead1W(119); // S^WS | '(:' | 'first' | 'last' + switch (l1) + { + case 134: // 'first' + shift(134); // 'first' + break; + default: + shift(170); // 'last' + } + } + lookahead1W(54); // S^WS | '(:' | 'into' + shift(163); // 'into' + } + eventHandler.endNonterminal("InsertExprTargetChoice", e0); + } + + function try_InsertExprTargetChoice() + { + switch (l1) + { + case 70: // 'after' + shiftT(70); // 'after' + break; + case 84: // 'before' + shiftT(84); // 'before' + break; + default: + if (l1 == 79) // 'as' + { + shiftT(79); // 'as' + lookahead1W(119); // S^WS | '(:' | 'first' | 'last' + switch (l1) + { + case 134: // 'first' + shiftT(134); // 'first' + break; + default: + shiftT(170); // 'last' + } + } + lookahead1W(54); // S^WS | '(:' | 'into' + shiftT(163); // 'into' + } + } + + function parse_InsertExpr() + { + eventHandler.startNonterminal("InsertExpr", e0); + shift(159); // 'insert' + lookahead1W(129); // S^WS | '(:' | 'node' | 'nodes' + switch (l1) + { + case 191: // 'node' + shift(191); // 'node' + break; + default: + shift(192); // 'nodes' + } + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + whitespace(); + parse_SourceExpr(); + whitespace(); + parse_InsertExprTargetChoice(); + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + whitespace(); + parse_TargetExpr(); + eventHandler.endNonterminal("InsertExpr", e0); + } + + function try_InsertExpr() + { + shiftT(159); // 'insert' + lookahead1W(129); // S^WS | '(:' | 'node' | 'nodes' + switch (l1) + { + case 191: // 'node' + shiftT(191); // 'node' + break; + default: + shiftT(192); // 'nodes' + } + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + try_SourceExpr(); + try_InsertExprTargetChoice(); + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + try_TargetExpr(); + } + + function parse_DeleteExpr() + { + eventHandler.startNonterminal("DeleteExpr", e0); + shift(110); // 'delete' + lookahead1W(129); // S^WS | '(:' | 'node' | 'nodes' + switch (l1) + { + case 191: // 'node' + shift(191); // 'node' + break; + default: + shift(192); // 'nodes' + } + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + whitespace(); + parse_TargetExpr(); + eventHandler.endNonterminal("DeleteExpr", e0); + } + + function try_DeleteExpr() + { + shiftT(110); // 'delete' + lookahead1W(129); // S^WS | '(:' | 'node' | 'nodes' + switch (l1) + { + case 191: // 'node' + shiftT(191); // 'node' + break; + default: + shiftT(192); // 'nodes' + } + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + try_TargetExpr(); + } + + function parse_ReplaceExpr() + { + eventHandler.startNonterminal("ReplaceExpr", e0); + shift(219); // 'replace' + lookahead1W(130); // S^WS | '(:' | 'node' | 'value' + if (l1 == 261) // 'value' + { + shift(261); // 'value' + lookahead1W(64); // S^WS | '(:' | 'of' + shift(196); // 'of' + } + lookahead1W(62); // S^WS | '(:' | 'node' + shift(191); // 'node' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + whitespace(); + parse_TargetExpr(); + shift(270); // 'with' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("ReplaceExpr", e0); + } + + function try_ReplaceExpr() + { + shiftT(219); // 'replace' + lookahead1W(130); // S^WS | '(:' | 'node' | 'value' + if (l1 == 261) // 'value' + { + shiftT(261); // 'value' + lookahead1W(64); // S^WS | '(:' | 'of' + shiftT(196); // 'of' + } + lookahead1W(62); // S^WS | '(:' | 'node' + shiftT(191); // 'node' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + try_TargetExpr(); + shiftT(270); // 'with' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + try_ExprSingle(); + } + + function parse_RenameExpr() + { + eventHandler.startNonterminal("RenameExpr", e0); + shift(218); // 'rename' + lookahead1W(62); // S^WS | '(:' | 'node' + shift(191); // 'node' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + whitespace(); + parse_TargetExpr(); + shift(79); // 'as' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + whitespace(); + parse_NewNameExpr(); + eventHandler.endNonterminal("RenameExpr", e0); + } + + function try_RenameExpr() + { + shiftT(218); // 'rename' + lookahead1W(62); // S^WS | '(:' | 'node' + shiftT(191); // 'node' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + try_TargetExpr(); + shiftT(79); // 'as' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + try_NewNameExpr(); + } + + function parse_SourceExpr() + { + eventHandler.startNonterminal("SourceExpr", e0); + parse_ExprSingle(); + eventHandler.endNonterminal("SourceExpr", e0); + } + + function try_SourceExpr() + { + try_ExprSingle(); + } + + function parse_TargetExpr() + { + eventHandler.startNonterminal("TargetExpr", e0); + parse_ExprSingle(); + eventHandler.endNonterminal("TargetExpr", e0); + } + + function try_TargetExpr() + { + try_ExprSingle(); + } + + function parse_NewNameExpr() + { + eventHandler.startNonterminal("NewNameExpr", e0); + parse_ExprSingle(); + eventHandler.endNonterminal("NewNameExpr", e0); + } + + function try_NewNameExpr() + { + try_ExprSingle(); + } + + function parse_TransformExpr() + { + eventHandler.startNonterminal("TransformExpr", e0); + shift(103); // 'copy' + lookahead1W(21); // S^WS | '$' | '(:' + whitespace(); + parse_TransformSpec(); + for (;;) + { + if (l1 != 41) // ',' + { + break; + } + shift(41); // ',' + lookahead1W(21); // S^WS | '$' | '(:' + whitespace(); + parse_TransformSpec(); + } + shift(181); // 'modify' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + whitespace(); + parse_ExprSingle(); + shift(220); // 'return' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("TransformExpr", e0); + } + + function try_TransformExpr() + { + shiftT(103); // 'copy' + lookahead1W(21); // S^WS | '$' | '(:' + try_TransformSpec(); + for (;;) + { + if (l1 != 41) // ',' + { + break; + } + shiftT(41); // ',' + lookahead1W(21); // S^WS | '$' | '(:' + try_TransformSpec(); + } + shiftT(181); // 'modify' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + try_ExprSingle(); + shiftT(220); // 'return' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + try_ExprSingle(); + } + + function parse_TransformSpec() + { + eventHandler.startNonterminal("TransformSpec", e0); + shift(31); // '$' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_VarName(); + lookahead1W(27); // S^WS | '(:' | ':=' + shift(52); // ':=' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("TransformSpec", e0); + } + + function try_TransformSpec() + { + shiftT(31); // '$' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + try_VarName(); + lookahead1W(27); // S^WS | '(:' | ':=' + shiftT(52); // ':=' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + try_ExprSingle(); + } + + function parse_FTSelection() + { + eventHandler.startNonterminal("FTSelection", e0); + parse_FTOr(); + for (;;) + { + lookahead1W(211); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + switch (l1) + { + case 81: // 'at' + lookahead2W(151); // S^WS | '(:' | 'end' | 'position' | 'start' + break; + default: + lk = l1; + } + if (lk != 115 // 'different' + && lk != 117 // 'distance' + && lk != 127 // 'entire' + && lk != 202 // 'ordered' + && lk != 223 // 'same' + && lk != 269 // 'window' + && lk != 64593 // 'at' 'end' + && lk != 121425) // 'at' 'start' + { + break; + } + whitespace(); + parse_FTPosFilter(); + } + eventHandler.endNonterminal("FTSelection", e0); + } + + function try_FTSelection() + { + try_FTOr(); + for (;;) + { + lookahead1W(211); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + switch (l1) + { + case 81: // 'at' + lookahead2W(151); // S^WS | '(:' | 'end' | 'position' | 'start' + break; + default: + lk = l1; + } + if (lk != 115 // 'different' + && lk != 117 // 'distance' + && lk != 127 // 'entire' + && lk != 202 // 'ordered' + && lk != 223 // 'same' + && lk != 269 // 'window' + && lk != 64593 // 'at' 'end' + && lk != 121425) // 'at' 'start' + { + break; + } + try_FTPosFilter(); + } + } + + function parse_FTWeight() + { + eventHandler.startNonterminal("FTWeight", e0); + shift(264); // 'weight' + lookahead1W(87); // S^WS | '(:' | '{' + shift(276); // '{' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + whitespace(); + parse_Expr(); + shift(282); // '}' + eventHandler.endNonterminal("FTWeight", e0); + } + + function try_FTWeight() + { + shiftT(264); // 'weight' + lookahead1W(87); // S^WS | '(:' | '{' + shiftT(276); // '{' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + try_Expr(); + shiftT(282); // '}' + } + + function parse_FTOr() + { + eventHandler.startNonterminal("FTOr", e0); + parse_FTAnd(); + for (;;) + { + if (l1 != 144) // 'ftor' + { + break; + } + shift(144); // 'ftor' + lookahead1W(162); // StringLiteral | S^WS | '(' | '(#' | '(:' | 'ftnot' | '{' + whitespace(); + parse_FTAnd(); + } + eventHandler.endNonterminal("FTOr", e0); + } + + function try_FTOr() + { + try_FTAnd(); + for (;;) + { + if (l1 != 144) // 'ftor' + { + break; + } + shiftT(144); // 'ftor' + lookahead1W(162); // StringLiteral | S^WS | '(' | '(#' | '(:' | 'ftnot' | '{' + try_FTAnd(); + } + } + + function parse_FTAnd() + { + eventHandler.startNonterminal("FTAnd", e0); + parse_FTMildNot(); + for (;;) + { + if (l1 != 142) // 'ftand' + { + break; + } + shift(142); // 'ftand' + lookahead1W(162); // StringLiteral | S^WS | '(' | '(#' | '(:' | 'ftnot' | '{' + whitespace(); + parse_FTMildNot(); + } + eventHandler.endNonterminal("FTAnd", e0); + } + + function try_FTAnd() + { + try_FTMildNot(); + for (;;) + { + if (l1 != 142) // 'ftand' + { + break; + } + shiftT(142); // 'ftand' + lookahead1W(162); // StringLiteral | S^WS | '(' | '(#' | '(:' | 'ftnot' | '{' + try_FTMildNot(); + } + } + + function parse_FTMildNot() + { + eventHandler.startNonterminal("FTMildNot", e0); + parse_FTUnaryNot(); + for (;;) + { + lookahead1W(212); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + if (l1 != 193) // 'not' + { + break; + } + shift(193); // 'not' + lookahead1W(53); // S^WS | '(:' | 'in' + shift(154); // 'in' + lookahead1W(162); // StringLiteral | S^WS | '(' | '(#' | '(:' | 'ftnot' | '{' + whitespace(); + parse_FTUnaryNot(); + } + eventHandler.endNonterminal("FTMildNot", e0); + } + + function try_FTMildNot() + { + try_FTUnaryNot(); + for (;;) + { + lookahead1W(212); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + if (l1 != 193) // 'not' + { + break; + } + shiftT(193); // 'not' + lookahead1W(53); // S^WS | '(:' | 'in' + shiftT(154); // 'in' + lookahead1W(162); // StringLiteral | S^WS | '(' | '(#' | '(:' | 'ftnot' | '{' + try_FTUnaryNot(); + } + } + + function parse_FTUnaryNot() + { + eventHandler.startNonterminal("FTUnaryNot", e0); + if (l1 == 143) // 'ftnot' + { + shift(143); // 'ftnot' + } + lookahead1W(155); // StringLiteral | S^WS | '(' | '(#' | '(:' | '{' + whitespace(); + parse_FTPrimaryWithOptions(); + eventHandler.endNonterminal("FTUnaryNot", e0); + } + + function try_FTUnaryNot() + { + if (l1 == 143) // 'ftnot' + { + shiftT(143); // 'ftnot' + } + lookahead1W(155); // StringLiteral | S^WS | '(' | '(#' | '(:' | '{' + try_FTPrimaryWithOptions(); + } + + function parse_FTPrimaryWithOptions() + { + eventHandler.startNonterminal("FTPrimaryWithOptions", e0); + parse_FTPrimary(); + lookahead1W(214); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + if (l1 == 259) // 'using' + { + whitespace(); + parse_FTMatchOptions(); + } + if (l1 == 264) // 'weight' + { + whitespace(); + parse_FTWeight(); + } + eventHandler.endNonterminal("FTPrimaryWithOptions", e0); + } + + function try_FTPrimaryWithOptions() + { + try_FTPrimary(); + lookahead1W(214); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + if (l1 == 259) // 'using' + { + try_FTMatchOptions(); + } + if (l1 == 264) // 'weight' + { + try_FTWeight(); + } + } + + function parse_FTPrimary() + { + eventHandler.startNonterminal("FTPrimary", e0); + switch (l1) + { + case 34: // '(' + shift(34); // '(' + lookahead1W(162); // StringLiteral | S^WS | '(' | '(#' | '(:' | 'ftnot' | '{' + whitespace(); + parse_FTSelection(); + shift(37); // ')' + break; + case 35: // '(#' + parse_FTExtensionSelection(); + break; + default: + parse_FTWords(); + lookahead1W(215); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + if (l1 == 195) // 'occurs' + { + whitespace(); + parse_FTTimes(); + } + } + eventHandler.endNonterminal("FTPrimary", e0); + } + + function try_FTPrimary() + { + switch (l1) + { + case 34: // '(' + shiftT(34); // '(' + lookahead1W(162); // StringLiteral | S^WS | '(' | '(#' | '(:' | 'ftnot' | '{' + try_FTSelection(); + shiftT(37); // ')' + break; + case 35: // '(#' + try_FTExtensionSelection(); + break; + default: + try_FTWords(); + lookahead1W(215); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + if (l1 == 195) // 'occurs' + { + try_FTTimes(); + } + } + } + + function parse_FTWords() + { + eventHandler.startNonterminal("FTWords", e0); + parse_FTWordsValue(); + lookahead1W(221); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + if (l1 == 71 // 'all' + || l1 == 76 // 'any' + || l1 == 210) // 'phrase' + { + whitespace(); + parse_FTAnyallOption(); + } + eventHandler.endNonterminal("FTWords", e0); + } + + function try_FTWords() + { + try_FTWordsValue(); + lookahead1W(221); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + if (l1 == 71 // 'all' + || l1 == 76 // 'any' + || l1 == 210) // 'phrase' + { + try_FTAnyallOption(); + } + } + + function parse_FTWordsValue() + { + eventHandler.startNonterminal("FTWordsValue", e0); + switch (l1) + { + case 11: // StringLiteral + shift(11); // StringLiteral + break; + default: + shift(276); // '{' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + whitespace(); + parse_Expr(); + shift(282); // '}' + } + eventHandler.endNonterminal("FTWordsValue", e0); + } + + function try_FTWordsValue() + { + switch (l1) + { + case 11: // StringLiteral + shiftT(11); // StringLiteral + break; + default: + shiftT(276); // '{' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + try_Expr(); + shiftT(282); // '}' + } + } + + function parse_FTExtensionSelection() + { + eventHandler.startNonterminal("FTExtensionSelection", e0); + for (;;) + { + whitespace(); + parse_Pragma(); + lookahead1W(100); // S^WS | '(#' | '(:' | '{' + if (l1 != 35) // '(#' + { + break; + } + } + shift(276); // '{' + lookahead1W(166); // StringLiteral | S^WS | '(' | '(#' | '(:' | 'ftnot' | '{' | '}' + if (l1 != 282) // '}' + { + whitespace(); + parse_FTSelection(); + } + shift(282); // '}' + eventHandler.endNonterminal("FTExtensionSelection", e0); + } + + function try_FTExtensionSelection() + { + for (;;) + { + try_Pragma(); + lookahead1W(100); // S^WS | '(#' | '(:' | '{' + if (l1 != 35) // '(#' + { + break; + } + } + shiftT(276); // '{' + lookahead1W(166); // StringLiteral | S^WS | '(' | '(#' | '(:' | 'ftnot' | '{' | '}' + if (l1 != 282) // '}' + { + try_FTSelection(); + } + shiftT(282); // '}' + } + + function parse_FTAnyallOption() + { + eventHandler.startNonterminal("FTAnyallOption", e0); + switch (l1) + { + case 76: // 'any' + shift(76); // 'any' + lookahead1W(218); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + if (l1 == 272) // 'word' + { + shift(272); // 'word' + } + break; + case 71: // 'all' + shift(71); // 'all' + lookahead1W(219); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + if (l1 == 273) // 'words' + { + shift(273); // 'words' + } + break; + default: + shift(210); // 'phrase' + } + eventHandler.endNonterminal("FTAnyallOption", e0); + } + + function try_FTAnyallOption() + { + switch (l1) + { + case 76: // 'any' + shiftT(76); // 'any' + lookahead1W(218); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + if (l1 == 272) // 'word' + { + shiftT(272); // 'word' + } + break; + case 71: // 'all' + shiftT(71); // 'all' + lookahead1W(219); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + if (l1 == 273) // 'words' + { + shiftT(273); // 'words' + } + break; + default: + shiftT(210); // 'phrase' + } + } + + function parse_FTTimes() + { + eventHandler.startNonterminal("FTTimes", e0); + shift(195); // 'occurs' + lookahead1W(149); // S^WS | '(:' | 'at' | 'exactly' | 'from' + whitespace(); + parse_FTRange(); + shift(247); // 'times' + eventHandler.endNonterminal("FTTimes", e0); + } + + function try_FTTimes() + { + shiftT(195); // 'occurs' + lookahead1W(149); // S^WS | '(:' | 'at' | 'exactly' | 'from' + try_FTRange(); + shiftT(247); // 'times' + } + + function parse_FTRange() + { + eventHandler.startNonterminal("FTRange", e0); + switch (l1) + { + case 130: // 'exactly' + shift(130); // 'exactly' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + whitespace(); + parse_AdditiveExpr(); + break; + case 81: // 'at' + shift(81); // 'at' + lookahead1W(125); // S^WS | '(:' | 'least' | 'most' + switch (l1) + { + case 173: // 'least' + shift(173); // 'least' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + whitespace(); + parse_AdditiveExpr(); + break; + default: + shift(183); // 'most' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + whitespace(); + parse_AdditiveExpr(); + } + break; + default: + shift(140); // 'from' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + whitespace(); + parse_AdditiveExpr(); + shift(248); // 'to' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + whitespace(); + parse_AdditiveExpr(); + } + eventHandler.endNonterminal("FTRange", e0); + } + + function try_FTRange() + { + switch (l1) + { + case 130: // 'exactly' + shiftT(130); // 'exactly' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + try_AdditiveExpr(); + break; + case 81: // 'at' + shiftT(81); // 'at' + lookahead1W(125); // S^WS | '(:' | 'least' | 'most' + switch (l1) + { + case 173: // 'least' + shiftT(173); // 'least' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + try_AdditiveExpr(); + break; + default: + shiftT(183); // 'most' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + try_AdditiveExpr(); + } + break; + default: + shiftT(140); // 'from' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + try_AdditiveExpr(); + shiftT(248); // 'to' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + try_AdditiveExpr(); + } + } + + function parse_FTPosFilter() + { + eventHandler.startNonterminal("FTPosFilter", e0); + switch (l1) + { + case 202: // 'ordered' + parse_FTOrder(); + break; + case 269: // 'window' + parse_FTWindow(); + break; + case 117: // 'distance' + parse_FTDistance(); + break; + case 115: // 'different' + case 223: // 'same' + parse_FTScope(); + break; + default: + parse_FTContent(); + } + eventHandler.endNonterminal("FTPosFilter", e0); + } + + function try_FTPosFilter() + { + switch (l1) + { + case 202: // 'ordered' + try_FTOrder(); + break; + case 269: // 'window' + try_FTWindow(); + break; + case 117: // 'distance' + try_FTDistance(); + break; + case 115: // 'different' + case 223: // 'same' + try_FTScope(); + break; + default: + try_FTContent(); + } + } + + function parse_FTOrder() + { + eventHandler.startNonterminal("FTOrder", e0); + shift(202); // 'ordered' + eventHandler.endNonterminal("FTOrder", e0); + } + + function try_FTOrder() + { + shiftT(202); // 'ordered' + } + + function parse_FTWindow() + { + eventHandler.startNonterminal("FTWindow", e0); + shift(269); // 'window' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + whitespace(); + parse_AdditiveExpr(); + whitespace(); + parse_FTUnit(); + eventHandler.endNonterminal("FTWindow", e0); + } + + function try_FTWindow() + { + shiftT(269); // 'window' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + try_AdditiveExpr(); + try_FTUnit(); + } + + function parse_FTDistance() + { + eventHandler.startNonterminal("FTDistance", e0); + shift(117); // 'distance' + lookahead1W(149); // S^WS | '(:' | 'at' | 'exactly' | 'from' + whitespace(); + parse_FTRange(); + whitespace(); + parse_FTUnit(); + eventHandler.endNonterminal("FTDistance", e0); + } + + function try_FTDistance() + { + shiftT(117); // 'distance' + lookahead1W(149); // S^WS | '(:' | 'at' | 'exactly' | 'from' + try_FTRange(); + try_FTUnit(); + } + + function parse_FTUnit() + { + eventHandler.startNonterminal("FTUnit", e0); + switch (l1) + { + case 273: // 'words' + shift(273); // 'words' + break; + case 232: // 'sentences' + shift(232); // 'sentences' + break; + default: + shift(205); // 'paragraphs' + } + eventHandler.endNonterminal("FTUnit", e0); + } + + function try_FTUnit() + { + switch (l1) + { + case 273: // 'words' + shiftT(273); // 'words' + break; + case 232: // 'sentences' + shiftT(232); // 'sentences' + break; + default: + shiftT(205); // 'paragraphs' + } + } + + function parse_FTScope() + { + eventHandler.startNonterminal("FTScope", e0); + switch (l1) + { + case 223: // 'same' + shift(223); // 'same' + break; + default: + shift(115); // 'different' + } + lookahead1W(132); // S^WS | '(:' | 'paragraph' | 'sentence' + whitespace(); + parse_FTBigUnit(); + eventHandler.endNonterminal("FTScope", e0); + } + + function try_FTScope() + { + switch (l1) + { + case 223: // 'same' + shiftT(223); // 'same' + break; + default: + shiftT(115); // 'different' + } + lookahead1W(132); // S^WS | '(:' | 'paragraph' | 'sentence' + try_FTBigUnit(); + } + + function parse_FTBigUnit() + { + eventHandler.startNonterminal("FTBigUnit", e0); + switch (l1) + { + case 231: // 'sentence' + shift(231); // 'sentence' + break; + default: + shift(204); // 'paragraph' + } + eventHandler.endNonterminal("FTBigUnit", e0); + } + + function try_FTBigUnit() + { + switch (l1) + { + case 231: // 'sentence' + shiftT(231); // 'sentence' + break; + default: + shiftT(204); // 'paragraph' + } + } + + function parse_FTContent() + { + eventHandler.startNonterminal("FTContent", e0); + switch (l1) + { + case 81: // 'at' + shift(81); // 'at' + lookahead1W(117); // S^WS | '(:' | 'end' | 'start' + switch (l1) + { + case 237: // 'start' + shift(237); // 'start' + break; + default: + shift(126); // 'end' + } + break; + default: + shift(127); // 'entire' + lookahead1W(42); // S^WS | '(:' | 'content' + shift(100); // 'content' + } + eventHandler.endNonterminal("FTContent", e0); + } + + function try_FTContent() + { + switch (l1) + { + case 81: // 'at' + shiftT(81); // 'at' + lookahead1W(117); // S^WS | '(:' | 'end' | 'start' + switch (l1) + { + case 237: // 'start' + shiftT(237); // 'start' + break; + default: + shiftT(126); // 'end' + } + break; + default: + shiftT(127); // 'entire' + lookahead1W(42); // S^WS | '(:' | 'content' + shiftT(100); // 'content' + } + } + + function parse_FTMatchOptions() + { + eventHandler.startNonterminal("FTMatchOptions", e0); + for (;;) + { + shift(259); // 'using' + lookahead1W(181); // S^WS | '(:' | 'case' | 'diacritics' | 'language' | 'lowercase' | 'no' | + whitespace(); + parse_FTMatchOption(); + lookahead1W(214); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + if (l1 != 259) // 'using' + { + break; + } + } + eventHandler.endNonterminal("FTMatchOptions", e0); + } + + function try_FTMatchOptions() + { + for (;;) + { + shiftT(259); // 'using' + lookahead1W(181); // S^WS | '(:' | 'case' | 'diacritics' | 'language' | 'lowercase' | 'no' | + try_FTMatchOption(); + lookahead1W(214); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + if (l1 != 259) // 'using' + { + break; + } + } + } + + function parse_FTMatchOption() + { + eventHandler.startNonterminal("FTMatchOption", e0); + switch (l1) + { + case 188: // 'no' + lookahead2W(161); // S^WS | '(:' | 'stemming' | 'stop' | 'thesaurus' | 'wildcards' + break; + default: + lk = l1; + } + switch (lk) + { + case 169: // 'language' + parse_FTLanguageOption(); + break; + case 268: // 'wildcards' + case 137404: // 'no' 'wildcards' + parse_FTWildCardOption(); + break; + case 246: // 'thesaurus' + case 126140: // 'no' 'thesaurus' + parse_FTThesaurusOption(); + break; + case 238: // 'stemming' + case 122044: // 'no' 'stemming' + parse_FTStemOption(); + break; + case 114: // 'diacritics' + parse_FTDiacriticsOption(); + break; + case 239: // 'stop' + case 122556: // 'no' 'stop' + parse_FTStopWordOption(); + break; + case 199: // 'option' + parse_FTExtensionOption(); + break; + default: + parse_FTCaseOption(); + } + eventHandler.endNonterminal("FTMatchOption", e0); + } + + function try_FTMatchOption() + { + switch (l1) + { + case 188: // 'no' + lookahead2W(161); // S^WS | '(:' | 'stemming' | 'stop' | 'thesaurus' | 'wildcards' + break; + default: + lk = l1; + } + switch (lk) + { + case 169: // 'language' + try_FTLanguageOption(); + break; + case 268: // 'wildcards' + case 137404: // 'no' 'wildcards' + try_FTWildCardOption(); + break; + case 246: // 'thesaurus' + case 126140: // 'no' 'thesaurus' + try_FTThesaurusOption(); + break; + case 238: // 'stemming' + case 122044: // 'no' 'stemming' + try_FTStemOption(); + break; + case 114: // 'diacritics' + try_FTDiacriticsOption(); + break; + case 239: // 'stop' + case 122556: // 'no' 'stop' + try_FTStopWordOption(); + break; + case 199: // 'option' + try_FTExtensionOption(); + break; + default: + try_FTCaseOption(); + } + } + + function parse_FTCaseOption() + { + eventHandler.startNonterminal("FTCaseOption", e0); + switch (l1) + { + case 88: // 'case' + shift(88); // 'case' + lookahead1W(124); // S^WS | '(:' | 'insensitive' | 'sensitive' + switch (l1) + { + case 158: // 'insensitive' + shift(158); // 'insensitive' + break; + default: + shift(230); // 'sensitive' + } + break; + case 177: // 'lowercase' + shift(177); // 'lowercase' + break; + default: + shift(258); // 'uppercase' + } + eventHandler.endNonterminal("FTCaseOption", e0); + } + + function try_FTCaseOption() + { + switch (l1) + { + case 88: // 'case' + shiftT(88); // 'case' + lookahead1W(124); // S^WS | '(:' | 'insensitive' | 'sensitive' + switch (l1) + { + case 158: // 'insensitive' + shiftT(158); // 'insensitive' + break; + default: + shiftT(230); // 'sensitive' + } + break; + case 177: // 'lowercase' + shiftT(177); // 'lowercase' + break; + default: + shiftT(258); // 'uppercase' + } + } + + function parse_FTDiacriticsOption() + { + eventHandler.startNonterminal("FTDiacriticsOption", e0); + shift(114); // 'diacritics' + lookahead1W(124); // S^WS | '(:' | 'insensitive' | 'sensitive' + switch (l1) + { + case 158: // 'insensitive' + shift(158); // 'insensitive' + break; + default: + shift(230); // 'sensitive' + } + eventHandler.endNonterminal("FTDiacriticsOption", e0); + } + + function try_FTDiacriticsOption() + { + shiftT(114); // 'diacritics' + lookahead1W(124); // S^WS | '(:' | 'insensitive' | 'sensitive' + switch (l1) + { + case 158: // 'insensitive' + shiftT(158); // 'insensitive' + break; + default: + shiftT(230); // 'sensitive' + } + } + + function parse_FTStemOption() + { + eventHandler.startNonterminal("FTStemOption", e0); + switch (l1) + { + case 238: // 'stemming' + shift(238); // 'stemming' + break; + default: + shift(188); // 'no' + lookahead1W(74); // S^WS | '(:' | 'stemming' + shift(238); // 'stemming' + } + eventHandler.endNonterminal("FTStemOption", e0); + } + + function try_FTStemOption() + { + switch (l1) + { + case 238: // 'stemming' + shiftT(238); // 'stemming' + break; + default: + shiftT(188); // 'no' + lookahead1W(74); // S^WS | '(:' | 'stemming' + shiftT(238); // 'stemming' + } + } + + function parse_FTThesaurusOption() + { + eventHandler.startNonterminal("FTThesaurusOption", e0); + switch (l1) + { + case 246: // 'thesaurus' + shift(246); // 'thesaurus' + lookahead1W(142); // S^WS | '(' | '(:' | 'at' | 'default' + switch (l1) + { + case 81: // 'at' + whitespace(); + parse_FTThesaurusID(); + break; + case 109: // 'default' + shift(109); // 'default' + break; + default: + shift(34); // '(' + lookahead1W(112); // S^WS | '(:' | 'at' | 'default' + switch (l1) + { + case 81: // 'at' + whitespace(); + parse_FTThesaurusID(); + break; + default: + shift(109); // 'default' + } + for (;;) + { + lookahead1W(101); // S^WS | '(:' | ')' | ',' + if (l1 != 41) // ',' + { + break; + } + shift(41); // ',' + lookahead1W(31); // S^WS | '(:' | 'at' + whitespace(); + parse_FTThesaurusID(); + } + shift(37); // ')' + } + break; + default: + shift(188); // 'no' + lookahead1W(78); // S^WS | '(:' | 'thesaurus' + shift(246); // 'thesaurus' + } + eventHandler.endNonterminal("FTThesaurusOption", e0); + } + + function try_FTThesaurusOption() + { + switch (l1) + { + case 246: // 'thesaurus' + shiftT(246); // 'thesaurus' + lookahead1W(142); // S^WS | '(' | '(:' | 'at' | 'default' + switch (l1) + { + case 81: // 'at' + try_FTThesaurusID(); + break; + case 109: // 'default' + shiftT(109); // 'default' + break; + default: + shiftT(34); // '(' + lookahead1W(112); // S^WS | '(:' | 'at' | 'default' + switch (l1) + { + case 81: // 'at' + try_FTThesaurusID(); + break; + default: + shiftT(109); // 'default' + } + for (;;) + { + lookahead1W(101); // S^WS | '(:' | ')' | ',' + if (l1 != 41) // ',' + { + break; + } + shiftT(41); // ',' + lookahead1W(31); // S^WS | '(:' | 'at' + try_FTThesaurusID(); + } + shiftT(37); // ')' + } + break; + default: + shiftT(188); // 'no' + lookahead1W(78); // S^WS | '(:' | 'thesaurus' + shiftT(246); // 'thesaurus' + } + } + + function parse_FTThesaurusID() + { + eventHandler.startNonterminal("FTThesaurusID", e0); + shift(81); // 'at' + lookahead1W(15); // URILiteral | S^WS | '(:' + shift(7); // URILiteral + lookahead1W(220); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + if (l1 == 217) // 'relationship' + { + shift(217); // 'relationship' + lookahead1W(17); // StringLiteral | S^WS | '(:' + shift(11); // StringLiteral + } + lookahead1W(216); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + switch (l1) + { + case 81: // 'at' + lookahead2W(165); // S^WS | '(:' | 'end' | 'least' | 'most' | 'position' | 'start' + break; + default: + lk = l1; + } + if (lk == 130 // 'exactly' + || lk == 140 // 'from' + || lk == 88657 // 'at' 'least' + || lk == 93777) // 'at' 'most' + { + whitespace(); + parse_FTLiteralRange(); + lookahead1W(58); // S^WS | '(:' | 'levels' + shift(175); // 'levels' + } + eventHandler.endNonterminal("FTThesaurusID", e0); + } + + function try_FTThesaurusID() + { + shiftT(81); // 'at' + lookahead1W(15); // URILiteral | S^WS | '(:' + shiftT(7); // URILiteral + lookahead1W(220); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + if (l1 == 217) // 'relationship' + { + shiftT(217); // 'relationship' + lookahead1W(17); // StringLiteral | S^WS | '(:' + shiftT(11); // StringLiteral + } + lookahead1W(216); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + switch (l1) + { + case 81: // 'at' + lookahead2W(165); // S^WS | '(:' | 'end' | 'least' | 'most' | 'position' | 'start' + break; + default: + lk = l1; + } + if (lk == 130 // 'exactly' + || lk == 140 // 'from' + || lk == 88657 // 'at' 'least' + || lk == 93777) // 'at' 'most' + { + try_FTLiteralRange(); + lookahead1W(58); // S^WS | '(:' | 'levels' + shiftT(175); // 'levels' + } + } + + function parse_FTLiteralRange() + { + eventHandler.startNonterminal("FTLiteralRange", e0); + switch (l1) + { + case 130: // 'exactly' + shift(130); // 'exactly' + lookahead1W(16); // IntegerLiteral | S^WS | '(:' + shift(8); // IntegerLiteral + break; + case 81: // 'at' + shift(81); // 'at' + lookahead1W(125); // S^WS | '(:' | 'least' | 'most' + switch (l1) + { + case 173: // 'least' + shift(173); // 'least' + lookahead1W(16); // IntegerLiteral | S^WS | '(:' + shift(8); // IntegerLiteral + break; + default: + shift(183); // 'most' + lookahead1W(16); // IntegerLiteral | S^WS | '(:' + shift(8); // IntegerLiteral + } + break; + default: + shift(140); // 'from' + lookahead1W(16); // IntegerLiteral | S^WS | '(:' + shift(8); // IntegerLiteral + lookahead1W(79); // S^WS | '(:' | 'to' + shift(248); // 'to' + lookahead1W(16); // IntegerLiteral | S^WS | '(:' + shift(8); // IntegerLiteral + } + eventHandler.endNonterminal("FTLiteralRange", e0); + } + + function try_FTLiteralRange() + { + switch (l1) + { + case 130: // 'exactly' + shiftT(130); // 'exactly' + lookahead1W(16); // IntegerLiteral | S^WS | '(:' + shiftT(8); // IntegerLiteral + break; + case 81: // 'at' + shiftT(81); // 'at' + lookahead1W(125); // S^WS | '(:' | 'least' | 'most' + switch (l1) + { + case 173: // 'least' + shiftT(173); // 'least' + lookahead1W(16); // IntegerLiteral | S^WS | '(:' + shiftT(8); // IntegerLiteral + break; + default: + shiftT(183); // 'most' + lookahead1W(16); // IntegerLiteral | S^WS | '(:' + shiftT(8); // IntegerLiteral + } + break; + default: + shiftT(140); // 'from' + lookahead1W(16); // IntegerLiteral | S^WS | '(:' + shiftT(8); // IntegerLiteral + lookahead1W(79); // S^WS | '(:' | 'to' + shiftT(248); // 'to' + lookahead1W(16); // IntegerLiteral | S^WS | '(:' + shiftT(8); // IntegerLiteral + } + } + + function parse_FTStopWordOption() + { + eventHandler.startNonterminal("FTStopWordOption", e0); + switch (l1) + { + case 239: // 'stop' + shift(239); // 'stop' + lookahead1W(86); // S^WS | '(:' | 'words' + shift(273); // 'words' + lookahead1W(142); // S^WS | '(' | '(:' | 'at' | 'default' + switch (l1) + { + case 109: // 'default' + shift(109); // 'default' + for (;;) + { + lookahead1W(217); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + if (l1 != 131 // 'except' + && l1 != 254) // 'union' + { + break; + } + whitespace(); + parse_FTStopWordsInclExcl(); + } + break; + default: + whitespace(); + parse_FTStopWords(); + for (;;) + { + lookahead1W(217); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + if (l1 != 131 // 'except' + && l1 != 254) // 'union' + { + break; + } + whitespace(); + parse_FTStopWordsInclExcl(); + } + } + break; + default: + shift(188); // 'no' + lookahead1W(75); // S^WS | '(:' | 'stop' + shift(239); // 'stop' + lookahead1W(86); // S^WS | '(:' | 'words' + shift(273); // 'words' + } + eventHandler.endNonterminal("FTStopWordOption", e0); + } + + function try_FTStopWordOption() + { + switch (l1) + { + case 239: // 'stop' + shiftT(239); // 'stop' + lookahead1W(86); // S^WS | '(:' | 'words' + shiftT(273); // 'words' + lookahead1W(142); // S^WS | '(' | '(:' | 'at' | 'default' + switch (l1) + { + case 109: // 'default' + shiftT(109); // 'default' + for (;;) + { + lookahead1W(217); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + if (l1 != 131 // 'except' + && l1 != 254) // 'union' + { + break; + } + try_FTStopWordsInclExcl(); + } + break; + default: + try_FTStopWords(); + for (;;) + { + lookahead1W(217); // S^WS | EOF | '!=' | '(:' | ')' | ',' | ':' | ';' | '<' | '<<' | '<=' | '=' | + if (l1 != 131 // 'except' + && l1 != 254) // 'union' + { + break; + } + try_FTStopWordsInclExcl(); + } + } + break; + default: + shiftT(188); // 'no' + lookahead1W(75); // S^WS | '(:' | 'stop' + shiftT(239); // 'stop' + lookahead1W(86); // S^WS | '(:' | 'words' + shiftT(273); // 'words' + } + } + + function parse_FTStopWords() + { + eventHandler.startNonterminal("FTStopWords", e0); + switch (l1) + { + case 81: // 'at' + shift(81); // 'at' + lookahead1W(15); // URILiteral | S^WS | '(:' + shift(7); // URILiteral + break; + default: + shift(34); // '(' + lookahead1W(17); // StringLiteral | S^WS | '(:' + shift(11); // StringLiteral + for (;;) + { + lookahead1W(101); // S^WS | '(:' | ')' | ',' + if (l1 != 41) // ',' + { + break; + } + shift(41); // ',' + lookahead1W(17); // StringLiteral | S^WS | '(:' + shift(11); // StringLiteral + } + shift(37); // ')' + } + eventHandler.endNonterminal("FTStopWords", e0); + } + + function try_FTStopWords() + { + switch (l1) + { + case 81: // 'at' + shiftT(81); // 'at' + lookahead1W(15); // URILiteral | S^WS | '(:' + shiftT(7); // URILiteral + break; + default: + shiftT(34); // '(' + lookahead1W(17); // StringLiteral | S^WS | '(:' + shiftT(11); // StringLiteral + for (;;) + { + lookahead1W(101); // S^WS | '(:' | ')' | ',' + if (l1 != 41) // ',' + { + break; + } + shiftT(41); // ',' + lookahead1W(17); // StringLiteral | S^WS | '(:' + shiftT(11); // StringLiteral + } + shiftT(37); // ')' + } + } + + function parse_FTStopWordsInclExcl() + { + eventHandler.startNonterminal("FTStopWordsInclExcl", e0); + switch (l1) + { + case 254: // 'union' + shift(254); // 'union' + break; + default: + shift(131); // 'except' + } + lookahead1W(99); // S^WS | '(' | '(:' | 'at' + whitespace(); + parse_FTStopWords(); + eventHandler.endNonterminal("FTStopWordsInclExcl", e0); + } + + function try_FTStopWordsInclExcl() + { + switch (l1) + { + case 254: // 'union' + shiftT(254); // 'union' + break; + default: + shiftT(131); // 'except' + } + lookahead1W(99); // S^WS | '(' | '(:' | 'at' + try_FTStopWords(); + } + + function parse_FTLanguageOption() + { + eventHandler.startNonterminal("FTLanguageOption", e0); + shift(169); // 'language' + lookahead1W(17); // StringLiteral | S^WS | '(:' + shift(11); // StringLiteral + eventHandler.endNonterminal("FTLanguageOption", e0); + } + + function try_FTLanguageOption() + { + shiftT(169); // 'language' + lookahead1W(17); // StringLiteral | S^WS | '(:' + shiftT(11); // StringLiteral + } + + function parse_FTWildCardOption() + { + eventHandler.startNonterminal("FTWildCardOption", e0); + switch (l1) + { + case 268: // 'wildcards' + shift(268); // 'wildcards' + break; + default: + shift(188); // 'no' + lookahead1W(84); // S^WS | '(:' | 'wildcards' + shift(268); // 'wildcards' + } + eventHandler.endNonterminal("FTWildCardOption", e0); + } + + function try_FTWildCardOption() + { + switch (l1) + { + case 268: // 'wildcards' + shiftT(268); // 'wildcards' + break; + default: + shiftT(188); // 'no' + lookahead1W(84); // S^WS | '(:' | 'wildcards' + shiftT(268); // 'wildcards' + } + } + + function parse_FTExtensionOption() + { + eventHandler.startNonterminal("FTExtensionOption", e0); + shift(199); // 'option' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_EQName(); + lookahead1W(17); // StringLiteral | S^WS | '(:' + shift(11); // StringLiteral + eventHandler.endNonterminal("FTExtensionOption", e0); + } + + function try_FTExtensionOption() + { + shiftT(199); // 'option' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + try_EQName(); + lookahead1W(17); // StringLiteral | S^WS | '(:' + shiftT(11); // StringLiteral + } + + function parse_FTIgnoreOption() + { + eventHandler.startNonterminal("FTIgnoreOption", e0); + shift(271); // 'without' + lookahead1W(42); // S^WS | '(:' | 'content' + shift(100); // 'content' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + whitespace(); + parse_UnionExpr(); + eventHandler.endNonterminal("FTIgnoreOption", e0); + } + + function try_FTIgnoreOption() + { + shiftT(271); // 'without' + lookahead1W(42); // S^WS | '(:' | 'content' + shiftT(100); // 'content' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + try_UnionExpr(); + } + + function parse_CollectionDecl() + { + eventHandler.startNonterminal("CollectionDecl", e0); + shift(95); // 'collection' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_EQName(); + lookahead1W(107); // S^WS | '(:' | ';' | 'as' + if (l1 == 79) // 'as' + { + whitespace(); + parse_CollectionTypeDecl(); + } + eventHandler.endNonterminal("CollectionDecl", e0); + } + + function parse_CollectionTypeDecl() + { + eventHandler.startNonterminal("CollectionTypeDecl", e0); + shift(79); // 'as' + lookahead1W(259); // EQName^Token | S^WS | '%' | '(' | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_ItemType(); + lookahead1W(156); // S^WS | '(:' | '*' | '+' | ';' | '?' + if (l1 != 53) // ';' + { + whitespace(); + parse_OccurrenceIndicator(); + } + eventHandler.endNonterminal("CollectionTypeDecl", e0); + } + + function parse_IndexName() + { + eventHandler.startNonterminal("IndexName", e0); + parse_EQName(); + eventHandler.endNonterminal("IndexName", e0); + } + + function parse_IndexDomainExpr() + { + eventHandler.startNonterminal("IndexDomainExpr", e0); + parse_PathExpr(); + eventHandler.endNonterminal("IndexDomainExpr", e0); + } + + function parse_IndexKeySpec() + { + eventHandler.startNonterminal("IndexKeySpec", e0); + parse_IndexKeyExpr(); + if (l1 == 79) // 'as' + { + whitespace(); + parse_IndexKeyTypeDecl(); + } + lookahead1W(146); // S^WS | '(:' | ',' | ';' | 'collation' + if (l1 == 94) // 'collation' + { + whitespace(); + parse_IndexKeyCollation(); + } + eventHandler.endNonterminal("IndexKeySpec", e0); + } + + function parse_IndexKeyExpr() + { + eventHandler.startNonterminal("IndexKeyExpr", e0); + parse_PathExpr(); + eventHandler.endNonterminal("IndexKeyExpr", e0); + } + + function parse_IndexKeyTypeDecl() + { + eventHandler.startNonterminal("IndexKeyTypeDecl", e0); + shift(79); // 'as' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_AtomicType(); + lookahead1W(169); // S^WS | '(:' | '*' | '+' | ',' | ';' | '?' | 'collation' + if (l1 == 39 // '*' + || l1 == 40 // '+' + || l1 == 64) // '?' + { + whitespace(); + parse_OccurrenceIndicator(); + } + eventHandler.endNonterminal("IndexKeyTypeDecl", e0); + } + + function parse_AtomicType() + { + eventHandler.startNonterminal("AtomicType", e0); + parse_EQName(); + eventHandler.endNonterminal("AtomicType", e0); + } + + function parse_IndexKeyCollation() + { + eventHandler.startNonterminal("IndexKeyCollation", e0); + shift(94); // 'collation' + lookahead1W(15); // URILiteral | S^WS | '(:' + shift(7); // URILiteral + eventHandler.endNonterminal("IndexKeyCollation", e0); + } + + function parse_IndexDecl() + { + eventHandler.startNonterminal("IndexDecl", e0); + shift(155); // 'index' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_IndexName(); + lookahead1W(65); // S^WS | '(:' | 'on' + shift(197); // 'on' + lookahead1W(63); // S^WS | '(:' | 'nodes' + shift(192); // 'nodes' + lookahead1W(265); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + whitespace(); + parse_IndexDomainExpr(); + shift(87); // 'by' + lookahead1W(265); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + whitespace(); + parse_IndexKeySpec(); + for (;;) + { + lookahead1W(103); // S^WS | '(:' | ',' | ';' + if (l1 != 41) // ',' + { + break; + } + shift(41); // ',' + lookahead1W(265); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + whitespace(); + parse_IndexKeySpec(); + } + eventHandler.endNonterminal("IndexDecl", e0); + } + + function parse_ICDecl() + { + eventHandler.startNonterminal("ICDecl", e0); + shift(161); // 'integrity' + lookahead1W(40); // S^WS | '(:' | 'constraint' + shift(97); // 'constraint' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_EQName(); + lookahead1W(120); // S^WS | '(:' | 'foreign' | 'on' + switch (l1) + { + case 197: // 'on' + whitespace(); + parse_ICCollection(); + break; + default: + whitespace(); + parse_ICForeignKey(); + } + eventHandler.endNonterminal("ICDecl", e0); + } + + function parse_ICCollection() + { + eventHandler.startNonterminal("ICCollection", e0); + shift(197); // 'on' + lookahead1W(39); // S^WS | '(:' | 'collection' + shift(95); // 'collection' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_EQName(); + lookahead1W(140); // S^WS | '$' | '(:' | 'foreach' | 'node' + switch (l1) + { + case 31: // '$' + whitespace(); + parse_ICCollSequence(); + break; + case 191: // 'node' + whitespace(); + parse_ICCollSequenceUnique(); + break; + default: + whitespace(); + parse_ICCollNode(); + } + eventHandler.endNonterminal("ICCollection", e0); + } + + function parse_ICCollSequence() + { + eventHandler.startNonterminal("ICCollSequence", e0); + parse_VarRef(); + lookahead1W(37); // S^WS | '(:' | 'check' + shift(92); // 'check' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("ICCollSequence", e0); + } + + function parse_ICCollSequenceUnique() + { + eventHandler.startNonterminal("ICCollSequenceUnique", e0); + shift(191); // 'node' + lookahead1W(21); // S^WS | '$' | '(:' + whitespace(); + parse_VarRef(); + lookahead1W(37); // S^WS | '(:' | 'check' + shift(92); // 'check' + lookahead1W(80); // S^WS | '(:' | 'unique' + shift(255); // 'unique' + lookahead1W(57); // S^WS | '(:' | 'key' + shift(168); // 'key' + lookahead1W(265); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + whitespace(); + parse_PathExpr(); + eventHandler.endNonterminal("ICCollSequenceUnique", e0); + } + + function parse_ICCollNode() + { + eventHandler.startNonterminal("ICCollNode", e0); + shift(138); // 'foreach' + lookahead1W(62); // S^WS | '(:' | 'node' + shift(191); // 'node' + lookahead1W(21); // S^WS | '$' | '(:' + whitespace(); + parse_VarRef(); + lookahead1W(37); // S^WS | '(:' | 'check' + shift(92); // 'check' + lookahead1W(266); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + whitespace(); + parse_ExprSingle(); + eventHandler.endNonterminal("ICCollNode", e0); + } + + function parse_ICForeignKey() + { + eventHandler.startNonterminal("ICForeignKey", e0); + shift(139); // 'foreign' + lookahead1W(57); // S^WS | '(:' | 'key' + shift(168); // 'key' + lookahead1W(51); // S^WS | '(:' | 'from' + whitespace(); + parse_ICForeignKeySource(); + whitespace(); + parse_ICForeignKeyTarget(); + eventHandler.endNonterminal("ICForeignKey", e0); + } + + function parse_ICForeignKeySource() + { + eventHandler.startNonterminal("ICForeignKeySource", e0); + shift(140); // 'from' + lookahead1W(39); // S^WS | '(:' | 'collection' + whitespace(); + parse_ICForeignKeyValues(); + eventHandler.endNonterminal("ICForeignKeySource", e0); + } + + function parse_ICForeignKeyTarget() + { + eventHandler.startNonterminal("ICForeignKeyTarget", e0); + shift(248); // 'to' + lookahead1W(39); // S^WS | '(:' | 'collection' + whitespace(); + parse_ICForeignKeyValues(); + eventHandler.endNonterminal("ICForeignKeyTarget", e0); + } + + function parse_ICForeignKeyValues() + { + eventHandler.startNonterminal("ICForeignKeyValues", e0); + shift(95); // 'collection' + lookahead1W(254); // EQName^Token | S^WS | '(:' | 'after' | 'allowing' | 'ancestor' | + whitespace(); + parse_EQName(); + lookahead1W(62); // S^WS | '(:' | 'node' + shift(191); // 'node' + lookahead1W(21); // S^WS | '$' | '(:' + whitespace(); + parse_VarRef(); + lookahead1W(57); // S^WS | '(:' | 'key' + shift(168); // 'key' + lookahead1W(265); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + whitespace(); + parse_PathExpr(); + eventHandler.endNonterminal("ICForeignKeyValues", e0); + } + + function try_Comment() + { + shiftT(36); // '(:' + for (;;) + { + lookahead1(89); // CommentContents | '(:' | ':)' + if (l1 == 50) // ':)' + { + break; + } + switch (l1) + { + case 24: // CommentContents + shiftT(24); // CommentContents + break; + default: + try_Comment(); + } + } + shiftT(50); // ':)' + } + + function try_Whitespace() + { + switch (l1) + { + case 22: // S^WS + shiftT(22); // S^WS + break; + default: + try_Comment(); + } + } + + function parse_EQName() + { + eventHandler.startNonterminal("EQName", e0); + lookahead1(249); // EQName^Token | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | + switch (l1) + { + case 82: // 'attribute' + shift(82); // 'attribute' + break; + case 96: // 'comment' + shift(96); // 'comment' + break; + case 120: // 'document-node' + shift(120); // 'document-node' + break; + case 121: // 'element' + shift(121); // 'element' + break; + case 124: // 'empty-sequence' + shift(124); // 'empty-sequence' + break; + case 145: // 'function' + shift(145); // 'function' + break; + case 152: // 'if' + shift(152); // 'if' + break; + case 165: // 'item' + shift(165); // 'item' + break; + case 185: // 'namespace-node' + shift(185); // 'namespace-node' + break; + case 191: // 'node' + shift(191); // 'node' + break; + case 216: // 'processing-instruction' + shift(216); // 'processing-instruction' + break; + case 226: // 'schema-attribute' + shift(226); // 'schema-attribute' + break; + case 227: // 'schema-element' + shift(227); // 'schema-element' + break; + case 243: // 'switch' + shift(243); // 'switch' + break; + case 244: // 'text' + shift(244); // 'text' + break; + case 253: // 'typeswitch' + shift(253); // 'typeswitch' + break; + case 78: // 'array' + shift(78); // 'array' + break; + case 167: // 'json-item' + shift(167); // 'json-item' + break; + case 242: // 'structured-item' + shift(242); // 'structured-item' + break; + default: + parse_FunctionName(); + } + eventHandler.endNonterminal("EQName", e0); + } + + function try_EQName() + { + lookahead1(249); // EQName^Token | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | 'and' | + switch (l1) + { + case 82: // 'attribute' + shiftT(82); // 'attribute' + break; + case 96: // 'comment' + shiftT(96); // 'comment' + break; + case 120: // 'document-node' + shiftT(120); // 'document-node' + break; + case 121: // 'element' + shiftT(121); // 'element' + break; + case 124: // 'empty-sequence' + shiftT(124); // 'empty-sequence' + break; + case 145: // 'function' + shiftT(145); // 'function' + break; + case 152: // 'if' + shiftT(152); // 'if' + break; + case 165: // 'item' + shiftT(165); // 'item' + break; + case 185: // 'namespace-node' + shiftT(185); // 'namespace-node' + break; + case 191: // 'node' + shiftT(191); // 'node' + break; + case 216: // 'processing-instruction' + shiftT(216); // 'processing-instruction' + break; + case 226: // 'schema-attribute' + shiftT(226); // 'schema-attribute' + break; + case 227: // 'schema-element' + shiftT(227); // 'schema-element' + break; + case 243: // 'switch' + shiftT(243); // 'switch' + break; + case 244: // 'text' + shiftT(244); // 'text' + break; + case 253: // 'typeswitch' + shiftT(253); // 'typeswitch' + break; + case 78: // 'array' + shiftT(78); // 'array' + break; + case 167: // 'json-item' + shiftT(167); // 'json-item' + break; + case 242: // 'structured-item' + shiftT(242); // 'structured-item' + break; + default: + try_FunctionName(); + } + } + + function parse_FunctionName() + { + eventHandler.startNonterminal("FunctionName", e0); + switch (l1) + { + case 6: // EQName^Token + shift(6); // EQName^Token + break; + case 70: // 'after' + shift(70); // 'after' + break; + case 73: // 'ancestor' + shift(73); // 'ancestor' + break; + case 74: // 'ancestor-or-self' + shift(74); // 'ancestor-or-self' + break; + case 75: // 'and' + shift(75); // 'and' + break; + case 79: // 'as' + shift(79); // 'as' + break; + case 80: // 'ascending' + shift(80); // 'ascending' + break; + case 84: // 'before' + shift(84); // 'before' + break; + case 88: // 'case' + shift(88); // 'case' + break; + case 89: // 'cast' + shift(89); // 'cast' + break; + case 90: // 'castable' + shift(90); // 'castable' + break; + case 93: // 'child' + shift(93); // 'child' + break; + case 94: // 'collation' + shift(94); // 'collation' + break; + case 103: // 'copy' + shift(103); // 'copy' + break; + case 105: // 'count' + shift(105); // 'count' + break; + case 108: // 'declare' + shift(108); // 'declare' + break; + case 109: // 'default' + shift(109); // 'default' + break; + case 110: // 'delete' + shift(110); // 'delete' + break; + case 111: // 'descendant' + shift(111); // 'descendant' + break; + case 112: // 'descendant-or-self' + shift(112); // 'descendant-or-self' + break; + case 113: // 'descending' + shift(113); // 'descending' + break; + case 118: // 'div' + shift(118); // 'div' + break; + case 119: // 'document' + shift(119); // 'document' + break; + case 122: // 'else' + shift(122); // 'else' + break; + case 123: // 'empty' + shift(123); // 'empty' + break; + case 126: // 'end' + shift(126); // 'end' + break; + case 128: // 'eq' + shift(128); // 'eq' + break; + case 129: // 'every' + shift(129); // 'every' + break; + case 131: // 'except' + shift(131); // 'except' + break; + case 134: // 'first' + shift(134); // 'first' + break; + case 135: // 'following' + shift(135); // 'following' + break; + case 136: // 'following-sibling' + shift(136); // 'following-sibling' + break; + case 137: // 'for' + shift(137); // 'for' + break; + case 146: // 'ge' + shift(146); // 'ge' + break; + case 148: // 'group' + shift(148); // 'group' + break; + case 150: // 'gt' + shift(150); // 'gt' + break; + case 151: // 'idiv' + shift(151); // 'idiv' + break; + case 153: // 'import' + shift(153); // 'import' + break; + case 159: // 'insert' + shift(159); // 'insert' + break; + case 160: // 'instance' + shift(160); // 'instance' + break; + case 162: // 'intersect' + shift(162); // 'intersect' + break; + case 163: // 'into' + shift(163); // 'into' + break; + case 164: // 'is' + shift(164); // 'is' + break; + case 170: // 'last' + shift(170); // 'last' + break; + case 172: // 'le' + shift(172); // 'le' + break; + case 174: // 'let' + shift(174); // 'let' + break; + case 178: // 'lt' + shift(178); // 'lt' + break; + case 180: // 'mod' + shift(180); // 'mod' + break; + case 181: // 'modify' + shift(181); // 'modify' + break; + case 182: // 'module' + shift(182); // 'module' + break; + case 184: // 'namespace' + shift(184); // 'namespace' + break; + case 186: // 'ne' + shift(186); // 'ne' + break; + case 198: // 'only' + shift(198); // 'only' + break; + case 200: // 'or' + shift(200); // 'or' + break; + case 201: // 'order' + shift(201); // 'order' + break; + case 202: // 'ordered' + shift(202); // 'ordered' + break; + case 206: // 'parent' + shift(206); // 'parent' + break; + case 212: // 'preceding' + shift(212); // 'preceding' + break; + case 213: // 'preceding-sibling' + shift(213); // 'preceding-sibling' + break; + case 218: // 'rename' + shift(218); // 'rename' + break; + case 219: // 'replace' + shift(219); // 'replace' + break; + case 220: // 'return' + shift(220); // 'return' + break; + case 224: // 'satisfies' + shift(224); // 'satisfies' + break; + case 229: // 'self' + shift(229); // 'self' + break; + case 235: // 'some' + shift(235); // 'some' + break; + case 236: // 'stable' + shift(236); // 'stable' + break; + case 237: // 'start' + shift(237); // 'start' + break; + case 248: // 'to' + shift(248); // 'to' + break; + case 249: // 'treat' + shift(249); // 'treat' + break; + case 250: // 'try' + shift(250); // 'try' + break; + case 254: // 'union' + shift(254); // 'union' + break; + case 256: // 'unordered' + shift(256); // 'unordered' + break; + case 260: // 'validate' + shift(260); // 'validate' + break; + case 266: // 'where' + shift(266); // 'where' + break; + case 270: // 'with' + shift(270); // 'with' + break; + case 274: // 'xquery' + shift(274); // 'xquery' + break; + case 72: // 'allowing' + shift(72); // 'allowing' + break; + case 81: // 'at' + shift(81); // 'at' + break; + case 83: // 'base-uri' + shift(83); // 'base-uri' + break; + case 85: // 'boundary-space' + shift(85); // 'boundary-space' + break; + case 86: // 'break' + shift(86); // 'break' + break; + case 91: // 'catch' + shift(91); // 'catch' + break; + case 98: // 'construction' + shift(98); // 'construction' + break; + case 101: // 'context' + shift(101); // 'context' + break; + case 102: // 'continue' + shift(102); // 'continue' + break; + case 104: // 'copy-namespaces' + shift(104); // 'copy-namespaces' + break; + case 106: // 'decimal-format' + shift(106); // 'decimal-format' + break; + case 125: // 'encoding' + shift(125); // 'encoding' + break; + case 132: // 'exit' + shift(132); // 'exit' + break; + case 133: // 'external' + shift(133); // 'external' + break; + case 141: // 'ft-option' + shift(141); // 'ft-option' + break; + case 154: // 'in' + shift(154); // 'in' + break; + case 155: // 'index' + shift(155); // 'index' + break; + case 161: // 'integrity' + shift(161); // 'integrity' + break; + case 171: // 'lax' + shift(171); // 'lax' + break; + case 192: // 'nodes' + shift(192); // 'nodes' + break; + case 199: // 'option' + shift(199); // 'option' + break; + case 203: // 'ordering' + shift(203); // 'ordering' + break; + case 222: // 'revalidation' + shift(222); // 'revalidation' + break; + case 225: // 'schema' + shift(225); // 'schema' + break; + case 228: // 'score' + shift(228); // 'score' + break; + case 234: // 'sliding' + shift(234); // 'sliding' + break; + case 240: // 'strict' + shift(240); // 'strict' + break; + case 251: // 'tumbling' + shift(251); // 'tumbling' + break; + case 252: // 'type' + shift(252); // 'type' + break; + case 257: // 'updating' + shift(257); // 'updating' + break; + case 261: // 'value' + shift(261); // 'value' + break; + case 262: // 'variable' + shift(262); // 'variable' + break; + case 263: // 'version' + shift(263); // 'version' + break; + case 267: // 'while' + shift(267); // 'while' + break; + case 97: // 'constraint' + shift(97); // 'constraint' + break; + case 176: // 'loop' + shift(176); // 'loop' + break; + case 221: // 'returning' + shift(221); // 'returning' + break; + case 77: // 'append' + shift(77); // 'append' + break; + case 166: // 'json' + shift(166); // 'json' + break; + default: + shift(194); // 'object' + } + eventHandler.endNonterminal("FunctionName", e0); + } + + function try_FunctionName() + { + switch (l1) + { + case 6: // EQName^Token + shiftT(6); // EQName^Token + break; + case 70: // 'after' + shiftT(70); // 'after' + break; + case 73: // 'ancestor' + shiftT(73); // 'ancestor' + break; + case 74: // 'ancestor-or-self' + shiftT(74); // 'ancestor-or-self' + break; + case 75: // 'and' + shiftT(75); // 'and' + break; + case 79: // 'as' + shiftT(79); // 'as' + break; + case 80: // 'ascending' + shiftT(80); // 'ascending' + break; + case 84: // 'before' + shiftT(84); // 'before' + break; + case 88: // 'case' + shiftT(88); // 'case' + break; + case 89: // 'cast' + shiftT(89); // 'cast' + break; + case 90: // 'castable' + shiftT(90); // 'castable' + break; + case 93: // 'child' + shiftT(93); // 'child' + break; + case 94: // 'collation' + shiftT(94); // 'collation' + break; + case 103: // 'copy' + shiftT(103); // 'copy' + break; + case 105: // 'count' + shiftT(105); // 'count' + break; + case 108: // 'declare' + shiftT(108); // 'declare' + break; + case 109: // 'default' + shiftT(109); // 'default' + break; + case 110: // 'delete' + shiftT(110); // 'delete' + break; + case 111: // 'descendant' + shiftT(111); // 'descendant' + break; + case 112: // 'descendant-or-self' + shiftT(112); // 'descendant-or-self' + break; + case 113: // 'descending' + shiftT(113); // 'descending' + break; + case 118: // 'div' + shiftT(118); // 'div' + break; + case 119: // 'document' + shiftT(119); // 'document' + break; + case 122: // 'else' + shiftT(122); // 'else' + break; + case 123: // 'empty' + shiftT(123); // 'empty' + break; + case 126: // 'end' + shiftT(126); // 'end' + break; + case 128: // 'eq' + shiftT(128); // 'eq' + break; + case 129: // 'every' + shiftT(129); // 'every' + break; + case 131: // 'except' + shiftT(131); // 'except' + break; + case 134: // 'first' + shiftT(134); // 'first' + break; + case 135: // 'following' + shiftT(135); // 'following' + break; + case 136: // 'following-sibling' + shiftT(136); // 'following-sibling' + break; + case 137: // 'for' + shiftT(137); // 'for' + break; + case 146: // 'ge' + shiftT(146); // 'ge' + break; + case 148: // 'group' + shiftT(148); // 'group' + break; + case 150: // 'gt' + shiftT(150); // 'gt' + break; + case 151: // 'idiv' + shiftT(151); // 'idiv' + break; + case 153: // 'import' + shiftT(153); // 'import' + break; + case 159: // 'insert' + shiftT(159); // 'insert' + break; + case 160: // 'instance' + shiftT(160); // 'instance' + break; + case 162: // 'intersect' + shiftT(162); // 'intersect' + break; + case 163: // 'into' + shiftT(163); // 'into' + break; + case 164: // 'is' + shiftT(164); // 'is' + break; + case 170: // 'last' + shiftT(170); // 'last' + break; + case 172: // 'le' + shiftT(172); // 'le' + break; + case 174: // 'let' + shiftT(174); // 'let' + break; + case 178: // 'lt' + shiftT(178); // 'lt' + break; + case 180: // 'mod' + shiftT(180); // 'mod' + break; + case 181: // 'modify' + shiftT(181); // 'modify' + break; + case 182: // 'module' + shiftT(182); // 'module' + break; + case 184: // 'namespace' + shiftT(184); // 'namespace' + break; + case 186: // 'ne' + shiftT(186); // 'ne' + break; + case 198: // 'only' + shiftT(198); // 'only' + break; + case 200: // 'or' + shiftT(200); // 'or' + break; + case 201: // 'order' + shiftT(201); // 'order' + break; + case 202: // 'ordered' + shiftT(202); // 'ordered' + break; + case 206: // 'parent' + shiftT(206); // 'parent' + break; + case 212: // 'preceding' + shiftT(212); // 'preceding' + break; + case 213: // 'preceding-sibling' + shiftT(213); // 'preceding-sibling' + break; + case 218: // 'rename' + shiftT(218); // 'rename' + break; + case 219: // 'replace' + shiftT(219); // 'replace' + break; + case 220: // 'return' + shiftT(220); // 'return' + break; + case 224: // 'satisfies' + shiftT(224); // 'satisfies' + break; + case 229: // 'self' + shiftT(229); // 'self' + break; + case 235: // 'some' + shiftT(235); // 'some' + break; + case 236: // 'stable' + shiftT(236); // 'stable' + break; + case 237: // 'start' + shiftT(237); // 'start' + break; + case 248: // 'to' + shiftT(248); // 'to' + break; + case 249: // 'treat' + shiftT(249); // 'treat' + break; + case 250: // 'try' + shiftT(250); // 'try' + break; + case 254: // 'union' + shiftT(254); // 'union' + break; + case 256: // 'unordered' + shiftT(256); // 'unordered' + break; + case 260: // 'validate' + shiftT(260); // 'validate' + break; + case 266: // 'where' + shiftT(266); // 'where' + break; + case 270: // 'with' + shiftT(270); // 'with' + break; + case 274: // 'xquery' + shiftT(274); // 'xquery' + break; + case 72: // 'allowing' + shiftT(72); // 'allowing' + break; + case 81: // 'at' + shiftT(81); // 'at' + break; + case 83: // 'base-uri' + shiftT(83); // 'base-uri' + break; + case 85: // 'boundary-space' + shiftT(85); // 'boundary-space' + break; + case 86: // 'break' + shiftT(86); // 'break' + break; + case 91: // 'catch' + shiftT(91); // 'catch' + break; + case 98: // 'construction' + shiftT(98); // 'construction' + break; + case 101: // 'context' + shiftT(101); // 'context' + break; + case 102: // 'continue' + shiftT(102); // 'continue' + break; + case 104: // 'copy-namespaces' + shiftT(104); // 'copy-namespaces' + break; + case 106: // 'decimal-format' + shiftT(106); // 'decimal-format' + break; + case 125: // 'encoding' + shiftT(125); // 'encoding' + break; + case 132: // 'exit' + shiftT(132); // 'exit' + break; + case 133: // 'external' + shiftT(133); // 'external' + break; + case 141: // 'ft-option' + shiftT(141); // 'ft-option' + break; + case 154: // 'in' + shiftT(154); // 'in' + break; + case 155: // 'index' + shiftT(155); // 'index' + break; + case 161: // 'integrity' + shiftT(161); // 'integrity' + break; + case 171: // 'lax' + shiftT(171); // 'lax' + break; + case 192: // 'nodes' + shiftT(192); // 'nodes' + break; + case 199: // 'option' + shiftT(199); // 'option' + break; + case 203: // 'ordering' + shiftT(203); // 'ordering' + break; + case 222: // 'revalidation' + shiftT(222); // 'revalidation' + break; + case 225: // 'schema' + shiftT(225); // 'schema' + break; + case 228: // 'score' + shiftT(228); // 'score' + break; + case 234: // 'sliding' + shiftT(234); // 'sliding' + break; + case 240: // 'strict' + shiftT(240); // 'strict' + break; + case 251: // 'tumbling' + shiftT(251); // 'tumbling' + break; + case 252: // 'type' + shiftT(252); // 'type' + break; + case 257: // 'updating' + shiftT(257); // 'updating' + break; + case 261: // 'value' + shiftT(261); // 'value' + break; + case 262: // 'variable' + shiftT(262); // 'variable' + break; + case 263: // 'version' + shiftT(263); // 'version' + break; + case 267: // 'while' + shiftT(267); // 'while' + break; + case 97: // 'constraint' + shiftT(97); // 'constraint' + break; + case 176: // 'loop' + shiftT(176); // 'loop' + break; + case 221: // 'returning' + shiftT(221); // 'returning' + break; + case 77: // 'append' + shiftT(77); // 'append' + break; + case 166: // 'json' + shiftT(166); // 'json' + break; + default: + shiftT(194); // 'object' + } + } + + function parse_NCName() + { + eventHandler.startNonterminal("NCName", e0); + switch (l1) + { + case 19: // NCName^Token + shift(19); // NCName^Token + break; + case 70: // 'after' + shift(70); // 'after' + break; + case 75: // 'and' + shift(75); // 'and' + break; + case 79: // 'as' + shift(79); // 'as' + break; + case 80: // 'ascending' + shift(80); // 'ascending' + break; + case 84: // 'before' + shift(84); // 'before' + break; + case 88: // 'case' + shift(88); // 'case' + break; + case 89: // 'cast' + shift(89); // 'cast' + break; + case 90: // 'castable' + shift(90); // 'castable' + break; + case 94: // 'collation' + shift(94); // 'collation' + break; + case 105: // 'count' + shift(105); // 'count' + break; + case 109: // 'default' + shift(109); // 'default' + break; + case 113: // 'descending' + shift(113); // 'descending' + break; + case 118: // 'div' + shift(118); // 'div' + break; + case 122: // 'else' + shift(122); // 'else' + break; + case 123: // 'empty' + shift(123); // 'empty' + break; + case 126: // 'end' + shift(126); // 'end' + break; + case 128: // 'eq' + shift(128); // 'eq' + break; + case 131: // 'except' + shift(131); // 'except' + break; + case 137: // 'for' + shift(137); // 'for' + break; + case 146: // 'ge' + shift(146); // 'ge' + break; + case 148: // 'group' + shift(148); // 'group' + break; + case 150: // 'gt' + shift(150); // 'gt' + break; + case 151: // 'idiv' + shift(151); // 'idiv' + break; + case 160: // 'instance' + shift(160); // 'instance' + break; + case 162: // 'intersect' + shift(162); // 'intersect' + break; + case 163: // 'into' + shift(163); // 'into' + break; + case 164: // 'is' + shift(164); // 'is' + break; + case 172: // 'le' + shift(172); // 'le' + break; + case 174: // 'let' + shift(174); // 'let' + break; + case 178: // 'lt' + shift(178); // 'lt' + break; + case 180: // 'mod' + shift(180); // 'mod' + break; + case 181: // 'modify' + shift(181); // 'modify' + break; + case 186: // 'ne' + shift(186); // 'ne' + break; + case 198: // 'only' + shift(198); // 'only' + break; + case 200: // 'or' + shift(200); // 'or' + break; + case 201: // 'order' + shift(201); // 'order' + break; + case 220: // 'return' + shift(220); // 'return' + break; + case 224: // 'satisfies' + shift(224); // 'satisfies' + break; + case 236: // 'stable' + shift(236); // 'stable' + break; + case 237: // 'start' + shift(237); // 'start' + break; + case 248: // 'to' + shift(248); // 'to' + break; + case 249: // 'treat' + shift(249); // 'treat' + break; + case 254: // 'union' + shift(254); // 'union' + break; + case 266: // 'where' + shift(266); // 'where' + break; + case 270: // 'with' + shift(270); // 'with' + break; + case 73: // 'ancestor' + shift(73); // 'ancestor' + break; + case 74: // 'ancestor-or-self' + shift(74); // 'ancestor-or-self' + break; + case 82: // 'attribute' + shift(82); // 'attribute' + break; + case 93: // 'child' + shift(93); // 'child' + break; + case 96: // 'comment' + shift(96); // 'comment' + break; + case 103: // 'copy' + shift(103); // 'copy' + break; + case 108: // 'declare' + shift(108); // 'declare' + break; + case 110: // 'delete' + shift(110); // 'delete' + break; + case 111: // 'descendant' + shift(111); // 'descendant' + break; + case 112: // 'descendant-or-self' + shift(112); // 'descendant-or-self' + break; + case 119: // 'document' + shift(119); // 'document' + break; + case 120: // 'document-node' + shift(120); // 'document-node' + break; + case 121: // 'element' + shift(121); // 'element' + break; + case 124: // 'empty-sequence' + shift(124); // 'empty-sequence' + break; + case 129: // 'every' + shift(129); // 'every' + break; + case 134: // 'first' + shift(134); // 'first' + break; + case 135: // 'following' + shift(135); // 'following' + break; + case 136: // 'following-sibling' + shift(136); // 'following-sibling' + break; + case 145: // 'function' + shift(145); // 'function' + break; + case 152: // 'if' + shift(152); // 'if' + break; + case 153: // 'import' + shift(153); // 'import' + break; + case 159: // 'insert' + shift(159); // 'insert' + break; + case 165: // 'item' + shift(165); // 'item' + break; + case 170: // 'last' + shift(170); // 'last' + break; + case 182: // 'module' + shift(182); // 'module' + break; + case 184: // 'namespace' + shift(184); // 'namespace' + break; + case 185: // 'namespace-node' + shift(185); // 'namespace-node' + break; + case 191: // 'node' + shift(191); // 'node' + break; + case 202: // 'ordered' + shift(202); // 'ordered' + break; + case 206: // 'parent' + shift(206); // 'parent' + break; + case 212: // 'preceding' + shift(212); // 'preceding' + break; + case 213: // 'preceding-sibling' + shift(213); // 'preceding-sibling' + break; + case 216: // 'processing-instruction' + shift(216); // 'processing-instruction' + break; + case 218: // 'rename' + shift(218); // 'rename' + break; + case 219: // 'replace' + shift(219); // 'replace' + break; + case 226: // 'schema-attribute' + shift(226); // 'schema-attribute' + break; + case 227: // 'schema-element' + shift(227); // 'schema-element' + break; + case 229: // 'self' + shift(229); // 'self' + break; + case 235: // 'some' + shift(235); // 'some' + break; + case 243: // 'switch' + shift(243); // 'switch' + break; + case 244: // 'text' + shift(244); // 'text' + break; + case 250: // 'try' + shift(250); // 'try' + break; + case 253: // 'typeswitch' + shift(253); // 'typeswitch' + break; + case 256: // 'unordered' + shift(256); // 'unordered' + break; + case 260: // 'validate' + shift(260); // 'validate' + break; + case 262: // 'variable' + shift(262); // 'variable' + break; + case 274: // 'xquery' + shift(274); // 'xquery' + break; + case 72: // 'allowing' + shift(72); // 'allowing' + break; + case 81: // 'at' + shift(81); // 'at' + break; + case 83: // 'base-uri' + shift(83); // 'base-uri' + break; + case 85: // 'boundary-space' + shift(85); // 'boundary-space' + break; + case 86: // 'break' + shift(86); // 'break' + break; + case 91: // 'catch' + shift(91); // 'catch' + break; + case 98: // 'construction' + shift(98); // 'construction' + break; + case 101: // 'context' + shift(101); // 'context' + break; + case 102: // 'continue' + shift(102); // 'continue' + break; + case 104: // 'copy-namespaces' + shift(104); // 'copy-namespaces' + break; + case 106: // 'decimal-format' + shift(106); // 'decimal-format' + break; + case 125: // 'encoding' + shift(125); // 'encoding' + break; + case 132: // 'exit' + shift(132); // 'exit' + break; + case 133: // 'external' + shift(133); // 'external' + break; + case 141: // 'ft-option' + shift(141); // 'ft-option' + break; + case 154: // 'in' + shift(154); // 'in' + break; + case 155: // 'index' + shift(155); // 'index' + break; + case 161: // 'integrity' + shift(161); // 'integrity' + break; + case 171: // 'lax' + shift(171); // 'lax' + break; + case 192: // 'nodes' + shift(192); // 'nodes' + break; + case 199: // 'option' + shift(199); // 'option' + break; + case 203: // 'ordering' + shift(203); // 'ordering' + break; + case 222: // 'revalidation' + shift(222); // 'revalidation' + break; + case 225: // 'schema' + shift(225); // 'schema' + break; + case 228: // 'score' + shift(228); // 'score' + break; + case 234: // 'sliding' + shift(234); // 'sliding' + break; + case 240: // 'strict' + shift(240); // 'strict' + break; + case 251: // 'tumbling' + shift(251); // 'tumbling' + break; + case 252: // 'type' + shift(252); // 'type' + break; + case 257: // 'updating' + shift(257); // 'updating' + break; + case 261: // 'value' + shift(261); // 'value' + break; + case 263: // 'version' + shift(263); // 'version' + break; + case 267: // 'while' + shift(267); // 'while' + break; + case 97: // 'constraint' + shift(97); // 'constraint' + break; + case 176: // 'loop' + shift(176); // 'loop' + break; + case 221: // 'returning' + shift(221); // 'returning' + break; + case 77: // 'append' + shift(77); // 'append' + break; + case 166: // 'json' + shift(166); // 'json' + break; + default: + shift(194); // 'object' + } + eventHandler.endNonterminal("NCName", e0); + } + + function try_NCName() + { + switch (l1) + { + case 19: // NCName^Token + shiftT(19); // NCName^Token + break; + case 70: // 'after' + shiftT(70); // 'after' + break; + case 75: // 'and' + shiftT(75); // 'and' + break; + case 79: // 'as' + shiftT(79); // 'as' + break; + case 80: // 'ascending' + shiftT(80); // 'ascending' + break; + case 84: // 'before' + shiftT(84); // 'before' + break; + case 88: // 'case' + shiftT(88); // 'case' + break; + case 89: // 'cast' + shiftT(89); // 'cast' + break; + case 90: // 'castable' + shiftT(90); // 'castable' + break; + case 94: // 'collation' + shiftT(94); // 'collation' + break; + case 105: // 'count' + shiftT(105); // 'count' + break; + case 109: // 'default' + shiftT(109); // 'default' + break; + case 113: // 'descending' + shiftT(113); // 'descending' + break; + case 118: // 'div' + shiftT(118); // 'div' + break; + case 122: // 'else' + shiftT(122); // 'else' + break; + case 123: // 'empty' + shiftT(123); // 'empty' + break; + case 126: // 'end' + shiftT(126); // 'end' + break; + case 128: // 'eq' + shiftT(128); // 'eq' + break; + case 131: // 'except' + shiftT(131); // 'except' + break; + case 137: // 'for' + shiftT(137); // 'for' + break; + case 146: // 'ge' + shiftT(146); // 'ge' + break; + case 148: // 'group' + shiftT(148); // 'group' + break; + case 150: // 'gt' + shiftT(150); // 'gt' + break; + case 151: // 'idiv' + shiftT(151); // 'idiv' + break; + case 160: // 'instance' + shiftT(160); // 'instance' + break; + case 162: // 'intersect' + shiftT(162); // 'intersect' + break; + case 163: // 'into' + shiftT(163); // 'into' + break; + case 164: // 'is' + shiftT(164); // 'is' + break; + case 172: // 'le' + shiftT(172); // 'le' + break; + case 174: // 'let' + shiftT(174); // 'let' + break; + case 178: // 'lt' + shiftT(178); // 'lt' + break; + case 180: // 'mod' + shiftT(180); // 'mod' + break; + case 181: // 'modify' + shiftT(181); // 'modify' + break; + case 186: // 'ne' + shiftT(186); // 'ne' + break; + case 198: // 'only' + shiftT(198); // 'only' + break; + case 200: // 'or' + shiftT(200); // 'or' + break; + case 201: // 'order' + shiftT(201); // 'order' + break; + case 220: // 'return' + shiftT(220); // 'return' + break; + case 224: // 'satisfies' + shiftT(224); // 'satisfies' + break; + case 236: // 'stable' + shiftT(236); // 'stable' + break; + case 237: // 'start' + shiftT(237); // 'start' + break; + case 248: // 'to' + shiftT(248); // 'to' + break; + case 249: // 'treat' + shiftT(249); // 'treat' + break; + case 254: // 'union' + shiftT(254); // 'union' + break; + case 266: // 'where' + shiftT(266); // 'where' + break; + case 270: // 'with' + shiftT(270); // 'with' + break; + case 73: // 'ancestor' + shiftT(73); // 'ancestor' + break; + case 74: // 'ancestor-or-self' + shiftT(74); // 'ancestor-or-self' + break; + case 82: // 'attribute' + shiftT(82); // 'attribute' + break; + case 93: // 'child' + shiftT(93); // 'child' + break; + case 96: // 'comment' + shiftT(96); // 'comment' + break; + case 103: // 'copy' + shiftT(103); // 'copy' + break; + case 108: // 'declare' + shiftT(108); // 'declare' + break; + case 110: // 'delete' + shiftT(110); // 'delete' + break; + case 111: // 'descendant' + shiftT(111); // 'descendant' + break; + case 112: // 'descendant-or-self' + shiftT(112); // 'descendant-or-self' + break; + case 119: // 'document' + shiftT(119); // 'document' + break; + case 120: // 'document-node' + shiftT(120); // 'document-node' + break; + case 121: // 'element' + shiftT(121); // 'element' + break; + case 124: // 'empty-sequence' + shiftT(124); // 'empty-sequence' + break; + case 129: // 'every' + shiftT(129); // 'every' + break; + case 134: // 'first' + shiftT(134); // 'first' + break; + case 135: // 'following' + shiftT(135); // 'following' + break; + case 136: // 'following-sibling' + shiftT(136); // 'following-sibling' + break; + case 145: // 'function' + shiftT(145); // 'function' + break; + case 152: // 'if' + shiftT(152); // 'if' + break; + case 153: // 'import' + shiftT(153); // 'import' + break; + case 159: // 'insert' + shiftT(159); // 'insert' + break; + case 165: // 'item' + shiftT(165); // 'item' + break; + case 170: // 'last' + shiftT(170); // 'last' + break; + case 182: // 'module' + shiftT(182); // 'module' + break; + case 184: // 'namespace' + shiftT(184); // 'namespace' + break; + case 185: // 'namespace-node' + shiftT(185); // 'namespace-node' + break; + case 191: // 'node' + shiftT(191); // 'node' + break; + case 202: // 'ordered' + shiftT(202); // 'ordered' + break; + case 206: // 'parent' + shiftT(206); // 'parent' + break; + case 212: // 'preceding' + shiftT(212); // 'preceding' + break; + case 213: // 'preceding-sibling' + shiftT(213); // 'preceding-sibling' + break; + case 216: // 'processing-instruction' + shiftT(216); // 'processing-instruction' + break; + case 218: // 'rename' + shiftT(218); // 'rename' + break; + case 219: // 'replace' + shiftT(219); // 'replace' + break; + case 226: // 'schema-attribute' + shiftT(226); // 'schema-attribute' + break; + case 227: // 'schema-element' + shiftT(227); // 'schema-element' + break; + case 229: // 'self' + shiftT(229); // 'self' + break; + case 235: // 'some' + shiftT(235); // 'some' + break; + case 243: // 'switch' + shiftT(243); // 'switch' + break; + case 244: // 'text' + shiftT(244); // 'text' + break; + case 250: // 'try' + shiftT(250); // 'try' + break; + case 253: // 'typeswitch' + shiftT(253); // 'typeswitch' + break; + case 256: // 'unordered' + shiftT(256); // 'unordered' + break; + case 260: // 'validate' + shiftT(260); // 'validate' + break; + case 262: // 'variable' + shiftT(262); // 'variable' + break; + case 274: // 'xquery' + shiftT(274); // 'xquery' + break; + case 72: // 'allowing' + shiftT(72); // 'allowing' + break; + case 81: // 'at' + shiftT(81); // 'at' + break; + case 83: // 'base-uri' + shiftT(83); // 'base-uri' + break; + case 85: // 'boundary-space' + shiftT(85); // 'boundary-space' + break; + case 86: // 'break' + shiftT(86); // 'break' + break; + case 91: // 'catch' + shiftT(91); // 'catch' + break; + case 98: // 'construction' + shiftT(98); // 'construction' + break; + case 101: // 'context' + shiftT(101); // 'context' + break; + case 102: // 'continue' + shiftT(102); // 'continue' + break; + case 104: // 'copy-namespaces' + shiftT(104); // 'copy-namespaces' + break; + case 106: // 'decimal-format' + shiftT(106); // 'decimal-format' + break; + case 125: // 'encoding' + shiftT(125); // 'encoding' + break; + case 132: // 'exit' + shiftT(132); // 'exit' + break; + case 133: // 'external' + shiftT(133); // 'external' + break; + case 141: // 'ft-option' + shiftT(141); // 'ft-option' + break; + case 154: // 'in' + shiftT(154); // 'in' + break; + case 155: // 'index' + shiftT(155); // 'index' + break; + case 161: // 'integrity' + shiftT(161); // 'integrity' + break; + case 171: // 'lax' + shiftT(171); // 'lax' + break; + case 192: // 'nodes' + shiftT(192); // 'nodes' + break; + case 199: // 'option' + shiftT(199); // 'option' + break; + case 203: // 'ordering' + shiftT(203); // 'ordering' + break; + case 222: // 'revalidation' + shiftT(222); // 'revalidation' + break; + case 225: // 'schema' + shiftT(225); // 'schema' + break; + case 228: // 'score' + shiftT(228); // 'score' + break; + case 234: // 'sliding' + shiftT(234); // 'sliding' + break; + case 240: // 'strict' + shiftT(240); // 'strict' + break; + case 251: // 'tumbling' + shiftT(251); // 'tumbling' + break; + case 252: // 'type' + shiftT(252); // 'type' + break; + case 257: // 'updating' + shiftT(257); // 'updating' + break; + case 261: // 'value' + shiftT(261); // 'value' + break; + case 263: // 'version' + shiftT(263); // 'version' + break; + case 267: // 'while' + shiftT(267); // 'while' + break; + case 97: // 'constraint' + shiftT(97); // 'constraint' + break; + case 176: // 'loop' + shiftT(176); // 'loop' + break; + case 221: // 'returning' + shiftT(221); // 'returning' + break; + case 77: // 'append' + shiftT(77); // 'append' + break; + case 166: // 'json' + shiftT(166); // 'json' + break; + default: + shiftT(194); // 'object' + } + } + + function parse_MainModule() + { + eventHandler.startNonterminal("MainModule", e0); + parse_Prolog(); + whitespace(); + parse_Program(); + eventHandler.endNonterminal("MainModule", e0); + } + + function parse_Program() + { + eventHandler.startNonterminal("Program", e0); + parse_StatementsAndOptionalExpr(); + eventHandler.endNonterminal("Program", e0); + } + + function parse_Statements() + { + eventHandler.startNonterminal("Statements", e0); + for (;;) + { + lookahead1W(277); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + switch (l1) + { + case 34: // '(' + lookahead2W(268); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + break; + case 35: // '(#' + lookahead2(251); // EQName^Token | S | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + break; + case 46: // '/' + lookahead2W(283); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + break; + case 47: // '//' + lookahead2W(264); // Wildcard | EQName^Token | IntegerLiteral | DecimalLiteral | DoubleLiteral | + break; + case 54: // '<' + lookahead2(4); // QName + break; + case 55: // ''", + "'.'", + "'..'", + "'/'", + "'//'", + "'/>'", + "':'", + "':)'", + "'::'", + "':='", + "';'", + "'<'", + "'}\n\t\nsnippet ifeil\n\t\n\t\t${2:}\n\t\n\t\t${3:}\n\t\n\t${4}\nsnippet foreachil\n\t\n\t\t${3:}\n\t\nsnippet foreachkil\n\t $${3:value}): ?>\n\t\t${4:}\n\t\nscope html-tag\nsnippet ifil\\n\\\n\t${2:code}\nsnippet ifeil\\n\\\n\t${2:code}${3:code}${4}\n"; + +}); + +ace.define("ace/snippets/php",["require","exports","module","ace/snippets/php.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./php.snippets"); +exports.scope = "php"; + +}); (function() { + ace.require(["ace/snippets/php"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/a12b600f57e52c9d0cac24bbb2e7c07a.js b/web/dist/a12b600f57e52c9d0cac24bbb2e7c07a.js new file mode 100644 index 00000000..9823ffae --- /dev/null +++ b/web/dist/a12b600f57e52c9d0cac24bbb2e7c07a.js @@ -0,0 +1,18 @@ +ace.define("ace/theme/clouds_midnight.css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-clouds-midnight .ace_gutter {\n background: #232323;\n color: #929292\n}\n\n.ace-clouds-midnight .ace_print-margin {\n width: 1px;\n background: #232323\n}\n\n.ace-clouds-midnight {\n background-color: #191919;\n color: #929292\n}\n\n.ace-clouds-midnight .ace_cursor {\n color: #7DA5DC\n}\n\n.ace-clouds-midnight .ace_marker-layer .ace_selection {\n background: #000000\n}\n\n.ace-clouds-midnight.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #191919;\n}\n\n.ace-clouds-midnight .ace_marker-layer .ace_step {\n background: rgb(102, 82, 0)\n}\n\n.ace-clouds-midnight .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid #BFBFBF\n}\n\n.ace-clouds-midnight .ace_marker-layer .ace_active-line {\n background: rgba(215, 215, 215, 0.031)\n}\n\n.ace-clouds-midnight .ace_gutter-active-line {\n background-color: rgba(215, 215, 215, 0.031)\n}\n\n.ace-clouds-midnight .ace_marker-layer .ace_selected-word {\n border: 1px solid #000000\n}\n\n.ace-clouds-midnight .ace_invisible {\n color: #666\n}\n\n.ace-clouds-midnight .ace_keyword,\n.ace-clouds-midnight .ace_meta,\n.ace-clouds-midnight .ace_support.ace_constant.ace_property-value {\n color: #927C5D\n}\n\n.ace-clouds-midnight .ace_keyword.ace_operator {\n color: #4B4B4B\n}\n\n.ace-clouds-midnight .ace_keyword.ace_other.ace_unit {\n color: #366F1A\n}\n\n.ace-clouds-midnight .ace_constant.ace_language {\n color: #39946A\n}\n\n.ace-clouds-midnight .ace_constant.ace_numeric {\n color: #46A609\n}\n\n.ace-clouds-midnight .ace_constant.ace_character.ace_entity {\n color: #A165AC\n}\n\n.ace-clouds-midnight .ace_invalid {\n color: #FFFFFF;\n background-color: #E92E2E\n}\n\n.ace-clouds-midnight .ace_fold {\n background-color: #927C5D;\n border-color: #929292\n}\n\n.ace-clouds-midnight .ace_storage,\n.ace-clouds-midnight .ace_support.ace_class,\n.ace-clouds-midnight .ace_support.ace_function,\n.ace-clouds-midnight .ace_support.ace_other,\n.ace-clouds-midnight .ace_support.ace_type {\n color: #E92E2E\n}\n\n.ace-clouds-midnight .ace_string {\n color: #5D90CD\n}\n\n.ace-clouds-midnight .ace_comment {\n color: #3C403B\n}\n\n.ace-clouds-midnight .ace_entity.ace_name.ace_tag,\n.ace-clouds-midnight .ace_entity.ace_other.ace_attribute-name {\n color: #606060\n}\n\n.ace-clouds-midnight .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYHB3d/8PAAOIAdULw8qMAAAAAElFTkSuQmCC) right repeat-y\n}\n\n.ace-clouds-midnight .ace_indent-guide-active {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y;\n}\n"; + +}); + +ace.define("ace/theme/clouds_midnight",["require","exports","module","ace/theme/clouds_midnight.css","ace/lib/dom"], function(require, exports, module){exports.isDark = true; +exports.cssClass = "ace-clouds-midnight"; +exports.cssText = require("./clouds_midnight.css"); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass, false); + +}); (function() { + ace.require(["ace/theme/clouds_midnight"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/a17e59619a3d17661de6cad7d6808a1f.js b/web/dist/a17e59619a3d17661de6cad7d6808a1f.js new file mode 100644 index 00000000..3485bc8d --- /dev/null +++ b/web/dist/a17e59619a3d17661de6cad7d6808a1f.js @@ -0,0 +1,358 @@ +ace.define("ace/mode/powershell_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var PowershellHighlightRules = function () { + var keywords = ("begin|break|catch|continue|data|do|dynamicparam|else|elseif|end|exit|filter|" + + "finally|for|foreach|from|function|if|in|inlinescript|hidden|parallel|param|" + + "process|return|sequence|switch|throw|trap|try|until|while|workflow"); + var builtinFunctions = ( + "Get-AppBackgroundTask|Start-AppBackgroundTask|Unregister-AppBackgroundTask|Disable-AppBackgroundTaskDiagnosticLog|Enable-AppBackgroundTaskDiagnosticLog|Set-AppBackgroundTaskResourcePolicy|" + + "Get-AppLockerFileInformation|Get-AppLockerPolicy|New-AppLockerPolicy|Set-AppLockerPolicy|Test-AppLockerPolicy|" + + "Get-AppxLastError|Get-AppxLog|Add-AppxPackage|Add-AppxVolume|Dismount-AppxVolume|Get-AppxDefaultVolume|Get-AppxPackage|Get-AppxPackageManifest|Get-AppxVolume|Mount-AppxVolume|Move-AppxPackage|Remove-AppxPackage|Remove-AppxVolume|Set-AppxDefaultVolume|" + + "Clear-AssignedAccess|Get-AssignedAccess|Set-AssignedAccess|" + + "Add-BitLockerKeyProtector|Backup-BitLockerKeyProtector|Clear-BitLockerAutoUnlock|Disable-BitLocker|Disable-BitLockerAutoUnlock|Enable-BitLocker|Enable-BitLockerAutoUnlock|Get-BitLockerVolume|Lock-BitLocker|Remove-BitLockerKeyProtector|Resume-BitLocker|Suspend-BitLocker|Unlock-BitLocker|" + + "Add-BitsFile|Complete-BitsTransfer|Get-BitsTransfer|Remove-BitsTransfer|Resume-BitsTransfer|Set-BitsTransfer|Start-BitsTransfer|Suspend-BitsTransfer|" + + "Add-BCDataCacheExtension|Clear-BCCache|Disable-BC|Disable-BCDowngrading|Disable-BCServeOnBattery|Enable-BCDistributed|Enable-BCDowngrading|Enable-BCHostedClient|Enable-BCHostedServer|Enable-BCLocal|Enable-BCServeOnBattery|Export-BCCachePackage|Export-BCSecretKey|Get-BCClientConfiguration|Get-BCContentServerConfiguration|Get-BCDataCache|Get-BCDataCacheExtension|Get-BCHashCache|Get-BCHostedCacheServerConfiguration|Get-BCNetworkConfiguration|Get-BCStatus|Import-BCCachePackage|Import-BCSecretKey|Publish-BCFileContent|Publish-BCWebContent|Remove-BCDataCacheExtension|Reset-BC|Set-BCAuthentication|Set-BCCache|Set-BCDataCacheEntryMaxAge|Set-BCMinSMBLatency|Set-BCSecretKey|" + + "Export-BinaryMiLog|Get-CimAssociatedInstance|Get-CimClass|Get-CimInstance|Get-CimSession|Import-BinaryMiLog|Invoke-CimMethod|New-CimInstance|New-CimSession|New-CimSessionOption|Register-CimIndicationEvent|Remove-CimInstance|Remove-CimSession|Set-CimInstance|" + + "ConvertFrom-CIPolicy|" + + "Add-SignerRule|Edit-CIPolicyRule|Get-CIPolicy|Get-CIPolicyInfo|Get-SystemDriver|Merge-CIPolicy|New-CIPolicy|New-CIPolicyRule|Remove-CIPolicyRule|Set-CIPolicyVersion|Set-HVCIOptions|Set-RuleOption|" + + "Add-MpPreference|Get-MpComputerStatus|Get-MpPreference|Get-MpThreat|Get-MpThreatCatalog|Get-MpThreatDetection|Remove-MpPreference|Remove-MpThreat|Set-MpPreference|Start-MpScan|Start-MpWDOScan|Update-MpSignature|" + + "Disable-DAManualEntryPointSelection|Enable-DAManualEntryPointSelection|Get-DAClientExperienceConfiguration|Get-DAEntryPointTableItem|New-DAEntryPointTableItem|Remove-DAEntryPointTableItem|Rename-DAEntryPointTableItem|Reset-DAClientExperienceConfiguration|Reset-DAEntryPointTableItem|Set-DAClientExperienceConfiguration|Set-DAEntryPointTableItem|" + + "Add-ProvisionedAppxPackage|Apply-WindowsUnattend|Get-ProvisionedAppxPackage|Remove-ProvisionedAppxPackage|Add-AppxProvisionedPackage|Add-WindowsCapability|Add-WindowsDriver|Add-WindowsImage|Add-WindowsPackage|Clear-WindowsCorruptMountPoint|Disable-WindowsOptionalFeature|Dismount-WindowsImage|Enable-WindowsOptionalFeature|Expand-WindowsCustomDataImage|Expand-WindowsImage|Export-WindowsDriver|Export-WindowsImage|Get-AppxProvisionedPackage|Get-WIMBootEntry|Get-WindowsCapability|Get-WindowsDriver|Get-WindowsEdition|Get-WindowsImage|Get-WindowsImageContent|Get-WindowsOptionalFeature|Get-WindowsPackage|Mount-WindowsImage|New-WindowsCustomImage|New-WindowsImage|Optimize-WindowsImage|Remove-AppxProvisionedPackage|Remove-WindowsCapability|Remove-WindowsDriver|Remove-WindowsImage|Remove-WindowsPackage|Repair-WindowsImage|Save-WindowsImage|Set-AppXProvisionedDataFile|Set-WindowsEdition|Set-WindowsProductKey|Split-WindowsImage|Update-WIMBootEntry|Use-WindowsUnattend|" + + "Add-DnsClientNrptRule|Clear-DnsClientCache|Get-DnsClient|Get-DnsClientCache|Get-DnsClientGlobalSetting|Get-DnsClientNrptGlobal|Get-DnsClientNrptPolicy|Get-DnsClientNrptRule|Get-DnsClientServerAddress|Register-DnsClient|Remove-DnsClientNrptRule|Set-DnsClient|Set-DnsClientGlobalSetting|Set-DnsClientNrptGlobal|Set-DnsClientNrptRule|Set-DnsClientServerAddress|Resolve-DnsName|" + + "Add-EtwTraceProvider|Get-AutologgerConfig|Get-EtwTraceProvider|Get-EtwTraceSession|New-AutologgerConfig|New-EtwTraceSession|Remove-AutologgerConfig|Remove-EtwTraceProvider|Remove-EtwTraceSession|Send-EtwTraceSession|Set-AutologgerConfig|Set-EtwTraceProvider|Set-EtwTraceSession|" + + "Get-WinAcceptLanguageFromLanguageListOptOut|Get-WinCultureFromLanguageListOptOut|Get-WinDefaultInputMethodOverride|Get-WinHomeLocation|Get-WinLanguageBarOption|Get-WinSystemLocale|Get-WinUILanguageOverride|Get-WinUserLanguageList|New-WinUserLanguageList|Set-Culture|Set-WinAcceptLanguageFromLanguageListOptOut|Set-WinCultureFromLanguageListOptOut|Set-WinDefaultInputMethodOverride|Set-WinHomeLocation|Set-WinLanguageBarOption|Set-WinSystemLocale|Set-WinUILanguageOverride|Set-WinUserLanguageList|" + + "Connect-IscsiTarget|Disconnect-IscsiTarget|Get-IscsiConnection|Get-IscsiSession|Get-IscsiTarget|Get-IscsiTargetPortal|New-IscsiTargetPortal|Register-IscsiSession|Remove-IscsiTargetPortal|Set-IscsiChapSecret|Unregister-IscsiSession|Update-IscsiTarget|Update-IscsiTargetPortal|" + + "Get-IseSnippet|Import-IseSnippet|New-IseSnippet|" + + "Add-KdsRootKey|Clear-KdsCache|Get-KdsConfiguration|Get-KdsRootKey|Set-KdsConfiguration|Test-KdsRootKey|" + + "Compress-Archive|Expand-Archive|" + + "Export-Counter|Get-Counter|Get-WinEvent|Import-Counter|New-WinEvent|" + + "Start-Transcript|Stop-Transcript|" + + "Add-Computer|Add-Content|Checkpoint-Computer|Clear-Content|Clear-EventLog|Clear-Item|Clear-ItemProperty|Clear-RecycleBin|Complete-Transaction|Convert-Path|Copy-Item|Copy-ItemProperty|Debug-Process|Disable-ComputerRestore|Enable-ComputerRestore|Get-ChildItem|Get-Clipboard|Get-ComputerRestorePoint|Get-Content|Get-ControlPanelItem|Get-EventLog|Get-HotFix|Get-Item|Get-ItemProperty|Get-ItemPropertyValue|Get-Location|Get-Process|Get-PSDrive|Get-PSProvider|Get-Service|Get-Transaction|Get-WmiObject|Invoke-Item|Invoke-WmiMethod|Join-Path|Limit-EventLog|Move-Item|Move-ItemProperty|New-EventLog|New-Item|New-ItemProperty|New-PSDrive|New-Service|New-WebServiceProxy|Pop-Location|Push-Location|Register-WmiEvent|Remove-Computer|Remove-EventLog|Remove-Item|Remove-ItemProperty|Remove-PSDrive|Remove-WmiObject|Rename-Computer|Rename-Item|Rename-ItemProperty|Reset-ComputerMachinePassword|Resolve-Path|Restart-Computer|Restart-Service|Restore-Computer|Resume-Service|Set-Clipboard|Set-Content|Set-Item|Set-ItemProperty|Set-Location|Set-Service|Set-WmiInstance|Show-ControlPanelItem|Show-EventLog|Split-Path|Start-Process|Start-Service|Start-Transaction|Stop-Computer|Stop-Process|Stop-Service|Suspend-Service|Test-ComputerSecureChannel|Test-Connection|Test-Path|Undo-Transaction|Use-Transaction|Wait-Process|Write-EventLog|" + + "Export-ODataEndpointProxy|" + + "ConvertFrom-SecureString|ConvertTo-SecureString|Get-Acl|Get-AuthenticodeSignature|Get-CmsMessage|Get-Credential|Get-ExecutionPolicy|Get-PfxCertificate|Protect-CmsMessage|Set-Acl|Set-AuthenticodeSignature|Set-ExecutionPolicy|Unprotect-CmsMessage|" + + "ConvertFrom-SddlString|Format-Hex|Get-FileHash|Import-PowerShellDataFile|New-Guid|New-TemporaryFile|Add-Member|Add-Type|Clear-Variable|Compare-Object|ConvertFrom-Csv|ConvertFrom-Json|ConvertFrom-String|ConvertFrom-StringData|Convert-String|ConvertTo-Csv|ConvertTo-Html|ConvertTo-Json|ConvertTo-Xml|Debug-Runspace|Disable-PSBreakpoint|Disable-RunspaceDebug|Enable-PSBreakpoint|Enable-RunspaceDebug|Export-Alias|Export-Clixml|Export-Csv|Export-FormatData|Export-PSSession|Format-Custom|Format-List|Format-Table|Format-Wide|Get-Alias|Get-Culture|Get-Date|Get-Event|Get-EventSubscriber|Get-FormatData|Get-Host|Get-Member|Get-PSBreakpoint|Get-PSCallStack|Get-Random|Get-Runspace|Get-RunspaceDebug|Get-TraceSource|Get-TypeData|Get-UICulture|Get-Unique|Get-Variable|Group-Object|Import-Alias|Import-Clixml|Import-Csv|Import-LocalizedData|Import-PSSession|Invoke-Expression|Invoke-RestMethod|Invoke-WebRequest|Measure-Command|Measure-Object|New-Alias|New-Event|New-Object|New-TimeSpan|New-Variable|Out-File|Out-GridView|Out-Printer|Out-String|Read-Host|Register-EngineEvent|Register-ObjectEvent|Remove-Event|Remove-PSBreakpoint|Remove-TypeData|Remove-Variable|Select-Object|Select-String|Select-Xml|Send-MailMessage|Set-Alias|Set-Date|Set-PSBreakpoint|Set-TraceSource|Set-Variable|Show-Command|Sort-Object|Start-Sleep|Tee-Object|Trace-Command|Unblock-File|Unregister-Event|Update-FormatData|Update-List|Update-TypeData|Wait-Debugger|Wait-Event|Write-Debug|Write-Error|Write-Host|Write-Information|Write-Output|Write-Progress|Write-Verbose|Write-Warning|" + + "Connect-WSMan|Disable-WSManCredSSP|Disconnect-WSMan|Enable-WSManCredSSP|Get-WSManCredSSP|Get-WSManInstance|Invoke-WSManAction|New-WSManInstance|New-WSManSessionOption|Remove-WSManInstance|Set-WSManInstance|Set-WSManQuickConfig|Test-WSMan|" + + "Debug-MMAppPrelaunch|Disable-MMAgent|Enable-MMAgent|Get-MMAgent|Set-MMAgent|" + + "Add-DtcClusterTMMapping|Get-Dtc|Get-DtcAdvancedHostSetting|Get-DtcAdvancedSetting|Get-DtcClusterDefault|Get-DtcClusterTMMapping|Get-DtcDefault|Get-DtcLog|Get-DtcNetworkSetting|Get-DtcTransaction|Get-DtcTransactionsStatistics|Get-DtcTransactionsTraceSession|Get-DtcTransactionsTraceSetting|Install-Dtc|Remove-DtcClusterTMMapping|Reset-DtcLog|Set-DtcAdvancedHostSetting|Set-DtcAdvancedSetting|Set-DtcClusterDefault|Set-DtcClusterTMMapping|Set-DtcDefault|Set-DtcLog|Set-DtcNetworkSetting|Set-DtcTransaction|Set-DtcTransactionsTraceSession|Set-DtcTransactionsTraceSetting|Start-Dtc|Start-DtcTransactionsTraceSession|Stop-Dtc|Stop-DtcTransactionsTraceSession|Test-Dtc|Uninstall-Dtc|Write-DtcTransactionsTraceSession|Complete-DtcDiagnosticTransaction|Join-DtcDiagnosticResourceManager|New-DtcDiagnosticTransaction|Receive-DtcDiagnosticTransaction|Send-DtcDiagnosticTransaction|Start-DtcDiagnosticResourceManager|Stop-DtcDiagnosticResourceManager|Undo-DtcDiagnosticTransaction|" + + "Disable-NetAdapter|Disable-NetAdapterBinding|Disable-NetAdapterChecksumOffload|Disable-NetAdapterEncapsulatedPacketTaskOffload|Disable-NetAdapterIPsecOffload|Disable-NetAdapterLso|Disable-NetAdapterPacketDirect|Disable-NetAdapterPowerManagement|Disable-NetAdapterQos|Disable-NetAdapterRdma|Disable-NetAdapterRsc|Disable-NetAdapterRss|Disable-NetAdapterSriov|Disable-NetAdapterVmq|Enable-NetAdapter|Enable-NetAdapterBinding|Enable-NetAdapterChecksumOffload|Enable-NetAdapterEncapsulatedPacketTaskOffload|Enable-NetAdapterIPsecOffload|Enable-NetAdapterLso|Enable-NetAdapterPacketDirect|Enable-NetAdapterPowerManagement|Enable-NetAdapterQos|Enable-NetAdapterRdma|Enable-NetAdapterRsc|Enable-NetAdapterRss|Enable-NetAdapterSriov|Enable-NetAdapterVmq|Get-NetAdapter|Get-NetAdapterAdvancedProperty|Get-NetAdapterBinding|Get-NetAdapterChecksumOffload|Get-NetAdapterEncapsulatedPacketTaskOffload|Get-NetAdapterHardwareInfo|Get-NetAdapterIPsecOffload|Get-NetAdapterLso|Get-NetAdapterPacketDirect|Get-NetAdapterPowerManagement|Get-NetAdapterQos|Get-NetAdapterRdma|Get-NetAdapterRsc|Get-NetAdapterRss|Get-NetAdapterSriov|Get-NetAdapterSriovVf|Get-NetAdapterStatistics|Get-NetAdapterVmq|Get-NetAdapterVmqQueue|Get-NetAdapterVPort|New-NetAdapterAdvancedProperty|Remove-NetAdapterAdvancedProperty|Rename-NetAdapter|Reset-NetAdapterAdvancedProperty|Restart-NetAdapter|Set-NetAdapter|Set-NetAdapterAdvancedProperty|Set-NetAdapterBinding|Set-NetAdapterChecksumOffload|Set-NetAdapterEncapsulatedPacketTaskOffload|Set-NetAdapterIPsecOffload|Set-NetAdapterLso|Set-NetAdapterPacketDirect|Set-NetAdapterPowerManagement|Set-NetAdapterQos|Set-NetAdapterRdma|Set-NetAdapterRsc|Set-NetAdapterRss|Set-NetAdapterSriov|Set-NetAdapterVmq|" + + "Get-NetConnectionProfile|Set-NetConnectionProfile|" + + "Add-NetEventNetworkAdapter|Add-NetEventPacketCaptureProvider|Add-NetEventProvider|Add-NetEventVmNetworkAdapter|Add-NetEventVmSwitch|Add-NetEventWFPCaptureProvider|Get-NetEventNetworkAdapter|Get-NetEventPacketCaptureProvider|Get-NetEventProvider|Get-NetEventSession|Get-NetEventVmNetworkAdapter|Get-NetEventVmSwitch|Get-NetEventWFPCaptureProvider|New-NetEventSession|Remove-NetEventNetworkAdapter|Remove-NetEventPacketCaptureProvider|Remove-NetEventProvider|Remove-NetEventSession|Remove-NetEventVmNetworkAdapter|Remove-NetEventVmSwitch|Remove-NetEventWFPCaptureProvider|Set-NetEventPacketCaptureProvider|Set-NetEventProvider|Set-NetEventSession|Set-NetEventWFPCaptureProvider|Start-NetEventSession|Stop-NetEventSession|" + + "Add-NetLbfoTeamMember|Add-NetLbfoTeamNic|Get-NetLbfoTeam|Get-NetLbfoTeamMember|Get-NetLbfoTeamNic|New-NetLbfoTeam|Remove-NetLbfoTeam|Remove-NetLbfoTeamMember|Remove-NetLbfoTeamNic|Rename-NetLbfoTeam|Set-NetLbfoTeam|Set-NetLbfoTeamMember|Set-NetLbfoTeamNic|" + + "Add-NetNatExternalAddress|Add-NetNatStaticMapping|Get-NetNat|Get-NetNatExternalAddress|Get-NetNatGlobal|Get-NetNatSession|Get-NetNatStaticMapping|New-NetNat|Remove-NetNat|Remove-NetNatExternalAddress|Remove-NetNatStaticMapping|Set-NetNat|Set-NetNatGlobal|" + + "Get-NetQosPolicy|New-NetQosPolicy|Remove-NetQosPolicy|Set-NetQosPolicy|" + + "Copy-NetFirewallRule|Copy-NetIPsecMainModeCryptoSet|Copy-NetIPsecMainModeRule|Copy-NetIPsecPhase1AuthSet|Copy-NetIPsecPhase2AuthSet|Copy-NetIPsecQuickModeCryptoSet|Copy-NetIPsecRule|Disable-NetFirewallRule|Disable-NetIPsecMainModeRule|Disable-NetIPsecRule|Enable-NetFirewallRule|Enable-NetIPsecMainModeRule|Enable-NetIPsecRule|Find-NetIPsecRule|Get-NetFirewallAddressFilter|Get-NetFirewallApplicationFilter|Get-NetFirewallInterfaceFilter|Get-NetFirewallInterfaceTypeFilter|Get-NetFirewallPortFilter|Get-NetFirewallProfile|Get-NetFirewallRule|Get-NetFirewallSecurityFilter|Get-NetFirewallServiceFilter|Get-NetFirewallSetting|Get-NetIPsecDospSetting|Get-NetIPsecMainModeCryptoSet|Get-NetIPsecMainModeRule|Get-NetIPsecMainModeSA|Get-NetIPsecPhase1AuthSet|Get-NetIPsecPhase2AuthSet|Get-NetIPsecQuickModeCryptoSet|Get-NetIPsecQuickModeSA|Get-NetIPsecRule|New-NetFirewallRule|New-NetIPsecDospSetting|New-NetIPsecMainModeCryptoSet|New-NetIPsecMainModeRule|New-NetIPsecPhase1AuthSet|New-NetIPsecPhase2AuthSet|New-NetIPsecQuickModeCryptoSet|New-NetIPsecRule|Open-NetGPO|Remove-NetFirewallRule|Remove-NetIPsecDospSetting|Remove-NetIPsecMainModeCryptoSet|Remove-NetIPsecMainModeRule|Remove-NetIPsecMainModeSA|Remove-NetIPsecPhase1AuthSet|Remove-NetIPsecPhase2AuthSet|Remove-NetIPsecQuickModeCryptoSet|Remove-NetIPsecQuickModeSA|Remove-NetIPsecRule|Rename-NetFirewallRule|Rename-NetIPsecMainModeCryptoSet|Rename-NetIPsecMainModeRule|Rename-NetIPsecPhase1AuthSet|Rename-NetIPsecPhase2AuthSet|Rename-NetIPsecQuickModeCryptoSet|Rename-NetIPsecRule|Save-NetGPO|Set-NetFirewallAddressFilter|Set-NetFirewallApplicationFilter|Set-NetFirewallInterfaceFilter|Set-NetFirewallInterfaceTypeFilter|Set-NetFirewallPortFilter|Set-NetFirewallProfile|Set-NetFirewallRule|Set-NetFirewallSecurityFilter|Set-NetFirewallServiceFilter|Set-NetFirewallSetting|Set-NetIPsecDospSetting|Set-NetIPsecMainModeCryptoSet|Set-NetIPsecMainModeRule|Set-NetIPsecPhase1AuthSet|Set-NetIPsecPhase2AuthSet|Set-NetIPsecQuickModeCryptoSet|Set-NetIPsecRule|Show-NetFirewallRule|Show-NetIPsecRule|Sync-NetIPsecRule|Update-NetIPsecRule|Get-DAPolicyChange|New-NetIPsecAuthProposal|New-NetIPsecMainModeCryptoProposal|New-NetIPsecQuickModeCryptoProposal|" + + "Add-NetSwitchTeamMember|Get-NetSwitchTeam|Get-NetSwitchTeamMember|New-NetSwitchTeam|Remove-NetSwitchTeam|Remove-NetSwitchTeamMember|Rename-NetSwitchTeam|" + + "Find-NetRoute|Get-NetCompartment|Get-NetIPAddress|Get-NetIPConfiguration|Get-NetIPInterface|Get-NetIPv4Protocol|Get-NetIPv6Protocol|Get-NetNeighbor|Get-NetOffloadGlobalSetting|Get-NetPrefixPolicy|Get-NetRoute|Get-NetTCPConnection|Get-NetTCPSetting|Get-NetTransportFilter|Get-NetUDPEndpoint|Get-NetUDPSetting|New-NetIPAddress|New-NetNeighbor|New-NetRoute|New-NetTransportFilter|Remove-NetIPAddress|Remove-NetNeighbor|Remove-NetRoute|Remove-NetTransportFilter|Set-NetIPAddress|Set-NetIPInterface|Set-NetIPv4Protocol|Set-NetIPv6Protocol|Set-NetNeighbor|Set-NetOffloadGlobalSetting|Set-NetRoute|Set-NetTCPSetting|Set-NetUDPSetting|Test-NetConnection|" + + "Get-DAConnectionStatus|Get-NCSIPolicyConfiguration|Reset-NCSIPolicyConfiguration|Set-NCSIPolicyConfiguration|" + + "Disable-NetworkSwitchEthernetPort|Disable-NetworkSwitchFeature|Disable-NetworkSwitchVlan|Enable-NetworkSwitchEthernetPort|Enable-NetworkSwitchFeature|Enable-NetworkSwitchVlan|Get-NetworkSwitchEthernetPort|Get-NetworkSwitchFeature|Get-NetworkSwitchGlobalData|Get-NetworkSwitchVlan|New-NetworkSwitchVlan|Remove-NetworkSwitchEthernetPortIPAddress|Remove-NetworkSwitchVlan|Restore-NetworkSwitchConfiguration|Save-NetworkSwitchConfiguration|Set-NetworkSwitchEthernetPortIPAddress|Set-NetworkSwitchPortMode|Set-NetworkSwitchPortProperty|Set-NetworkSwitchVlanProperty|" + + "Add-NetIPHttpsCertBinding|Disable-NetDnsTransitionConfiguration|Disable-NetIPHttpsProfile|Disable-NetNatTransitionConfiguration|Enable-NetDnsTransitionConfiguration|Enable-NetIPHttpsProfile|Enable-NetNatTransitionConfiguration|Get-Net6to4Configuration|Get-NetDnsTransitionConfiguration|Get-NetDnsTransitionMonitoring|Get-NetIPHttpsConfiguration|Get-NetIPHttpsState|Get-NetIsatapConfiguration|Get-NetNatTransitionConfiguration|Get-NetNatTransitionMonitoring|Get-NetTeredoConfiguration|Get-NetTeredoState|New-NetIPHttpsConfiguration|New-NetNatTransitionConfiguration|Remove-NetIPHttpsCertBinding|Remove-NetIPHttpsConfiguration|Remove-NetNatTransitionConfiguration|Rename-NetIPHttpsConfiguration|Reset-Net6to4Configuration|Reset-NetDnsTransitionConfiguration|Reset-NetIPHttpsConfiguration|Reset-NetIsatapConfiguration|Reset-NetTeredoConfiguration|Set-Net6to4Configuration|Set-NetDnsTransitionConfiguration|Set-NetIPHttpsConfiguration|Set-NetIsatapConfiguration|Set-NetNatTransitionConfiguration|Set-NetTeredoConfiguration|" + + "Find-Package|Find-PackageProvider|Get-Package|Get-PackageProvider|Get-PackageSource|Import-PackageProvider|Install-Package|Install-PackageProvider|Register-PackageSource|Save-Package|Set-PackageSource|Uninstall-Package|Unregister-PackageSource|" + + "Clear-PcsvDeviceLog|Get-PcsvDevice|Get-PcsvDeviceLog|Restart-PcsvDevice|Set-PcsvDeviceBootConfiguration|Set-PcsvDeviceNetworkConfiguration|Set-PcsvDeviceUserPassword|Start-PcsvDevice|Stop-PcsvDevice|" + + "AfterAll|AfterEach|Assert-MockCalled|Assert-VerifiableMocks|BeforeAll|BeforeEach|Context|Describe|Get-MockDynamicParameters|Get-TestDriveItem|In|InModuleScope|Invoke-Mock|Invoke-Pester|It|Mock|New-Fixture|Set-DynamicParameterVariables|Setup|Should|" + + "Add-CertificateEnrollmentPolicyServer|Export-Certificate|Export-PfxCertificate|Get-Certificate|Get-CertificateAutoEnrollmentPolicy|Get-CertificateEnrollmentPolicyServer|Get-CertificateNotificationTask|Get-PfxData|Import-Certificate|Import-PfxCertificate|New-CertificateNotificationTask|New-SelfSignedCertificate|Remove-CertificateEnrollmentPolicyServer|Remove-CertificateNotificationTask|Set-CertificateAutoEnrollmentPolicy|Switch-Certificate|Test-Certificate|" + + "Disable-PnpDevice|Enable-PnpDevice|Get-PnpDevice|Get-PnpDeviceProperty|" + + "Find-DscResource|Find-Module|Find-Script|Get-InstalledModule|Get-InstalledScript|Get-PSRepository|Install-Module|Install-Script|New-ScriptFileInfo|Publish-Module|Publish-Script|Register-PSRepository|Save-Module|Save-Script|Set-PSRepository|Test-ScriptFileInfo|Uninstall-Module|Uninstall-Script|Unregister-PSRepository|Update-Module|Update-ModuleManifest|Update-Script|Update-ScriptFileInfo|" + + "Add-Printer|Add-PrinterDriver|Add-PrinterPort|Get-PrintConfiguration|Get-Printer|Get-PrinterDriver|Get-PrinterPort|Get-PrinterProperty|Get-PrintJob|Read-PrinterNfcTag|Remove-Printer|Remove-PrinterDriver|Remove-PrinterPort|Remove-PrintJob|Rename-Printer|Restart-PrintJob|Resume-PrintJob|Set-PrintConfiguration|Set-Printer|Set-PrinterProperty|Suspend-PrintJob|Write-PrinterNfcTag|" + + "Configuration|Disable-DscDebug|Enable-DscDebug|Get-DscConfiguration|Get-DscConfigurationStatus|Get-DscLocalConfigurationManager|Get-DscResource|New-DscChecksum|Remove-DscConfigurationDocument|Restore-DscConfiguration|Stop-DscConfiguration|Invoke-DscResource|Publish-DscConfiguration|Set-DscLocalConfigurationManager|Start-DscConfiguration|Test-DscConfiguration|Update-DscConfiguration|" + + "Disable-PSTrace|Disable-PSWSManCombinedTrace|Disable-WSManTrace|Enable-PSTrace|Enable-PSWSManCombinedTrace|Enable-WSManTrace|Get-LogProperties|Set-LogProperties|Start-Trace|Stop-Trace|" + + "PSConsoleHostReadline|Get-PSReadlineKeyHandler|Get-PSReadlineOption|Remove-PSReadlineKeyHandler|Set-PSReadlineKeyHandler|Set-PSReadlineOption|" + + "Add-JobTrigger|Disable-JobTrigger|Disable-ScheduledJob|Enable-JobTrigger|Enable-ScheduledJob|Get-JobTrigger|Get-ScheduledJob|Get-ScheduledJobOption|New-JobTrigger|New-ScheduledJobOption|Register-ScheduledJob|Remove-JobTrigger|Set-JobTrigger|Set-ScheduledJob|Set-ScheduledJobOption|Unregister-ScheduledJob|" + + "New-PSWorkflowSession|New-PSWorkflowExecutionOption|" + + "Invoke-AsWorkflow|" + + "Disable-ScheduledTask|Enable-ScheduledTask|Export-ScheduledTask|Get-ClusteredScheduledTask|Get-ScheduledTask|Get-ScheduledTaskInfo|New-ScheduledTask|New-ScheduledTaskAction|New-ScheduledTaskPrincipal|New-ScheduledTaskSettingsSet|New-ScheduledTaskTrigger|Register-ClusteredScheduledTask|Register-ScheduledTask|Set-ClusteredScheduledTask|Set-ScheduledTask|Start-ScheduledTask|Stop-ScheduledTask|Unregister-ClusteredScheduledTask|Unregister-ScheduledTask|" + + "Confirm-SecureBootUEFI|Format-SecureBootUEFI|Get-SecureBootPolicy|Get-SecureBootUEFI|Set-SecureBootUEFI|" + + "Block-SmbShareAccess|Close-SmbOpenFile|Close-SmbSession|Disable-SmbDelegation|Enable-SmbDelegation|Get-SmbBandwidthLimit|Get-SmbClientConfiguration|Get-SmbClientNetworkInterface|Get-SmbConnection|Get-SmbDelegation|Get-SmbMapping|Get-SmbMultichannelConnection|Get-SmbMultichannelConstraint|Get-SmbOpenFile|Get-SmbServerConfiguration|Get-SmbServerNetworkInterface|Get-SmbSession|Get-SmbShare|Get-SmbShareAccess|Grant-SmbShareAccess|New-SmbMapping|New-SmbMultichannelConstraint|New-SmbShare|Remove-SmbBandwidthLimit|Remove-SmbMapping|Remove-SmbMultichannelConstraint|Remove-SmbShare|Revoke-SmbShareAccess|Set-SmbBandwidthLimit|Set-SmbClientConfiguration|Set-SmbPathAcl|Set-SmbServerConfiguration|Set-SmbShare|Unblock-SmbShareAccess|Update-SmbMultichannelConnection|" + + "Move-SmbClient|Get-SmbWitnessClient|Move-SmbWitnessClient|" + + "Get-StartApps|Export-StartLayout|Import-StartLayout|" + + "Disable-PhysicalDiskIndication|Disable-StorageDiagnosticLog|Enable-PhysicalDiskIndication|Enable-StorageDiagnosticLog|Flush-Volume|Get-DiskSNV|Get-PhysicalDiskSNV|Get-StorageEnclosureSNV|Initialize-Volume|Write-FileSystemCache|Add-InitiatorIdToMaskingSet|Add-PartitionAccessPath|Add-PhysicalDisk|Add-TargetPortToMaskingSet|Add-VirtualDiskToMaskingSet|Block-FileShareAccess|Clear-Disk|Clear-FileStorageTier|Clear-StorageDiagnosticInfo|Connect-VirtualDisk|Debug-FileShare|Debug-StorageSubSystem|Debug-Volume|Disable-PhysicalDiskIdentification|Disable-StorageEnclosureIdentification|Disable-StorageHighAvailability|Disconnect-VirtualDisk|Dismount-DiskImage|Enable-PhysicalDiskIdentification|Enable-StorageEnclosureIdentification|Enable-StorageHighAvailability|Format-Volume|Get-DedupProperties|Get-Disk|Get-DiskImage|Get-DiskStorageNodeView|Get-FileIntegrity|Get-FileShare|Get-FileShareAccessControlEntry|Get-FileStorageTier|Get-InitiatorId|Get-InitiatorPort|Get-MaskingSet|Get-OffloadDataTransferSetting|Get-Partition|Get-PartitionSupportedSize|Get-PhysicalDisk|Get-PhysicalDiskStorageNodeView|Get-ResiliencySetting|Get-StorageAdvancedProperty|Get-StorageDiagnosticInfo|Get-StorageEnclosure|Get-StorageEnclosureStorageNodeView|Get-StorageEnclosureVendorData|Get-StorageFaultDomain|Get-StorageFileServer|Get-StorageFirmwareInformation|Get-StorageHealthAction|Get-StorageHealthReport|Get-StorageHealthSetting|Get-StorageJob|Get-StorageNode|Get-StoragePool|Get-StorageProvider|Get-StorageReliabilityCounter|Get-StorageSetting|Get-StorageSubSystem|Get-StorageTier|Get-StorageTierSupportedSize|Get-SupportedClusterSizes|Get-SupportedFileSystems|Get-TargetPort|Get-TargetPortal|Get-VirtualDisk|Get-VirtualDiskSupportedSize|Get-Volume|Get-VolumeCorruptionCount|Get-VolumeScrubPolicy|Grant-FileShareAccess|Hide-VirtualDisk|Initialize-Disk|Mount-DiskImage|New-FileShare|New-MaskingSet|New-Partition|New-StorageFileServer|New-StoragePool|New-StorageSubsystemVirtualDisk|New-StorageTier|New-VirtualDisk|New-VirtualDiskClone|New-VirtualDiskSnapshot|New-Volume|Optimize-StoragePool|Optimize-Volume|Register-StorageSubsystem|Remove-FileShare|Remove-InitiatorId|Remove-InitiatorIdFromMaskingSet|Remove-MaskingSet|Remove-Partition|Remove-PartitionAccessPath|Remove-PhysicalDisk|Remove-StorageFileServer|Remove-StorageHealthSetting|Remove-StoragePool|Remove-StorageTier|Remove-TargetPortFromMaskingSet|Remove-VirtualDisk|Remove-VirtualDiskFromMaskingSet|Rename-MaskingSet|Repair-FileIntegrity|Repair-VirtualDisk|Repair-Volume|Reset-PhysicalDisk|Reset-StorageReliabilityCounter|Resize-Partition|Resize-StorageTier|Resize-VirtualDisk|Revoke-FileShareAccess|Set-Disk|Set-FileIntegrity|Set-FileShare|Set-FileStorageTier|Set-InitiatorPort|Set-Partition|Set-PhysicalDisk|Set-ResiliencySetting|Set-StorageFileServer|Set-StorageHealthSetting|Set-StoragePool|Set-StorageProvider|Set-StorageSetting|Set-StorageSubSystem|Set-StorageTier|Set-VirtualDisk|Set-Volume|Set-VolumeScrubPolicy|Show-VirtualDisk|Start-StorageDiagnosticLog|Stop-StorageDiagnosticLog|Stop-StorageJob|Unblock-FileShareAccess|Unregister-StorageSubsystem|Update-Disk|Update-HostStorageCache|Update-StorageFirmware|Update-StoragePool|Update-StorageProviderCache|Write-VolumeCache|" + + "Disable-TlsCipherSuite|Disable-TlsSessionTicketKey|Enable-TlsCipherSuite|Enable-TlsSessionTicketKey|Export-TlsSessionTicketKey|Get-TlsCipherSuite|New-TlsSessionTicketKey|" + + "Get-TroubleshootingPack|Invoke-TroubleshootingPack|" + + "Clear-Tpm|ConvertTo-TpmOwnerAuth|Disable-TpmAutoProvisioning|Enable-TpmAutoProvisioning|Get-Tpm|Get-TpmEndorsementKeyInfo|Get-TpmSupportedFeature|Import-TpmOwnerAuth|Initialize-Tpm|Set-TpmOwnerAuth|Unblock-Tpm|" + + "Add-VpnConnection|Add-VpnConnectionRoute|Add-VpnConnectionTriggerApplication|Add-VpnConnectionTriggerDnsConfiguration|Add-VpnConnectionTriggerTrustedNetwork|Get-VpnConnection|Get-VpnConnectionTrigger|New-EapConfiguration|New-VpnServerAddress|Remove-VpnConnection|Remove-VpnConnectionRoute|Remove-VpnConnectionTriggerApplication|Remove-VpnConnectionTriggerDnsConfiguration|Remove-VpnConnectionTriggerTrustedNetwork|Set-VpnConnection|Set-VpnConnectionIPsecConfiguration|Set-VpnConnectionProxy|Set-VpnConnectionTriggerDnsConfiguration|Set-VpnConnectionTriggerTrustedNetwork|" + + "Add-OdbcDsn|Disable-OdbcPerfCounter|Disable-WdacBidTrace|Enable-OdbcPerfCounter|Enable-WdacBidTrace|Get-OdbcDriver|Get-OdbcDsn|Get-OdbcPerfCounter|Get-WdacBidTrace|Remove-OdbcDsn|Set-OdbcDriver|Set-OdbcDsn|" + + "Get-WindowsDeveloperLicense|Show-WindowsDeveloperLicenseRegistration|Unregister-WindowsDeveloperLicense|" + + "Disable-WindowsErrorReporting|Enable-WindowsErrorReporting|Get-WindowsErrorReporting|" + + "Get-WindowsSearchSetting|Set-WindowsSearchSetting|" + + "Get-WindowsUpdateLog"); + var keywordMapper = this.createKeywordMapper({ + "support.function": builtinFunctions, + "keyword": keywords + }, "identifier"); + var binaryOperatorsRe = ( + "eq|ne|gt|lt|le|ge|like|notlike|match|notmatch|contains|notcontains|in|notin|band|bor|bxor|bnot|" + + "ceq|cne|cgt|clt|cle|cge|clike|cnotlike|cmatch|cnotmatch|ccontains|cnotcontains|cin|cnotin|" + + "ieq|ine|igt|ilt|ile|ige|ilike|inotlike|imatch|inotmatch|icontains|inotcontains|iin|inotin|" + + "and|or|xor|not|" + + "split|join|replace|f|" + + "csplit|creplace|" + + "isplit|ireplace|" + + "is|isnot|as|" + + "shl|shr"); + this.$rules = { + "start": [ + { + token: "comment", + regex: "#.*$" + }, { + token: "comment.start", + regex: "<#", + next: "comment" + }, { + token: "string", + regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + }, { + token: "string", + regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + }, { + token: "constant.numeric", + regex: "0[xX][0-9a-fA-F]+\\b" + }, { + token: "constant.numeric", + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token: "constant.language.boolean", + regex: "[$](?:[Tt]rue|[Ff]alse)\\b" + }, { + token: "constant.language", + regex: "[$][Nn]ull\\b" + }, { + token: "variable.instance", + regex: "[$][a-zA-Z][a-zA-Z0-9_]*\\b" + }, { + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$\\-]*\\b" + }, { + token: "keyword.operator", + regex: "\\-(?:" + binaryOperatorsRe + ")" + }, { + token: "keyword.operator", + regex: "&|\\+|\\-|\\*|\\/|\\%|\\=|\\>|\\&|\\!|\\|" + }, { + token: "lparen", + regex: "[[({]" + }, { + token: "rparen", + regex: "[\\])}]" + }, { + token: "text", + regex: "\\s+" + } + ], + "comment": [ + { + token: "comment.end", + regex: "#>", + next: "start" + }, { + token: "doc.comment.tag", + regex: "^\\.\\w+" + }, { + defaultToken: "comment" + } + ] + }; +}; +oop.inherits(PowershellHighlightRules, TextHighlightRules); +exports.PowershellHighlightRules = PowershellHighlightRules; + +}); + +ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) + return false; + return /^\s*\}/.test(input); + }; + this.autoOutdent = function (doc, row) { + var line = doc.getLine(row); + var match = line.match(/^(\s*\})/); + if (!match) + return 0; + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; + var indent = this.$getIndent(doc.getLine(openBracePos.row)); + doc.replace(new Range(row, 0, row, column - 1), indent); + }; + this.$getIndent = function (line) { + return line.match(/^\s*/)[0]; + }; +}).call(MatchingBraceOutdent.prototype); +exports.MatchingBraceOutdent = MatchingBraceOutdent; + +}); + +ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/powershell",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/powershell_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var PowershellHighlightRules = require("./powershell_highlight_rules").PowershellHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = PowershellHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CstyleBehaviour(); + this.foldingRules = new CStyleFoldMode({ start: "^\\s*(<#)", end: "^[#\\s]>\\s*$" }); +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "#"; + this.blockComment = { start: "<#", end: "#>" }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + if (state == "start") { + var match = line.match(/^.*[\{\(\[]\s*$/); + if (match) { + indent += tab; + } + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.createWorker = function (session) { + return null; + }; + this.$id = "ace/mode/powershell"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/powershell"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/a17e59619a3d17661de6cad7d6808a1f.js.gz b/web/dist/a17e59619a3d17661de6cad7d6808a1f.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..6126f906f5f5f9a39aaf5348f1d782d41e5001da GIT binary patch literal 9426 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 literal 0 HcmV?d00001 diff --git a/web/dist/a26463d029a2515171748a1ebcca53c3.js b/web/dist/a26463d029a2515171748a1ebcca53c3.js new file mode 100644 index 00000000..6a22b035 --- /dev/null +++ b/web/dist/a26463d029a2515171748a1ebcca53c3.js @@ -0,0 +1,9 @@ + +; (function() { + ace.require(["ace/snippets/ocaml"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/a2892f98db7a4df3c9483669ddb59ec2.js b/web/dist/a2892f98db7a4df3c9483669ddb59ec2.js new file mode 100644 index 00000000..14740d87 --- /dev/null +++ b/web/dist/a2892f98db7a4df3c9483669ddb59ec2.js @@ -0,0 +1,286 @@ +ace.define("ace/mode/latex_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var LatexHighlightRules = function () { + this.$rules = { + "start": [{ + token: "comment", + regex: "%.*$" + }, { + token: ["keyword", "lparen", "variable.parameter", "rparen", "lparen", "storage.type", "rparen"], + regex: "(\\\\(?:documentclass|usepackage|input))(?:(\\[)([^\\]]*)(\\]))?({)([^}]*)(})" + }, { + token: ["keyword", "lparen", "variable.parameter", "rparen"], + regex: "(\\\\(?:label|v?ref|cite(?:[^{]*)))(?:({)([^}]*)(}))?" + }, { + token: ["storage.type", "lparen", "variable.parameter", "rparen"], + regex: "(\\\\begin)({)(verbatim)(})", + next: "verbatim" + }, { + token: ["storage.type", "lparen", "variable.parameter", "rparen"], + regex: "(\\\\begin)({)(lstlisting)(})", + next: "lstlisting" + }, { + token: ["storage.type", "lparen", "variable.parameter", "rparen"], + regex: "(\\\\(?:begin|end))({)([\\w*]*)(})" + }, { + token: "storage.type", + regex: /\\verb\b\*?/, + next: [{ + token: ["keyword.operator", "string", "keyword.operator"], + regex: "(.)(.*?)(\\1|$)|", + next: "start" + }] + }, { + token: "storage.type", + regex: "\\\\[a-zA-Z]+" + }, { + token: "lparen", + regex: "[[({]" + }, { + token: "rparen", + regex: "[\\])}]" + }, { + token: "constant.character.escape", + regex: "\\\\[^a-zA-Z]?" + }, { + token: "string", + regex: "\\${1,2}", + next: "equation" + }], + "equation": [{ + token: "comment", + regex: "%.*$" + }, { + token: "string", + regex: "\\${1,2}", + next: "start" + }, { + token: "constant.character.escape", + regex: "\\\\(?:[^a-zA-Z]|[a-zA-Z]+)" + }, { + token: "error", + regex: "^\\s*$", + next: "start" + }, { + defaultToken: "string" + }], + "verbatim": [{ + token: ["storage.type", "lparen", "variable.parameter", "rparen"], + regex: "(\\\\end)({)(verbatim)(})", + next: "start" + }, { + defaultToken: "text" + }], + "lstlisting": [{ + token: ["storage.type", "lparen", "variable.parameter", "rparen"], + regex: "(\\\\end)({)(lstlisting)(})", + next: "start" + }, { + defaultToken: "text" + }] + }; + this.normalizeRules(); +}; +oop.inherits(LatexHighlightRules, TextHighlightRules); +exports.LatexHighlightRules = LatexHighlightRules; + +}); + +ace.define("ace/mode/rdoc_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/latex_highlight_rules"], function(require, exports, module){/* + * rdoc_highlight_rules.js + * + * Copyright (C) 2009-11 by RStudio, Inc. + * + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * + */ +"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var LaTeXHighlightRules = require("./latex_highlight_rules"); +var RDocHighlightRules = function () { + this.$rules = { + "start": [ + { + token: "comment", + regex: "%.*$" + }, { + token: "text", + regex: "\\\\[$&%#\\{\\}]" + }, { + token: "keyword", + regex: "\\\\(?:name|alias|method|S3method|S4method|item|code|preformatted|kbd|pkg|var|env|option|command|author|email|url|source|cite|acronym|href|code|preformatted|link|eqn|deqn|keyword|usage|examples|dontrun|dontshow|figure|if|ifelse|Sexpr|RdOpts|inputencoding|usepackage)\\b", + next: "nospell" + }, { + token: "keyword", + regex: "\\\\(?:[a-zA-Z0-9]+|[^a-zA-Z0-9])" + }, { + token: "paren.keyword.operator", + regex: "[[({]" + }, { + token: "paren.keyword.operator", + regex: "[\\])}]" + }, { + token: "text", + regex: "\\s+" + } + ], + "nospell": [ + { + token: "comment", + regex: "%.*$", + next: "start" + }, { + token: "nospell.text", + regex: "\\\\[$&%#\\{\\}]" + }, { + token: "keyword", + regex: "\\\\(?:name|alias|method|S3method|S4method|item|code|preformatted|kbd|pkg|var|env|option|command|author|email|url|source|cite|acronym|href|code|preformatted|link|eqn|deqn|keyword|usage|examples|dontrun|dontshow|figure|if|ifelse|Sexpr|RdOpts|inputencoding|usepackage)\\b" + }, { + token: "keyword", + regex: "\\\\(?:[a-zA-Z0-9]+|[^a-zA-Z0-9])", + next: "start" + }, { + token: "paren.keyword.operator", + regex: "[[({]" + }, { + token: "paren.keyword.operator", + regex: "[\\])]" + }, { + token: "paren.keyword.operator", + regex: "}", + next: "start" + }, { + token: "nospell.text", + regex: "\\s+" + }, { + token: "nospell.text", + regex: "\\w+" + } + ] + }; +}; +oop.inherits(RDocHighlightRules, TextHighlightRules); +exports.RDocHighlightRules = RDocHighlightRules; + +}); + +ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) + return false; + return /^\s*\}/.test(input); + }; + this.autoOutdent = function (doc, row) { + var line = doc.getLine(row); + var match = line.match(/^(\s*\})/); + if (!match) + return 0; + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; + var indent = this.$getIndent(doc.getLine(openBracePos.row)); + doc.replace(new Range(row, 0, row, column - 1), indent); + }; + this.$getIndent = function (line) { + return line.match(/^\s*/)[0]; + }; +}).call(MatchingBraceOutdent.prototype); +exports.MatchingBraceOutdent = MatchingBraceOutdent; + +}); + +ace.define("ace/mode/rdoc",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/rdoc_highlight_rules","ace/mode/matching_brace_outdent"], function(require, exports, module){/* + * rdoc.js + * + * Copyright (C) 2009-11 by RStudio, Inc. + * + * The Initial Developer of the Original Code is + * Ajax.org B.V. + * Portions created by the Initial Developer are Copyright (C) 2010 + * the Initial Developer. All Rights Reserved. + * + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * + */ +"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var RDocHighlightRules = require("./rdoc_highlight_rules").RDocHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var Mode = function (suppressHighlighting) { + this.HighlightRules = RDocHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); +(function () { + this.getNextLineIndent = function (state, line, tab) { + return this.$getIndent(line); + }; + this.$id = "ace/mode/rdoc"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/rdoc"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/a2892f98db7a4df3c9483669ddb59ec2.js.gz b/web/dist/a2892f98db7a4df3c9483669ddb59ec2.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..aa2f0e68b8f9a38b32a27a155a361c6d33cd8b97 GIT binary patch literal 2579 zcmV+u3hebCiwFP!000023hi27bJ|D}fA^=D(|J>pqX>KNUe>OZOMqhQ3IivJBt9T1 zAqJyZNbG22$7}K3uX`jwfUr&0-pzxl#Fl1ye*Jf5x*NM5)rNHBhg6nak5(qpkX8bh z)9+u${?#~u|NJXU0vbzdS7P+{#Aj4eCHj3DF%E+gtbl2Fz~zBIs6^2;e-mH;#W%3} zDj6lA$Neajb5ND!m@3I2m3t|PDTz7rJuaQ>-MEYZHhE9-6|$sh3yw-g-~hMtIWr4+ ztVgqk3I*}D}zenK1$9}BsvwS`q!;chmmvQNsbeCiE509>CcuXWO znoMZOC3S;>(JT5LD1Oln_NA5CnM$?-cBN~2cN?*xq!KBZx{QYS1nT(iAfOtIxD(1L z!%?=FUsA?AV(t~y_}!EiX!_d)lzZ@zPmhO@m!K|Q;Kp$Z-kZAKH9)0)I8C^s011$G z6}kJR*X#EW6nN_^%Bg&hLo*zhDKD$(6SN520S(fdQ$|Or=W_}}-7ohbT&6%#R^@aT zY1a+=Od=2Hl^-f7*9~O@m-`c8#?4hBL^&*)Q~gw;2Qd%)nET*+-1%F%zzrRP_5QS`kX^b-z@1ea zZ}C|q%Ws|}udB|oDT#Ov&2nNx=mo4A4h2Nk)u z3|T(RLcXv0;g~X?$8t%Eu9lPmurjYNwDP3BWb|ZjZwBl3+_EBxL9+V{H4?rBE}lA% zluYVl_1V*Es>;D0IUr@iYu{p+!r59hy<<2*$06(VNyNnODB*|#cJN2O zC$1NjzZCD^wh~VuJX;k2$%J>{;6N=h*oeiz|BehO1{CNM5jX;2lw$0FJd=o1l9`Lg1$97T zh)*&Cip)T9G~%}y9(ll#cuGACH(2ds95M{FFblaj&hYF-lKbK5d( zo3t!qUbGt~-~j_mZ#t%7!!~Z#8lAe?JW~l^kY>vv4fDcufXr#Bf^WVI0hcRD>jSwk ztlBxe>Q%F0I+sG652n*Zb{~MBPTIQVn6*wrw@ABVwOh79Ksj+{n0Bq9n-@l10~vrX zF+LhihuG(Oqe1ll=%2Ngb(T4?YJg07wP9qa&C3kHGHMPguzae4xj>wTO6;~#Gx5Rr zY=HQ>b*Z8Sz*x5N-wqJLB&q8c`k7%Pn*4|zz!$ZSWn7?$pt;?t+K%aT9D|&-T6JMv z+ps>GHN!qZyhh6wChFLR3Va-0um=>dk9~sA)sAfnOPNi_u&hqoFA+O0g~#l zv_5xat0{a5-e_5uh>P|RMpwzFa|6aLw4#Uw9c^JlOw^nr8L)&9aaNTjP2;R#o*B)W zfdnlC`efRM0&X&GBrr41pLAf`5xQeYfNb!X1#V^U2by$v-<42^Yw)G|cnX!jJY1b0a4Ca@T0Caxc( z2@BHf>J_cK)b&^t-c8c6Xy$D|2Yz^+(%-{$h(B^=(j>;7CH?MBrr^tTh!;f?ir?`# zx=ly^Rl;cMkKi8-Vw&2JX0g;7wx&GJdYv=`W^f%AnxIOrH`ty;hY{QrLGTi$&&$KZ zcfa-Drt_*1-*zb%Md_ezc8;E{GqO8_ojWCuZi9HeH?(*w)@O59J^O}!wyr`hq4v7( zf0lj!*KX@)3#6ZP*S{!-+261aSk4yD6Kg&Lho~(%fis@WECJY)Wqo zo963)!Pr+QoQC4Gd_psYLC#2j`0Hc~SFdHF8KR0m#>QAwKD0}Ge9(^yd@{} z#?-qmTL;Gw2%3F4T5z~OBJw{fUmz;>E8yjr3qnQNTXi!}SV%@tGt-m3wNYGr(3|C} zGX^Ic%{4edqcX9ePFD$wZi_OByd9(fLYUUBC~u$>k?LfHNH`OykXREha^;IG#8D~* zTA`$vFV*XC71fJ^WD)|bSkXP|YXJ?f_;{5Hc6TV8)Q;j@PzbeQ(SO&J%lD|-b7RAf#h-8o;a^(%US2 zWueBQT2zO;BS(swGc0lZlJ`b97JZ(pvEoT^WJT#7_7|WtMf2PskjplSHf0fyusvNk zF}Cccvf)P?uz%){Qi|{8&D=*%s9jsGKiFb*#uQ$C?z;i0(;FJ#Erx9@Y<;x=#t&hp zhOI_l^rtr3s%?-+^y@rEU2Js%Ctiw*-K%xsjt&u{lwK1ZTPy3>T5BEK*VgcBYxuP_ z{Ms6RZ4JM+hIjb;%?msjH@dx$lH ->> .. / < <= = ' + + '== > > >= >= accessor aclone ' + + 'add-classpath add-watch agent agent-errors aget alength alias all-ns ' + + 'alter alter-meta! alter-var-root amap ancestors and apply areduce ' + + 'array-map aset aset-boolean aset-byte aset-char aset-double aset-float ' + + 'aset-int aset-long aset-short assert assoc assoc! assoc-in associative? ' + + 'atom await await-for await1 bases bean bigdec bigint binding bit-and ' + + 'bit-and-not bit-clear bit-flip bit-not bit-or bit-set bit-shift-left ' + + 'bit-shift-right bit-test bit-xor boolean boolean-array booleans ' + + 'bound-fn bound-fn* butlast byte byte-array bytes cast char char-array ' + + 'char-escape-string char-name-string char? chars chunk chunk-append ' + + 'chunk-buffer chunk-cons chunk-first chunk-next chunk-rest chunked-seq? ' + + 'class class? clear-agent-errors clojure-version coll? comment commute ' + + 'comp comparator compare compare-and-set! compile complement concat cond ' + + 'condp conj conj! cons constantly construct-proxy contains? count ' + + 'counted? create-ns create-struct cycle dec decimal? declare definline ' + + 'defmacro defmethod defmulti defn defn- defonce defstruct delay delay? ' + + 'deliver deref derive descendants destructure disj disj! dissoc dissoc! ' + + 'distinct distinct? doall doc dorun doseq dosync dotimes doto double ' + + 'double-array doubles drop drop-last drop-while empty empty? ensure ' + + 'enumeration-seq eval even? every? false? ffirst file-seq filter find ' + + 'find-doc find-ns find-var first float float-array float? floats flush ' + + 'fn fn? fnext for force format future future-call future-cancel ' + + 'future-cancelled? future-done? future? gen-class gen-interface gensym ' + + 'get get-in get-method get-proxy-class get-thread-bindings get-validator ' + + 'hash hash-map hash-set identical? identity if-let if-not ifn? import ' + + 'in-ns inc init-proxy instance? int int-array integer? interleave intern ' + + 'interpose into into-array ints io! isa? iterate iterator-seq juxt key ' + + 'keys keyword keyword? last lazy-cat lazy-seq let letfn line-seq list ' + + 'list* list? load load-file load-reader load-string loaded-libs locking ' + + 'long long-array longs loop macroexpand macroexpand-1 make-array ' + + 'make-hierarchy map map? mapcat max max-key memfn memoize merge ' + + 'merge-with meta method-sig methods min min-key mod name namespace neg? ' + + 'newline next nfirst nil? nnext not not-any? not-empty not-every? not= ' + + 'ns ns-aliases ns-imports ns-interns ns-map ns-name ns-publics ' + + 'ns-refers ns-resolve ns-unalias ns-unmap nth nthnext num number? odd? ' + + 'or parents partial partition pcalls peek persistent! pmap pop pop! ' + + 'pop-thread-bindings pos? pr pr-str prefer-method prefers ' + + 'primitives-classnames print print-ctor print-doc print-dup print-method ' + + 'print-namespace-doc print-simple print-special-doc print-str printf ' + + 'println println-str prn prn-str promise proxy proxy-call-with-super ' + + 'proxy-mappings proxy-name proxy-super push-thread-bindings pvalues quot ' + + 'rand rand-int range ratio? rational? rationalize re-find re-groups ' + + 're-matcher re-matches re-pattern re-seq read read-line read-string ' + + 'reduce ref ref-history-count ref-max-history ref-min-history ref-set ' + + 'refer refer-clojure release-pending-sends rem remove remove-method ' + + 'remove-ns remove-watch repeat repeatedly replace replicate require ' + + 'reset! reset-meta! resolve rest resultset-seq reverse reversible? rseq ' + + 'rsubseq second select-keys send send-off seq seq? seque sequence ' + + 'sequential? set set-validator! set? short short-array shorts ' + + 'shutdown-agents slurp some sort sort-by sorted-map sorted-map-by ' + + 'sorted-set sorted-set-by sorted? special-form-anchor special-symbol? ' + + 'split-at split-with str stream? string? struct struct-map subs subseq ' + + 'subvec supers swap! symbol symbol? sync syntax-symbol-anchor take ' + + 'take-last take-nth take-while test the-ns time to-array to-array-2d ' + + 'trampoline transient tree-seq true? type unchecked-add unchecked-dec ' + + 'unchecked-divide unchecked-inc unchecked-multiply unchecked-negate ' + + 'unchecked-remainder unchecked-subtract underive unquote ' + + 'unquote-splicing update-in update-proxy use val vals var-get var-set ' + + 'var? vary-meta vec vector vector? when when-first when-let when-not ' + + 'while with-bindings with-bindings* with-in-str with-loading-context ' + + 'with-local-vars with-meta with-open with-out-str with-precision xml-seq ' + + 'zero? zipmap'); + var keywords = ('throw try var ' + + 'def do fn if let loop monitor-enter monitor-exit new quote recur set!'); + var buildinConstants = ("true false nil"); + var keywordMapper = this.createKeywordMapper({ + "keyword": keywords, + "constant.language": buildinConstants, + "support.function": builtinFunctions + }, "identifier", false, " "); + this.$rules = { + "start": [ + { + token: "comment", + regex: ";.*$" + }, { + token: "keyword", + regex: "[\\(|\\)]" + }, { + token: "keyword", + regex: "[\\'\\(]" + }, { + token: "keyword", + regex: "[\\[|\\]]" + }, { + token: "keyword", + regex: "[\\{|\\}|\\#\\{|\\#\\}]" + }, { + token: "keyword", + regex: '[\\&]' + }, { + token: "keyword", + regex: '[\\#\\^\\{]' + }, { + token: "keyword", + regex: '[\\%]' + }, { + token: "keyword", + regex: '[@]' + }, { + token: "constant.numeric", + regex: "0[xX][0-9a-fA-F]+\\b" + }, { + token: "constant.numeric", + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token: "constant.language", + regex: '[!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+||=|!=|<=|>=|<>|<|>|!|&&]' + }, { + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$\\-]*\\b" + }, { + token: "string", + regex: '"', + next: "string" + }, { + token: "constant", + regex: /:[^()\[\]{}'"\^%`,;\s]+/ + }, { + token: "string.regexp", + regex: '/#"(?:\\.|(?:\\")|[^""\n])*"/g' + } + ], + "string": [ + { + token: "constant.language.escape", + regex: "\\\\.|\\\\$" + }, { + token: "string", + regex: '[^"\\\\]+' + }, { + token: "string", + regex: '"', + next: "start" + } + ] + }; +}; +oop.inherits(ClojureHighlightRules, TextHighlightRules); +exports.ClojureHighlightRules = ClojureHighlightRules; + +}); + +ace.define("ace/mode/matching_parens_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var MatchingParensOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) + return false; + return /^\s*\)/.test(input); + }; + this.autoOutdent = function (doc, row) { + var line = doc.getLine(row); + var match = line.match(/^(\s*\))/); + if (!match) + return 0; + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; + var indent = this.$getIndent(doc.getLine(openBracePos.row)); + doc.replace(new Range(row, 0, row, column - 1), indent); + }; + this.$getIndent = function (line) { + var match = line.match(/^(\s+)/); + if (match) { + return match[1]; + } + return ""; + }; +}).call(MatchingParensOutdent.prototype); +exports.MatchingParensOutdent = MatchingParensOutdent; + +}); + +ace.define("ace/mode/clojure",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/clojure_highlight_rules","ace/mode/matching_parens_outdent"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var ClojureHighlightRules = require("./clojure_highlight_rules").ClojureHighlightRules; +var MatchingParensOutdent = require("./matching_parens_outdent").MatchingParensOutdent; +var Mode = function () { + this.HighlightRules = ClojureHighlightRules; + this.$outdent = new MatchingParensOutdent(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = ";"; + this.minorIndentFunctions = ["defn", "defn-", "defmacro", "def", "deftest", "testing"]; + this.$toIndent = function (str) { + return str.split('').map(function (ch) { + if (/\s/.exec(ch)) { + return ch; + } + else { + return ' '; + } + }).join(''); + }; + this.$calculateIndent = function (line, tab) { + var baseIndent = this.$getIndent(line); + var delta = 0; + var isParen, ch; + for (var i = line.length - 1; i >= 0; i--) { + ch = line[i]; + if (ch === '(') { + delta--; + isParen = true; + } + else if (ch === '(' || ch === '[' || ch === '{') { + delta--; + isParen = false; + } + else if (ch === ')' || ch === ']' || ch === '}') { + delta++; + } + if (delta < 0) { + break; + } + } + if (delta < 0 && isParen) { + i += 1; + var iBefore = i; + var fn = ''; + while (true) { + ch = line[i]; + if (ch === ' ' || ch === '\t') { + if (this.minorIndentFunctions.indexOf(fn) !== -1) { + return this.$toIndent(line.substring(0, iBefore - 1) + tab); + } + else { + return this.$toIndent(line.substring(0, i + 1)); + } + } + else if (ch === undefined) { + return this.$toIndent(line.substring(0, iBefore - 1) + tab); + } + fn += line[i]; + i++; + } + } + else if (delta < 0 && !isParen) { + return this.$toIndent(line.substring(0, i + 1)); + } + else if (delta > 0) { + baseIndent = baseIndent.substring(0, baseIndent.length - tab.length); + return baseIndent; + } + else { + return baseIndent; + } + }; + this.getNextLineIndent = function (state, line, tab) { + return this.$calculateIndent(line, tab); + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.$id = "ace/mode/clojure"; + this.snippetFileId = "ace/snippets/clojure"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/clojure"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/a3364b0ae17abf3b8dc45ac0fc88138f.js.gz b/web/dist/a3364b0ae17abf3b8dc45ac0fc88138f.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..db1b0b36abd731736a0d8e5eb9e4a5a863f1f434 GIT binary patch literal 3967 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 Zj*dTUm7fmTsNtZ4{U>=ud+47s008-ytEK<| literal 0 HcmV?d00001 diff --git a/web/dist/a65537c91d9088b603c93b6398f580c0.js b/web/dist/a65537c91d9088b603c93b6398f580c0.js new file mode 100644 index 00000000..b5e56858 --- /dev/null +++ b/web/dist/a65537c91d9088b603c93b6398f580c0.js @@ -0,0 +1,2590 @@ +ace.define("ace/mode/xquery/xquery_lexer",["require","exports","module"], function(require, exports, module) { +module.exports = (function outer (modules, cache, entry) { + var previousRequire = typeof require == "function" && require; + function newRequire(name, jumped){ + if(!cache[name]) { + if(!modules[name]) { + var currentRequire = typeof require == "function" && require; + if (!jumped && currentRequire) return currentRequire(name, true); + if (previousRequire) return previousRequire(name, true); + var err = new Error('Cannot find module \'' + name + '\''); + err.code = 'MODULE_NOT_FOUND'; + throw err; + } + var m = cache[name] = {exports:{}}; + modules[name][0].call(m.exports, function(x){ + var id = modules[name][1][x]; + return newRequire(id ? id : x); + },m,m.exports,outer,modules,cache,entry); + } + return cache[name].exports; + } + for(var i=0;i= 0 ? XQueryTokenizer.TOKEN[o] : null; + }; + + this.getExpectedTokenSet = function(e) + { + var expected; + if (e.getExpected() < 0) + { + expected = XQueryTokenizer.getTokenSet(- e.getState()); + } + else + { + expected = [XQueryTokenizer.TOKEN[e.getExpected()]]; + } + return expected; + }; + + this.getErrorMessage = function(e) + { + var tokenSet = this.getExpectedTokenSet(e); + var found = this.getOffendingToken(e); + var prefix = input.substring(0, e.getBegin()); + var lines = prefix.split("\n"); + var line = lines.length; + var column = lines[line - 1].length + 1; + var size = e.getEnd() - e.getBegin(); + return e.getMessage() + + (found == null ? "" : ", found " + found) + + "\nwhile expecting " + + (tokenSet.length == 1 ? tokenSet[0] : ("[" + tokenSet.join(", ") + "]")) + + "\n" + + (size == 0 || found != null ? "" : "after successfully scanning " + size + " characters beginning ") + + "at line " + line + ", column " + column + ":\n..." + + input.substring(e.getBegin(), Math.min(input.length, e.getBegin() + 64)) + + "..."; + }; + + this.parse_start = function() + { + eventHandler.startNonterminal("start", e0); + lookahead1W(14); // ModuleDecl | Annotation | OptionDecl | Operator | Variable | Tag | AttrTest | + switch (l1) + { + case 55: // '' | '=' | '>' + switch (l1) + { + case 58: // '>' + shift(58); // '>' + break; + case 50: // '/>' + shift(50); // '/>' + break; + case 27: // QName + shift(27); // QName + break; + case 57: // '=' + shift(57); // '=' + break; + case 35: // '"' + shift(35); // '"' + break; + case 38: // "'" + shift(38); // "'" + break; + default: + shift(33); // EOF + } + eventHandler.endNonterminal("StartTag", e0); + }; + + this.parse_TagContent = function() + { + eventHandler.startNonterminal("TagContent", e0); + lookahead1(11); // Tag | EndTag | PredefinedEntityRef | ElementContentChar | CharRef | EOF | + switch (l1) + { + case 23: // ElementContentChar + shift(23); // ElementContentChar + break; + case 6: // Tag + shift(6); // Tag + break; + case 7: // EndTag + shift(7); // EndTag + break; + case 55: // '' + switch (l1) + { + case 11: // CDataSectionContents + shift(11); // CDataSectionContents + break; + case 64: // ']]>' + shift(64); // ']]>' + break; + default: + shift(33); // EOF + } + eventHandler.endNonterminal("CData", e0); + }; + + this.parse_XMLComment = function() + { + eventHandler.startNonterminal("XMLComment", e0); + lookahead1(0); // DirCommentContents | EOF | '-->' + switch (l1) + { + case 9: // DirCommentContents + shift(9); // DirCommentContents + break; + case 47: // '-->' + shift(47); // '-->' + break; + default: + shift(33); // EOF + } + eventHandler.endNonterminal("XMLComment", e0); + }; + + this.parse_PI = function() + { + eventHandler.startNonterminal("PI", e0); + lookahead1(3); // DirPIContents | EOF | '?' | '?>' + switch (l1) + { + case 10: // DirPIContents + shift(10); // DirPIContents + break; + case 59: // '?' + shift(59); // '?' + break; + case 60: // '?>' + shift(60); // '?>' + break; + default: + shift(33); // EOF + } + eventHandler.endNonterminal("PI", e0); + }; + + this.parse_Pragma = function() + { + eventHandler.startNonterminal("Pragma", e0); + lookahead1(2); // PragmaContents | EOF | '#' | '#)' + switch (l1) + { + case 8: // PragmaContents + shift(8); // PragmaContents + break; + case 36: // '#' + shift(36); // '#' + break; + case 37: // '#)' + shift(37); // '#)' + break; + default: + shift(33); // EOF + } + eventHandler.endNonterminal("Pragma", e0); + }; + + this.parse_Comment = function() + { + eventHandler.startNonterminal("Comment", e0); + lookahead1(4); // CommentContents | EOF | '(:' | ':)' + switch (l1) + { + case 52: // ':)' + shift(52); // ':)' + break; + case 41: // '(:' + shift(41); // '(:' + break; + case 30: // CommentContents + shift(30); // CommentContents + break; + default: + shift(33); // EOF + } + eventHandler.endNonterminal("Comment", e0); + }; + + this.parse_CommentDoc = function() + { + eventHandler.startNonterminal("CommentDoc", e0); + lookahead1(5); // DocTag | DocCommentContents | EOF | '(:' | ':)' + switch (l1) + { + case 31: // DocTag + shift(31); // DocTag + break; + case 32: // DocCommentContents + shift(32); // DocCommentContents + break; + case 52: // ':)' + shift(52); // ':)' + break; + case 41: // '(:' + shift(41); // '(:' + break; + default: + shift(33); // EOF + } + eventHandler.endNonterminal("CommentDoc", e0); + }; + + this.parse_QuotString = function() + { + eventHandler.startNonterminal("QuotString", e0); + lookahead1(6); // PredefinedEntityRef | EscapeQuot | QuotChar | CharRef | EOF | '"' + switch (l1) + { + case 18: // PredefinedEntityRef + shift(18); // PredefinedEntityRef + break; + case 29: // CharRef + shift(29); // CharRef + break; + case 19: // EscapeQuot + shift(19); // EscapeQuot + break; + case 21: // QuotChar + shift(21); // QuotChar + break; + case 35: // '"' + shift(35); // '"' + break; + default: + shift(33); // EOF + } + eventHandler.endNonterminal("QuotString", e0); + }; + + this.parse_AposString = function() + { + eventHandler.startNonterminal("AposString", e0); + lookahead1(7); // PredefinedEntityRef | EscapeApos | AposChar | CharRef | EOF | "'" + switch (l1) + { + case 18: // PredefinedEntityRef + shift(18); // PredefinedEntityRef + break; + case 29: // CharRef + shift(29); // CharRef + break; + case 20: // EscapeApos + shift(20); // EscapeApos + break; + case 22: // AposChar + shift(22); // AposChar + break; + case 38: // "'" + shift(38); // "'" + break; + default: + shift(33); // EOF + } + eventHandler.endNonterminal("AposString", e0); + }; + + this.parse_Prefix = function() + { + eventHandler.startNonterminal("Prefix", e0); + lookahead1W(13); // NCName^Token | S^WS | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + whitespace(); + parse_NCName(); + eventHandler.endNonterminal("Prefix", e0); + }; + + this.parse__EQName = function() + { + eventHandler.startNonterminal("_EQName", e0); + lookahead1W(12); // EQName^Token | S^WS | 'after' | 'allowing' | 'ancestor' | 'ancestor-or-self' | + whitespace(); + parse_EQName(); + eventHandler.endNonterminal("_EQName", e0); + }; + + function parse_EQName() + { + eventHandler.startNonterminal("EQName", e0); + switch (l1) + { + case 77: // 'attribute' + shift(77); // 'attribute' + break; + case 91: // 'comment' + shift(91); // 'comment' + break; + case 115: // 'document-node' + shift(115); // 'document-node' + break; + case 116: // 'element' + shift(116); // 'element' + break; + case 119: // 'empty-sequence' + shift(119); // 'empty-sequence' + break; + case 140: // 'function' + shift(140); // 'function' + break; + case 147: // 'if' + shift(147); // 'if' + break; + case 160: // 'item' + shift(160); // 'item' + break; + case 180: // 'namespace-node' + shift(180); // 'namespace-node' + break; + case 186: // 'node' + shift(186); // 'node' + break; + case 211: // 'processing-instruction' + shift(211); // 'processing-instruction' + break; + case 221: // 'schema-attribute' + shift(221); // 'schema-attribute' + break; + case 222: // 'schema-element' + shift(222); // 'schema-element' + break; + case 238: // 'switch' + shift(238); // 'switch' + break; + case 239: // 'text' + shift(239); // 'text' + break; + case 248: // 'typeswitch' + shift(248); // 'typeswitch' + break; + default: + parse_FunctionName(); + } + eventHandler.endNonterminal("EQName", e0); + } + + function parse_FunctionName() + { + eventHandler.startNonterminal("FunctionName", e0); + switch (l1) + { + case 14: // EQName^Token + shift(14); // EQName^Token + break; + case 65: // 'after' + shift(65); // 'after' + break; + case 68: // 'ancestor' + shift(68); // 'ancestor' + break; + case 69: // 'ancestor-or-self' + shift(69); // 'ancestor-or-self' + break; + case 70: // 'and' + shift(70); // 'and' + break; + case 74: // 'as' + shift(74); // 'as' + break; + case 75: // 'ascending' + shift(75); // 'ascending' + break; + case 79: // 'before' + shift(79); // 'before' + break; + case 83: // 'case' + shift(83); // 'case' + break; + case 84: // 'cast' + shift(84); // 'cast' + break; + case 85: // 'castable' + shift(85); // 'castable' + break; + case 88: // 'child' + shift(88); // 'child' + break; + case 89: // 'collation' + shift(89); // 'collation' + break; + case 98: // 'copy' + shift(98); // 'copy' + break; + case 100: // 'count' + shift(100); // 'count' + break; + case 103: // 'declare' + shift(103); // 'declare' + break; + case 104: // 'default' + shift(104); // 'default' + break; + case 105: // 'delete' + shift(105); // 'delete' + break; + case 106: // 'descendant' + shift(106); // 'descendant' + break; + case 107: // 'descendant-or-self' + shift(107); // 'descendant-or-self' + break; + case 108: // 'descending' + shift(108); // 'descending' + break; + case 113: // 'div' + shift(113); // 'div' + break; + case 114: // 'document' + shift(114); // 'document' + break; + case 117: // 'else' + shift(117); // 'else' + break; + case 118: // 'empty' + shift(118); // 'empty' + break; + case 121: // 'end' + shift(121); // 'end' + break; + case 123: // 'eq' + shift(123); // 'eq' + break; + case 124: // 'every' + shift(124); // 'every' + break; + case 126: // 'except' + shift(126); // 'except' + break; + case 129: // 'first' + shift(129); // 'first' + break; + case 130: // 'following' + shift(130); // 'following' + break; + case 131: // 'following-sibling' + shift(131); // 'following-sibling' + break; + case 132: // 'for' + shift(132); // 'for' + break; + case 141: // 'ge' + shift(141); // 'ge' + break; + case 143: // 'group' + shift(143); // 'group' + break; + case 145: // 'gt' + shift(145); // 'gt' + break; + case 146: // 'idiv' + shift(146); // 'idiv' + break; + case 148: // 'import' + shift(148); // 'import' + break; + case 154: // 'insert' + shift(154); // 'insert' + break; + case 155: // 'instance' + shift(155); // 'instance' + break; + case 157: // 'intersect' + shift(157); // 'intersect' + break; + case 158: // 'into' + shift(158); // 'into' + break; + case 159: // 'is' + shift(159); // 'is' + break; + case 165: // 'last' + shift(165); // 'last' + break; + case 167: // 'le' + shift(167); // 'le' + break; + case 169: // 'let' + shift(169); // 'let' + break; + case 173: // 'lt' + shift(173); // 'lt' + break; + case 175: // 'mod' + shift(175); // 'mod' + break; + case 176: // 'modify' + shift(176); // 'modify' + break; + case 177: // 'module' + shift(177); // 'module' + break; + case 179: // 'namespace' + shift(179); // 'namespace' + break; + case 181: // 'ne' + shift(181); // 'ne' + break; + case 193: // 'only' + shift(193); // 'only' + break; + case 195: // 'or' + shift(195); // 'or' + break; + case 196: // 'order' + shift(196); // 'order' + break; + case 197: // 'ordered' + shift(197); // 'ordered' + break; + case 201: // 'parent' + shift(201); // 'parent' + break; + case 207: // 'preceding' + shift(207); // 'preceding' + break; + case 208: // 'preceding-sibling' + shift(208); // 'preceding-sibling' + break; + case 213: // 'rename' + shift(213); // 'rename' + break; + case 214: // 'replace' + shift(214); // 'replace' + break; + case 215: // 'return' + shift(215); // 'return' + break; + case 219: // 'satisfies' + shift(219); // 'satisfies' + break; + case 224: // 'self' + shift(224); // 'self' + break; + case 230: // 'some' + shift(230); // 'some' + break; + case 231: // 'stable' + shift(231); // 'stable' + break; + case 232: // 'start' + shift(232); // 'start' + break; + case 243: // 'to' + shift(243); // 'to' + break; + case 244: // 'treat' + shift(244); // 'treat' + break; + case 245: // 'try' + shift(245); // 'try' + break; + case 249: // 'union' + shift(249); // 'union' + break; + case 251: // 'unordered' + shift(251); // 'unordered' + break; + case 255: // 'validate' + shift(255); // 'validate' + break; + case 261: // 'where' + shift(261); // 'where' + break; + case 265: // 'with' + shift(265); // 'with' + break; + case 269: // 'xquery' + shift(269); // 'xquery' + break; + case 67: // 'allowing' + shift(67); // 'allowing' + break; + case 76: // 'at' + shift(76); // 'at' + break; + case 78: // 'base-uri' + shift(78); // 'base-uri' + break; + case 80: // 'boundary-space' + shift(80); // 'boundary-space' + break; + case 81: // 'break' + shift(81); // 'break' + break; + case 86: // 'catch' + shift(86); // 'catch' + break; + case 93: // 'construction' + shift(93); // 'construction' + break; + case 96: // 'context' + shift(96); // 'context' + break; + case 97: // 'continue' + shift(97); // 'continue' + break; + case 99: // 'copy-namespaces' + shift(99); // 'copy-namespaces' + break; + case 101: // 'decimal-format' + shift(101); // 'decimal-format' + break; + case 120: // 'encoding' + shift(120); // 'encoding' + break; + case 127: // 'exit' + shift(127); // 'exit' + break; + case 128: // 'external' + shift(128); // 'external' + break; + case 136: // 'ft-option' + shift(136); // 'ft-option' + break; + case 149: // 'in' + shift(149); // 'in' + break; + case 150: // 'index' + shift(150); // 'index' + break; + case 156: // 'integrity' + shift(156); // 'integrity' + break; + case 166: // 'lax' + shift(166); // 'lax' + break; + case 187: // 'nodes' + shift(187); // 'nodes' + break; + case 194: // 'option' + shift(194); // 'option' + break; + case 198: // 'ordering' + shift(198); // 'ordering' + break; + case 217: // 'revalidation' + shift(217); // 'revalidation' + break; + case 220: // 'schema' + shift(220); // 'schema' + break; + case 223: // 'score' + shift(223); // 'score' + break; + case 229: // 'sliding' + shift(229); // 'sliding' + break; + case 235: // 'strict' + shift(235); // 'strict' + break; + case 246: // 'tumbling' + shift(246); // 'tumbling' + break; + case 247: // 'type' + shift(247); // 'type' + break; + case 252: // 'updating' + shift(252); // 'updating' + break; + case 256: // 'value' + shift(256); // 'value' + break; + case 257: // 'variable' + shift(257); // 'variable' + break; + case 258: // 'version' + shift(258); // 'version' + break; + case 262: // 'while' + shift(262); // 'while' + break; + case 92: // 'constraint' + shift(92); // 'constraint' + break; + case 171: // 'loop' + shift(171); // 'loop' + break; + default: + shift(216); // 'returning' + } + eventHandler.endNonterminal("FunctionName", e0); + } + + function parse_NCName() + { + eventHandler.startNonterminal("NCName", e0); + switch (l1) + { + case 26: // NCName^Token + shift(26); // NCName^Token + break; + case 65: // 'after' + shift(65); // 'after' + break; + case 70: // 'and' + shift(70); // 'and' + break; + case 74: // 'as' + shift(74); // 'as' + break; + case 75: // 'ascending' + shift(75); // 'ascending' + break; + case 79: // 'before' + shift(79); // 'before' + break; + case 83: // 'case' + shift(83); // 'case' + break; + case 84: // 'cast' + shift(84); // 'cast' + break; + case 85: // 'castable' + shift(85); // 'castable' + break; + case 89: // 'collation' + shift(89); // 'collation' + break; + case 100: // 'count' + shift(100); // 'count' + break; + case 104: // 'default' + shift(104); // 'default' + break; + case 108: // 'descending' + shift(108); // 'descending' + break; + case 113: // 'div' + shift(113); // 'div' + break; + case 117: // 'else' + shift(117); // 'else' + break; + case 118: // 'empty' + shift(118); // 'empty' + break; + case 121: // 'end' + shift(121); // 'end' + break; + case 123: // 'eq' + shift(123); // 'eq' + break; + case 126: // 'except' + shift(126); // 'except' + break; + case 132: // 'for' + shift(132); // 'for' + break; + case 141: // 'ge' + shift(141); // 'ge' + break; + case 143: // 'group' + shift(143); // 'group' + break; + case 145: // 'gt' + shift(145); // 'gt' + break; + case 146: // 'idiv' + shift(146); // 'idiv' + break; + case 155: // 'instance' + shift(155); // 'instance' + break; + case 157: // 'intersect' + shift(157); // 'intersect' + break; + case 158: // 'into' + shift(158); // 'into' + break; + case 159: // 'is' + shift(159); // 'is' + break; + case 167: // 'le' + shift(167); // 'le' + break; + case 169: // 'let' + shift(169); // 'let' + break; + case 173: // 'lt' + shift(173); // 'lt' + break; + case 175: // 'mod' + shift(175); // 'mod' + break; + case 176: // 'modify' + shift(176); // 'modify' + break; + case 181: // 'ne' + shift(181); // 'ne' + break; + case 193: // 'only' + shift(193); // 'only' + break; + case 195: // 'or' + shift(195); // 'or' + break; + case 196: // 'order' + shift(196); // 'order' + break; + case 215: // 'return' + shift(215); // 'return' + break; + case 219: // 'satisfies' + shift(219); // 'satisfies' + break; + case 231: // 'stable' + shift(231); // 'stable' + break; + case 232: // 'start' + shift(232); // 'start' + break; + case 243: // 'to' + shift(243); // 'to' + break; + case 244: // 'treat' + shift(244); // 'treat' + break; + case 249: // 'union' + shift(249); // 'union' + break; + case 261: // 'where' + shift(261); // 'where' + break; + case 265: // 'with' + shift(265); // 'with' + break; + case 68: // 'ancestor' + shift(68); // 'ancestor' + break; + case 69: // 'ancestor-or-self' + shift(69); // 'ancestor-or-self' + break; + case 77: // 'attribute' + shift(77); // 'attribute' + break; + case 88: // 'child' + shift(88); // 'child' + break; + case 91: // 'comment' + shift(91); // 'comment' + break; + case 98: // 'copy' + shift(98); // 'copy' + break; + case 103: // 'declare' + shift(103); // 'declare' + break; + case 105: // 'delete' + shift(105); // 'delete' + break; + case 106: // 'descendant' + shift(106); // 'descendant' + break; + case 107: // 'descendant-or-self' + shift(107); // 'descendant-or-self' + break; + case 114: // 'document' + shift(114); // 'document' + break; + case 115: // 'document-node' + shift(115); // 'document-node' + break; + case 116: // 'element' + shift(116); // 'element' + break; + case 119: // 'empty-sequence' + shift(119); // 'empty-sequence' + break; + case 124: // 'every' + shift(124); // 'every' + break; + case 129: // 'first' + shift(129); // 'first' + break; + case 130: // 'following' + shift(130); // 'following' + break; + case 131: // 'following-sibling' + shift(131); // 'following-sibling' + break; + case 140: // 'function' + shift(140); // 'function' + break; + case 147: // 'if' + shift(147); // 'if' + break; + case 148: // 'import' + shift(148); // 'import' + break; + case 154: // 'insert' + shift(154); // 'insert' + break; + case 160: // 'item' + shift(160); // 'item' + break; + case 165: // 'last' + shift(165); // 'last' + break; + case 177: // 'module' + shift(177); // 'module' + break; + case 179: // 'namespace' + shift(179); // 'namespace' + break; + case 180: // 'namespace-node' + shift(180); // 'namespace-node' + break; + case 186: // 'node' + shift(186); // 'node' + break; + case 197: // 'ordered' + shift(197); // 'ordered' + break; + case 201: // 'parent' + shift(201); // 'parent' + break; + case 207: // 'preceding' + shift(207); // 'preceding' + break; + case 208: // 'preceding-sibling' + shift(208); // 'preceding-sibling' + break; + case 211: // 'processing-instruction' + shift(211); // 'processing-instruction' + break; + case 213: // 'rename' + shift(213); // 'rename' + break; + case 214: // 'replace' + shift(214); // 'replace' + break; + case 221: // 'schema-attribute' + shift(221); // 'schema-attribute' + break; + case 222: // 'schema-element' + shift(222); // 'schema-element' + break; + case 224: // 'self' + shift(224); // 'self' + break; + case 230: // 'some' + shift(230); // 'some' + break; + case 238: // 'switch' + shift(238); // 'switch' + break; + case 239: // 'text' + shift(239); // 'text' + break; + case 245: // 'try' + shift(245); // 'try' + break; + case 248: // 'typeswitch' + shift(248); // 'typeswitch' + break; + case 251: // 'unordered' + shift(251); // 'unordered' + break; + case 255: // 'validate' + shift(255); // 'validate' + break; + case 257: // 'variable' + shift(257); // 'variable' + break; + case 269: // 'xquery' + shift(269); // 'xquery' + break; + case 67: // 'allowing' + shift(67); // 'allowing' + break; + case 76: // 'at' + shift(76); // 'at' + break; + case 78: // 'base-uri' + shift(78); // 'base-uri' + break; + case 80: // 'boundary-space' + shift(80); // 'boundary-space' + break; + case 81: // 'break' + shift(81); // 'break' + break; + case 86: // 'catch' + shift(86); // 'catch' + break; + case 93: // 'construction' + shift(93); // 'construction' + break; + case 96: // 'context' + shift(96); // 'context' + break; + case 97: // 'continue' + shift(97); // 'continue' + break; + case 99: // 'copy-namespaces' + shift(99); // 'copy-namespaces' + break; + case 101: // 'decimal-format' + shift(101); // 'decimal-format' + break; + case 120: // 'encoding' + shift(120); // 'encoding' + break; + case 127: // 'exit' + shift(127); // 'exit' + break; + case 128: // 'external' + shift(128); // 'external' + break; + case 136: // 'ft-option' + shift(136); // 'ft-option' + break; + case 149: // 'in' + shift(149); // 'in' + break; + case 150: // 'index' + shift(150); // 'index' + break; + case 156: // 'integrity' + shift(156); // 'integrity' + break; + case 166: // 'lax' + shift(166); // 'lax' + break; + case 187: // 'nodes' + shift(187); // 'nodes' + break; + case 194: // 'option' + shift(194); // 'option' + break; + case 198: // 'ordering' + shift(198); // 'ordering' + break; + case 217: // 'revalidation' + shift(217); // 'revalidation' + break; + case 220: // 'schema' + shift(220); // 'schema' + break; + case 223: // 'score' + shift(223); // 'score' + break; + case 229: // 'sliding' + shift(229); // 'sliding' + break; + case 235: // 'strict' + shift(235); // 'strict' + break; + case 246: // 'tumbling' + shift(246); // 'tumbling' + break; + case 247: // 'type' + shift(247); // 'type' + break; + case 252: // 'updating' + shift(252); // 'updating' + break; + case 256: // 'value' + shift(256); // 'value' + break; + case 258: // 'version' + shift(258); // 'version' + break; + case 262: // 'while' + shift(262); // 'while' + break; + case 92: // 'constraint' + shift(92); // 'constraint' + break; + case 171: // 'loop' + shift(171); // 'loop' + break; + default: + shift(216); // 'returning' + } + eventHandler.endNonterminal("NCName", e0); + } + + function shift(t) + { + if (l1 == t) + { + whitespace(); + eventHandler.terminal(XQueryTokenizer.TOKEN[l1], b1, e1 > size ? size : e1); + b0 = b1; e0 = e1; l1 = 0; + } + else + { + error(b1, e1, 0, l1, t); + } + } + + function whitespace() + { + if (e0 != b1) + { + b0 = e0; + e0 = b1; + eventHandler.whitespace(b0, e0); + } + } + + function matchW(set) + { + var code; + for (;;) + { + code = match(set); + if (code != 28) // S^WS + { + break; + } + } + return code; + } + + function lookahead1W(set) + { + if (l1 == 0) + { + l1 = matchW(set); + b1 = begin; + e1 = end; + } + } + + function lookahead1(set) + { + if (l1 == 0) + { + l1 = match(set); + b1 = begin; + e1 = end; + } + } + + function error(b, e, s, l, t) + { + throw new self.ParseException(b, e, s, l, t); + } + + var lk, b0, e0; + var l1, b1, e1; + var eventHandler; + + var input; + var size; + var begin; + var end; + + function match(tokenSetId) + { + var nonbmp = false; + begin = end; + var current = end; + var result = XQueryTokenizer.INITIAL[tokenSetId]; + var state = 0; + + for (var code = result & 4095; code != 0; ) + { + var charclass; + var c0 = current < size ? input.charCodeAt(current) : 0; + ++current; + if (c0 < 0x80) + { + charclass = XQueryTokenizer.MAP0[c0]; + } + else if (c0 < 0xd800) + { + var c1 = c0 >> 4; + charclass = XQueryTokenizer.MAP1[(c0 & 15) + XQueryTokenizer.MAP1[(c1 & 31) + XQueryTokenizer.MAP1[c1 >> 5]]]; + } + else + { + if (c0 < 0xdc00) + { + var c1 = current < size ? input.charCodeAt(current) : 0; + if (c1 >= 0xdc00 && c1 < 0xe000) + { + ++current; + c0 = ((c0 & 0x3ff) << 10) + (c1 & 0x3ff) + 0x10000; + nonbmp = true; + } + } + var lo = 0, hi = 5; + for (var m = 3; ; m = (hi + lo) >> 1) + { + if (XQueryTokenizer.MAP2[m] > c0) hi = m - 1; + else if (XQueryTokenizer.MAP2[6 + m] < c0) lo = m + 1; + else {charclass = XQueryTokenizer.MAP2[12 + m]; break;} + if (lo > hi) {charclass = 0; break;} + } + } + + state = code; + var i0 = (charclass << 12) + code - 1; + code = XQueryTokenizer.TRANSITION[(i0 & 15) + XQueryTokenizer.TRANSITION[i0 >> 4]]; + + if (code > 4095) + { + result = code; + code &= 4095; + end = current; + } + } + + result >>= 12; + if (result == 0) + { + end = current - 1; + var c1 = end < size ? input.charCodeAt(end) : 0; + if (c1 >= 0xdc00 && c1 < 0xe000) --end; + return error(begin, end, state, -1, -1); + } + + if (nonbmp) + { + for (var i = result >> 9; i > 0; --i) + { + --end; + var c1 = end < size ? input.charCodeAt(end) : 0; + if (c1 >= 0xdc00 && c1 < 0xe000) --end; + } + } + else + { + end -= result >> 9; + } + + return (result & 511) - 1; + } +} + +XQueryTokenizer.getTokenSet = function(tokenSetId) +{ + var set = []; + var s = tokenSetId < 0 ? - tokenSetId : INITIAL[tokenSetId] & 4095; + for (var i = 0; i < 276; i += 32) + { + var j = i; + var i0 = (i >> 5) * 2062 + s - 1; + var i1 = i0 >> 2; + var i2 = i1 >> 2; + var f = XQueryTokenizer.EXPECTED[(i0 & 3) + XQueryTokenizer.EXPECTED[(i1 & 3) + XQueryTokenizer.EXPECTED[(i2 & 3) + XQueryTokenizer.EXPECTED[i2 >> 2]]]]; + for ( ; f != 0; f >>>= 1, ++j) + { + if ((f & 1) != 0) + { + set.push(XQueryTokenizer.TOKEN[j]); + } + } + } + return set; +}; + +XQueryTokenizer.MAP0 = +[ 66, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 27, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 32, 31, 31, 33, 31, 31, 31, 31, 31, 31, 34, 35, 36, 35, 31, 35, 37, 38, 39, 40, 41, 42, 43, 44, 45, 31, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 31, 61, 62, 63, 64, 35 +]; + +XQueryTokenizer.MAP1 = +[ 108, 124, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 156, 181, 181, 181, 181, 181, 214, 215, 213, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 247, 261, 277, 293, 309, 347, 363, 379, 416, 416, 416, 408, 331, 323, 331, 323, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 433, 433, 433, 433, 433, 433, 433, 316, 331, 331, 331, 331, 331, 331, 331, 331, 394, 416, 416, 417, 415, 416, 416, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 416, 330, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 416, 66, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 27, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 35, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 32, 31, 31, 33, 31, 31, 31, 31, 31, 31, 34, 35, 36, 35, 31, 35, 37, 38, 39, 40, 41, 42, 43, 44, 45, 31, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 31, 61, 62, 63, 64, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 31, 31, 35, 35, 35, 35, 35, 35, 35, 65, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65 +]; + +XQueryTokenizer.MAP2 = +[ 57344, 63744, 64976, 65008, 65536, 983040, 63743, 64975, 65007, 65533, 983039, 1114111, 35, 31, 35, 31, 31, 35 +]; + +XQueryTokenizer.INITIAL = +[ 1, 2, 36867, 45060, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 +]; + +XQueryTokenizer.TRANSITION = +[ 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22908, 18836, 17152, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 17365, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 17470, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 18157, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 17848, 17880, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18023, 36545, 18621, 18039, 18056, 18072, 18117, 18143, 18173, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17687, 18805, 18421, 18437, 18101, 17393, 18489, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 18579, 21711, 17152, 19008, 19233, 20367, 19008, 28684, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 17365, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 17470, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 18157, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 17848, 17880, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18023, 36545, 18621, 18039, 18056, 18072, 18117, 18143, 18173, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17687, 18805, 18421, 18437, 18101, 17393, 18489, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 20116, 18836, 18637, 19008, 19233, 21267, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 18763, 18778, 18794, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 18821, 22923, 18906, 19008, 19233, 17431, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18937, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 19054, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 18953, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21843, 18836, 18987, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21696, 18836, 18987, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22429, 20131, 18720, 19008, 19233, 20367, 19008, 17173, 23559, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 18087, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 21242, 19111, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 19024, 18836, 18609, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 19081, 22444, 18987, 19008, 19233, 20367, 19008, 19065, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21992, 22007, 18987, 19008, 19233, 20367, 19008, 18690, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22414, 18836, 18987, 19008, 19233, 30651, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 19138, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 19280, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 19172, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21783, 18836, 18987, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 19218, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21651, 18836, 18987, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 19249, 19265, 19307, 18888, 27857, 30536, 24401, 31444, 23357, 18888, 19351, 18888, 18890, 27211, 19370, 27211, 27211, 19392, 24401, 31911, 24401, 24401, 25467, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 28537, 19440, 24401, 24401, 24401, 24401, 24036, 17994, 24060, 18888, 18888, 18888, 18890, 19468, 27211, 27211, 27211, 27211, 19484, 35367, 19520, 24401, 24401, 24401, 19628, 18888, 29855, 18888, 18888, 23086, 27211, 19538, 27211, 27211, 30756, 24012, 24401, 19560, 24401, 24401, 26750, 18888, 18888, 19327, 27855, 27211, 27211, 19580, 17590, 24017, 24401, 24401, 19600, 25665, 18888, 18888, 28518, 27211, 27212, 24016, 19620, 19868, 28435, 25722, 18889, 19644, 27211, 32888, 35852, 19868, 31018, 19694, 19376, 19717, 22215, 19735, 22098, 19751, 35203, 19776, 19797, 19817, 19840, 25783, 31738, 24135, 19701, 19856, 31015, 23516, 31008, 28311, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21768, 18836, 19307, 18888, 27857, 27904, 24401, 29183, 28015, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 19888, 24401, 24401, 24401, 24401, 22953, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 28537, 19440, 24401, 24401, 24401, 24401, 24036, 18881, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 19628, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 24012, 24401, 24401, 24401, 24401, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22399, 18836, 19918, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21666, 18836, 19307, 18888, 27857, 27525, 24401, 29183, 21467, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 19946, 24401, 24401, 24401, 24401, 32382, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 28537, 19998, 24401, 24401, 24401, 24401, 31500, 18467, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 20021, 24401, 24401, 24401, 24401, 24401, 34271, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 32926, 29908, 24401, 24401, 24401, 24401, 26095, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 20050, 22968, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 35779, 20080, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 20101, 19039, 20191, 20412, 20903, 17569, 20309, 20872, 25633, 20623, 20505, 20218, 20242, 17189, 17208, 17281, 20355, 20265, 20306, 20328, 20383, 22490, 20796, 20619, 21354, 20654, 20410, 20956, 21232, 20765, 17421, 20535, 17192, 18127, 22459, 20312, 25531, 22470, 20309, 20428, 18964, 20466, 20491, 21342, 21070, 20521, 20682, 17714, 18326, 17543, 17559, 17585, 22497, 20559, 19504, 20279, 20575, 20290, 20475, 20604, 20639, 20226, 20670, 17661, 21190, 17703, 21176, 17730, 19494, 20698, 20711, 22480, 21046, 21116, 18971, 21130, 20727, 20755, 17675, 17753, 17832, 17590, 25518, 20394, 20781, 20831, 20202, 20847, 21401, 17292, 17934, 17979, 18549, 20863, 20588, 25542, 20888, 20919, 18072, 18117, 20935, 20972, 21032, 21062, 21086, 18239, 21102, 18563, 21146, 21162, 21206, 18351, 20949, 20902, 18340, 21222, 21258, 21283, 18360, 20249, 17405, 21295, 21311, 21327, 20739, 20343, 21370, 21386, 21417, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21977, 18836, 18987, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 21452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 21504, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 36501, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 28674, 21946, 17617, 36473, 18223, 17237, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 21575, 21534, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 21560, 30628, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21798, 18836, 21612, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21636, 18836, 18987, 19008, 19233, 17902, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21753, 19096, 21903, 19008, 19233, 20367, 19008, 19291, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 17379, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 21931, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 18280, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21962, 18594, 18987, 19008, 19233, 22043, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21681, 21858, 18987, 19008, 19233, 20367, 19008, 21544, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, 22059, 18888, 27857, 34097, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 30613, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 31500, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 32319, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 21431, 24401, 24401, 24401, 24401, 26095, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 22187, 22968, 24401, 24401, 24401, 22231, 18888, 18888, 27211, 27211, 35779, 20080, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, 22059, 18888, 27857, 34097, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 30613, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 31500, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 31181, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 21431, 24401, 24401, 24401, 24401, 26095, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 22187, 22968, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 35779, 20080, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, 22059, 18888, 27857, 34097, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 31678, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 31500, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 31181, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 21431, 24401, 24401, 24401, 24401, 26095, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 22187, 22968, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 35779, 20080, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, 22059, 18888, 27857, 34097, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 30613, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 33588, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 31181, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 21431, 24401, 24401, 24401, 24401, 26095, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 22187, 22968, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 35779, 20080, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, 22059, 18888, 27857, 35019, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22248, 24401, 24401, 24401, 24401, 30613, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 31500, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 31181, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 21431, 24401, 24401, 24401, 24401, 26095, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 22187, 22968, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 35779, 20080, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, 22059, 18888, 27857, 34097, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 18866, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 24036, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 19628, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 24012, 24401, 24401, 24401, 24401, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22324, 18836, 22059, 18888, 27857, 30501, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 18866, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 24036, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 19628, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 24012, 24401, 24401, 24401, 24401, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, 22059, 18888, 27857, 34097, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 18866, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 24036, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 19628, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 24012, 24401, 24401, 24401, 24401, 34365, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22354, 18836, 18987, 19008, 19233, 20367, 19008, 17173, 27086, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 19930, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21828, 18836, 18987, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22309, 22513, 18987, 19008, 19233, 20367, 19008, 19122, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 22544, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22608, 18836, 22988, 23004, 27585, 23020, 23036, 23067, 22087, 18888, 18888, 18888, 23083, 27211, 27211, 27211, 23102, 22121, 24401, 24401, 24401, 23122, 31386, 26154, 19674, 18888, 28119, 28232, 19424, 23705, 27211, 27211, 23142, 23173, 23189, 23212, 24401, 24401, 23246, 34427, 31693, 23262, 18888, 23290, 23308, 27783, 27620, 23327, 35263, 35107, 33383, 23346, 18193, 23393, 32748, 23968, 24401, 23414, 35153, 23463, 18888, 33913, 23442, 23482, 27211, 27211, 23532, 23552, 21431, 23575, 24401, 24401, 23604, 26095, 23635, 23657, 18888, 33482, 23685, 33251, 27211, 22187, 18851, 23721, 35536, 24401, 18887, 23750, 32641, 27211, 23769, 23787, 20080, 33012, 24384, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 23803, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 28224, 31826, 23823, 26917, 34978, 23850, 26493, 25782, 23878, 23914, 23516, 31008, 22105, 19419, 27963, 19659, 29781, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22623, 18836, 22059, 18888, 27857, 34097, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 30613, 18888, 18888, 18888, 18888, 28909, 25783, 27211, 27211, 27211, 34048, 23933, 22164, 24401, 24401, 24401, 28409, 23949, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 31181, 26583, 18888, 18888, 18888, 35585, 23984, 27211, 27211, 27211, 24005, 22201, 24033, 24401, 24401, 24401, 24052, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 22187, 22968, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 35779, 20080, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 26496, 24076, 24126, 24151, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22638, 18836, 22059, 19678, 27857, 24185, 24401, 24201, 24217, 26592, 18888, 18888, 18890, 24252, 24268, 27211, 27211, 22121, 24287, 24303, 24401, 24401, 30613, 19781, 35432, 36007, 32649, 18888, 25783, 24322, 28966, 23771, 27211, 35072, 22164, 24358, 32106, 26829, 24400, 31500, 31693, 18888, 18888, 18888, 24801, 18890, 27211, 27211, 27211, 27211, 24418, 19484, 24401, 24401, 24401, 24401, 20167, 31181, 18888, 18888, 18888, 27833, 23086, 27211, 27211, 33540, 27211, 30756, 21431, 24401, 24401, 22972, 24401, 26095, 18888, 36131, 18888, 27855, 27211, 24440, 27211, 22187, 22968, 24401, 24459, 24401, 31699, 28454, 18888, 34528, 34570, 35779, 24478, 24402, 24494, 25659, 18888, 36228, 27211, 27211, 24515, 30981, 23734, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 24538, 31017, 27856, 31741, 30059, 23377, 24563, 19837, 25782, 19760, 31015, 23516, 25374, 22105, 19419, 29793, 24579, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22653, 18836, 22059, 25756, 19982, 34097, 23196, 29183, 24614, 24110, 23641, 24673, 26103, 24697, 24443, 24713, 28558, 22121, 24748, 24462, 24764, 23398, 30613, 18888, 18888, 18888, 18888, 24798, 25783, 27211, 27211, 27211, 34232, 35072, 22164, 24401, 24401, 24401, 33302, 31500, 22559, 24106, 24232, 18888, 18888, 34970, 24817, 30411, 27211, 27211, 32484, 19484, 29750, 35127, 24401, 24401, 19872, 31181, 24852, 18888, 18888, 24871, 29221, 27211, 27211, 32072, 27211, 30756, 34441, 24401, 24401, 31571, 24401, 26095, 33141, 27802, 27011, 27855, 25295, 25607, 24888, 22187, 22968, 19195, 34593, 24906, 18887, 18888, 18888, 27211, 27211, 35779, 20080, 24402, 19868, 25659, 18888, 33663, 27211, 27211, 24924, 24947, 23588, 31018, 18890, 27211, 31833, 22135, 19447, 23086, 23330, 19828, 30904, 31042, 24972, 19840, 25000, 31738, 30898, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 25016, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22668, 18836, 25041, 25057, 31320, 25073, 25089, 25105, 22087, 34796, 24236, 36138, 34870, 34125, 25121, 23106, 35497, 22248, 36613, 25137, 30671, 27365, 30613, 25153, 26447, 25199, 25233, 22574, 23274, 25249, 25265, 25281, 25318, 25344, 25360, 25400, 25428, 25452, 26731, 25504, 31693, 23669, 25558, 27407, 25575, 28599, 25934, 25599, 27211, 28180, 27304, 25623, 25839, 25649, 24401, 34820, 25681, 25698, 22586, 27775, 30190, 25745, 25778, 25799, 25817, 28995, 33569, 30756, 21518, 33443, 25837, 25855, 25893, 26095, 31254, 26677, 30136, 27855, 25930, 25950, 27211, 22187, 22968, 25966, 25986, 24401, 23428, 27763, 36330, 26959, 26002, 26029, 26045, 26085, 26119, 26170, 26203, 26222, 26239, 30527, 26372, 26274, 28404, 31018, 33757, 27211, 34262, 26316, 36729, 26345, 26366, 35337, 31017, 26388, 26407, 30954, 26350, 33861, 26434, 26463, 26479, 26512, 23516, 33189, 26531, 26547, 27963, 31293, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22683, 18836, 26568, 26181, 26608, 34097, 26643, 29183, 22087, 26669, 18888, 18888, 18890, 26693, 27211, 27211, 27211, 22121, 26720, 24401, 24401, 24401, 30613, 18888, 18888, 18888, 18888, 26774, 25783, 27211, 27211, 27211, 26619, 35072, 22164, 24401, 24401, 24401, 21596, 31500, 31693, 18888, 18888, 33978, 18888, 18890, 27211, 27211, 25801, 27211, 27211, 19484, 24401, 24401, 24401, 26792, 24401, 31181, 18888, 18888, 18888, 35464, 23086, 27211, 27211, 27211, 26809, 30756, 21431, 24401, 24401, 24401, 26828, 26095, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 22187, 22968, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 35779, 20080, 24402, 19868, 25659, 31948, 18889, 35707, 27211, 19719, 26845, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 26905, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 24984, 31088, 19419, 26945, 27651, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22698, 18836, 26999, 18888, 27857, 34097, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 23051, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 27033, 24401, 24401, 24401, 24401, 24036, 31693, 18888, 18888, 27056, 18888, 18890, 27211, 27211, 30320, 27211, 27211, 27075, 24401, 24401, 29032, 24401, 24401, 19628, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 24012, 24401, 24401, 24401, 24401, 26750, 18888, 18888, 33986, 27855, 27211, 27211, 27102, 17590, 24017, 24401, 24401, 27123, 27144, 36254, 27162, 27210, 27228, 28500, 18187, 34842, 33426, 27244, 35980, 27277, 27302, 27320, 36048, 34013, 20999, 31882, 21478, 27895, 27356, 30287, 27381, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 26329, 30087, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, 22059, 27406, 27423, 27445, 35294, 27461, 22087, 18888, 18888, 30140, 18890, 27211, 27211, 27989, 27211, 22121, 24401, 24401, 25682, 24401, 18866, 18888, 18888, 18888, 18888, 18888, 34042, 27211, 27211, 27211, 27211, 29700, 22164, 24401, 24401, 24401, 24401, 27128, 31693, 27477, 18888, 18888, 18888, 18890, 27194, 27211, 27211, 27211, 27211, 19484, 35299, 24401, 24401, 24401, 24401, 19628, 18888, 18888, 18888, 27059, 23086, 27211, 27211, 27211, 33366, 30756, 24012, 24401, 24401, 24401, 35044, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 20815, 27211, 30818, 19960, 33969, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22713, 18836, 22059, 27496, 27516, 27541, 35231, 27557, 22087, 29662, 26292, 23292, 27573, 24836, 27601, 27211, 27636, 22121, 35544, 27686, 24401, 27721, 18866, 18888, 27799, 18888, 27818, 22071, 27853, 32260, 27211, 26013, 27873, 27920, 22164, 29419, 24401, 29946, 33413, 26742, 27751, 26881, 18888, 18888, 27261, 36776, 27936, 27211, 27211, 27211, 27988, 28005, 28031, 28052, 24401, 24401, 28069, 28088, 28135, 25488, 28152, 26069, 28167, 27211, 28340, 24657, 28196, 30756, 31523, 24401, 28212, 34176, 36174, 24956, 28248, 28266, 28290, 21488, 33077, 28327, 28356, 17590, 20986, 23126, 28391, 28425, 28102, 28451, 28470, 28490, 28516, 28534, 20034, 33728, 25868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 30241, 28274, 28553, 28574, 19406, 28590, 23086, 23330, 19828, 19452, 28615, 28660, 26147, 25783, 31738, 19837, 25782, 19760, 29613, 35958, 29276, 22105, 19419, 27963, 23157, 28700, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, 22059, 18888, 27857, 34097, 24401, 29183, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 18866, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 24036, 22528, 18888, 18888, 18888, 18888, 18890, 27333, 27211, 27211, 27211, 27211, 19484, 30853, 24401, 24401, 24401, 24401, 19628, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 24012, 24401, 24401, 24401, 24401, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22728, 18836, 28747, 28782, 28817, 28841, 28857, 28880, 28896, 24161, 28943, 32011, 36261, 27340, 28961, 29492, 28982, 29011, 24522, 29027, 25436, 29048, 23051, 27500, 29090, 29110, 30713, 18888, 23512, 29130, 25183, 27211, 29155, 28927, 27033, 29173, 23230, 24401, 29199, 35373, 31693, 18888, 18888, 25583, 32629, 29218, 27211, 27211, 31461, 30692, 29237, 27075, 24401, 24401, 24401, 29262, 29302, 19628, 18888, 34329, 18888, 18888, 23086, 27211, 29329, 27211, 27211, 30756, 24012, 35933, 24401, 24401, 24401, 27705, 31612, 18888, 18888, 29346, 29374, 27211, 35650, 17590, 21436, 29393, 24401, 25970, 18887, 33895, 18888, 27211, 32528, 27212, 24016, 32769, 19868, 25659, 18888, 26889, 27211, 27211, 29412, 23889, 24371, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31768, 19840, 25783, 31738, 19837, 29435, 29508, 31102, 29550, 29606, 22105, 30300, 29462, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22743, 18836, 22059, 29629, 29473, 34097, 33285, 29183, 29651, 27254, 18888, 29678, 33329, 32535, 27211, 29694, 29716, 22121, 19202, 24401, 32742, 29741, 18866, 26776, 33921, 28474, 18888, 18888, 25783, 29766, 27211, 29809, 27211, 35072, 22164, 35825, 24401, 29828, 24401, 24036, 36769, 25217, 18888, 18888, 29848, 18890, 27211, 29871, 27211, 26258, 27211, 29894, 24401, 29929, 24401, 36587, 24401, 19628, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 29725, 29962, 24401, 24401, 24401, 24401, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18473, 18888, 18888, 19584, 27211, 27212, 24016, 29982, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19902, 19447, 32052, 19544, 19828, 29998, 30097, 30031, 19840, 25783, 30047, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 30075, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22758, 18836, 30121, 30156, 30206, 30257, 30273, 30336, 22087, 35624, 32837, 25762, 18890, 29878, 34934, 26812, 27211, 22121, 24931, 23223, 29202, 24401, 18866, 34373, 30352, 18888, 18888, 18888, 23447, 24828, 27211, 27211, 27211, 35072, 30370, 35052, 24401, 24401, 24401, 24036, 29523, 18888, 18888, 27146, 18888, 31308, 30386, 27211, 27211, 30405, 30558, 19484, 30427, 24401, 24401, 29938, 35686, 19628, 28766, 30447, 34506, 35614, 23086, 28731, 30482, 30517, 30552, 30756, 24012, 20156, 30574, 30598, 30667, 26283, 33464, 28945, 27670, 30687, 32915, 33504, 25328, 17590, 23963, 20450, 33837, 21016, 32397, 26300, 30708, 30729, 27885, 30748, 21588, 36373, 30779, 26653, 24628, 33220, 32514, 30806, 31835, 25412, 25906, 26515, 18890, 28825, 31833, 26133, 19447, 28304, 31730, 23834, 26057, 30869, 30885, 32181, 30920, 30942, 32797, 25782, 30970, 31015, 23516, 31008, 30997, 31034, 27963, 19659, 29450, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22773, 18836, 31058, 31074, 32463, 31125, 31141, 31197, 22087, 18888, 29534, 35471, 36738, 27211, 24342, 31213, 24424, 22121, 24401, 20175, 31229, 31917, 27736, 31245, 34334, 27175, 18888, 29094, 27286, 27211, 31278, 31336, 27211, 31355, 31371, 24401, 31402, 31418, 24401, 31437, 31693, 18888, 31619, 32841, 18888, 18890, 27211, 27211, 31460, 31477, 27211, 19484, 24401, 24401, 31497, 36581, 24401, 33020, 18888, 18888, 18888, 18888, 30007, 27211, 27211, 27211, 27211, 31516, 32310, 24401, 24401, 24401, 24401, 31539, 18888, 28762, 18888, 24651, 35740, 27211, 27211, 28644, 31565, 35796, 24401, 24401, 19318, 32188, 18888, 24334, 28366, 27212, 29966, 29832, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 31587, 19868, 31635, 32435, 33693, 30105, 31663, 20005, 31715, 31757, 31784, 31812, 30015, 31851, 31878, 25783, 31898, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 31933, 30221, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22788, 18836, 22059, 25729, 30466, 31968, 24306, 31984, 32000, 32807, 35160, 27017, 29590, 34941, 19801, 29377, 33700, 22121, 27040, 30431, 29396, 28864, 29565, 18888, 18888, 18888, 32027, 18888, 25783, 27211, 27211, 23698, 27211, 35072, 22164, 24401, 24401, 30845, 24401, 24036, 32045, 18888, 26929, 18888, 18888, 18890, 27211, 31481, 32068, 27211, 27211, 32088, 24401, 33058, 32122, 24401, 24401, 33736, 18888, 18888, 33162, 18888, 23086, 27211, 27211, 29484, 27211, 28375, 32144, 24401, 24401, 33831, 24401, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 36704, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 33107, 22171, 33224, 24271, 32169, 31017, 27856, 31741, 19840, 25783, 31738, 30234, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, 32204, 32232, 32252, 32677, 33295, 29074, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 23619, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 32276, 24401, 24401, 24401, 24401, 24036, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 32299, 24401, 24401, 24401, 24401, 24401, 19628, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 24012, 24401, 24401, 24401, 24401, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 33886, 18889, 36065, 27211, 19719, 35326, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22803, 18836, 32335, 31647, 34666, 32351, 32367, 32417, 22087, 18888, 32433, 19335, 32451, 27211, 32479, 27107, 32500, 22121, 24401, 32551, 20085, 32572, 18866, 22287, 23753, 18888, 18888, 32602, 32665, 27211, 32693, 27211, 26972, 32713, 32729, 24401, 32764, 24401, 25877, 32785, 34768, 18888, 27390, 32823, 24594, 24855, 32857, 24890, 32878, 32904, 27211, 32942, 32977, 24401, 33000, 29313, 24401, 30790, 26206, 27666, 33904, 18888, 23086, 36353, 27211, 33036, 27211, 30756, 24012, 32153, 24401, 33056, 24401, 35861, 18888, 18888, 30354, 27972, 27211, 27211, 33800, 17590, 20145, 24401, 24401, 34638, 20811, 18888, 18888, 33074, 27211, 27212, 36167, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 34616, 24169, 33093, 33123, 33157, 27856, 31741, 23862, 26552, 34302, 19837, 25782, 19760, 31015, 23516, 31008, 33178, 19973, 27963, 23497, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22818, 18836, 33205, 28113, 33240, 34097, 33275, 29183, 22087, 33318, 35438, 18888, 18890, 33345, 26391, 33382, 27211, 22121, 33399, 28072, 33442, 24401, 18866, 22232, 18888, 33459, 18888, 18888, 33480, 33498, 25175, 27211, 27211, 26704, 22164, 24775, 35239, 24401, 24401, 25914, 29580, 18888, 18888, 31109, 25211, 33520, 33539, 27211, 27211, 33556, 36284, 19484, 33585, 24401, 24401, 33604, 32556, 19628, 18888, 18888, 31262, 33658, 23086, 27211, 27211, 33679, 27211, 30756, 24012, 24401, 24401, 33716, 24401, 26854, 27480, 18888, 33752, 27855, 33259, 34701, 27211, 17590, 32102, 24782, 23807, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 33773, 36105, 19868, 25659, 18888, 23368, 27211, 29157, 19719, 23889, 34454, 29286, 18890, 33794, 25302, 33816, 19447, 34079, 33853, 31862, 31017, 27856, 31741, 33877, 28920, 33937, 19837, 30461, 34002, 22276, 36041, 34029, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22833, 18836, 34064, 32616, 34113, 34141, 34157, 34192, 34208, 32216, 36013, 31549, 31952, 34224, 34248, 34287, 29330, 34350, 34389, 34413, 34481, 26793, 18866, 26187, 29635, 22293, 18888, 36654, 25783, 34522, 34544, 34566, 25821, 35072, 22164, 34586, 34609, 34632, 19604, 24036, 36644, 36674, 24681, 18888, 32401, 34654, 31339, 34682, 34698, 27211, 34717, 34753, 28053, 34812, 34836, 24401, 33619, 19628, 34858, 32236, 34906, 24598, 33523, 27612, 34890, 34922, 24732, 29246, 36717, 33634, 34465, 32984, 34168, 26750, 34957, 18888, 18888, 34994, 35010, 27211, 33040, 17590, 29913, 35035, 24401, 36304, 25482, 30171, 35883, 35068, 35088, 26627, 20441, 31173, 35123, 35143, 35176, 24640, 30492, 29358, 19719, 35192, 35219, 25384, 28801, 35255, 35279, 32586, 34496, 23086, 23330, 29061, 31017, 27856, 31741, 19840, 25783, 31738, 24547, 25164, 35315, 31796, 35353, 34316, 22105, 19419, 27963, 24091, 28630, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22848, 18836, 22059, 34782, 34088, 35389, 21008, 35405, 35421, 35454, 18888, 18888, 23466, 35487, 27211, 27211, 27211, 35513, 31154, 24401, 24401, 24401, 35560, 18888, 26863, 36664, 35601, 24872, 25783, 30389, 23536, 26250, 35647, 35666, 22164, 19522, 19564, 30582, 35682, 27697, 35575, 29114, 18888, 18888, 18888, 18890, 27211, 35702, 27211, 27211, 27211, 35723, 24401, 35527, 24401, 24401, 24401, 19628, 30184, 18888, 18888, 18888, 23086, 35739, 27211, 27211, 27211, 29139, 22938, 24401, 24401, 24401, 24401, 23898, 35756, 18888, 18888, 25025, 35778, 27211, 27211, 17590, 20064, 35795, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 23917, 18890, 34550, 31833, 22262, 19447, 23086, 23330, 26418, 31017, 27856, 31741, 19840, 25783, 35812, 19837, 27187, 35841, 33135, 23516, 31008, 22105, 22148, 28712, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22863, 18836, 22059, 35877, 28723, 34097, 31164, 29183, 22087, 26758, 18888, 22592, 18890, 23989, 27211, 29812, 27211, 22121, 33778, 24401, 31421, 24401, 18866, 18888, 18888, 26872, 18888, 18888, 25783, 27211, 30732, 27211, 27211, 35072, 22164, 24401, 24908, 24401, 24401, 24036, 31693, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 19628, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 24012, 24401, 24401, 24401, 24401, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22878, 18836, 22059, 27837, 27857, 35899, 24401, 35915, 22087, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 22121, 24401, 24401, 24401, 24401, 18866, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 24036, 31602, 18888, 18888, 18888, 18888, 26223, 27211, 27211, 27211, 27211, 27211, 19484, 35931, 24401, 24401, 24401, 24401, 19628, 18888, 28136, 18888, 18888, 35949, 27211, 32862, 27211, 32697, 30756, 24012, 24401, 32283, 24401, 32128, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22893, 18836, 22059, 35974, 34882, 34097, 33960, 29183, 35996, 18888, 23311, 18888, 36029, 27211, 27211, 36064, 36081, 22121, 24401, 24401, 36104, 33950, 18866, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 35072, 22164, 24401, 24401, 24401, 24401, 24036, 36121, 18888, 25559, 18888, 18888, 18890, 27211, 27211, 30313, 27211, 27211, 36154, 24401, 24401, 34397, 24401, 24401, 19628, 28250, 18888, 18888, 18888, 23086, 30926, 27211, 27211, 27211, 26983, 24012, 33642, 24401, 24401, 24401, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22339, 18836, 22059, 19354, 27857, 36190, 24401, 36206, 22087, 18888, 18888, 18888, 18007, 27211, 27211, 27211, 24724, 22121, 24401, 24401, 24401, 30827, 18866, 18888, 36222, 18888, 28795, 18888, 25783, 35100, 27211, 27429, 27211, 35072, 22164, 30836, 24401, 24499, 24401, 24036, 31693, 18888, 36244, 18888, 18888, 18890, 27211, 36088, 27211, 27211, 27211, 19484, 24401, 28036, 24401, 24401, 24401, 19628, 18888, 18888, 35631, 18888, 35762, 27211, 27211, 36277, 27211, 34730, 24012, 24401, 24401, 36300, 24401, 36320, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 25712, 18888, 18888, 36346, 27211, 27212, 19184, 24402, 19868, 25659, 32029, 18889, 27211, 33359, 19719, 23889, 36369, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22384, 18836, 36389, 19008, 19233, 20367, 36434, 17173, 17595, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 36453, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 20362, 21726, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 22369, 18836, 18987, 19008, 19233, 20367, 19008, 21737, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17949, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21813, 18836, 36489, 19008, 19233, 20367, 19008, 17173, 17737, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17768, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 20543, 22022, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21828, 18836, 18987, 19008, 19233, 20367, 19008, 17173, 30763, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 36517, 17308, 17327, 17346, 18918, 18452, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 18127, 21873, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 21828, 18836, 19307, 18888, 27857, 30756, 24401, 29183, 28015, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 36567, 24401, 24401, 24401, 24401, 22953, 18888, 18888, 18888, 18888, 18888, 25783, 27211, 27211, 27211, 27211, 28537, 36603, 24401, 24401, 24401, 24401, 24036, 18881, 18888, 18888, 18888, 18888, 18890, 27211, 27211, 27211, 27211, 27211, 19484, 24401, 24401, 24401, 24401, 24401, 19628, 18888, 18888, 18888, 18888, 23086, 27211, 27211, 27211, 27211, 30756, 24012, 24401, 24401, 24401, 24401, 26750, 18888, 18888, 18888, 27855, 27211, 27211, 27211, 17590, 24017, 24401, 24401, 24401, 18887, 18888, 18888, 27211, 27211, 27212, 24016, 24402, 19868, 25659, 18888, 18889, 27211, 27211, 19719, 23889, 19868, 31018, 18890, 27211, 31833, 19406, 19447, 23086, 23330, 19828, 31017, 27856, 31741, 19840, 25783, 31738, 19837, 25782, 19760, 31015, 23516, 31008, 22105, 19419, 27963, 19659, 27951, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 36629, 36690, 18720, 19008, 19233, 20367, 19008, 17454, 17595, 36437, 17330, 17349, 18921, 17189, 17208, 17281, 20355, 17223, 17308, 17327, 17346, 18918, 36754, 21880, 18649, 18665, 19006, 17265, 22033, 20765, 17421, 20535, 17192, 20362, 21726, 17311, 18658, 18999, 19008, 17447, 32952, 17497, 17520, 17251, 36411, 17782, 20682, 17714, 18326, 17543, 17559, 17585, 21887, 17504, 17527, 17258, 36418, 21915, 21940, 17611, 36467, 18217, 17633, 17661, 21190, 17703, 21176, 17730, 34737, 21946, 17617, 36473, 18223, 36531, 17477, 19152, 17860, 17892, 17675, 17753, 17832, 17590, 21620, 17481, 19156, 17864, 18731, 17918, 36551, 17292, 17934, 17979, 18727, 18681, 18405, 18621, 18039, 18056, 18072, 18117, 18143, 18706, 18052, 18209, 18250, 18239, 18266, 17963, 18296, 18312, 18376, 17807, 36403, 19232, 17796, 17163, 30642, 18392, 17816, 32961, 17645, 18805, 18421, 18437, 18519, 17393, 18747, 18505, 18535, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 17590, 0, 94242, 0, 118820, 0, 2211840, 102439, 0, 0, 106538, 98347, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2482176, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 2207744, 2404352, 2412544, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 3104768, 2605056, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2678784, 2207744, 2695168, 2207744, 2703360, 2207744, 2711552, 2752512, 2207744, 0, 0, 0, 0, 0, 0, 2166784, 0, 0, 0, 0, 0, 0, 2158592, 2158592, 3170304, 3174400, 2158592, 0, 139, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2424832, 2158592, 2158592, 2158592, 2748416, 2756608, 2777088, 2801664, 2158592, 2158592, 2158592, 2863104, 2891776, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3104768, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2207744, 2785280, 2207744, 2809856, 2207744, 2207744, 2842624, 2207744, 2207744, 2207744, 2899968, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2473984, 2207744, 2207744, 2494464, 2207744, 2207744, 2207744, 2523136, 2158592, 2404352, 2412544, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2564096, 2158592, 2158592, 2605056, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2678784, 2158592, 2695168, 2158592, 2703360, 2158592, 2711552, 2752512, 2158592, 2158592, 2785280, 2158592, 2158592, 2785280, 2158592, 2809856, 2158592, 2158592, 2842624, 2158592, 2158592, 2158592, 2899968, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 18, 0, 0, 0, 0, 0, 0, 0, 2211840, 0, 0, 641, 0, 2158592, 0, 0, 0, 0, 0, 0, 0, 0, 2211840, 0, 0, 32768, 0, 2158592, 0, 2158592, 2158592, 2158592, 2383872, 2158592, 2158592, 2158592, 2158592, 3006464, 2383872, 2207744, 2207744, 2207744, 2207744, 2158877, 2158877, 2158877, 2158877, 0, 0, 0, 2158877, 2572573, 2158877, 2158877, 0, 2207744, 2207744, 2596864, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2641920, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 0, 0, 167936, 0, 0, 2162688, 0, 0, 3104768, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 0, 0, 2146304, 2146304, 2224128, 2224128, 2232320, 2232320, 2232320, 641, 0, 0, 0, 0, 0, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2531328, 2158592, 2158592, 2158592, 2158592, 2158592, 2617344, 2158592, 2158592, 2158592, 2158592, 2441216, 2445312, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2502656, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2580480, 2158592, 2158592, 2158592, 2158592, 2621440, 2158592, 2580480, 2158592, 2158592, 2158592, 2158592, 2621440, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2699264, 2158592, 2158592, 2158592, 2158592, 2158592, 2748416, 2756608, 2777088, 2801664, 2207744, 2863104, 2891776, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 3018752, 2207744, 3043328, 2207744, 2207744, 2207744, 2207744, 3080192, 2207744, 2207744, 3112960, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 0, 0, 172310, 279, 0, 2162688, 0, 0, 2207744, 2207744, 2207744, 3186688, 2207744, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2158592, 2158592, 2158592, 2404352, 2412544, 2158592, 2510848, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2584576, 2158592, 2609152, 2158592, 2158592, 2629632, 2158592, 2158592, 2158592, 2686976, 2158592, 2715648, 2158592, 2158592, 3121152, 2158592, 2158592, 2158592, 3149824, 2158592, 2158592, 3170304, 3174400, 2158592, 2367488, 2207744, 2207744, 2207744, 2207744, 2158592, 2158592, 2158592, 2158592, 0, 0, 0, 2158592, 2572288, 2158592, 2158592, 0, 2207744, 2207744, 2207744, 2433024, 2207744, 2453504, 2461696, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2510848, 2207744, 2207744, 2207744, 2207744, 2207744, 2531328, 2207744, 2207744, 2207744, 2207744, 2207744, 2617344, 2207744, 2207744, 2207744, 2207744, 2158592, 2158592, 2158592, 2158592, 0, 0, 0, 2158592, 2572288, 2158592, 2158592, 1508, 2715648, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2867200, 2207744, 2904064, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2580480, 2207744, 2207744, 2207744, 2207744, 2621440, 2207744, 2207744, 2207744, 3149824, 2207744, 2207744, 3170304, 3174400, 2207744, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, 2158592, 2158592, 2158592, 2404352, 2412544, 2707456, 2732032, 2207744, 2207744, 2207744, 2822144, 2826240, 2207744, 2895872, 2207744, 2207744, 2924544, 2207744, 2207744, 2973696, 2207744, 0, 0, 0, 0, 0, 0, 2166784, 0, 0, 0, 0, 0, 285, 2158592, 2158592, 3112960, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3186688, 2158592, 2207744, 2207744, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 0, 0, 2158592, 2158592, 2158592, 2158592, 0, 0, 2535424, 2543616, 2158592, 2158592, 2158592, 0, 0, 0, 2158592, 2158592, 2158592, 2990080, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2572288, 2981888, 2207744, 2207744, 3002368, 2207744, 3047424, 3063808, 3076096, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 3203072, 2708960, 2732032, 2158592, 2158592, 2158592, 2822144, 2827748, 2158592, 2895872, 2158592, 2158592, 2924544, 2158592, 2158592, 2973696, 2158592, 2981888, 2158592, 2158592, 3002368, 2158592, 3047424, 3063808, 3076096, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3203072, 2981888, 2158592, 2158592, 3003876, 2158592, 3047424, 3063808, 3076096, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3203072, 2207744, 2207744, 2207744, 2207744, 2207744, 2424832, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 20480, 0, 0, 0, 0, 0, 2162688, 20480, 0, 2523136, 2527232, 2158592, 2158592, 2576384, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2908160, 2527232, 2207744, 2207744, 2576384, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2908160, 2207744, 0, 0, 0, 0, 0, 0, 2166784, 0, 0, 0, 0, 0, 286, 2158592, 2158592, 0, 0, 2158592, 2158592, 2158592, 2158592, 2633728, 2658304, 0, 0, 2740224, 2744320, 0, 2834432, 2207744, 2207744, 2977792, 2207744, 2207744, 2207744, 2207744, 3039232, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 3158016, 0, 0, 29315, 0, 0, 0, 0, 45, 45, 45, 45, 45, 933, 45, 45, 45, 45, 442, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 2494464, 2158592, 2158592, 2158592, 2524757, 2527232, 2158592, 2158592, 2576384, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 1504, 2158592, 2498560, 2158592, 2158592, 2158592, 2158592, 2568192, 2158592, 2592768, 2625536, 2158592, 2158592, 2674688, 2736128, 2158592, 2158592, 0, 2158592, 2912256, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3108864, 2158592, 2158592, 3133440, 3145728, 3153920, 2375680, 2379776, 2207744, 2207744, 2420736, 2207744, 2449408, 2207744, 2207744, 2207744, 2498560, 2207744, 2207744, 2207744, 2207744, 2568192, 2207744, 0, 0, 0, 0, 0, 0, 2166784, 0, 0, 0, 0, 0, 551, 2158592, 2158592, 2158592, 2158592, 2207744, 2506752, 2207744, 2207744, 2207744, 2207744, 2207744, 2158592, 2506752, 0, 2020, 2158592, 2592768, 2625536, 2207744, 2207744, 2674688, 2736128, 2207744, 2207744, 2207744, 2912256, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 542, 0, 544, 2207744, 3108864, 2207744, 2207744, 3133440, 3145728, 3153920, 2375680, 2379776, 2158592, 2158592, 2420736, 2158592, 2449408, 2158592, 2158592, 2158592, 2158592, 2158592, 3186688, 2158592, 0, 641, 0, 0, 0, 0, 0, 0, 2367488, 2158592, 2498560, 2158592, 2158592, 1621, 2158592, 2158592, 2568192, 2158592, 2592768, 2625536, 2158592, 2158592, 2674688, 0, 0, 0, 0, 0, 1608, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1107, 97, 97, 1110, 97, 97, 3133440, 3145728, 3153920, 2158592, 2408448, 2416640, 2158592, 2465792, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3014656, 2158592, 2158592, 3051520, 2158592, 2158592, 3100672, 2158592, 2158592, 3121152, 2158592, 2158592, 2158592, 3149824, 2416640, 2207744, 2465792, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2633728, 2658304, 2740224, 2744320, 2834432, 2949120, 2158592, 2985984, 2158592, 2998272, 2158592, 2158592, 2158592, 3129344, 2207744, 2408448, 2949120, 2207744, 2985984, 2207744, 2998272, 2207744, 2207744, 2207744, 3129344, 2158592, 2408448, 2416640, 2158592, 2465792, 2158592, 2158592, 2158592, 2158592, 2158592, 3186688, 2158592, 0, 32768, 0, 0, 0, 0, 0, 0, 2367488, 2949120, 2158592, 2985984, 2158592, 2998272, 2158592, 2158592, 2158592, 3129344, 2158592, 2158592, 2478080, 2158592, 2158592, 2158592, 2535424, 2543616, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3117056, 2207744, 2207744, 2478080, 2207744, 2207744, 2207744, 2207744, 2699264, 2207744, 2207744, 2207744, 2207744, 2207744, 2748416, 2756608, 2777088, 2801664, 2207744, 2207744, 2158877, 2158877, 2158877, 2158877, 2158877, 0, 0, 0, 2158877, 2158877, 2158877, 2158877, 0, 0, 2535709, 2543901, 2158877, 2158877, 2158877, 0, 0, 0, 2158877, 2158877, 2158877, 2990365, 2158877, 2158877, 2158730, 2158730, 2158730, 2158730, 2158730, 2572426, 2207744, 2535424, 2543616, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 3117056, 2158592, 2158592, 2478080, 2207744, 2207744, 2990080, 2207744, 2207744, 2158592, 2158592, 2482176, 2158592, 2158592, 0, 0, 0, 2158592, 2158592, 2158592, 0, 2158592, 2908160, 2158592, 2158592, 2158592, 2977792, 2158592, 2158592, 2158592, 2158592, 3039232, 2158592, 2158592, 3010560, 2207744, 2428928, 2207744, 2514944, 2207744, 2588672, 2207744, 2838528, 2207744, 2207744, 2207744, 3010560, 2158592, 2428928, 2158592, 2514944, 0, 0, 2158592, 2588672, 2158592, 0, 2838528, 2158592, 2158592, 2158592, 3010560, 2158592, 2506752, 2158592, 18, 0, 0, 0, 0, 0, 0, 0, 2211840, 0, 0, 0, 0, 2158592, 0, 0, 29315, 922, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1539, 45, 3006464, 2383872, 0, 2020, 2158592, 2158592, 2158592, 2158592, 3006464, 2158592, 2637824, 2953216, 2158592, 2207744, 2637824, 2953216, 2207744, 0, 0, 2158592, 2637824, 2953216, 2158592, 2539520, 2158592, 2539520, 2207744, 0, 0, 2539520, 2158592, 2158592, 2158592, 2158592, 2207744, 2506752, 2207744, 2207744, 2207744, 2207744, 2207744, 2158592, 2506752, 0, 0, 2158592, 2207744, 0, 2158592, 2158592, 2207744, 0, 2158592, 2158592, 2207744, 0, 2158592, 2965504, 2965504, 2965504, 0, 0, 0, 0, 0, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2474269, 2158877, 2158877, 0, 0, 2158877, 2158877, 2158877, 2158877, 2634013, 2658589, 0, 0, 2740509, 2744605, 0, 2834717, 40976, 18, 36884, 45078, 24, 28, 90143, 94242, 118820, 102439, 106538, 98347, 118820, 118820, 118820, 40976, 18, 18, 36884, 0, 0, 0, 24, 24, 24, 27, 27, 27, 27, 90143, 0, 0, 86016, 0, 0, 2211840, 102439, 0, 0, 0, 98347, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 3158016, 0, 2375680, 2379776, 2158592, 2158592, 2420736, 2158592, 2449408, 2158592, 2158592, 0, 94242, 0, 0, 0, 2211840, 102439, 0, 0, 106538, 98347, 135, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2564096, 2158592, 2158592, 2158592, 2158592, 2158592, 2596864, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2641920, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2781184, 2793472, 2494464, 2158592, 2158592, 2158592, 2523136, 2527232, 2158592, 2158592, 2576384, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 40976, 0, 18, 18, 24, 0, 27, 27, 0, 2158592, 2498560, 2158592, 2158592, 0, 2158592, 2158592, 2568192, 2158592, 2592768, 2625536, 2158592, 2158592, 2674688, 0, 0, 0, 0, 0, 2211840, 0, 0, 0, 0, 0, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2473984, 2158592, 2158592, 2494464, 2158592, 2158592, 2158592, 3006464, 2383872, 0, 0, 2158592, 2158592, 2158592, 2158592, 3006464, 2158592, 2637824, 2953216, 2158592, 2207744, 2637824, 2953216, 40976, 18, 36884, 45078, 24, 27, 147488, 94242, 147456, 147488, 106538, 98347, 0, 0, 147456, 40976, 18, 18, 36884, 0, 45078, 0, 24, 24, 24, 27, 27, 27, 27, 0, 81920, 0, 94242, 0, 0, 0, 2211840, 0, 0, 0, 106538, 98347, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2428928, 2158592, 2514944, 2158592, 2588672, 2158592, 2838528, 2158592, 2158592, 40976, 18, 151573, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 0, 40976, 18, 18, 36884, 0, 45078, 0, 24, 24, 24, 27, 27, 27, 27, 90143, 0, 0, 1315, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1487, 97, 18, 131427, 0, 0, 0, 0, 0, 0, 362, 0, 0, 365, 29315, 367, 0, 0, 29315, 0, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 130, 94242, 0, 0, 0, 2211840, 102439, 0, 0, 106538, 98347, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3096576, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2207744, 2207744, 2158592, 18, 0, 0, 0, 0, 0, 0, 0, 2211840, 0, 0, 0, 0, 2158592, 644, 2207744, 2207744, 2207744, 3186688, 2207744, 0, 1080, 0, 1084, 0, 1088, 0, 0, 0, 0, 0, 0, 0, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2531466, 2158730, 2158730, 2158730, 2158730, 2158730, 2617482, 0, 94242, 0, 0, 0, 2211840, 102439, 0, 0, 106538, 98347, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2781184, 2793472, 2158592, 2818048, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 40976, 18, 36884, 45078, 24, 27, 90143, 159779, 159744, 102439, 159779, 98347, 0, 0, 159744, 40976, 18, 18, 36884, 0, 45078, 0, 2224253, 172032, 2224253, 2232448, 2232448, 172032, 2232448, 90143, 0, 0, 2170880, 0, 0, 550, 829, 2158592, 2158592, 2158592, 2387968, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 40976, 0, 18, 18, 124, 124, 127, 127, 127, 40976, 18, 36884, 45078, 25, 29, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 163931, 40976, 18, 18, 36884, 0, 45078, 249856, 24, 24, 24, 27, 27, 27, 27, 90143, 0, 0, 2170880, 0, 0, 827, 0, 2158592, 2158592, 2158592, 2387968, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 40976, 0, 4243810, 4243810, 24, 24, 27, 27, 27, 2207744, 0, 0, 0, 0, 0, 0, 2166784, 0, 0, 0, 0, 57344, 286, 2158592, 2158592, 2158592, 2158592, 2707456, 2732032, 2158592, 2158592, 2158592, 2822144, 2826240, 2158592, 2895872, 2158592, 2158592, 2924544, 2158592, 2158592, 2973696, 2158592, 2207744, 2207744, 2207744, 3186688, 2207744, 0, 0, 0, 0, 0, 0, 53248, 0, 0, 0, 0, 0, 97, 97, 97, 97, 97, 1613, 97, 97, 97, 97, 97, 97, 1495, 97, 97, 97, 97, 97, 97, 97, 97, 97, 566, 97, 97, 97, 97, 97, 97, 2207744, 0, 0, 0, 0, 0, 0, 2166784, 546, 0, 0, 0, 0, 286, 2158592, 2158592, 2158592, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 17, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 20480, 120, 121, 18, 18, 36884, 0, 45078, 0, 24, 24, 24, 27, 27, 27, 27, 90143, 0, 0, 2170880, 0, 53248, 550, 0, 2158592, 2158592, 2158592, 2387968, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 40976, 196608, 18, 266240, 24, 24, 27, 27, 27, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 0, 45, 45, 45, 45, 45, 45, 45, 1535, 45, 45, 45, 45, 45, 45, 45, 1416, 45, 45, 45, 45, 45, 45, 45, 45, 424, 45, 45, 45, 45, 45, 45, 45, 45, 45, 405, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 199, 45, 45, 67, 67, 67, 67, 67, 491, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1766, 67, 67, 67, 1767, 67, 24850, 24850, 12564, 12564, 0, 0, 2166784, 546, 0, 53531, 53531, 0, 286, 97, 97, 0, 0, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 0, 97, 97, 97, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 743, 57889, 0, 2170880, 0, 0, 550, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 1856, 45, 1858, 1859, 67, 67, 67, 1009, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1021, 67, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2367773, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2699549, 2158877, 2158877, 2158877, 2158877, 2158877, 2748701, 2756893, 2777373, 2801949, 97, 1115, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 857, 97, 67, 67, 67, 67, 67, 1258, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1826, 67, 97, 97, 97, 97, 97, 97, 1338, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 870, 97, 97, 67, 67, 67, 1463, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1579, 67, 67, 97, 97, 97, 1518, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 904, 905, 97, 97, 97, 97, 1620, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 921, 0, 0, 0, 0, 0, 0, 45, 1679, 67, 67, 67, 1682, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1690, 67, 0, 0, 97, 97, 97, 97, 45, 45, 67, 67, 0, 0, 97, 97, 45, 45, 45, 669, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 189, 45, 45, 45, 1748, 45, 45, 45, 1749, 1750, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 1959, 67, 67, 67, 67, 1768, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1791, 97, 97, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 1802, 67, 1817, 67, 67, 67, 67, 67, 67, 1823, 67, 67, 67, 67, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 0, 97, 97, 97, 97, 1848, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 659, 45, 45, 45, 45, 45, 45, 45, 1863, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 495, 67, 67, 67, 67, 67, 1878, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 97, 97, 97, 97, 0, 0, 0, 1973, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1165, 97, 1167, 67, 24850, 24850, 12564, 12564, 0, 0, 2166784, 0, 0, 53531, 53531, 0, 286, 97, 97, 0, 0, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 1789, 97, 0, 94242, 0, 0, 0, 2211840, 102439, 0, 0, 106538, 98347, 136, 2158592, 2158592, 2158592, 2158592, 2158592, 3158016, 229376, 2375680, 2379776, 2158592, 2158592, 2420736, 2158592, 2449408, 2158592, 2158592, 67, 24850, 24850, 12564, 12564, 0, 0, 280, 547, 0, 53531, 53531, 0, 286, 97, 97, 0, 0, 97, 97, 97, 97, 97, 97, 0, 1788, 97, 97, 0, 97, 2024, 97, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 235, 67, 67, 67, 67, 67, 57889, 547, 547, 0, 0, 550, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 45, 45, 45, 1799, 45, 45, 45, 67, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 1092, 0, 0, 0, 0, 0, 97, 97, 97, 97, 1612, 97, 97, 97, 97, 1616, 97, 1297, 1472, 0, 0, 0, 0, 1303, 1474, 0, 0, 0, 0, 1309, 1476, 0, 0, 0, 0, 97, 97, 97, 1481, 97, 97, 97, 97, 97, 97, 1488, 97, 0, 1474, 0, 1476, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 607, 97, 97, 97, 97, 40976, 18, 36884, 45078, 26, 30, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 213080, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 143448, 40976, 18, 18, 36884, 0, 45078, 0, 24, 24, 24, 27, 27, 27, 27, 0, 0, 0, 0, 97, 97, 97, 97, 1482, 97, 1483, 97, 97, 97, 97, 97, 97, 1326, 97, 97, 1329, 1330, 97, 97, 97, 97, 97, 97, 1159, 1160, 97, 97, 97, 97, 97, 97, 97, 97, 590, 97, 97, 97, 97, 97, 97, 97, 0, 94242, 0, 0, 0, 2211974, 102439, 0, 0, 106538, 98347, 0, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2474122, 2158730, 2158730, 2494602, 2158730, 2158730, 2158730, 2809994, 2158730, 2158730, 2842762, 2158730, 2158730, 2158730, 2900106, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 3014794, 2158730, 2158730, 3051658, 2158730, 2158730, 3100810, 2158730, 2158730, 2158730, 2158730, 3096714, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2207744, 2207744, 2207744, 2207744, 2207744, 2572288, 2207744, 2207744, 2207744, 2207744, 541, 541, 543, 543, 0, 0, 2166784, 0, 548, 549, 549, 0, 286, 2158877, 2158877, 2158877, 2863389, 2892061, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 3186973, 2158877, 0, 0, 0, 0, 0, 0, 0, 0, 2367626, 2158877, 2404637, 2412829, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2564381, 2158877, 2158877, 2605341, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2679069, 2158877, 2695453, 2158877, 2703645, 2158877, 2711837, 2752797, 2158877, 0, 2158877, 2158877, 2158877, 2384010, 2158730, 2158730, 2158730, 2158730, 3006602, 2383872, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 3096576, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 0, 0, 0, 0, 0, 2162688, 0, 0, 2158877, 2785565, 2158877, 2810141, 2158877, 2158877, 2842909, 2158877, 2158877, 2158877, 2900253, 2158877, 2158877, 2158877, 2158877, 2158877, 2531613, 2158877, 2158877, 2158877, 2158877, 2158877, 2617629, 2158877, 2158877, 2158877, 2158877, 2158730, 2818186, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 3105053, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 0, 0, 0, 0, 0, 97, 97, 97, 1611, 97, 97, 97, 97, 97, 97, 97, 1496, 97, 97, 1499, 97, 97, 97, 97, 97, 2441354, 2445450, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2502794, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2433162, 2158730, 2453642, 2461834, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2580618, 2158730, 2158730, 2158730, 2158730, 2621578, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2699402, 2158730, 2158730, 2158730, 2158730, 2678922, 2158730, 2695306, 2158730, 2703498, 2158730, 2711690, 2752650, 2158730, 2158730, 2785418, 2158730, 2158730, 2158730, 3113098, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 3186826, 2158730, 2207744, 2207744, 2207744, 2207744, 2781184, 2793472, 2207744, 2818048, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 541, 0, 543, 2158877, 2502941, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2580765, 2158877, 2158877, 2158877, 2158877, 2621725, 2158877, 3019037, 2158877, 3043613, 2158877, 2158877, 2158877, 2158877, 3080477, 2158877, 2158877, 3113245, 2158877, 2158877, 2158877, 2158877, 0, 2158877, 2908445, 2158877, 2158877, 2158877, 2978077, 2158877, 2158877, 2158877, 2158877, 3039517, 2158877, 2158730, 2510986, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2584714, 2158730, 2609290, 2158730, 2158730, 2629770, 2158730, 2158730, 2158730, 2388106, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2605194, 2158730, 2158730, 2158730, 2158730, 2687114, 2158730, 2715786, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2867338, 2158730, 2904202, 2158730, 2158730, 2158730, 2642058, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2781322, 2793610, 2158730, 3121290, 2158730, 2158730, 2158730, 3149962, 2158730, 2158730, 3170442, 3174538, 2158730, 2367488, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2441216, 2445312, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2502656, 2158877, 2433309, 2158877, 2453789, 2461981, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2511133, 2158877, 2158877, 2158877, 2158877, 2584861, 2158877, 2609437, 2158877, 2158877, 2629917, 2158877, 2158877, 2158877, 2687261, 2158877, 2715933, 2158877, 2158730, 2158730, 2973834, 2158730, 2982026, 2158730, 2158730, 3002506, 2158730, 3047562, 3063946, 3076234, 2158730, 2158730, 2158730, 2158730, 2207744, 2506752, 2207744, 2207744, 2207744, 2207744, 2207744, 2158877, 2507037, 0, 0, 2158877, 2158730, 2158730, 2158730, 3203210, 2207744, 2207744, 2207744, 2207744, 2207744, 2424832, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2564096, 2207744, 2207744, 2207744, 2707741, 2732317, 2158877, 2158877, 2158877, 2822429, 2826525, 2158877, 2896157, 2158877, 2158877, 2924829, 2158877, 2158877, 2973981, 2158877, 18, 0, 0, 0, 0, 0, 0, 0, 2211840, 0, 0, 642, 0, 2158592, 0, 45, 1529, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1755, 45, 67, 67, 2982173, 2158877, 2158877, 3002653, 2158877, 3047709, 3064093, 3076381, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 3203357, 2523274, 2527370, 2158730, 2158730, 2576522, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2908298, 2494749, 2158877, 2158877, 2158877, 2523421, 2527517, 2158877, 2158877, 2576669, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 0, 40976, 0, 18, 18, 4321280, 2224253, 2232448, 4329472, 2232448, 2158730, 2498698, 2158730, 2158730, 2158730, 2158730, 2568330, 2158730, 2592906, 2625674, 2158730, 2158730, 2674826, 2736266, 2158730, 2158730, 2158730, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2158730, 2912394, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 3109002, 2158730, 2158730, 3133578, 3145866, 3154058, 2375680, 2207744, 3108864, 2207744, 2207744, 3133440, 3145728, 3153920, 2375965, 2380061, 2158877, 2158877, 2421021, 2158877, 2449693, 2158877, 2158877, 2158877, 3117341, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 3104906, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158877, 2498845, 2158877, 2158877, 0, 2158877, 2158877, 2568477, 2158877, 2593053, 2625821, 2158877, 2158877, 2674973, 0, 0, 0, 0, 97, 97, 1480, 97, 97, 97, 97, 97, 1485, 97, 97, 97, 0, 97, 97, 1729, 97, 1731, 97, 97, 97, 97, 97, 97, 97, 311, 97, 97, 97, 97, 97, 97, 97, 97, 1520, 97, 97, 1523, 97, 97, 1526, 97, 2736413, 2158877, 2158877, 0, 2158877, 2912541, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 3109149, 2158877, 2158877, 3014941, 2158877, 2158877, 3051805, 2158877, 2158877, 3100957, 2158877, 2158877, 3121437, 2158877, 2158877, 2158877, 3150109, 3133725, 3146013, 3154205, 2158730, 2408586, 2416778, 2158730, 2465930, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 3018890, 2158730, 3043466, 2158730, 2158730, 2158730, 2158730, 3080330, 2633866, 2658442, 2740362, 2744458, 2834570, 2949258, 2158730, 2986122, 2158730, 2998410, 2158730, 2158730, 2158730, 3129482, 2207744, 2408448, 2949120, 2207744, 2985984, 2207744, 2998272, 2207744, 2207744, 2207744, 3129344, 2158877, 2408733, 2416925, 2158877, 2466077, 2158877, 2158877, 3170589, 3174685, 2158877, 0, 0, 0, 2158730, 2158730, 2158730, 2158730, 2158730, 2424970, 2158730, 2158730, 2158730, 2158730, 2707594, 2732170, 2158730, 2158730, 2158730, 2822282, 2826378, 2158730, 2896010, 2158730, 2158730, 2924682, 2949405, 2158877, 2986269, 2158877, 2998557, 2158877, 2158877, 2158877, 3129629, 2158730, 2158730, 2478218, 2158730, 2158730, 2158730, 2535562, 2543754, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 3117194, 2207744, 2207744, 2478080, 2207744, 2207744, 2207744, 2207744, 3014656, 2207744, 2207744, 3051520, 2207744, 2207744, 3100672, 2207744, 2207744, 3121152, 2207744, 2207744, 2207744, 2207744, 2207744, 2584576, 2207744, 2609152, 2207744, 2207744, 2629632, 2207744, 2207744, 2207744, 2686976, 2207744, 2207744, 2535424, 2543616, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 3117056, 2158877, 2158877, 2478365, 0, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158730, 2158730, 2482314, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2207744, 2207744, 2207744, 2387968, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 823, 0, 825, 2158730, 2158730, 2158730, 2990218, 2158730, 2158730, 2207744, 2207744, 2482176, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 0, 0, 0, 0, 0, 2162688, 135, 0, 2207744, 2207744, 2990080, 2207744, 2207744, 2158877, 2158877, 2482461, 2158877, 2158877, 0, 0, 0, 2158877, 2158877, 2158877, 2158877, 2158877, 2158730, 2429066, 2158730, 2515082, 2158730, 2588810, 2158730, 2838666, 2158730, 2158730, 2158730, 3010698, 2207744, 2428928, 2207744, 2514944, 2207744, 2588672, 2207744, 2838528, 2207744, 2207744, 2207744, 3010560, 2158877, 2429213, 2158877, 2515229, 0, 0, 2158877, 2588957, 2158877, 0, 2838813, 2158877, 2158877, 2158877, 3010845, 2158730, 2506890, 2158730, 2158730, 2158730, 2748554, 2756746, 2777226, 2801802, 2158730, 2158730, 2158730, 2863242, 2891914, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 2564234, 2158730, 2158730, 2158730, 2158730, 2158730, 2597002, 2158730, 2158730, 2158730, 3006464, 2384157, 0, 0, 2158877, 2158877, 2158877, 2158877, 3006749, 2158730, 2637962, 2953354, 2158730, 2207744, 2637824, 2953216, 2207744, 0, 0, 2158877, 2638109, 2953501, 2158877, 2539658, 2158730, 2539520, 2207744, 0, 0, 2539805, 2158877, 2158730, 2158730, 2158730, 2977930, 2158730, 2158730, 2158730, 2158730, 3039370, 2158730, 2158730, 2158730, 2158730, 2158730, 2158730, 3158154, 2207744, 0, 2158877, 2158730, 2207744, 0, 2158877, 2158730, 2207744, 0, 2158877, 2965642, 2965504, 2965789, 0, 0, 0, 0, 1315, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 1484, 97, 97, 97, 97, 2158592, 18, 0, 122880, 0, 0, 0, 77824, 0, 2211840, 0, 0, 0, 0, 2158592, 0, 356, 0, 0, 0, 0, 0, 0, 28809, 0, 139, 45, 45, 45, 45, 45, 45, 1751, 45, 45, 45, 45, 45, 45, 45, 67, 67, 1427, 67, 67, 67, 67, 67, 1432, 67, 67, 67, 3104768, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 122880, 0, 0, 0, 0, 1315, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 1322, 550, 0, 286, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2424832, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 40976, 0, 18, 18, 24, 24, 4329472, 27, 27, 2207744, 2207744, 2977792, 2207744, 2207744, 2207744, 2207744, 3039232, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 3158016, 542, 0, 0, 0, 542, 0, 544, 0, 0, 0, 544, 0, 550, 0, 0, 0, 0, 0, 97, 97, 1610, 97, 97, 97, 97, 97, 97, 97, 97, 898, 97, 97, 97, 97, 97, 97, 97, 0, 94242, 0, 0, 0, 2211840, 0, 0, 0, 0, 0, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2424832, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 237568, 102439, 106538, 98347, 0, 0, 20480, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 192512, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 94, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 96, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 12378, 40976, 18, 18, 36884, 0, 45078, 0, 24, 24, 24, 126, 126, 126, 126, 90143, 0, 0, 2170880, 0, 0, 0, 0, 2158592, 2158592, 2158592, 2387968, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 20480, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 241664, 102439, 106538, 98347, 0, 0, 20568, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 200797, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 20480, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 0, 0, 44, 0, 0, 20575, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 41, 41, 41, 0, 0, 1126400, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 0, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 89, 40976, 18, 18, 36884, 0, 45078, 0, 24, 24, 24, 27, 131201, 27, 27, 90143, 0, 0, 2170880, 0, 0, 550, 0, 2158592, 2158592, 2158592, 2387968, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2441216, 2445312, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 94242, 0, 0, 208896, 2211840, 102439, 0, 0, 106538, 98347, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 3186688, 2158592, 0, 0, 0, 0, 0, 0, 0, 0, 2367488, 32768, 0, 0, 0, 0, 0, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2433024, 2158592, 2453504, 2461696, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2510848, 2158592, 2158592, 2158592, 2158592, 40976, 18, 36884, 245783, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 20480, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 221184, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 180224, 40976, 18, 18, 36884, 155648, 45078, 0, 24, 24, 217088, 27, 27, 27, 217088, 90143, 0, 0, 2170880, 0, 0, 828, 0, 2158592, 2158592, 2158592, 2387968, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2207744, 2207744, 2207744, 2387968, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 0, 0, 0, 0, 0, 2162688, 233472, 0, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 45, 45, 45, 718, 45, 45, 45, 45, 45, 45, 45, 45, 45, 727, 131427, 0, 0, 0, 0, 362, 0, 365, 28809, 367, 139, 45, 45, 45, 45, 45, 45, 1808, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 97, 97, 0, 0, 97, 67, 24850, 24850, 12564, 12564, 0, 57889, 0, 0, 0, 53531, 53531, 367, 286, 97, 97, 0, 0, 97, 97, 97, 97, 97, 97, 1787, 0, 97, 97, 0, 97, 97, 97, 45, 45, 45, 45, 2029, 45, 67, 67, 67, 67, 2033, 57889, 0, 0, 54074, 54074, 550, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 45, 1798, 45, 45, 1800, 45, 45, 0, 1472, 0, 0, 0, 0, 0, 1474, 0, 0, 0, 0, 0, 1476, 0, 0, 0, 0, 1315, 0, 0, 0, 0, 97, 97, 97, 97, 1320, 97, 97, 0, 0, 97, 97, 97, 97, 1786, 97, 0, 0, 97, 97, 0, 1790, 1527, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 663, 67, 24850, 24850, 12564, 12564, 0, 57889, 281, 0, 0, 53531, 53531, 367, 286, 97, 97, 0, 0, 97, 97, 97, 1785, 97, 97, 0, 0, 97, 97, 0, 97, 97, 1979, 97, 97, 45, 45, 1983, 45, 1984, 45, 45, 45, 45, 45, 652, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 690, 45, 45, 694, 45, 45, 40976, 19, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 262144, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 46, 67, 98, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 45, 67, 97, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 258048, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 1122423, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 1114152, 1114152, 1114152, 0, 0, 1114112, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 37, 102439, 106538, 98347, 0, 0, 204800, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 0, 102439, 106538, 98347, 0, 0, 57436, 40976, 18, 36884, 45078, 24, 27, 33, 33, 0, 33, 33, 33, 0, 0, 0, 40976, 18, 18, 36884, 0, 45078, 0, 124, 124, 124, 127, 127, 127, 127, 90143, 0, 0, 2170880, 0, 0, 550, 0, 2158877, 2158877, 2158877, 2388253, 2158877, 2158877, 2158877, 2158877, 2158877, 2781469, 2793757, 2158877, 2818333, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2867485, 2158877, 2904349, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 3096861, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2441501, 2445597, 2158877, 2158877, 2158877, 2158877, 2158877, 40976, 122, 123, 36884, 0, 45078, 0, 24, 24, 24, 27, 27, 27, 27, 90143, 0, 921, 29315, 0, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 936, 2158592, 4243810, 0, 0, 0, 0, 0, 0, 0, 2211840, 0, 0, 0, 0, 2158592, 0, 921, 29315, 0, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 935, 45, 45, 45, 715, 45, 45, 45, 45, 45, 45, 45, 723, 45, 45, 45, 45, 45, 1182, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 430, 45, 45, 45, 45, 45, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 47, 68, 99, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 48, 69, 100, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 49, 70, 101, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 50, 71, 102, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 51, 72, 103, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 52, 73, 104, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 53, 74, 105, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 54, 75, 106, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 55, 76, 107, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 56, 77, 108, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 57, 78, 109, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 58, 79, 110, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 59, 80, 111, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 60, 81, 112, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 61, 82, 113, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 62, 83, 114, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 63, 84, 115, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 64, 85, 116, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 65, 86, 117, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 38, 102439, 106538, 98347, 66, 87, 118, 40976, 18, 36884, 45078, 24, 27, 90143, 94242, 118820, 102439, 106538, 98347, 118820, 118820, 118820, 40976, 18, 18, 0, 0, 45078, 0, 24, 24, 24, 27, 27, 27, 27, 90143, 0, 0, 1314, 0, 0, 0, 0, 0, 0, 97, 97, 97, 97, 97, 1321, 97, 18, 131427, 0, 0, 0, 0, 0, 0, 362, 0, 0, 365, 0, 367, 0, 0, 1315, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1360, 97, 97, 131, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 45, 145, 149, 45, 45, 45, 45, 45, 174, 45, 179, 45, 185, 45, 188, 45, 45, 202, 67, 255, 67, 67, 269, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 97, 292, 296, 97, 97, 97, 97, 97, 321, 97, 326, 97, 332, 97, 18, 131427, 0, 0, 0, 0, 0, 0, 362, 0, 0, 365, 29315, 367, 646, 335, 97, 97, 349, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 437, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 523, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 511, 67, 67, 67, 97, 97, 97, 620, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1501, 1502, 97, 793, 67, 67, 796, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 808, 67, 0, 0, 97, 97, 97, 97, 45, 45, 67, 67, 0, 0, 97, 97, 2052, 67, 67, 67, 67, 813, 67, 67, 67, 67, 67, 67, 67, 25398, 542, 13112, 544, 57889, 0, 0, 54074, 54074, 550, 830, 97, 97, 97, 97, 97, 97, 97, 97, 97, 315, 97, 97, 97, 97, 97, 97, 841, 97, 97, 97, 97, 97, 97, 97, 97, 97, 854, 97, 97, 97, 97, 97, 97, 589, 97, 97, 97, 97, 97, 97, 97, 97, 97, 867, 97, 97, 97, 97, 97, 97, 97, 891, 97, 97, 894, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 906, 45, 937, 45, 45, 940, 45, 45, 45, 45, 45, 45, 948, 45, 45, 45, 45, 45, 734, 735, 67, 737, 67, 738, 67, 740, 67, 67, 67, 45, 967, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 435, 45, 45, 45, 980, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 415, 45, 45, 67, 67, 1024, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 67, 67, 67, 67, 67, 25398, 1081, 13112, 1085, 54074, 1089, 0, 0, 0, 0, 0, 0, 363, 0, 28809, 0, 139, 45, 45, 45, 45, 45, 45, 1674, 45, 45, 45, 45, 45, 45, 45, 45, 67, 1913, 67, 1914, 67, 67, 67, 1918, 67, 67, 97, 97, 97, 97, 1118, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 630, 97, 97, 97, 97, 97, 1169, 97, 97, 97, 97, 97, 0, 921, 0, 1175, 0, 0, 0, 0, 45, 45, 45, 45, 45, 45, 1534, 45, 45, 45, 45, 45, 1538, 45, 45, 45, 45, 1233, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 742, 67, 45, 45, 1191, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 454, 67, 67, 67, 67, 1243, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1251, 67, 0, 0, 97, 97, 97, 97, 45, 45, 67, 67, 2050, 0, 97, 97, 45, 45, 45, 732, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 67, 67, 67, 1284, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 772, 67, 67, 67, 1293, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 368, 2158592, 2158592, 2158592, 2404352, 2412544, 1323, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1331, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1737, 97, 1364, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1373, 97, 18, 131427, 0, 0, 0, 0, 0, 0, 362, 0, 0, 365, 29315, 367, 647, 45, 45, 1387, 45, 45, 1391, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 410, 45, 45, 45, 45, 45, 1400, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1407, 45, 45, 45, 45, 45, 941, 45, 943, 45, 45, 45, 45, 45, 45, 951, 45, 67, 1438, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1447, 67, 67, 67, 67, 67, 67, 782, 67, 67, 67, 67, 67, 67, 67, 67, 67, 756, 67, 67, 67, 67, 67, 67, 97, 1491, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1500, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1736, 97, 45, 45, 1541, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 677, 45, 45, 67, 1581, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 791, 792, 67, 67, 67, 67, 1598, 67, 1600, 67, 67, 67, 67, 67, 67, 67, 67, 1472, 97, 97, 97, 1727, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1513, 97, 97, 67, 67, 97, 1879, 97, 1881, 97, 0, 1884, 0, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 97, 0, 0, 0, 1842, 97, 97, 67, 67, 67, 67, 67, 97, 97, 97, 97, 1928, 0, 0, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 1903, 45, 45, 45, 67, 67, 67, 67, 97, 97, 97, 97, 1971, 0, 0, 97, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 0, 45, 45, 45, 1381, 45, 45, 45, 45, 1976, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1747, 809, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 25398, 542, 13112, 544, 97, 907, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 638, 0, 0, 0, 0, 1478, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1150, 97, 97, 97, 97, 67, 67, 67, 67, 1244, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 477, 67, 67, 67, 67, 67, 67, 1294, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1324, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 0, 1374, 97, 97, 97, 97, 0, 1175, 0, 45, 45, 45, 45, 45, 45, 45, 45, 945, 45, 45, 45, 45, 45, 45, 45, 45, 1908, 45, 45, 1910, 45, 67, 67, 67, 67, 67, 67, 67, 67, 1919, 67, 0, 0, 97, 97, 97, 97, 45, 2048, 67, 2049, 0, 0, 97, 2051, 45, 45, 45, 939, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 397, 45, 45, 45, 1921, 67, 67, 1923, 67, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 1947, 45, 1935, 0, 0, 0, 97, 1939, 97, 97, 1941, 97, 45, 45, 45, 45, 45, 45, 382, 389, 45, 45, 45, 45, 45, 45, 45, 45, 1810, 45, 45, 1812, 67, 67, 67, 67, 67, 256, 67, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 336, 97, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 131427, 0, 0, 0, 0, 362, 0, 365, 28809, 367, 139, 45, 45, 371, 373, 45, 45, 45, 955, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 413, 45, 45, 45, 457, 459, 67, 67, 67, 67, 67, 67, 67, 67, 473, 67, 478, 67, 67, 482, 67, 67, 485, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 1828, 97, 554, 556, 97, 97, 97, 97, 97, 97, 97, 97, 570, 97, 575, 97, 97, 579, 97, 97, 582, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 330, 97, 97, 67, 746, 67, 67, 67, 67, 67, 67, 67, 67, 67, 758, 67, 67, 67, 67, 67, 67, 67, 1575, 67, 67, 67, 67, 67, 67, 67, 67, 493, 67, 67, 67, 67, 67, 67, 67, 97, 97, 844, 97, 97, 97, 97, 97, 97, 97, 97, 97, 856, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 1735, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 1642, 97, 1644, 97, 97, 890, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 67, 67, 67, 67, 1065, 1066, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 532, 67, 67, 67, 67, 67, 67, 67, 1451, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 496, 67, 67, 97, 97, 1505, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 593, 97, 97, 0, 1474, 0, 1476, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1617, 97, 97, 1635, 0, 1637, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 885, 97, 97, 97, 97, 67, 67, 1704, 67, 67, 67, 67, 97, 97, 97, 97, 97, 97, 97, 97, 97, 565, 572, 97, 97, 97, 97, 97, 97, 97, 97, 1832, 0, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, 1946, 45, 45, 67, 67, 67, 67, 67, 97, 1926, 97, 1927, 97, 0, 0, 0, 97, 97, 1934, 2043, 0, 0, 97, 97, 97, 2047, 45, 45, 67, 67, 0, 1832, 97, 97, 45, 45, 45, 981, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1227, 45, 45, 45, 131427, 0, 0, 0, 0, 362, 0, 365, 28809, 367, 139, 45, 45, 372, 45, 45, 45, 45, 1661, 1662, 45, 45, 45, 45, 45, 1666, 45, 45, 45, 45, 45, 1673, 45, 1675, 45, 45, 45, 45, 45, 45, 45, 67, 1426, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1275, 67, 67, 67, 67, 67, 45, 418, 45, 45, 420, 45, 45, 423, 45, 45, 45, 45, 45, 45, 45, 45, 959, 45, 45, 962, 45, 45, 45, 45, 458, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 483, 67, 67, 67, 67, 504, 67, 67, 506, 67, 67, 509, 67, 67, 67, 67, 67, 67, 67, 528, 67, 67, 67, 67, 67, 67, 67, 67, 1287, 67, 67, 67, 67, 67, 67, 67, 555, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 580, 97, 97, 97, 97, 601, 97, 97, 603, 97, 97, 606, 97, 97, 97, 97, 97, 97, 848, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1498, 97, 97, 97, 97, 97, 97, 45, 45, 714, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 989, 990, 45, 67, 67, 67, 67, 67, 1011, 67, 67, 67, 67, 1015, 67, 67, 67, 67, 67, 67, 67, 753, 67, 67, 67, 67, 67, 67, 67, 67, 467, 67, 67, 67, 67, 67, 67, 67, 45, 45, 1179, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1003, 1004, 67, 1217, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 728, 67, 1461, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1034, 67, 97, 1516, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 871, 97, 67, 67, 67, 1705, 67, 67, 67, 97, 97, 97, 97, 97, 97, 97, 97, 97, 567, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1715, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 0, 45, 45, 1380, 45, 45, 45, 45, 45, 67, 67, 97, 97, 97, 97, 97, 0, 0, 0, 97, 1887, 97, 97, 0, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 2006, 45, 45, 1907, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1920, 67, 97, 0, 2035, 97, 97, 97, 97, 97, 45, 45, 45, 45, 67, 67, 67, 1428, 67, 67, 67, 67, 67, 67, 1435, 67, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 45, 146, 45, 152, 45, 45, 165, 45, 175, 45, 180, 45, 45, 187, 190, 195, 45, 203, 254, 257, 262, 67, 270, 67, 67, 0, 24850, 12564, 0, 0, 0, 281, 28809, 53531, 97, 97, 97, 293, 97, 299, 97, 97, 312, 97, 322, 97, 327, 97, 97, 334, 337, 342, 97, 350, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 67, 484, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 499, 97, 581, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 596, 648, 45, 650, 45, 651, 45, 653, 45, 45, 45, 657, 45, 45, 45, 45, 45, 45, 1954, 67, 67, 67, 1958, 67, 67, 67, 67, 67, 67, 67, 768, 67, 67, 67, 67, 67, 67, 67, 67, 769, 67, 67, 67, 67, 67, 67, 67, 680, 45, 45, 45, 45, 45, 45, 45, 45, 688, 689, 691, 45, 45, 45, 45, 45, 983, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 947, 45, 45, 45, 45, 952, 45, 45, 698, 699, 45, 45, 702, 703, 45, 45, 45, 45, 45, 45, 45, 711, 744, 67, 67, 67, 67, 67, 67, 67, 67, 67, 757, 67, 67, 67, 67, 761, 67, 67, 67, 67, 765, 67, 767, 67, 67, 67, 67, 67, 67, 67, 67, 775, 776, 778, 67, 67, 67, 67, 67, 67, 785, 786, 67, 67, 789, 790, 67, 67, 67, 67, 67, 67, 1442, 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 1775, 97, 97, 97, 67, 67, 67, 67, 67, 798, 67, 67, 67, 802, 67, 67, 67, 67, 67, 67, 67, 67, 1465, 67, 67, 1468, 67, 67, 1471, 67, 67, 810, 67, 67, 67, 67, 67, 67, 67, 67, 67, 821, 25398, 542, 13112, 544, 57889, 0, 0, 54074, 54074, 550, 0, 833, 97, 835, 97, 836, 97, 838, 97, 97, 0, 0, 97, 97, 97, 2002, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 1740, 45, 45, 45, 1744, 45, 45, 45, 97, 842, 97, 97, 97, 97, 97, 97, 97, 97, 97, 855, 97, 97, 97, 97, 0, 1717, 1718, 97, 97, 97, 97, 97, 1722, 97, 0, 0, 859, 97, 97, 97, 97, 863, 97, 865, 97, 97, 97, 97, 97, 97, 97, 97, 604, 97, 97, 97, 97, 97, 97, 97, 873, 874, 876, 97, 97, 97, 97, 97, 97, 883, 884, 97, 97, 887, 888, 97, 18, 131427, 0, 0, 0, 0, 0, 0, 362, 225280, 0, 365, 0, 367, 0, 45, 45, 45, 1531, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1199, 45, 45, 45, 45, 45, 97, 97, 908, 97, 97, 97, 97, 97, 97, 97, 97, 97, 919, 638, 0, 0, 0, 0, 2158877, 2158877, 2158877, 2158877, 2158877, 2425117, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2597149, 2158877, 2158877, 2158877, 2158877, 2158877, 2158877, 2642205, 2158877, 2158877, 2158877, 2158877, 2158877, 3158301, 0, 2375818, 2379914, 2158730, 2158730, 2420874, 2158730, 2449546, 2158730, 2158730, 953, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 965, 978, 45, 45, 45, 45, 45, 45, 985, 45, 45, 45, 45, 45, 45, 45, 45, 971, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 1027, 67, 1029, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1455, 67, 67, 67, 67, 67, 67, 67, 1077, 1078, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 0, 0, 0, 0, 0, 0, 366, 0, 139, 2158730, 2158730, 2158730, 2404490, 2412682, 1113, 97, 97, 97, 97, 97, 97, 1121, 97, 1123, 97, 97, 97, 97, 97, 97, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1540, 1155, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 615, 1168, 97, 97, 1171, 1172, 97, 97, 0, 921, 0, 1175, 0, 0, 0, 0, 45, 45, 45, 45, 45, 1533, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1663, 45, 45, 45, 45, 45, 45, 45, 45, 45, 183, 45, 45, 45, 45, 201, 45, 45, 45, 1219, 45, 45, 45, 45, 45, 45, 45, 1226, 45, 45, 45, 45, 45, 168, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 427, 45, 45, 45, 45, 45, 45, 45, 1231, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1242, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1046, 67, 67, 1254, 67, 1256, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 806, 807, 67, 67, 97, 1336, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1111, 97, 97, 97, 97, 97, 1351, 97, 97, 97, 1354, 97, 97, 97, 1359, 97, 97, 97, 0, 97, 97, 97, 97, 1640, 97, 97, 97, 97, 97, 97, 97, 897, 97, 97, 97, 902, 97, 97, 97, 97, 97, 97, 97, 97, 1366, 97, 97, 97, 97, 97, 97, 97, 1371, 97, 97, 97, 0, 97, 97, 97, 1730, 97, 97, 97, 97, 97, 97, 97, 97, 915, 97, 97, 97, 97, 0, 360, 0, 67, 67, 67, 1440, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1017, 67, 1019, 67, 67, 67, 67, 67, 1453, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1459, 97, 97, 97, 1493, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1525, 97, 97, 97, 97, 97, 97, 1507, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1514, 67, 67, 67, 67, 1584, 67, 67, 67, 67, 67, 1590, 67, 67, 67, 67, 67, 67, 67, 783, 67, 67, 67, 788, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1599, 1601, 67, 67, 67, 1604, 67, 1606, 1607, 67, 1472, 0, 1474, 0, 1476, 0, 97, 97, 97, 97, 97, 97, 1614, 97, 97, 97, 97, 45, 45, 1850, 45, 45, 45, 45, 1855, 45, 45, 45, 45, 45, 1222, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1229, 97, 1618, 97, 97, 97, 97, 97, 97, 97, 1625, 97, 97, 97, 97, 97, 0, 1175, 0, 45, 45, 45, 45, 45, 45, 45, 45, 447, 45, 45, 45, 45, 45, 67, 67, 1633, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 1643, 1645, 97, 97, 0, 0, 97, 97, 1784, 97, 97, 97, 0, 0, 97, 97, 0, 97, 1894, 1895, 97, 1897, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 656, 45, 45, 45, 45, 45, 45, 97, 1648, 97, 1650, 1651, 97, 0, 45, 45, 45, 1654, 45, 45, 45, 45, 45, 169, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 658, 45, 45, 45, 45, 664, 45, 45, 1659, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1187, 45, 45, 1669, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 1005, 67, 67, 1681, 67, 67, 67, 67, 67, 67, 67, 1686, 67, 67, 67, 67, 67, 67, 67, 784, 67, 67, 67, 67, 67, 67, 67, 67, 1055, 67, 67, 67, 67, 1060, 67, 67, 97, 97, 1713, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 0, 1378, 45, 45, 45, 45, 45, 45, 45, 408, 45, 45, 45, 45, 45, 45, 45, 45, 1547, 45, 1549, 45, 45, 45, 45, 45, 97, 97, 1780, 0, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 0, 97, 97, 97, 45, 45, 2027, 2028, 45, 45, 67, 67, 2031, 2032, 67, 45, 45, 1804, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 1917, 67, 67, 67, 67, 67, 67, 67, 1819, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 1708, 97, 97, 97, 97, 97, 45, 45, 1862, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 497, 67, 67, 67, 1877, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 0, 0, 97, 97, 97, 97, 97, 1839, 0, 0, 97, 97, 97, 97, 1936, 0, 0, 97, 97, 97, 97, 97, 97, 1943, 1944, 1945, 45, 45, 45, 45, 670, 45, 45, 45, 45, 674, 45, 45, 45, 45, 678, 45, 1948, 45, 1950, 45, 45, 45, 45, 1955, 1956, 1957, 67, 67, 67, 1960, 67, 1962, 67, 67, 67, 67, 1967, 1968, 1969, 97, 0, 0, 0, 97, 97, 1974, 97, 0, 1936, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 1906, 0, 1977, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1746, 45, 45, 45, 45, 2011, 67, 67, 2013, 67, 67, 67, 2017, 97, 97, 0, 0, 2021, 97, 8192, 97, 97, 2025, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 1916, 67, 67, 67, 67, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 140, 45, 45, 45, 1180, 45, 45, 45, 45, 1184, 45, 45, 45, 45, 45, 45, 45, 387, 45, 392, 45, 45, 396, 45, 45, 399, 45, 45, 67, 207, 67, 67, 67, 67, 67, 67, 236, 67, 67, 67, 67, 67, 67, 67, 800, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1603, 67, 67, 67, 67, 67, 0, 97, 97, 287, 97, 97, 97, 97, 97, 97, 316, 97, 97, 97, 97, 97, 97, 0, 45, 45, 45, 45, 45, 45, 45, 1656, 1657, 45, 376, 45, 45, 45, 45, 45, 388, 45, 45, 45, 45, 45, 45, 45, 45, 1406, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 462, 67, 67, 67, 67, 67, 474, 67, 67, 67, 67, 67, 67, 67, 817, 67, 67, 67, 67, 25398, 542, 13112, 544, 97, 97, 97, 97, 559, 97, 97, 97, 97, 97, 571, 97, 97, 97, 97, 97, 97, 896, 97, 97, 97, 900, 97, 97, 97, 97, 97, 97, 912, 914, 97, 97, 97, 97, 97, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 391, 45, 45, 45, 45, 45, 45, 45, 45, 713, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 662, 45, 1140, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 636, 67, 67, 1283, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 513, 67, 67, 1363, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 889, 97, 97, 97, 1714, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 926, 45, 45, 45, 45, 45, 45, 45, 45, 672, 45, 45, 45, 45, 45, 45, 45, 45, 686, 45, 45, 45, 45, 45, 45, 45, 45, 944, 45, 45, 45, 45, 45, 45, 45, 45, 1676, 45, 45, 45, 45, 45, 45, 67, 97, 97, 97, 1833, 0, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 1902, 45, 45, 45, 45, 45, 957, 45, 45, 45, 45, 961, 45, 963, 45, 45, 45, 67, 97, 2034, 0, 97, 97, 97, 97, 97, 2040, 45, 45, 45, 2042, 67, 67, 67, 67, 67, 67, 1574, 67, 67, 67, 67, 67, 1578, 67, 67, 67, 67, 67, 67, 799, 67, 67, 67, 804, 67, 67, 67, 67, 67, 67, 67, 1298, 0, 0, 0, 1304, 0, 0, 0, 1310, 132, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 45, 45, 45, 1414, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 428, 45, 45, 45, 45, 45, 57889, 0, 0, 54074, 54074, 550, 831, 97, 97, 97, 97, 97, 97, 97, 97, 97, 568, 97, 97, 97, 97, 578, 97, 45, 45, 968, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1228, 45, 45, 67, 67, 67, 67, 67, 25398, 1082, 13112, 1086, 54074, 1090, 0, 0, 0, 0, 0, 0, 364, 0, 0, 0, 139, 2158592, 2158592, 2158592, 2404352, 2412544, 67, 67, 67, 67, 1464, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 510, 67, 67, 67, 67, 97, 97, 97, 97, 1519, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 918, 97, 0, 0, 0, 0, 1528, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 976, 45, 1554, 45, 45, 45, 45, 45, 45, 45, 45, 1562, 45, 45, 1565, 45, 45, 45, 45, 683, 45, 45, 45, 687, 45, 45, 692, 45, 45, 45, 45, 45, 1953, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1014, 67, 67, 67, 67, 67, 67, 1568, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 0, 67, 67, 67, 67, 67, 1585, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1594, 97, 97, 1649, 97, 97, 97, 0, 45, 45, 1653, 45, 45, 45, 45, 45, 45, 383, 45, 45, 45, 45, 45, 45, 45, 45, 45, 986, 45, 45, 45, 45, 45, 45, 45, 45, 1670, 45, 1672, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 736, 67, 67, 67, 67, 67, 741, 67, 67, 67, 1680, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1074, 67, 67, 67, 1692, 67, 67, 67, 67, 67, 67, 67, 1697, 67, 1699, 67, 67, 67, 67, 67, 67, 1012, 67, 67, 67, 67, 67, 67, 67, 67, 67, 468, 475, 67, 67, 67, 67, 67, 67, 1769, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 97, 97, 624, 97, 97, 97, 97, 97, 97, 634, 97, 97, 1792, 97, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 958, 45, 45, 45, 45, 45, 45, 964, 45, 150, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 977, 204, 45, 67, 67, 67, 217, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 787, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 271, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 97, 97, 351, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 45, 45, 938, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1398, 45, 45, 45, 153, 45, 161, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 660, 661, 45, 45, 205, 45, 67, 67, 67, 67, 220, 67, 228, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 280, 94, 0, 0, 67, 67, 67, 67, 67, 272, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 97, 97, 352, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 45, 439, 45, 45, 45, 45, 45, 445, 45, 45, 45, 452, 45, 45, 67, 67, 212, 216, 67, 67, 67, 67, 67, 241, 67, 246, 67, 252, 67, 67, 486, 67, 67, 67, 67, 67, 67, 67, 494, 67, 67, 67, 67, 67, 67, 67, 1245, 67, 67, 67, 67, 67, 67, 67, 67, 1013, 67, 67, 1016, 67, 67, 67, 67, 67, 521, 67, 67, 525, 67, 67, 67, 67, 67, 531, 67, 67, 67, 538, 67, 0, 0, 2046, 97, 97, 97, 45, 45, 67, 67, 0, 0, 97, 97, 45, 45, 45, 1192, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1418, 45, 45, 1421, 97, 97, 583, 97, 97, 97, 97, 97, 97, 97, 591, 97, 97, 97, 97, 97, 97, 913, 97, 97, 97, 97, 97, 97, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 1384, 97, 618, 97, 97, 622, 97, 97, 97, 97, 97, 628, 97, 97, 97, 635, 97, 18, 131427, 0, 0, 0, 639, 0, 132, 362, 0, 0, 365, 29315, 367, 0, 921, 29315, 0, 0, 0, 0, 45, 45, 45, 45, 932, 45, 45, 45, 45, 45, 1544, 45, 45, 45, 45, 45, 1550, 45, 45, 45, 45, 45, 1194, 45, 1196, 45, 45, 45, 45, 45, 45, 45, 45, 999, 45, 45, 45, 45, 45, 67, 67, 45, 45, 667, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1408, 45, 45, 45, 696, 45, 45, 45, 701, 45, 45, 45, 45, 45, 45, 45, 45, 710, 45, 45, 45, 1220, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 194, 45, 45, 45, 729, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 797, 67, 67, 67, 67, 67, 67, 805, 67, 67, 67, 67, 67, 67, 67, 1587, 67, 1589, 67, 67, 67, 67, 67, 67, 67, 67, 1763, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 2162968, 0, 0, 67, 67, 67, 67, 67, 814, 816, 67, 67, 67, 67, 67, 25398, 542, 13112, 544, 67, 67, 1008, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1020, 67, 0, 97, 45, 67, 0, 97, 45, 67, 0, 97, 45, 67, 97, 0, 0, 97, 97, 97, 97, 97, 45, 45, 45, 45, 67, 67, 67, 67, 1429, 67, 1430, 67, 67, 67, 67, 67, 1062, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 518, 1076, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 0, 0, 0, 0, 0, 0, 28809, 0, 139, 45, 45, 45, 45, 45, 97, 97, 97, 97, 1102, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1124, 97, 1126, 97, 97, 1114, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1112, 97, 97, 1156, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 594, 97, 97, 97, 97, 1170, 97, 97, 97, 97, 0, 921, 0, 0, 0, 0, 0, 0, 45, 45, 45, 45, 1532, 45, 45, 45, 45, 1536, 45, 45, 45, 45, 45, 172, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 706, 45, 45, 709, 45, 45, 1177, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1202, 45, 1204, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1215, 45, 45, 45, 1232, 45, 45, 45, 45, 45, 45, 45, 67, 1237, 67, 67, 67, 67, 67, 67, 1053, 1054, 67, 67, 67, 67, 67, 67, 1061, 67, 67, 1282, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1289, 67, 67, 67, 1292, 97, 97, 97, 97, 1339, 97, 97, 97, 97, 97, 97, 1344, 97, 97, 97, 97, 45, 1849, 45, 1851, 45, 45, 45, 45, 45, 45, 45, 45, 721, 45, 45, 45, 45, 45, 726, 45, 1385, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1188, 45, 45, 1401, 1402, 45, 45, 45, 45, 1405, 45, 45, 45, 45, 45, 45, 45, 45, 1752, 45, 45, 45, 45, 45, 67, 67, 1410, 45, 45, 45, 1413, 45, 1415, 45, 45, 45, 45, 45, 45, 1419, 45, 45, 45, 45, 1806, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 97, 97, 2019, 0, 97, 67, 67, 67, 1452, 67, 67, 67, 67, 67, 67, 67, 67, 1457, 67, 67, 67, 67, 67, 67, 1259, 67, 67, 67, 67, 67, 67, 1264, 67, 67, 1460, 67, 1462, 67, 67, 67, 67, 67, 67, 1466, 67, 67, 67, 67, 67, 67, 67, 67, 1588, 67, 67, 67, 67, 67, 67, 67, 0, 1300, 0, 0, 0, 1306, 0, 0, 0, 97, 97, 97, 1506, 97, 97, 97, 97, 97, 97, 97, 97, 1512, 97, 97, 97, 0, 1728, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 901, 97, 97, 97, 97, 1515, 97, 1517, 97, 97, 97, 97, 97, 97, 1521, 97, 97, 97, 97, 97, 97, 0, 45, 1652, 45, 45, 45, 1655, 45, 45, 45, 45, 45, 1542, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1552, 1553, 45, 45, 45, 1556, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 693, 45, 45, 45, 67, 67, 67, 67, 1572, 67, 67, 67, 67, 1576, 67, 67, 67, 67, 67, 67, 67, 67, 1602, 67, 67, 1605, 67, 67, 67, 0, 67, 1582, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1580, 67, 67, 1596, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 0, 542, 0, 544, 67, 67, 67, 67, 1759, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 533, 67, 67, 67, 67, 67, 67, 67, 1770, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 97, 1777, 97, 97, 97, 1793, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 998, 45, 45, 1001, 1002, 45, 45, 67, 67, 45, 1861, 45, 67, 67, 67, 67, 67, 67, 67, 67, 1871, 67, 1873, 1874, 67, 0, 97, 45, 67, 0, 97, 45, 67, 16384, 97, 45, 67, 97, 0, 0, 0, 1473, 0, 1082, 0, 0, 0, 1475, 0, 1086, 0, 0, 0, 1477, 1876, 67, 97, 97, 97, 97, 97, 1883, 0, 1885, 97, 97, 97, 1889, 0, 0, 0, 286, 0, 0, 0, 286, 0, 2367488, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 40976, 0, 18, 18, 24, 24, 126, 126, 126, 2053, 0, 2055, 45, 67, 0, 97, 45, 67, 0, 97, 45, 67, 97, 0, 0, 97, 97, 97, 2039, 97, 45, 45, 45, 45, 67, 67, 67, 67, 67, 226, 67, 67, 67, 67, 67, 67, 67, 67, 1246, 67, 67, 1249, 1250, 67, 67, 67, 132, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 141, 45, 45, 45, 1403, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1186, 45, 45, 1189, 45, 45, 155, 45, 45, 45, 45, 45, 45, 45, 45, 45, 191, 45, 45, 45, 45, 700, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1753, 45, 45, 45, 67, 67, 45, 45, 67, 208, 67, 67, 67, 222, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1764, 67, 67, 67, 67, 67, 67, 67, 258, 67, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 288, 97, 97, 97, 302, 97, 97, 97, 97, 97, 97, 97, 97, 97, 627, 97, 97, 97, 97, 97, 97, 338, 97, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 131427, 0, 0, 0, 0, 362, 0, 365, 28809, 367, 139, 45, 370, 45, 45, 45, 45, 716, 45, 45, 45, 45, 45, 722, 45, 45, 45, 45, 45, 45, 1912, 67, 67, 67, 67, 67, 67, 67, 67, 67, 819, 67, 67, 25398, 542, 13112, 544, 45, 403, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1409, 45, 67, 67, 67, 67, 489, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 771, 67, 67, 67, 67, 520, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 534, 67, 67, 67, 67, 67, 67, 1271, 67, 67, 67, 1274, 67, 67, 67, 1279, 67, 67, 24850, 24850, 12564, 12564, 0, 57889, 0, 0, 0, 53531, 53531, 367, 286, 97, 553, 97, 97, 97, 97, 586, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1138, 97, 97, 97, 97, 617, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 631, 97, 97, 97, 0, 1834, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 353, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 45, 45, 668, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 724, 45, 45, 45, 45, 45, 682, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 949, 45, 45, 45, 67, 67, 747, 748, 67, 67, 67, 67, 755, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 1302, 0, 0, 0, 1308, 0, 67, 794, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1701, 67, 97, 97, 97, 845, 846, 97, 97, 97, 97, 853, 97, 97, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 97, 97, 892, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 610, 97, 97, 45, 992, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 1239, 67, 67, 67, 1063, 67, 67, 67, 67, 67, 1068, 67, 67, 67, 67, 67, 67, 67, 0, 0, 1301, 0, 0, 0, 1307, 0, 0, 97, 1141, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1152, 97, 97, 0, 0, 97, 97, 2001, 0, 97, 2003, 97, 97, 97, 45, 45, 45, 1739, 45, 45, 45, 1742, 45, 45, 45, 45, 45, 97, 97, 97, 97, 1157, 97, 97, 97, 97, 97, 1162, 97, 97, 97, 97, 97, 97, 1145, 97, 97, 97, 97, 97, 1151, 97, 97, 97, 1253, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 539, 45, 1423, 45, 45, 67, 67, 67, 67, 67, 67, 67, 1431, 67, 67, 67, 67, 67, 67, 67, 1695, 67, 67, 67, 67, 67, 1700, 67, 1702, 67, 67, 1439, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 514, 67, 67, 97, 97, 1492, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 611, 97, 97, 1703, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 97, 97, 97, 97, 852, 97, 97, 97, 97, 97, 97, 45, 1949, 45, 1951, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 1961, 67, 0, 97, 45, 67, 0, 97, 2060, 2061, 0, 2062, 45, 67, 97, 0, 0, 2036, 97, 97, 97, 97, 45, 45, 45, 45, 67, 67, 67, 67, 67, 223, 67, 67, 237, 67, 67, 67, 67, 67, 67, 67, 1272, 67, 67, 67, 67, 67, 67, 67, 67, 507, 67, 67, 67, 67, 67, 67, 67, 1963, 67, 67, 67, 97, 97, 97, 97, 0, 1972, 0, 97, 97, 97, 1975, 0, 921, 29315, 0, 0, 0, 0, 45, 45, 45, 931, 45, 45, 45, 45, 45, 407, 45, 45, 45, 45, 45, 45, 45, 45, 45, 417, 45, 45, 1989, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1996, 97, 18, 131427, 0, 0, 360, 0, 0, 0, 362, 0, 0, 365, 29315, 367, 0, 921, 29315, 0, 0, 0, 0, 45, 45, 930, 45, 45, 45, 45, 45, 45, 444, 45, 45, 45, 45, 45, 45, 45, 67, 67, 97, 97, 1998, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 1985, 45, 1986, 45, 45, 45, 156, 45, 45, 170, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 675, 45, 45, 45, 45, 679, 131427, 0, 358, 0, 0, 362, 0, 365, 28809, 367, 139, 45, 45, 45, 45, 45, 381, 45, 45, 45, 45, 45, 45, 45, 45, 45, 400, 45, 45, 419, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 436, 67, 67, 67, 67, 67, 505, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 820, 67, 25398, 542, 13112, 544, 67, 67, 522, 67, 67, 67, 67, 67, 529, 67, 67, 67, 67, 67, 67, 67, 0, 1299, 0, 0, 0, 1305, 0, 0, 0, 97, 97, 619, 97, 97, 97, 97, 97, 626, 97, 97, 97, 97, 97, 97, 97, 1105, 97, 97, 97, 97, 1109, 97, 97, 97, 67, 67, 67, 67, 749, 67, 67, 67, 67, 67, 67, 67, 67, 67, 760, 67, 0, 97, 45, 67, 2058, 97, 45, 67, 0, 97, 45, 67, 97, 0, 0, 97, 97, 97, 97, 97, 45, 45, 45, 2041, 67, 67, 67, 67, 67, 780, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 516, 67, 67, 97, 97, 97, 878, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1629, 97, 0, 45, 979, 45, 45, 45, 45, 984, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1198, 45, 45, 45, 45, 45, 45, 67, 1023, 67, 67, 67, 67, 1028, 67, 67, 67, 67, 67, 67, 67, 67, 67, 470, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 0, 1094, 0, 0, 0, 1092, 1315, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1486, 97, 1489, 97, 97, 97, 1117, 97, 97, 97, 97, 1122, 97, 97, 97, 97, 97, 97, 97, 1146, 97, 97, 97, 97, 97, 97, 97, 97, 881, 97, 97, 97, 886, 97, 97, 97, 1311, 0, 0, 0, 0, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 1615, 97, 97, 97, 97, 97, 1619, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1631, 97, 97, 1847, 97, 45, 45, 45, 45, 1852, 45, 45, 45, 45, 45, 45, 45, 1235, 45, 45, 45, 67, 67, 67, 67, 67, 1868, 67, 67, 67, 1872, 67, 67, 67, 67, 67, 97, 97, 97, 97, 1882, 0, 0, 0, 97, 97, 97, 97, 0, 1891, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 1929, 0, 0, 97, 97, 97, 97, 97, 97, 45, 1900, 45, 1901, 45, 45, 45, 1905, 45, 67, 2054, 97, 45, 67, 0, 97, 45, 67, 0, 97, 45, 67, 97, 0, 0, 97, 2037, 2038, 97, 97, 45, 45, 45, 45, 67, 67, 67, 67, 1867, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1774, 97, 97, 97, 97, 97, 97, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 142, 45, 45, 45, 1412, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 432, 45, 45, 45, 45, 45, 157, 45, 45, 171, 45, 45, 45, 182, 45, 45, 45, 45, 200, 45, 45, 45, 1543, 45, 45, 45, 45, 45, 45, 45, 45, 1551, 45, 45, 45, 45, 1181, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1211, 45, 45, 45, 1214, 45, 45, 45, 67, 209, 67, 67, 67, 224, 67, 67, 238, 67, 67, 67, 249, 67, 0, 97, 2056, 2057, 0, 2059, 45, 67, 0, 97, 45, 67, 97, 0, 0, 1937, 97, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 1741, 45, 45, 45, 45, 45, 45, 67, 67, 67, 267, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 289, 97, 97, 97, 304, 97, 97, 318, 97, 97, 97, 329, 97, 97, 0, 0, 97, 1783, 97, 97, 97, 97, 0, 0, 97, 97, 0, 97, 97, 97, 45, 2026, 45, 45, 45, 45, 67, 2030, 67, 67, 67, 67, 67, 67, 1041, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1044, 67, 67, 67, 67, 67, 67, 97, 97, 347, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 45, 666, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1420, 45, 57889, 0, 0, 54074, 54074, 550, 0, 97, 97, 97, 97, 97, 97, 97, 97, 840, 67, 1007, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 759, 67, 67, 67, 67, 67, 67, 67, 1052, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1031, 67, 67, 67, 67, 67, 97, 97, 97, 1101, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 592, 97, 97, 97, 1190, 45, 45, 45, 45, 45, 1195, 45, 1197, 45, 45, 45, 45, 1201, 45, 45, 45, 45, 1952, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 250, 67, 67, 67, 1255, 67, 1257, 67, 67, 67, 67, 1261, 67, 67, 67, 67, 67, 67, 67, 67, 1685, 67, 67, 67, 67, 67, 67, 67, 0, 24851, 12565, 0, 0, 0, 0, 28809, 53532, 67, 67, 1267, 67, 67, 67, 67, 67, 67, 1273, 67, 67, 67, 67, 67, 67, 67, 67, 1696, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 2162688, 0, 0, 1281, 67, 67, 67, 67, 1285, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1070, 67, 67, 67, 67, 67, 1335, 97, 1337, 97, 97, 97, 97, 1341, 97, 97, 97, 97, 97, 97, 97, 97, 882, 97, 97, 97, 97, 97, 97, 97, 1347, 97, 97, 97, 97, 97, 97, 1353, 97, 97, 97, 97, 97, 97, 1361, 97, 18, 131427, 0, 638, 0, 0, 0, 0, 362, 0, 0, 365, 29315, 367, 0, 544, 0, 550, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2473984, 2158592, 2158592, 2158592, 2990080, 2158592, 2158592, 2207744, 2207744, 2482176, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 2207744, 0, 0, 0, 0, 0, 0, 2162688, 0, 53530, 97, 97, 97, 1365, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 608, 97, 97, 97, 45, 45, 1424, 45, 1425, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1058, 67, 67, 67, 67, 45, 1555, 45, 45, 1557, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 707, 45, 45, 45, 45, 67, 67, 1570, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 773, 67, 67, 1595, 67, 67, 1597, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 2158592, 2158592, 2158592, 2404352, 2412544, 97, 97, 97, 1636, 97, 97, 97, 1639, 97, 97, 1641, 97, 97, 97, 97, 97, 97, 1173, 0, 921, 0, 0, 0, 0, 0, 0, 45, 67, 67, 67, 1693, 67, 67, 67, 67, 67, 67, 67, 1698, 67, 67, 67, 67, 67, 67, 67, 1773, 67, 97, 97, 97, 97, 97, 97, 97, 625, 97, 97, 97, 97, 97, 97, 97, 97, 850, 97, 97, 97, 97, 97, 97, 97, 97, 880, 97, 97, 97, 97, 97, 97, 97, 97, 1106, 97, 97, 97, 97, 97, 97, 97, 1860, 45, 45, 67, 67, 1865, 67, 67, 67, 67, 1870, 67, 67, 67, 67, 1875, 67, 67, 97, 97, 1880, 97, 97, 0, 0, 0, 97, 97, 1888, 97, 0, 0, 0, 1938, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 1854, 45, 45, 45, 45, 45, 45, 45, 1909, 45, 45, 1911, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1248, 67, 67, 67, 67, 67, 67, 1922, 67, 67, 1924, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 1898, 45, 45, 45, 45, 45, 45, 1904, 45, 45, 67, 67, 67, 67, 97, 97, 97, 97, 0, 0, 16384, 97, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 1724, 2008, 2009, 45, 45, 67, 67, 67, 2014, 2015, 67, 67, 97, 97, 0, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 2022, 0, 2023, 97, 97, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 1869, 67, 67, 67, 67, 67, 67, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 45, 147, 151, 154, 45, 162, 45, 45, 176, 178, 181, 45, 45, 45, 192, 196, 45, 45, 45, 45, 2012, 67, 67, 67, 67, 67, 67, 2018, 97, 0, 0, 97, 1978, 97, 97, 97, 1982, 45, 45, 45, 45, 45, 45, 45, 45, 45, 972, 973, 45, 45, 45, 45, 45, 67, 259, 263, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 97, 294, 298, 301, 97, 309, 97, 97, 323, 325, 328, 97, 97, 97, 97, 97, 560, 97, 97, 97, 569, 97, 97, 97, 97, 97, 97, 306, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1624, 97, 97, 97, 97, 97, 97, 97, 0, 921, 0, 1175, 0, 0, 0, 0, 45, 339, 343, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 67, 67, 503, 67, 67, 67, 67, 67, 67, 67, 67, 67, 512, 67, 67, 519, 97, 97, 600, 97, 97, 97, 97, 97, 97, 97, 97, 97, 609, 97, 97, 616, 45, 649, 45, 45, 45, 45, 45, 654, 45, 45, 45, 45, 45, 45, 45, 45, 1393, 45, 45, 45, 45, 45, 45, 45, 45, 1209, 45, 45, 45, 45, 45, 45, 45, 67, 763, 67, 67, 67, 67, 67, 67, 67, 67, 770, 67, 67, 67, 774, 67, 0, 2045, 97, 97, 97, 97, 45, 45, 67, 67, 0, 0, 97, 97, 45, 45, 45, 994, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 213, 67, 219, 67, 67, 232, 67, 242, 67, 247, 67, 67, 67, 779, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1018, 67, 67, 67, 67, 811, 67, 67, 67, 67, 67, 67, 67, 67, 67, 25398, 542, 13112, 544, 57889, 0, 0, 54074, 54074, 550, 0, 97, 834, 97, 97, 97, 97, 97, 839, 97, 18, 131427, 0, 638, 0, 0, 0, 0, 362, 0, 0, 365, 29315, 367, 645, 97, 97, 861, 97, 97, 97, 97, 97, 97, 97, 97, 868, 97, 97, 97, 872, 97, 97, 877, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 613, 97, 97, 97, 97, 97, 909, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 0, 18, 18, 24, 24, 27, 27, 27, 1036, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1047, 67, 67, 67, 1050, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1033, 67, 67, 67, 97, 97, 1130, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 638, 0, 0, 67, 67, 67, 1295, 67, 67, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 1317, 97, 97, 97, 97, 97, 97, 1375, 97, 97, 97, 0, 0, 0, 45, 1379, 45, 45, 45, 45, 45, 45, 422, 45, 45, 45, 429, 431, 45, 45, 45, 45, 0, 1090, 0, 0, 97, 1479, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1357, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1716, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1723, 0, 921, 29315, 0, 0, 0, 0, 45, 929, 45, 45, 45, 45, 45, 45, 45, 1392, 45, 45, 45, 45, 45, 45, 45, 45, 45, 960, 45, 45, 45, 45, 45, 45, 97, 97, 97, 1738, 45, 45, 45, 45, 45, 45, 45, 1743, 45, 45, 45, 45, 166, 45, 45, 45, 45, 184, 186, 45, 45, 197, 45, 45, 97, 1779, 0, 0, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 0, 97, 18, 131427, 0, 638, 0, 0, 0, 0, 362, 0, 640, 365, 29315, 367, 0, 921, 29315, 0, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1537, 45, 45, 45, 45, 45, 1803, 45, 45, 45, 45, 45, 1809, 45, 45, 45, 67, 67, 67, 1814, 67, 67, 67, 67, 67, 67, 1821, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 0, 0, 67, 67, 67, 1818, 67, 67, 67, 67, 67, 1824, 67, 67, 67, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 1890, 0, 1829, 97, 97, 0, 0, 97, 97, 1836, 97, 97, 0, 0, 0, 97, 97, 97, 97, 1981, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1987, 1845, 97, 97, 97, 45, 45, 45, 45, 45, 1853, 45, 45, 45, 1857, 45, 45, 45, 67, 1864, 67, 1866, 67, 67, 67, 67, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 97, 97, 1710, 1711, 67, 67, 97, 97, 97, 97, 97, 0, 0, 0, 1886, 97, 97, 97, 0, 0, 97, 97, 97, 97, 1838, 0, 0, 0, 97, 1843, 97, 0, 1893, 97, 97, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1745, 45, 45, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 0, 1931, 97, 97, 97, 97, 97, 588, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 629, 97, 97, 97, 97, 97, 67, 2044, 0, 97, 97, 97, 97, 45, 45, 67, 67, 0, 0, 97, 97, 45, 45, 45, 1660, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 453, 45, 455, 67, 67, 67, 67, 268, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 348, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 131427, 0, 359, 0, 0, 362, 0, 365, 28809, 367, 139, 45, 45, 45, 45, 45, 421, 45, 45, 45, 45, 45, 45, 45, 434, 45, 45, 695, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1667, 45, 0, 921, 29315, 0, 925, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1811, 45, 67, 67, 67, 67, 67, 67, 1037, 67, 1039, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1277, 67, 67, 67, 67, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 0, 1095, 0, 0, 0, 1096, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 869, 97, 97, 97, 97, 97, 97, 1131, 97, 1133, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1370, 97, 97, 97, 97, 97, 1312, 0, 0, 0, 0, 1096, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 1327, 97, 97, 97, 97, 97, 1332, 97, 97, 97, 1830, 97, 0, 0, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 1896, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1548, 45, 45, 45, 45, 45, 45, 133, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 45, 45, 380, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 401, 45, 45, 158, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1200, 45, 45, 45, 45, 206, 67, 67, 67, 67, 67, 225, 67, 67, 67, 67, 67, 67, 67, 67, 754, 67, 67, 67, 67, 67, 67, 67, 57889, 0, 0, 54074, 54074, 550, 832, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1342, 97, 97, 97, 97, 97, 97, 67, 67, 67, 67, 67, 25398, 1083, 13112, 1087, 54074, 1091, 0, 0, 0, 0, 0, 0, 1316, 0, 831, 97, 97, 97, 97, 97, 97, 97, 1174, 921, 0, 1175, 0, 0, 0, 0, 45, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 45, 148, 67, 67, 264, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 97, 295, 97, 97, 97, 97, 313, 97, 97, 97, 97, 331, 333, 97, 18, 131427, 356, 638, 0, 0, 0, 0, 362, 0, 0, 365, 0, 367, 0, 45, 45, 1530, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 988, 45, 45, 45, 97, 344, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 402, 404, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1756, 67, 438, 45, 45, 45, 45, 45, 45, 45, 45, 449, 450, 45, 45, 45, 67, 67, 214, 218, 221, 67, 229, 67, 67, 243, 245, 248, 67, 67, 67, 67, 67, 488, 490, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1071, 67, 1073, 67, 67, 67, 67, 67, 524, 67, 67, 67, 67, 67, 67, 67, 67, 535, 536, 67, 67, 67, 67, 67, 67, 1683, 1684, 67, 67, 67, 67, 1688, 1689, 67, 67, 67, 67, 67, 67, 1586, 67, 67, 67, 67, 67, 67, 67, 67, 67, 469, 67, 67, 67, 67, 67, 67, 97, 97, 97, 585, 587, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1163, 97, 97, 97, 97, 97, 97, 97, 621, 97, 97, 97, 97, 97, 97, 97, 97, 632, 633, 97, 97, 0, 0, 1782, 97, 97, 97, 97, 97, 0, 0, 97, 97, 0, 97, 712, 45, 45, 45, 717, 45, 45, 45, 45, 45, 45, 45, 45, 725, 45, 45, 45, 163, 167, 173, 177, 45, 45, 45, 45, 45, 193, 45, 45, 45, 45, 982, 45, 45, 45, 45, 45, 45, 987, 45, 45, 45, 45, 45, 1558, 45, 1560, 45, 45, 45, 45, 45, 45, 45, 45, 704, 705, 45, 45, 45, 45, 45, 45, 45, 45, 731, 45, 45, 45, 67, 67, 67, 67, 67, 739, 67, 67, 67, 67, 67, 67, 273, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 67, 67, 67, 764, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1290, 67, 67, 67, 67, 67, 67, 812, 67, 67, 67, 67, 818, 67, 67, 67, 25398, 542, 13112, 544, 57889, 0, 0, 54074, 54074, 550, 0, 97, 97, 97, 97, 97, 837, 97, 97, 97, 97, 97, 602, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1137, 97, 97, 97, 97, 97, 97, 97, 97, 97, 862, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1627, 97, 97, 97, 0, 97, 97, 97, 97, 910, 97, 97, 97, 97, 916, 97, 97, 97, 0, 0, 0, 97, 97, 1940, 97, 97, 1942, 45, 45, 45, 45, 45, 45, 385, 45, 45, 45, 45, 395, 45, 45, 45, 45, 966, 45, 969, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 975, 45, 45, 45, 406, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 974, 45, 45, 45, 67, 67, 67, 67, 1010, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1262, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1040, 67, 1042, 67, 1045, 67, 67, 67, 67, 67, 67, 67, 97, 1706, 97, 97, 97, 1709, 97, 97, 97, 67, 67, 67, 67, 1051, 67, 67, 67, 67, 67, 1057, 67, 67, 67, 67, 67, 67, 67, 1443, 67, 67, 1446, 67, 67, 67, 67, 67, 67, 67, 1297, 0, 0, 0, 1303, 0, 0, 0, 1309, 67, 67, 67, 67, 1079, 25398, 0, 13112, 0, 54074, 0, 0, 0, 0, 0, 0, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2207744, 2207744, 2207744, 2207744, 2207744, 2572288, 2207744, 2207744, 2207744, 1098, 97, 97, 97, 97, 97, 1104, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1356, 97, 97, 97, 97, 97, 97, 1128, 97, 97, 97, 97, 97, 97, 1134, 97, 1136, 97, 1139, 97, 97, 97, 97, 97, 97, 1622, 97, 97, 97, 97, 97, 97, 97, 97, 0, 921, 0, 0, 0, 1176, 0, 646, 45, 67, 67, 67, 1268, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1469, 67, 67, 67, 97, 1348, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1127, 97, 67, 1569, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1448, 1449, 67, 1816, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1825, 67, 67, 1827, 97, 97, 0, 1781, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 0, 97, 97, 97, 1831, 0, 0, 97, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 1980, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1395, 45, 45, 45, 45, 45, 97, 1846, 97, 97, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1212, 45, 45, 45, 45, 45, 45, 2010, 45, 67, 67, 67, 67, 67, 2016, 67, 97, 97, 0, 0, 97, 97, 97, 0, 97, 97, 97, 97, 97, 45, 45, 2007, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 143, 45, 45, 45, 1671, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 1813, 67, 67, 1815, 45, 45, 67, 210, 67, 67, 67, 67, 67, 67, 239, 67, 67, 67, 67, 67, 67, 67, 1454, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1445, 67, 67, 67, 67, 67, 67, 97, 97, 290, 97, 97, 97, 97, 97, 97, 319, 97, 97, 97, 97, 97, 97, 303, 97, 97, 317, 97, 97, 97, 97, 97, 97, 305, 97, 97, 97, 97, 97, 97, 97, 97, 97, 899, 97, 97, 97, 97, 97, 97, 375, 45, 45, 45, 379, 45, 45, 390, 45, 45, 394, 45, 45, 45, 45, 45, 443, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 461, 67, 67, 67, 465, 67, 67, 476, 67, 67, 480, 67, 67, 67, 67, 67, 67, 1694, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1288, 67, 67, 67, 67, 67, 67, 500, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1075, 97, 97, 97, 558, 97, 97, 97, 562, 97, 97, 573, 97, 97, 577, 97, 97, 97, 97, 97, 895, 97, 97, 97, 97, 97, 97, 903, 97, 97, 97, 0, 97, 97, 1638, 97, 97, 97, 97, 97, 97, 97, 97, 1646, 597, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1334, 45, 681, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1396, 45, 45, 1399, 45, 45, 730, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1434, 67, 67, 67, 67, 67, 67, 750, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1456, 67, 67, 67, 67, 67, 45, 45, 993, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 1238, 67, 67, 1006, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1280, 1048, 1049, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1059, 67, 67, 67, 67, 67, 67, 1286, 67, 67, 67, 67, 67, 67, 67, 1291, 67, 97, 97, 1100, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 638, 0, 920, 97, 97, 1142, 1143, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1153, 97, 97, 97, 97, 97, 1158, 97, 97, 97, 1161, 97, 97, 97, 97, 1166, 97, 97, 97, 97, 97, 1325, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1328, 97, 97, 97, 97, 97, 97, 97, 45, 1218, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1678, 45, 45, 45, 67, 67, 67, 67, 67, 1269, 67, 67, 67, 67, 67, 67, 67, 67, 1278, 67, 67, 67, 67, 67, 67, 1761, 67, 67, 67, 67, 67, 67, 67, 67, 67, 530, 67, 67, 67, 67, 67, 67, 97, 97, 1349, 97, 97, 97, 97, 97, 97, 97, 97, 1358, 97, 97, 97, 97, 97, 97, 1623, 97, 97, 97, 97, 97, 97, 97, 97, 0, 921, 0, 0, 926, 0, 0, 0, 45, 45, 1411, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1754, 45, 45, 67, 67, 1301, 0, 1307, 0, 1313, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 21054, 97, 97, 97, 97, 67, 1757, 67, 67, 67, 1760, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1467, 67, 67, 67, 67, 67, 1778, 97, 0, 0, 97, 97, 97, 97, 97, 97, 0, 0, 97, 97, 0, 97, 97, 97, 97, 97, 1352, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1511, 97, 97, 97, 97, 97, 67, 67, 67, 67, 67, 1820, 67, 1822, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 0, 0, 97, 1933, 97, 1892, 97, 97, 97, 97, 97, 97, 1899, 45, 45, 45, 45, 45, 45, 45, 45, 1664, 45, 45, 45, 45, 45, 45, 45, 45, 1546, 45, 45, 45, 45, 45, 45, 45, 45, 1208, 45, 45, 45, 45, 45, 45, 45, 45, 1224, 45, 45, 45, 45, 45, 45, 45, 45, 673, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 1925, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 97, 623, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 307, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1796, 97, 45, 45, 45, 45, 45, 45, 45, 970, 45, 45, 45, 45, 45, 45, 45, 45, 1417, 45, 45, 45, 45, 45, 45, 45, 67, 1964, 67, 67, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 1721, 97, 97, 0, 0, 1997, 97, 0, 0, 2000, 97, 97, 0, 97, 97, 97, 97, 97, 45, 45, 45, 45, 733, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 803, 67, 67, 67, 67, 67, 0, 94242, 0, 0, 0, 38, 102439, 0, 0, 106538, 98347, 28809, 45, 45, 144, 45, 45, 45, 1805, 45, 1807, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 231, 67, 67, 67, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 45, 45, 67, 211, 67, 67, 67, 67, 230, 234, 240, 244, 67, 67, 67, 67, 67, 67, 464, 67, 67, 67, 67, 67, 67, 479, 67, 67, 67, 260, 67, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 97, 291, 97, 97, 97, 97, 310, 314, 320, 324, 97, 97, 97, 97, 97, 97, 1367, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1355, 97, 97, 97, 97, 97, 97, 1362, 340, 97, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 131427, 0, 0, 360, 0, 362, 0, 365, 28809, 367, 139, 369, 45, 45, 45, 374, 67, 67, 460, 67, 67, 67, 67, 466, 67, 67, 67, 67, 67, 67, 67, 67, 801, 67, 67, 67, 67, 67, 67, 67, 67, 67, 487, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 498, 67, 67, 67, 67, 67, 67, 1772, 67, 67, 97, 97, 97, 97, 97, 97, 97, 0, 921, 922, 1175, 0, 0, 0, 0, 45, 67, 502, 67, 67, 67, 67, 67, 67, 67, 508, 67, 67, 67, 515, 517, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 0, 0, 1932, 97, 97, 0, 1999, 97, 97, 97, 0, 97, 97, 2004, 2005, 97, 45, 45, 45, 45, 1193, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 676, 45, 45, 45, 45, 67, 24850, 24850, 12564, 12564, 0, 57889, 0, 0, 0, 53531, 53531, 367, 286, 552, 97, 97, 97, 97, 97, 1377, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 655, 45, 45, 45, 45, 45, 45, 45, 97, 97, 557, 97, 97, 97, 97, 563, 97, 97, 97, 97, 97, 97, 97, 97, 1135, 97, 97, 97, 97, 97, 97, 97, 97, 97, 584, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 595, 97, 97, 97, 97, 97, 911, 97, 97, 97, 97, 97, 97, 97, 638, 0, 0, 0, 0, 1315, 0, 0, 0, 0, 97, 97, 97, 1319, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 1733, 97, 97, 97, 97, 97, 97, 1340, 97, 97, 97, 1343, 97, 97, 1345, 97, 1346, 97, 599, 97, 97, 97, 97, 97, 97, 97, 605, 97, 97, 97, 612, 614, 97, 97, 97, 97, 97, 1794, 97, 97, 97, 45, 45, 45, 45, 45, 45, 45, 1207, 45, 45, 45, 45, 45, 45, 1213, 45, 45, 745, 67, 67, 67, 67, 751, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1577, 67, 67, 67, 67, 67, 762, 67, 67, 67, 67, 766, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1765, 67, 67, 67, 67, 67, 777, 67, 67, 781, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1592, 1593, 67, 67, 97, 843, 97, 97, 97, 97, 849, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1510, 97, 97, 97, 97, 97, 97, 97, 860, 97, 97, 97, 97, 864, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1797, 45, 45, 45, 45, 1801, 45, 97, 875, 97, 97, 879, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1522, 97, 97, 97, 97, 97, 991, 45, 45, 45, 45, 996, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 215, 67, 67, 67, 67, 233, 67, 67, 67, 67, 251, 253, 1022, 67, 67, 67, 1026, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1035, 67, 67, 1038, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1458, 67, 67, 67, 67, 67, 1064, 67, 67, 67, 1067, 67, 67, 67, 67, 1072, 67, 67, 67, 67, 67, 67, 1296, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2367488, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 67, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 0, 0, 1096, 0, 921, 29315, 0, 0, 0, 0, 928, 45, 45, 45, 45, 45, 934, 45, 45, 45, 164, 45, 45, 45, 45, 45, 45, 45, 45, 45, 198, 45, 45, 45, 378, 45, 45, 45, 45, 45, 45, 393, 45, 45, 45, 398, 45, 97, 97, 1116, 97, 97, 97, 1120, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1147, 1148, 97, 97, 97, 97, 97, 97, 97, 1129, 97, 97, 1132, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1626, 97, 97, 97, 97, 0, 45, 1178, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1185, 45, 45, 45, 45, 441, 45, 45, 45, 45, 45, 45, 451, 45, 45, 67, 67, 67, 67, 67, 227, 67, 67, 67, 67, 67, 67, 67, 67, 1260, 67, 67, 67, 1263, 67, 67, 1265, 1203, 45, 45, 1205, 45, 1206, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1216, 67, 1266, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1276, 67, 67, 67, 67, 67, 67, 492, 67, 67, 67, 67, 67, 67, 67, 67, 67, 471, 67, 67, 67, 67, 481, 67, 45, 1386, 45, 1389, 45, 45, 45, 45, 1394, 45, 45, 45, 1397, 45, 45, 45, 45, 995, 45, 997, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 1915, 67, 67, 67, 67, 67, 1422, 45, 45, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1433, 67, 1436, 67, 67, 67, 67, 1441, 67, 67, 67, 1444, 67, 67, 67, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 281, 28809, 53531, 97, 97, 97, 97, 1494, 97, 97, 97, 1497, 97, 97, 97, 97, 97, 97, 97, 1368, 97, 97, 97, 97, 97, 97, 97, 97, 851, 97, 97, 97, 97, 97, 97, 97, 67, 67, 67, 1571, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 25398, 542, 13112, 544, 67, 67, 1583, 67, 67, 67, 67, 67, 67, 67, 67, 1591, 67, 67, 67, 67, 67, 67, 752, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1056, 67, 67, 67, 67, 67, 67, 97, 1634, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1125, 97, 97, 97, 1647, 97, 97, 97, 97, 97, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1183, 45, 45, 45, 45, 45, 45, 45, 45, 45, 409, 45, 45, 45, 45, 45, 45, 1658, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1668, 1712, 97, 97, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 1835, 97, 97, 97, 97, 0, 0, 0, 97, 97, 1844, 97, 97, 1726, 0, 97, 97, 97, 97, 97, 1732, 97, 1734, 97, 97, 97, 97, 97, 300, 97, 308, 97, 97, 97, 97, 97, 97, 97, 97, 866, 97, 97, 97, 97, 97, 97, 97, 67, 67, 67, 1758, 67, 67, 67, 1762, 67, 67, 67, 67, 67, 67, 67, 67, 1043, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1771, 67, 67, 67, 97, 97, 97, 97, 97, 1776, 97, 97, 97, 97, 297, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1108, 97, 97, 97, 97, 67, 67, 67, 1966, 97, 97, 97, 1970, 0, 0, 0, 97, 97, 97, 97, 0, 97, 97, 97, 1720, 97, 97, 97, 97, 97, 0, 0, 97, 97, 97, 1837, 97, 0, 1840, 1841, 97, 97, 97, 1988, 45, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1994, 1995, 67, 97, 97, 97, 97, 97, 1103, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 917, 97, 97, 0, 0, 0, 67, 67, 265, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 345, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 131427, 0, 0, 0, 361, 362, 0, 365, 28809, 367, 139, 45, 45, 45, 45, 45, 671, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 411, 45, 45, 414, 45, 45, 45, 45, 377, 45, 45, 45, 386, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1223, 45, 45, 45, 45, 45, 45, 45, 45, 45, 426, 45, 45, 433, 45, 45, 45, 67, 67, 67, 67, 67, 463, 67, 67, 67, 472, 67, 67, 67, 67, 67, 67, 67, 527, 67, 67, 67, 67, 67, 67, 537, 67, 540, 24850, 24850, 12564, 12564, 0, 57889, 0, 0, 0, 53531, 53531, 367, 286, 97, 97, 97, 97, 97, 1119, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1509, 97, 97, 97, 97, 97, 97, 97, 97, 564, 97, 97, 97, 97, 97, 97, 97, 637, 18, 131427, 0, 0, 0, 0, 0, 0, 362, 0, 0, 365, 29315, 367, 0, 921, 29315, 0, 0, 0, 927, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1234, 45, 45, 45, 45, 67, 67, 67, 67, 1240, 45, 697, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 708, 45, 45, 45, 45, 1221, 45, 45, 45, 45, 1225, 45, 45, 45, 45, 45, 45, 384, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1210, 45, 45, 45, 45, 45, 45, 67, 67, 795, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1470, 67, 67, 67, 67, 67, 67, 67, 815, 67, 67, 67, 67, 67, 67, 25398, 542, 13112, 544, 97, 97, 97, 893, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1164, 97, 97, 97, 67, 67, 67, 1025, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1687, 67, 67, 67, 67, 67, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 0, 0, 0, 1097, 1241, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1450, 45, 45, 1388, 45, 1390, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1236, 67, 67, 67, 67, 67, 1437, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1472, 1490, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1503, 67, 67, 67, 67, 67, 97, 97, 97, 97, 97, 0, 1930, 0, 97, 97, 97, 97, 97, 847, 97, 97, 97, 97, 97, 97, 97, 97, 97, 858, 67, 67, 1965, 67, 97, 97, 97, 97, 0, 0, 0, 97, 97, 97, 97, 0, 97, 97, 1719, 97, 97, 97, 97, 97, 97, 0, 0, 0, 45, 45, 45, 45, 1382, 45, 1383, 45, 45, 45, 159, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1563, 45, 45, 45, 45, 45, 67, 261, 67, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 341, 97, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 97, 1099, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1333, 97, 1230, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 67, 1992, 67, 1993, 67, 67, 67, 97, 97, 45, 45, 160, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1665, 45, 45, 45, 45, 45, 131427, 357, 0, 0, 0, 362, 0, 365, 28809, 367, 139, 45, 45, 45, 45, 45, 684, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 412, 45, 45, 45, 416, 45, 45, 45, 440, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 67, 67, 1990, 67, 1991, 67, 67, 67, 67, 67, 67, 67, 97, 97, 1707, 97, 97, 97, 97, 97, 97, 501, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1691, 67, 67, 67, 67, 67, 526, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1030, 67, 1032, 67, 67, 67, 67, 598, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1632, 0, 921, 29315, 923, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1404, 45, 45, 45, 45, 45, 45, 45, 45, 45, 425, 45, 45, 45, 45, 45, 45, 67, 67, 67, 67, 67, 25398, 0, 13112, 0, 54074, 0, 0, 1093, 0, 0, 0, 0, 0, 97, 1609, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1369, 97, 97, 97, 1372, 97, 97, 67, 67, 266, 67, 67, 67, 67, 0, 24850, 12564, 0, 0, 0, 0, 28809, 53531, 97, 346, 97, 97, 97, 97, 0, 40976, 0, 18, 18, 24, 24, 27, 27, 27, 665, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1677, 45, 45, 45, 45, 67, 45, 45, 954, 45, 956, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1545, 45, 45, 45, 45, 45, 45, 45, 45, 45, 448, 45, 45, 45, 45, 67, 456, 67, 67, 67, 67, 67, 1270, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1069, 67, 67, 67, 67, 67, 67, 97, 97, 97, 1350, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1524, 97, 97, 97, 97, 97, 97, 97, 1376, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 1559, 1561, 45, 45, 45, 1564, 45, 1566, 1567, 45, 67, 67, 67, 67, 67, 1573, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 1247, 67, 67, 67, 67, 67, 1252, 97, 1725, 97, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1628, 97, 1630, 0, 0, 94242, 0, 0, 0, 2211840, 0, 1118208, 0, 0, 0, 0, 2158592, 2158731, 2158592, 2158592, 2158592, 3117056, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3018752, 2158592, 3043328, 2158592, 2158592, 2158592, 2158592, 3080192, 2158592, 2158592, 3112960, 2158592, 2158592, 2158592, 2158592, 2158592, 2158878, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2605056, 2158592, 2158592, 2207744, 0, 542, 0, 544, 0, 0, 2166784, 0, 0, 0, 550, 0, 0, 2158592, 2158592, 2686976, 2158592, 2715648, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2867200, 2158592, 2904064, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 0, 94242, 0, 0, 0, 2211840, 0, 0, 1130496, 0, 0, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 3186688, 2158592, 0, 0, 139, 0, 0, 0, 139, 0, 2367488, 2207744, 0, 0, 0, 0, 176128, 0, 2166784, 0, 0, 0, 0, 0, 286, 2158592, 2158592, 3170304, 3174400, 2158592, 0, 0, 0, 2158592, 2158592, 2158592, 2158592, 2158592, 2424832, 2158592, 2158592, 2158592, 1508, 2158592, 2908160, 2158592, 2158592, 2158592, 2977792, 2158592, 2158592, 2158592, 2158592, 3039232, 2158592, 2158592, 2158592, 2158592, 2158592, 2158592, 3158016, 67, 24850, 24850, 12564, 12564, 0, 0, 0, 0, 0, 53531, 53531, 0, 286, 97, 97, 97, 97, 97, 1144, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1149, 97, 97, 97, 97, 1154, 57889, 0, 0, 0, 0, 550, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 561, 97, 97, 97, 97, 97, 97, 576, 97, 97, 139264, 139264, 139264, 139264, 139264, 139264, 139264, 139264, 139264, 139264, 139264, 139264, 0, 0, 139264, 0, 921, 29315, 0, 0, 926, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 719, 720, 45, 45, 45, 45, 45, 45, 45, 45, 685, 45, 45, 45, 45, 45, 45, 45, 45, 45, 942, 45, 45, 946, 45, 45, 45, 950, 45, 45, 0, 2146304, 2146304, 0, 0, 0, 0, 2224128, 2224128, 2224128, 2232320, 2232320, 2232320, 2232320, 0, 0, 1301, 0, 0, 0, 0, 0, 1307, 0, 0, 0, 0, 0, 1313, 0, 0, 0, 0, 0, 0, 0, 97, 97, 1318, 97, 97, 97, 97, 97, 97, 1795, 97, 97, 45, 45, 45, 45, 45, 45, 45, 446, 45, 45, 45, 45, 45, 45, 67, 67, 2158592, 2146304, 0, 0, 0, 0, 0, 0, 0, 2211840, 0, 0, 0, 0, 2158592, 0, 921, 29315, 0, 924, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 1000, 45, 45, 45, 45, 67, 67 +]; + +XQueryTokenizer.EXPECTED = +[ 290, 300, 304, 353, 296, 309, 305, 319, 315, 324, 328, 352, 354, 334, 338, 330, 320, 345, 349, 293, 358, 362, 341, 366, 312, 370, 374, 378, 382, 386, 390, 394, 398, 737, 402, 634, 439, 604, 634, 634, 634, 634, 408, 634, 634, 634, 404, 634, 634, 634, 457, 634, 634, 963, 634, 634, 413, 634, 634, 634, 634, 634, 634, 634, 663, 418, 422, 903, 902, 426, 431, 548, 634, 437, 521, 919, 443, 615, 409, 449, 455, 624, 731, 751, 634, 461, 465, 672, 470, 469, 474, 481, 485, 477, 489, 493, 629, 542, 497, 505, 603, 602, 991, 648, 510, 804, 634, 515, 958, 526, 525, 530, 768, 634, 546, 552, 711, 710, 593, 558, 562, 618, 566, 570, 574, 578, 582, 586, 590, 608, 612, 660, 822, 821, 634, 622, 596, 444, 628, 533, 724, 633, 640, 653, 647, 652, 536, 1008, 451, 450, 445, 657, 670, 676, 685, 689, 693, 697, 701, 704, 707, 715, 719, 798, 815, 634, 723, 762, 996, 634, 728, 969, 730, 735, 908, 634, 741, 679, 889, 511, 747, 634, 750, 755, 499, 666, 499, 501, 759, 772, 776, 780, 634, 787, 784, 797, 802, 809, 808, 427, 814, 1006, 517, 634, 519, 853, 634, 813, 850, 793, 634, 819, 826, 833, 832, 837, 843, 847, 857, 861, 863, 867, 871, 875, 879, 883, 643, 887, 539, 980, 979, 634, 893, 944, 634, 900, 896, 634, 907, 933, 506, 912, 917, 828, 433, 636, 635, 554, 961, 923, 930, 927, 937, 941, 634, 634, 634, 974, 948, 952, 985, 913, 968, 967, 743, 634, 973, 839, 634, 978, 599, 634, 984, 989, 765, 444, 995, 1000, 634, 1003, 790, 955, 1012, 681, 634, 634, 634, 634, 634, 414, 1016, 1020, 1024, 1085, 1027, 1090, 1090, 1046, 1080, 1137, 1108, 1215, 1049, 1032, 1039, 1085, 1085, 1085, 1085, 1058, 1062, 1068, 1085, 1086, 1090, 1090, 1091, 1072, 1064, 1107, 1090, 1090, 1090, 1118, 1123, 1138, 1078, 1074, 1084, 1085, 1085, 1085, 1087, 1090, 1062, 1052, 1060, 1114, 1062, 1104, 1085, 1085, 1090, 1090, 1028, 1122, 1063, 1128, 1139, 1127, 1158, 1085, 1085, 1151, 1090, 1090, 1090, 1095, 1090, 1132, 1073, 1136, 1143, 1061, 1150, 1085, 1155, 1098, 1101, 1146, 1162, 1169, 1101, 1185, 1151, 1090, 1110, 1173, 1054, 1087, 1109, 1177, 1165, 1089, 1204, 1184, 1107, 1189, 1193, 1088, 1197, 1180, 1201, 1208, 1042, 1212, 1219, 1223, 1227, 1231, 1235, 1245, 1777, 1527, 1686, 1686, 1238, 1686, 1254, 1686, 1686, 1686, 1294, 1669, 1686, 1686, 1686, 1322, 1625, 1534, 1268, 1624, 1275, 1281, 1443, 1292, 1300, 1686, 1686, 1686, 1350, 1826, 1306, 1686, 1686, 1240, 2032, 1317, 1321, 1686, 1686, 1253, 1686, 1326, 1686, 1686, 1686, 1418, 1709, 1446, 1686, 1686, 1686, 1492, 1686, 1295, 1447, 1686, 1686, 1258, 1686, 1736, 1686, 1686, 1520, 1355, 1686, 1288, 1348, 1361, 1686, 1359, 1686, 1364, 1498, 1368, 1302, 1362, 1381, 1389, 1395, 1486, 1686, 1371, 1377, 1370, 1686, 1375, 1382, 1384, 1402, 1408, 1385, 1383, 1619, 1413, 1423, 1428, 1433, 1686, 1686, 1270, 1686, 1338, 1686, 1440, 1686, 1686, 1686, 1499, 1465, 1686, 1686, 1686, 1639, 1473, 1884, 1686, 1686, 1293, 1864, 1686, 1686, 1296, 1321, 1483, 1686, 1686, 1686, 1646, 1686, 1748, 1496, 1686, 1418, 1675, 1686, 1418, 1702, 1686, 1418, 1981, 1686, 1429, 1409, 1427, 1504, 1692, 1686, 1686, 1313, 1448, 1651, 1508, 1686, 1686, 1340, 1686, 1903, 1686, 1686, 1435, 1513, 1686, 1283, 1287, 1519, 1686, 1524, 1363, 1568, 1938, 1539, 1566, 1579, 1479, 1533, 1538, 1553, 1544, 1552, 1557, 1563, 1574, 1557, 1583, 1589, 1590, 1759, 1594, 1603, 1607, 1611, 1686, 1436, 1514, 1686, 1434, 1656, 1686, 1434, 1680, 1686, 1453, 1686, 1686, 1686, 1559, 1617, 1686, 1770, 1418, 1623, 1769, 1629, 1686, 1515, 1335, 1686, 1285, 1686, 1671, 1921, 1650, 1686, 1686, 1344, 1308, 1666, 1686, 1686, 1686, 1659, 1685, 1686, 1686, 1686, 1686, 1241, 1686, 1686, 1844, 1691, 1686, 1630, 1977, 1970, 1362, 1686, 1686, 1686, 1693, 1698, 1686, 1686, 1686, 1697, 1686, 1764, 1715, 1686, 1634, 1638, 1686, 1599, 1585, 1686, 1271, 1686, 1269, 1686, 1721, 1686, 1686, 1354, 1686, 1801, 1686, 1799, 1686, 1640, 1686, 1686, 1461, 1686, 1686, 1732, 1686, 1944, 1686, 1740, 1686, 1746, 1415, 1396, 1686, 1598, 1547, 1417, 1597, 1416, 1577, 1546, 1397, 1577, 1547, 1548, 1570, 1398, 1753, 1686, 1652, 1509, 1686, 1686, 1686, 1757, 1686, 1419, 1686, 1763, 1418, 1768, 1781, 1686, 1686, 1686, 1705, 1686, 2048, 1792, 1686, 1686, 1686, 1735, 1686, 1797, 1686, 1686, 1404, 1686, 1639, 1815, 1686, 1686, 1418, 2017, 1820, 1686, 1686, 1803, 1686, 1686, 1686, 1736, 1489, 1686, 1686, 1825, 1338, 1260, 1263, 1686, 1686, 1785, 1686, 1686, 1728, 1686, 1686, 1749, 1497, 1830, 1830, 1262, 1248, 1261, 1329, 1260, 1264, 1329, 1248, 1249, 1259, 1540, 1849, 1842, 1686, 1686, 1835, 1686, 1686, 1816, 1686, 1686, 1831, 1882, 1848, 1686, 1686, 1686, 1774, 2071, 1854, 1686, 1686, 1469, 1884, 1686, 1821, 1859, 1686, 1686, 1350, 1883, 1686, 1686, 1686, 1781, 1391, 1875, 1686, 1686, 1613, 1644, 1686, 1686, 1889, 1686, 1686, 1662, 1884, 1686, 1885, 1890, 1686, 1686, 1686, 1894, 1686, 1686, 1678, 1686, 1907, 1686, 1686, 1529, 1914, 1686, 1838, 1686, 1686, 1881, 1686, 1686, 1872, 1876, 1836, 1919, 1686, 1837, 1692, 1910, 1686, 1925, 1928, 1742, 1686, 1811, 1811, 1930, 1810, 1929, 1935, 1928, 1900, 1942, 1867, 1868, 1931, 1035, 1788, 1948, 1952, 1956, 1960, 1964, 1686, 1976, 1686, 1686, 1686, 2065, 1686, 1992, 2037, 1686, 1686, 1998, 2009, 1972, 2002, 1686, 1686, 1686, 2077, 1300, 2023, 1686, 1686, 1686, 1807, 2031, 1686, 1686, 1686, 1860, 1500, 2032, 1686, 1686, 1686, 2083, 1686, 2036, 1686, 1277, 1276, 2042, 1877, 1686, 1686, 2041, 1686, 1686, 2027, 2037, 2012, 1686, 2012, 1855, 1850, 1686, 2046, 1686, 1686, 2054, 1996, 1686, 1897, 1309, 2059, 2052, 1686, 2058, 1686, 1686, 2081, 1686, 1717, 1477, 1686, 1331, 1686, 1686, 1687, 1686, 1860, 1681, 1686, 1686, 1686, 1966, 1724, 1686, 1686, 1686, 1984, 2015, 1686, 1686, 1686, 1988, 1686, 2063, 1686, 1686, 1686, 2005, 1686, 1727, 1686, 1686, 1711, 1457, 2069, 1686, 1686, 1686, 2019, 2075, 1686, 1686, 1915, 1686, 1686, 1793, 1874, 1686, 1686, 1491, 1362, 1449, 1686, 1686, 1460, 2098, 2087, 2091, 2095, 2184, 2102, 2113, 2780, 2117, 2134, 2142, 2281, 2146, 2146, 2146, 2304, 2296, 2181, 2639, 2591, 2872, 2592, 2873, 2313, 2195, 2200, 2281, 2146, 2273, 2226, 2204, 2152, 2219, 2276, 2167, 2177, 2276, 2235, 2276, 2276, 2230, 2281, 2276, 2296, 2276, 2293, 2276, 2276, 2276, 2276, 2234, 2276, 2311, 2314, 2210, 2199, 2217, 2222, 2276, 2276, 2276, 2240, 2276, 2294, 2276, 2276, 2173, 2276, 2198, 2281, 2281, 2281, 2281, 2282, 2146, 2146, 2146, 2146, 2205, 2146, 2204, 2248, 2276, 2235, 2276, 2297, 2276, 2276, 2276, 2277, 2256, 2281, 2283, 2146, 2146, 2146, 2275, 2276, 2295, 2276, 2276, 2293, 2146, 2304, 2264, 2269, 2221, 2276, 2276, 2276, 2293, 2295, 2276, 2276, 2276, 2295, 2263, 2205, 2268, 2220, 2172, 2276, 2276, 2276, 2296, 2276, 2276, 2296, 2294, 2276, 2276, 2278, 2281, 2281, 2280, 2281, 2281, 2281, 2283, 2206, 2223, 2276, 2276, 2279, 2281, 2281, 2146, 2273, 2276, 2276, 2281, 2281, 2281, 2276, 2292, 2276, 2298, 2225, 2276, 2298, 2169, 2224, 2292, 2298, 2171, 2229, 2281, 2281, 2171, 2236, 2281, 2281, 2281, 2146, 2275, 2225, 2292, 2299, 2276, 2229, 2281, 2146, 2276, 2290, 2297, 2283, 2146, 2146, 2274, 2224, 2227, 2298, 2225, 2297, 2276, 2230, 2170, 2230, 2282, 2146, 2147, 2151, 2156, 2288, 2276, 2230, 2303, 2308, 2236, 2284, 2228, 2318, 2318, 2318, 2326, 2335, 2339, 2343, 2349, 2416, 2693, 2357, 2592, 2109, 2592, 2592, 2162, 2943, 2823, 2646, 2592, 2361, 2592, 2122, 2592, 2592, 2122, 2470, 2592, 2592, 2592, 2109, 2107, 2592, 2592, 2592, 2123, 2592, 2592, 2592, 2125, 2592, 2413, 2592, 2592, 2592, 2127, 2592, 2592, 2414, 2592, 2592, 2592, 2130, 2952, 2592, 2594, 2592, 2592, 2212, 2609, 2252, 2592, 2592, 2592, 2446, 2434, 2592, 2592, 2592, 2212, 2446, 2450, 2456, 2431, 2435, 2592, 2592, 2243, 2478, 2448, 2439, 2946, 2592, 2592, 2592, 2368, 2809, 2813, 2450, 2441, 2212, 2812, 2449, 2440, 2947, 2592, 2592, 2592, 2345, 2451, 2457, 2948, 2592, 2124, 2592, 2592, 2650, 2823, 2449, 2455, 2946, 2592, 2128, 2592, 2592, 2649, 2952, 2592, 2810, 2448, 2461, 2991, 2467, 2592, 2592, 2329, 2817, 2474, 2990, 2466, 2592, 2592, 2373, 2447, 2992, 2469, 2592, 2592, 2592, 2373, 2447, 2477, 2468, 2592, 2592, 2353, 2469, 2592, 2495, 2592, 2592, 2415, 2483, 2592, 2415, 2496, 2592, 2592, 2352, 2592, 2592, 2352, 2352, 2469, 2592, 2592, 2363, 2331, 2494, 2592, 2592, 2592, 2375, 2592, 2375, 2415, 2504, 2592, 2592, 2367, 2372, 2503, 2592, 2592, 2592, 2389, 2418, 2415, 2592, 2592, 2373, 2592, 2592, 2592, 2593, 2732, 2417, 2415, 2592, 2417, 2520, 2592, 2592, 2592, 2390, 2521, 2521, 2592, 2592, 2592, 2401, 2599, 2585, 2526, 2531, 2120, 2592, 2212, 2426, 2450, 2463, 2948, 2592, 2592, 2592, 2213, 2389, 2527, 2532, 2121, 2542, 2551, 2105, 2592, 2213, 2592, 2592, 2592, 2558, 2538, 2544, 2553, 2557, 2537, 2543, 2552, 2421, 2572, 2576, 2546, 2543, 2547, 2592, 2592, 2373, 2615, 2575, 2545, 2105, 2592, 2244, 2479, 2592, 2129, 2592, 2592, 2628, 2690, 2469, 2562, 2566, 2592, 2592, 2592, 2415, 2928, 2934, 2401, 2570, 2574, 2564, 2572, 2585, 2590, 2592, 2592, 2585, 2965, 2592, 2592, 2592, 2445, 2251, 2592, 2592, 2592, 2474, 2592, 2609, 2892, 2592, 2362, 2592, 2592, 2138, 2851, 2159, 2592, 2592, 2592, 2509, 2888, 2892, 2592, 2592, 2592, 2490, 2418, 2891, 2592, 2592, 2376, 2592, 2592, 2374, 2592, 2889, 2388, 2592, 2373, 2373, 2890, 2592, 2592, 2387, 2592, 2887, 2505, 2892, 2592, 2373, 2610, 2388, 2592, 2592, 2376, 2373, 2592, 2887, 2891, 2592, 2374, 2592, 2592, 2608, 2159, 2614, 2620, 2592, 2592, 2394, 2594, 2887, 2399, 2592, 2887, 2397, 2508, 2374, 2507, 2592, 2375, 2592, 2592, 2592, 2595, 2508, 2506, 2592, 2506, 2505, 2505, 2592, 2507, 2637, 2505, 2592, 2592, 2401, 2661, 2592, 2643, 2592, 2592, 2417, 2592, 2655, 2592, 2592, 2592, 2510, 2414, 2656, 2592, 2592, 2592, 2516, 2592, 2593, 2660, 2665, 2880, 2592, 2592, 2592, 2522, 2767, 2666, 2881, 2592, 2592, 2420, 2571, 2696, 2592, 2592, 2592, 2580, 2572, 2686, 2632, 2698, 2592, 2383, 2514, 2592, 2163, 2932, 2465, 2685, 2631, 2697, 2592, 2388, 2592, 2592, 2212, 2604, 2671, 2632, 2678, 2592, 2401, 2405, 2409, 2592, 2592, 2592, 2679, 2592, 2592, 2592, 2592, 2108, 2677, 2591, 2592, 2592, 2592, 2419, 2592, 2683, 2187, 2191, 2469, 2671, 2189, 2467, 2592, 2401, 2629, 2633, 2702, 2468, 2592, 2592, 2421, 2536, 2703, 2469, 2592, 2592, 2422, 2573, 2593, 2672, 2467, 2592, 2402, 2406, 2592, 2402, 2979, 2592, 2592, 2626, 2673, 2467, 2592, 2446, 2259, 2947, 2592, 2377, 2709, 2592, 2592, 2522, 2862, 2713, 2468, 2592, 2592, 2581, 2572, 2562, 2374, 2374, 2592, 2376, 2721, 2724, 2592, 2592, 2624, 2373, 2731, 2592, 2592, 2592, 2626, 2732, 2592, 2592, 2592, 2755, 2656, 2726, 2736, 2741, 2592, 2486, 2593, 2381, 2592, 2727, 2737, 2742, 2715, 2747, 2753, 2592, 2498, 2469, 2873, 2743, 2592, 2592, 2592, 2791, 2759, 2763, 2592, 2592, 2627, 2704, 2592, 2592, 2522, 2789, 2593, 2761, 2753, 2592, 2498, 2863, 2592, 2592, 2767, 2592, 2592, 2592, 2792, 2789, 2592, 2592, 2592, 2803, 2126, 2592, 2592, 2592, 2811, 2122, 2592, 2592, 2592, 2834, 2777, 2592, 2592, 2592, 2848, 2936, 2591, 2489, 2797, 2592, 2592, 2670, 2631, 2490, 2798, 2592, 2592, 2592, 2963, 2807, 2592, 2592, 2592, 2965, 2838, 2592, 2592, 2592, 2975, 2330, 2818, 2829, 2592, 2498, 2939, 2592, 2498, 2592, 2791, 2331, 2819, 2830, 2592, 2592, 2592, 2982, 2834, 2817, 2828, 2106, 2592, 2592, 2592, 2405, 2405, 2817, 2828, 2592, 2592, 2415, 2849, 2842, 2592, 2522, 2773, 2592, 2522, 2868, 2592, 2580, 2600, 2586, 2137, 2850, 2843, 2592, 2592, 2855, 2937, 2844, 2592, 2592, 2592, 2987, 2936, 2591, 2592, 2592, 2684, 2630, 2592, 2856, 2938, 2592, 2592, 2860, 2939, 2592, 2592, 2872, 2592, 2861, 2591, 2592, 2592, 2887, 2616, 2592, 2867, 2592, 2592, 2708, 2592, 2498, 2469, 2498, 2497, 2785, 2773, 2499, 2783, 2770, 2877, 2877, 2877, 2772, 2592, 2592, 2345, 2885, 2592, 2592, 2592, 2715, 2762, 2515, 2896, 2592, 2592, 2715, 2917, 2516, 2897, 2592, 2592, 2592, 2901, 2906, 2911, 2592, 2592, 2956, 2960, 2715, 2902, 2907, 2912, 2593, 2916, 2920, 2820, 2922, 2822, 2592, 2592, 2715, 2927, 2921, 2821, 2106, 2592, 2592, 2974, 2408, 2321, 2821, 2106, 2592, 2592, 2983, 2592, 2593, 2404, 2408, 2592, 2592, 2717, 2749, 2716, 2928, 2322, 2822, 2593, 2926, 2919, 2820, 2934, 2823, 2592, 2592, 2592, 2651, 2824, 2592, 2592, 2592, 2130, 2952, 2592, 2592, 2592, 2592, 2964, 2592, 2592, 2716, 2748, 2592, 2969, 2592, 2592, 2716, 2918, 2368, 2970, 2592, 2592, 2592, 2403, 2407, 2592, 2592, 2787, 2211, 2404, 2409, 2592, 2592, 2802, 2837, 2987, 2592, 2592, 2592, 2809, 2427, 2592, 2793, 2592, 2592, 2809, 2447, 1073741824, 0x80000000, 539754496, 542375936, 402653184, 554434560, 571736064, 545521856, 268451840, 335544320, 268693630, 512, 2048, 256, 1024, 0, 1024, 0, 1073741824, 0x80000000, 0, 0, 0, 8388608, 0, 0, 1073741824, 1073741824, 0, 0x80000000, 537133056, 4194304, 1048576, 268435456, -1073741824, 0, 0, 0, 1048576, 0, 0, 0, 1572864, 0, 0, 0, 4194304, 0, 134217728, 16777216, 0, 0, 32, 64, 98304, 0, 33554432, 8388608, 192, 67108864, 67108864, 67108864, 67108864, 16, 32, 4, 0, 8192, 196608, 196608, 229376, 80, 4096, 524288, 8388608, 0, 0, 32, 128, 256, 24576, 24600, 24576, 24576, 2, 24576, 24576, 24576, 24584, 24592, 24576, 24578, 24576, 24578, 24576, 24576, 16, 512, 2048, 2048, 256, 4096, 32768, 1048576, 4194304, 67108864, 134217728, 268435456, 262144, 134217728, 0, 128, 128, 64, 16384, 16384, 16384, 67108864, 32, 32, 4, 4, 4096, 262144, 134217728, 0, 0, 0, 2, 0, 8192, 131072, 131072, 4096, 4096, 4096, 4096, 24576, 24576, 24576, 8, 8, 24576, 24576, 16384, 16384, 16384, 24576, 24584, 24576, 24576, 24576, 16384, 24576, 536870912, 262144, 0, 0, 32, 2048, 8192, 4, 4096, 4096, 4096, 786432, 8388608, 16777216, 0, 128, 16384, 16384, 16384, 32768, 65536, 2097152, 32, 32, 32, 32, 4, 4, 4, 4, 4, 4096, 67108864, 67108864, 67108864, 24576, 24576, 24576, 24576, 0, 16384, 16384, 16384, 16384, 67108864, 67108864, 8, 67108864, 24576, 8, 8, 8, 24576, 24576, 24576, 24578, 24576, 24576, 24576, 2, 2, 2, 16384, 67108864, 67108864, 67108864, 32, 67108864, 8, 8, 24576, 2048, 0x80000000, 536870912, 262144, 262144, 262144, 67108864, 8, 24576, 16384, 32768, 1048576, 4194304, 25165824, 67108864, 24576, 32770, 2, 4, 112, 512, 98304, 524288, 50, 402653186, 1049090, 1049091, 10, 66, 100925514, 10, 66, 12582914, 0, 0, -1678194207, -1678194207, -1041543218, 0, 32768, 0, 0, 32, 65536, 268435456, 1, 1, 513, 1048577, 0, 12582912, 0, 0, 0, 4, 1792, 0, 0, 0, 7, 29360128, 0, 0, 0, 8, 0, 0, 0, 12, 1, 1, 0, 0, -604102721, -604102721, 4194304, 8388608, 0, 0, 0, 31, 925600, 997981306, 997981306, 997981306, 0, 0, 2048, 8388608, 0, 0, 1, 2, 4, 32, 64, 512, 8192, 0, 0, 0, 245760, 997720064, 0, 0, 0, 32, 0, 0, 0, 3, 12, 16, 32, 8, 112, 3072, 12288, 16384, 32768, 65536, 131072, 7864320, 16777216, 973078528, 0, 0, 65536, 131072, 3670016, 4194304, 16777216, 33554432, 2, 8, 48, 2048, 8192, 16384, 32768, 65536, 131072, 524288, 131072, 524288, 3145728, 4194304, 16777216, 33554432, 65536, 131072, 2097152, 4194304, 16777216, 33554432, 134217728, 268435456, 536870912, 0, 0, 0, 1024, 0, 8, 48, 2048, 8192, 65536, 33554432, 268435456, 536870912, 65536, 268435456, 536870912, 0, 0, 32768, 0, 0, 126, 623104, 65011712, 0, 32, 65536, 536870912, 0, 0, 65536, 524288, 0, 32, 65536, 0, 0, 0, 2048, 0, 0, 0, 15482, 245760, -604102721, 0, 0, 0, 18913, 33062912, 925600, -605028352, 0, 0, 0, 65536, 31, 8096, 131072, 786432, 3145728, 3145728, 12582912, 50331648, 134217728, 268435456, 160, 256, 512, 7168, 131072, 786432, 131072, 786432, 1048576, 2097152, 12582912, 16777216, 268435456, 1073741824, 0x80000000, 12582912, 16777216, 33554432, 268435456, 1073741824, 0x80000000, 3, 12, 16, 160, 256, 7168, 786432, 1048576, 12582912, 16777216, 268435456, 1073741824, 0, 8, 16, 32, 128, 256, 512, 7168, 786432, 1048576, 2097152, 0, 1, 2, 8, 16, 7168, 786432, 1048576, 8388608, 16777216, 16777216, 1073741824, 0, 0, 0, 0, 1, 0, 0, 8, 32, 128, 256, 7168, 8, 32, 0, 3072, 0, 8, 32, 3072, 4096, 524288, 8, 32, 0, 0, 3072, 4096, 0, 2048, 524288, 8388608, 8, 2048, 0, 0, 1, 12, 256, 4096, 32768, 262144, 1048576, 4194304, 67108864, 0, 2048, 0, 2048, 2048, 1073741824, -58805985, -58805985, -58805985, 0, 0, 262144, 0, 0, 32, 4194304, 16777216, 134217728, 4382, 172032, -58982400, 0, 0, 2, 28, 256, 4096, 8192, 8192, 32768, 131072, 262144, 524288, 1, 2, 12, 256, 4096, 0, 0, 4194304, 67108864, 134217728, 805306368, 1073741824, 0, 0, 1, 2, 12, 16, 256, 4096, 1048576, 67108864, 134217728, 268435456, 0, 512, 1048576, 4194304, 201326592, 1879048192, 0, 0, 12, 256, 4096, 134217728, 268435456, 536870912, 12, 256, 268435456, 536870912, 0, 12, 256, 0, 0, 1, 32, 64, 512, 0, 0, 205236961, 205236961, 0, 0, 0, 1, 96, 640, 1, 10976, 229376, 204996608, 0, 640, 2048, 8192, 229376, 1572864, 1572864, 2097152, 201326592, 0, 0, 0, 64, 512, 2048, 229376, 1572864, 201326592, 1572864, 201326592, 0, 0, 1, 4382, 0, 1, 32, 2048, 65536, 131072, 1572864, 201326592, 131072, 1572864, 134217728, 0, 0, 524288, 524288, 0, 0, 0, -68582786, -68582786, -68582786, 0, 0, 2097152, 524288, 0, 524288, 0, 0, 65536, 131072, 1572864, 0, 0, 2, 4, 0, 0, 65011712, -134217728, 0, 0, 0, 0, 2, 4, 120, 512, -268435456, 0, 0, 0, 2, 8, 48, 64, 2048, 8192, 98304, 524288, 2097152, 4194304, 25165824, 33554432, 134217728, 268435456, 0x80000000, 0, 0, 25165824, 33554432, 134217728, 1879048192, 0x80000000, 0, 0, 4, 112, 512, 622592, 65011712, 134217728, -268435456, 16777216, 33554432, 134217728, 1610612736, 0, 0, 0, 64, 98304, 524288, 4194304, 16777216, 33554432, 0, 98304, 524288, 16777216, 33554432, 0, 65536, 524288, 33554432, 536870912, 1073741824, 0, 65536, 524288, 536870912, 1073741824, 0, 0, 65536, 524288, 536870912, 0, 524288, 0, 524288, 524288, 1048576, 2086666240, 0x80000000, 0, -1678194207, 0, 0, 0, 8, 32, 2048, 524288, 8388608, 0, 0, 33062912, 436207616, 0x80000000, 0, 0, 32, 64, 2432, 16384, 32768, 32768, 524288, 3145728, 4194304, 25165824, 25165824, 167772160, 268435456, 0x80000000, 0, 32, 64, 384, 2048, 16384, 32768, 1048576, 2097152, 4194304, 25165824, 32, 64, 128, 256, 2048, 16384, 2048, 16384, 1048576, 4194304, 16777216, 33554432, 134217728, 536870912, 1073741824, 0, 0, 2048, 16384, 4194304, 16777216, 33554432, 134217728, 805306368, 0, 0, 16777216, 134217728, 268435456, 0x80000000, 0, 622592, 622592, 622592, 8807, 8807, 434791, 0, 0, 16777216, 0, 0, 0, 7, 608, 8192, 0, 0, 0, 3, 4, 96, 512, 32, 64, 8192, 0, 0, 16777216, 134217728, 0, 0, 2, 4, 8192, 16384, 65536, 2097152, 33554432, 268435456 +]; + +XQueryTokenizer.TOKEN = +[ + "(0)", + "ModuleDecl", + "Annotation", + "OptionDecl", + "Operator", + "Variable", + "Tag", + "EndTag", + "PragmaContents", + "DirCommentContents", + "DirPIContents", + "CDataSectionContents", + "AttrTest", + "Wildcard", + "EQName", + "IntegerLiteral", + "DecimalLiteral", + "DoubleLiteral", + "PredefinedEntityRef", + "'\"\"'", + "EscapeApos", + "QuotChar", + "AposChar", + "ElementContentChar", + "QuotAttrContentChar", + "AposAttrContentChar", + "NCName", + "QName", + "S", + "CharRef", + "CommentContents", + "DocTag", + "DocCommentContents", + "EOF", + "'!'", + "'\"'", + "'#'", + "'#)'", + "''''", + "'('", + "'(#'", + "'(:'", + "'(:~'", + "')'", + "'*'", + "'*'", + "','", + "'-->'", + "'.'", + "'/'", + "'/>'", + "':'", + "':)'", + "';'", + "''), token: xmlcomment, next: function(stack){ stack.pop(); } } + ], + CData: [ + { name: 'CDataSectionContents', token: cdata }, + { name: n(']]>'), token: cdata, next: function(stack){ stack.pop(); } } + ], + PI: [ + { name: 'DirPIContents', token: pi }, + { name: n('?'), token: pi }, + { name: n('?>'), token: pi, next: function(stack){ stack.pop(); } } + ], + AposString: [ + { name: n('\'\''), token: 'string', next: function(stack){ stack.pop(); } }, + { name: 'PredefinedEntityRef', token: 'constant.language.escape' }, + { name: 'CharRef', token: 'constant.language.escape' }, + { name: 'EscapeApos', token: 'constant.language.escape' }, + { name: 'AposChar', token: 'string' } + ], + QuotString: [ + { name: n('"'), token: 'string', next: function(stack){ stack.pop(); } }, + { name: 'PredefinedEntityRef', token: 'constant.language.escape' }, + { name: 'CharRef', token: 'constant.language.escape' }, + { name: 'EscapeQuot', token: 'constant.language.escape' }, + { name: 'QuotChar', token: 'string' } + ] +}; + +exports.XQueryLexer = function(){ return new Lexer(XQueryTokenizer, Rules); }; +},{"./XQueryTokenizer":"/node_modules/xqlint/lib/lexers/XQueryTokenizer.js","./lexer":"/node_modules/xqlint/lib/lexers/lexer.js"}]},{},["/node_modules/xqlint/lib/lexers/xquery_lexer.js"]); + +}); + +ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Behaviour = require("../behaviour").Behaviour; +var TokenIterator = require("../../token_iterator").TokenIterator; +var lang = require("../../lib/lang"); +function is(token, type) { + return token && token.type.lastIndexOf(type + ".xml") > -1; +} +var XmlBehaviour = function () { + this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { + if (text == '"' || text == "'") { + var quote = text; + var selected = session.doc.getTextRange(editor.getSelectionRange()); + if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { + return { + text: quote + selected + quote, + selection: false + }; + } + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { + return { + text: "", + selection: [1, 1] + }; + } + if (!token) + token = iterator.stepBackward(); + if (!token) + return; + while (is(token, "tag-whitespace") || is(token, "whitespace")) { + token = iterator.stepBackward(); + } + var rightSpace = !rightChar || rightChar.match(/\s/); + if (is(token, "attribute-equals") && (rightSpace || rightChar == '>') || (is(token, "decl-attribute-equals") && (rightSpace || rightChar == '?'))) { + return { + text: quote + quote, + selection: [1, 1] + }; + } + } + }); + this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { + var selected = session.doc.getTextRange(range); + if (!range.isMultiLine() && (selected == '"' || selected == "'")) { + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.start.column + 1, range.start.column + 2); + if (rightChar == selected) { + range.end.column++; + return range; + } + } + }); + this.add("autoclosing", "insertion", function (state, action, editor, session, text) { + if (text == '>') { + var position = editor.getSelectionRange().start; + var iterator = new TokenIterator(session, position.row, position.column); + var token = iterator.getCurrentToken() || iterator.stepBackward(); + if (!token || !(is(token, "tag-name") || is(token, "tag-whitespace") || is(token, "attribute-name") || is(token, "attribute-equals") || is(token, "attribute-value"))) + return; + if (is(token, "reference.attribute-value")) + return; + if (is(token, "attribute-value")) { + var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; + if (position.column < tokenEndColumn) + return; + if (position.column == tokenEndColumn) { + var nextToken = iterator.stepForward(); + if (nextToken && is(nextToken, "attribute-value")) + return; + iterator.stepBackward(); + } + } + if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) + return; + while (!is(token, "tag-name")) { + token = iterator.stepBackward(); + if (token.value == "<") { + token = iterator.stepForward(); + break; + } + } + var tokenRow = iterator.getCurrentTokenRow(); + var tokenColumn = iterator.getCurrentTokenColumn(); + if (is(iterator.stepBackward(), "end-tag-open")) + return; + var element = token.value; + if (tokenRow == position.row) + element = element.substring(0, position.column - tokenColumn); + if (this.voidElements.hasOwnProperty(element.toLowerCase())) + return; + return { + text: ">" + "", + selection: [1, 1] + }; + } + }); + this.add("autoindent", "insertion", function (state, action, editor, session, text) { + if (text == "\n") { + var cursor = editor.getCursorPosition(); + var line = session.getLine(cursor.row); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.type.indexOf("tag-close") !== -1) { + if (token.value == "/>") + return; + while (token && token.type.indexOf("tag-name") === -1) { + token = iterator.stepBackward(); + } + if (!token) { + return; + } + var tag = token.value; + var row = iterator.getCurrentTokenRow(); + token = iterator.stepBackward(); + if (!token || token.type.indexOf("end-tag") !== -1) { + return; + } + if (this.voidElements && !this.voidElements[tag]) { + var nextToken = session.getTokenAt(cursor.row, cursor.column + 1); + var line = session.getLine(row); + var nextIndent = this.$getIndent(line); + var indent = nextIndent + session.getTabString(); + if (nextToken && nextToken.value === "') { + var position = editor.getCursorPosition(); + var iterator = new TokenIterator(session, position.row, position.column); + var token = iterator.getCurrentToken(); + var atCursor = false; + var state = JSON.parse(state).pop(); + if ((token && token.value === '>') || state !== "StartTag") + return; + if (!token || !hasType(token, 'meta.tag') && !(hasType(token, 'text') && token.value.match('/'))) { + do { + token = iterator.stepBackward(); + } while (token && (hasType(token, 'string') || hasType(token, 'keyword.operator') || hasType(token, 'entity.attribute-name') || hasType(token, 'text'))); + } + else { + atCursor = true; + } + var previous = iterator.stepBackward(); + if (!token || !hasType(token, 'meta.tag') || (previous !== null && previous.value.match('/'))) { + return; + } + var tag = token.value.substring(1); + if (atCursor) { + var tag = tag.substring(0, position.column - token.start); + } + return { + text: '>' + '', + selection: [1, 1] + }; + } + }); +}; +oop.inherits(XQueryBehaviour, Behaviour); +exports.XQueryBehaviour = XQueryBehaviour; + +}); + +ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/xquery",["require","exports","module","ace/worker/worker_client","ace/lib/oop","ace/mode/text","ace/mode/text_highlight_rules","ace/mode/xquery/xquery_lexer","ace/range","ace/mode/behaviour/xquery","ace/mode/folding/cstyle","ace/anchor"], function(require, exports, module) { +"use strict"; + +var WorkerClient = require("../worker/worker_client").WorkerClient; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var XQueryLexer = require("./xquery/xquery_lexer").XQueryLexer; +var Range = require("../range").Range; +var XQueryBehaviour = require("./behaviour/xquery").XQueryBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Anchor = require("../anchor").Anchor; + +var Mode = function() { + this.$tokenizer = new XQueryLexer(); + this.$behaviour = new XQueryBehaviour(); + this.foldingRules = new CStyleFoldMode(); + this.$highlightRules = new TextHighlightRules(); +}; +oop.inherits(Mode, TextMode); + +(function() { + + this.completer = { + getCompletions: function(editor, session, pos, prefix, callback) { + if (!session.$worker) + return callback(); + session.$worker.emit("complete", { data: { pos: pos, prefix: prefix } }); + session.$worker.on("complete", function(e){ + callback(null, e.data); + }); + } + }; + + this.getNextLineIndent = function(state, line, tab) { + var indent = this.$getIndent(line); + var match = line.match(/\s*(?:then|else|return|[{\(]|<\w+>)\s*$/); + if (match) + indent += tab; + return indent; + }; + + this.checkOutdent = function(state, line, input) { + if (! /^\s+$/.test(line)) + return false; + + return (/^\s*[\}\)]/).test(input); + }; + + this.autoOutdent = function(state, doc, row) { + var line = doc.getLine(row); + var match = line.match(/^(\s*[\}\)])/); + + if (!match) return 0; + + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({row: row, column: column}); + + if (!openBracePos || openBracePos.row == row) return 0; + + var indent = this.$getIndent(doc.getLine(openBracePos.row)); + doc.replace(new Range(row, 0, row, column-1), indent); + }; + + this.toggleCommentLines = function(state, doc, startRow, endRow) { + var i, line; + var outdent = true; + var re = /^\s*\(:(.*):\)/; + + for (i=startRow; i<= endRow; i++) { + if (!re.test(doc.getLine(i))) { + outdent = false; + break; + } + } + + var range = new Range(0, 0, 0, 0); + for (i=startRow; i<= endRow; i++) { + line = doc.getLine(i); + range.start.row = i; + range.end.row = i; + range.end.column = line.length; + + doc.replace(range, outdent ? line.match(re)[1] : "(:" + line + ":)"); + } + }; + + this.createWorker = function(session) { + + var worker = new WorkerClient(["ace"], "ace/mode/xquery_worker", "XQueryWorker"); + var that = this; + + worker.attachToDocument(session.getDocument()); + + worker.on("ok", function(e) { + session.clearAnnotations(); + }); + + worker.on("markers", function(e) { + session.clearAnnotations(); + that.addMarkers(e.data, session); + }); + + worker.on("highlight", function(tokens) { + that.$tokenizer.tokens = tokens.data.tokens; + that.$tokenizer.lines = session.getDocument().getAllLines(); + + var rows = Object.keys(that.$tokenizer.tokens); + for(var i=0; i < rows.length; i++) { + var row = parseInt(rows[i]); + delete session.bgTokenizer.lines[row]; + delete session.bgTokenizer.states[row]; + session.bgTokenizer.fireUpdateEvent(row, row); + } + }); + + return worker; + }; + + this.removeMarkers = function(session) { + var markers = session.getMarkers(false); + for (var id in markers) { + if (markers[id].clazz.indexOf('language_highlight_') === 0) { + session.removeMarker(id); + } + } + for (var i = 0; i < session.markerAnchors.length; i++) { + session.markerAnchors[i].detach(); + } + session.markerAnchors = []; + }; + + this.addMarkers = function(annos, mySession) { + var _self = this; + + if (!mySession.markerAnchors) mySession.markerAnchors = []; + this.removeMarkers(mySession); + mySession.languageAnnos = []; + annos.forEach(function(anno) { + var anchor = new Anchor(mySession.getDocument(), anno.pos.sl, anno.pos.sc || 0); + mySession.markerAnchors.push(anchor); + var markerId; + var colDiff = anno.pos.ec - anno.pos.sc; + var rowDiff = anno.pos.el - anno.pos.sl; + var gutterAnno = { + guttertext: anno.message, + type: anno.level || "warning", + text: anno.message + }; + + function updateFloat(single) { + if (markerId) + mySession.removeMarker(markerId); + gutterAnno.row = anchor.row; + if (anno.pos.sc !== undefined && anno.pos.ec !== undefined) { + var range = new Range(anno.pos.sl, anno.pos.sc, anno.pos.el, anno.pos.ec); + markerId = mySession.addMarker(range, "language_highlight_" + (anno.type ? anno.type : "default")); + } + if (single) mySession.setAnnotations(mySession.languageAnnos); + } + updateFloat(); + anchor.on("change", function() { + updateFloat(true); + }); + if (anno.message) mySession.languageAnnos.push(gutterAnno); + }); + mySession.setAnnotations(mySession.languageAnnos); + }; + + this.$id = "ace/mode/xquery"; + this.snippetFileId = "ace/snippets/xquery"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); (function() { + ace.require(["ace/mode/xquery"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/a65537c91d9088b603c93b6398f580c0.js.gz b/web/dist/a65537c91d9088b603c93b6398f580c0.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..79c041186c037f69304176b6ac5cbe33d6f88109 GIT binary patch literal 40120 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 J_gMD!1OO%(eb)d0 literal 0 HcmV?d00001 diff --git a/web/dist/a68bd604e401377e745b8f3a2e5088f0.js b/web/dist/a68bd604e401377e745b8f3a2e5088f0.js new file mode 100644 index 00000000..b696184c --- /dev/null +++ b/web/dist/a68bd604e401377e745b8f3a2e5088f0.js @@ -0,0 +1,922 @@ +ace.define("ace/mode/ruby_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var constantOtherSymbol = exports.constantOtherSymbol = { + token: "constant.other.symbol.ruby", + regex: "[:](?:[A-Za-z_]|[@$](?=[a-zA-Z0-9_]))[a-zA-Z0-9_]*[!=?]?" +}; +exports.qString = { + token: "string", + regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" +}; +exports.qqString = { + token: "string", + regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' +}; +exports.tString = { + token: "string", + regex: "[`](?:(?:\\\\.)|(?:[^'\\\\]))*?[`]" +}; +var constantNumericHex = exports.constantNumericHex = { + token: "constant.numeric", + regex: "0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_(?=[0-9a-fA-F]))*\\b" +}; +var constantNumericBinary = exports.constantNumericBinary = { + token: "constant.numeric", + regex: /\b(0[bB][01](?:[01]|_(?=[01]))*)\b/ +}; +var constantNumericDecimal = exports.constantNumericDecimal = { + token: "constant.numeric", + regex: /\b(0[dD](?:[1-9](?:[\d]|_(?=[\d]))*|0))\b/ +}; +var constantNumericOctal = exports.constantNumericDecimal = { + token: "constant.numeric", + regex: /\b(0[oO]?(?:[1-7](?:[0-7]|_(?=[0-7]))*|0))\b/ +}; +var constantNumericRational = exports.constantNumericRational = { + token: "constant.numeric", + regex: /\b([\d]+(?:[./][\d]+)?ri?)\b/ +}; +var constantNumericComplex = exports.constantNumericComplex = { + token: "constant.numeric", + regex: /\b([\d]i)\b/ +}; +var constantNumericFloat = exports.constantNumericFloat = { + token: "constant.numeric", + regex: "[+-]?\\d(?:\\d|_(?=\\d))*(?:(?:\\.\\d(?:\\d|_(?=\\d))*)?(?:[eE][+-]?\\d+)?)?i?\\b" +}; +var instanceVariable = exports.instanceVariable = { + token: "variable.instance", + regex: "@{1,2}[a-zA-Z_\\d]+" +}; +var RubyHighlightRules = function () { + var builtinFunctions = ("abort|Array|assert|assert_equal|assert_not_equal|assert_same|assert_not_same|" + + "assert_nil|assert_not_nil|assert_match|assert_no_match|assert_in_delta|assert_throws|" + + "assert_raise|assert_nothing_raised|assert_instance_of|assert_kind_of|assert_respond_to|" + + "assert_operator|assert_send|assert_difference|assert_no_difference|assert_recognizes|" + + "assert_generates|assert_response|assert_redirected_to|assert_template|assert_select|" + + "assert_select_email|assert_select_rjs|assert_select_encoded|css_select|at_exit|" + + "attr|attr_writer|attr_reader|attr_accessor|attr_accessible|autoload|binding|block_given?|callcc|" + + "caller|catch|chomp|chomp!|chop|chop!|defined?|delete_via_redirect|eval|exec|exit|" + + "exit!|fail|Float|flunk|follow_redirect!|fork|form_for|form_tag|format|gets|global_variables|gsub|" + + "gsub!|get_via_redirect|host!|https?|https!|include|Integer|lambda|link_to|" + + "link_to_unless_current|link_to_function|link_to_remote|load|local_variables|loop|open|open_session|" + + "p|print|printf|proc|putc|puts|post_via_redirect|put_via_redirect|raise|rand|" + + "raw|readline|readlines|redirect?|request_via_redirect|require|scan|select|" + + "set_trace_func|sleep|split|sprintf|srand|String|stylesheet_link_tag|syscall|system|sub|sub!|test|" + + "throw|trace_var|trap|untrace_var|atan2|cos|exp|frexp|ldexp|log|log10|sin|sqrt|tan|" + + "render|javascript_include_tag|csrf_meta_tag|label_tag|text_field_tag|submit_tag|check_box_tag|" + + "content_tag|radio_button_tag|text_area_tag|password_field_tag|hidden_field_tag|" + + "fields_for|select_tag|options_for_select|options_from_collection_for_select|collection_select|" + + "time_zone_select|select_date|select_time|select_datetime|date_select|time_select|datetime_select|" + + "select_year|select_month|select_day|select_hour|select_minute|select_second|file_field_tag|" + + "file_field|respond_to|skip_before_filter|around_filter|after_filter|verify|" + + "protect_from_forgery|rescue_from|helper_method|redirect_to|before_filter|" + + "send_data|send_file|validates_presence_of|validates_uniqueness_of|validates_length_of|" + + "validates_format_of|validates_acceptance_of|validates_associated|validates_exclusion_of|" + + "validates_inclusion_of|validates_numericality_of|validates_with|validates_each|" + + "authenticate_or_request_with_http_basic|authenticate_or_request_with_http_digest|" + + "filter_parameter_logging|match|get|post|resources|redirect|scope|assert_routing|" + + "translate|localize|extract_locale_from_tld|caches_page|expire_page|caches_action|expire_action|" + + "cache|expire_fragment|expire_cache_for|observe|cache_sweeper|" + + "has_many|has_one|belongs_to|has_and_belongs_to_many|p|warn|refine|using|module_function|extend|alias_method|" + + "private_class_method|remove_method|undef_method"); + var keywords = ("alias|and|BEGIN|begin|break|case|class|def|defined|do|else|elsif|END|end|ensure|" + + "__FILE__|finally|for|gem|if|in|__LINE__|module|next|not|or|private|protected|public|" + + "redo|rescue|retry|return|super|then|undef|unless|until|when|while|yield|__ENCODING__|prepend"); + var buildinConstants = ("true|TRUE|false|FALSE|nil|NIL|ARGF|ARGV|DATA|ENV|RUBY_PLATFORM|RUBY_RELEASE_DATE|" + + "RUBY_VERSION|STDERR|STDIN|STDOUT|TOPLEVEL_BINDING|RUBY_PATCHLEVEL|RUBY_REVISION|RUBY_COPYRIGHT|RUBY_ENGINE|RUBY_ENGINE_VERSION|RUBY_DESCRIPTION"); + var builtinVariables = ("$DEBUG|$defout|$FILENAME|$LOAD_PATH|$SAFE|$stdin|$stdout|$stderr|$VERBOSE|" + + "$!|root_url|flash|session|cookies|params|request|response|logger|self"); + var keywordMapper = this.$keywords = this.createKeywordMapper({ + "keyword": keywords, + "constant.language": buildinConstants, + "variable.language": builtinVariables, + "support.function": builtinFunctions, + "invalid.deprecated": "debugger" // TODO is this a remnant from js mode? + }, "identifier"); + var escapedChars = "\\\\(?:n(?:[1-7][0-7]{0,2}|0)|[nsrtvfbae'\"\\\\]|c(?:\\\\M-)?.|M-(?:\\\\C-|\\\\c)?.|C-(?:\\\\M-)?.|[0-7]{3}|x[\\da-fA-F]{2}|u[\\da-fA-F]{4}|u{[\\da-fA-F]{1,6}(?:\\s[\\da-fA-F]{1,6})*})"; + var closeParen = { + "(": ")", + "[": "]", + "{": "}", + "<": ">", + "^": "^", + "|": "|", + "%": "%" + }; + this.$rules = { + "start": [ + { + token: "comment", + regex: "#.*$" + }, { + token: "comment.multiline", + regex: "^=begin(?=$|\\s.*$)", + next: "comment" + }, { + token: "string.regexp", + regex: /[/](?=.*\/)/, + next: "regex" + }, + [{ + token: ["constant.other.symbol.ruby", "string.start"], + regex: /(:)?(")/, + push: [{ + token: "constant.language.escape", + regex: escapedChars + }, { + token: "paren.start", + regex: /#{/, + push: "start" + }, { + token: "string.end", + regex: /"/, + next: "pop" + }, { + defaultToken: "string" + }] + }, { + token: "string.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedChars + }, { + token: "paren.start", + regex: /#{/, + push: "start" + }, { + token: "string.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string" + }] + }, { + token: ["constant.other.symbol.ruby", "string.start"], + regex: /(:)?(')/, + push: [{ + token: "constant.language.escape", + regex: /\\['\\]/ + }, { + token: "string.end", + regex: /'/, + next: "pop" + }, { + defaultToken: "string" + }] + }, { + token: "string.start", + regex: /%[qwx]([(\[<{^|%])/, onMatch: function (val, state, stack) { + if (stack.length) + stack = []; + var paren = val[val.length - 1]; + stack.unshift(paren, state); + this.next = "qStateWithoutInterpolation"; + return this.token; + } + }, { + token: "string.start", + regex: /%[QWX]?([(\[<{^|%])/, onMatch: function (val, state, stack) { + if (stack.length) + stack = []; + var paren = val[val.length - 1]; + stack.unshift(paren, state); + this.next = "qStateWithInterpolation"; + return this.token; + } + }, { + token: "constant.other.symbol.ruby", + regex: /%[si]([(\[<{^|%])/, onMatch: function (val, state, stack) { + if (stack.length) + stack = []; + var paren = val[val.length - 1]; + stack.unshift(paren, state); + this.next = "sStateWithoutInterpolation"; + return this.token; + } + }, { + token: "constant.other.symbol.ruby", + regex: /%[SI]([(\[<{^|%])/, onMatch: function (val, state, stack) { + if (stack.length) + stack = []; + var paren = val[val.length - 1]; + stack.unshift(paren, state); + this.next = "sStateWithInterpolation"; + return this.token; + } + }, { + token: "string.regexp", + regex: /%[r]([(\[<{^|%])/, onMatch: function (val, state, stack) { + if (stack.length) + stack = []; + var paren = val[val.length - 1]; + stack.unshift(paren, state); + this.next = "rState"; + return this.token; + } + }], + { + token: "punctuation", + regex: "::" + }, + instanceVariable, + { + token: "variable.global", + regex: "[$][a-zA-Z_\\d]+" + }, { + token: "support.class", + regex: "[A-Z][a-zA-Z_\\d]*" + }, { + token: ["punctuation.operator", "support.function"], + regex: /(\.)([a-zA-Z_\d]+)(?=\()/ + }, { + token: ["punctuation.operator", "identifier"], + regex: /(\.)([a-zA-Z_][a-zA-Z_\d]*)/ + }, { + token: "string.character", + regex: "\\B\\?(?:" + escapedChars + "|\\S)" + }, { + token: "punctuation.operator", + regex: /\?(?=.+:)/ + }, + constantNumericRational, + constantNumericComplex, + constantOtherSymbol, + constantNumericHex, + constantNumericFloat, + constantNumericBinary, + constantNumericDecimal, + constantNumericOctal, + { + token: "constant.language.boolean", + regex: "(?:true|false)\\b" + }, { + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token: "punctuation.separator.key-value", + regex: "=>" + }, { + stateName: "heredoc", + onMatch: function (value, currentState, stack) { + var next = (value[2] == '-' || value[2] == '~') ? "indentedHeredoc" : "heredoc"; + var tokens = value.split(this.splitRegex); + stack.push(next, tokens[3]); + return [ + { type: "constant", value: tokens[1] }, + { type: "string", value: tokens[2] }, + { type: "support.class", value: tokens[3] }, + { type: "string", value: tokens[4] } + ]; + }, + regex: "(<<[-~]?)(['\"`]?)([\\w]+)(['\"`]?)", + rules: { + heredoc: [{ + onMatch: function (value, currentState, stack) { + if (value === stack[1]) { + stack.shift(); + stack.shift(); + this.next = stack[0] || "start"; + return "support.class"; + } + this.next = ""; + return "string"; + }, + regex: ".*$", + next: "start" + }], + indentedHeredoc: [{ + token: "string", + regex: "^ +" + }, { + onMatch: function (value, currentState, stack) { + if (value === stack[1]) { + stack.shift(); + stack.shift(); + this.next = stack[0] || "start"; + return "support.class"; + } + this.next = ""; + return "string"; + }, + regex: ".*$", + next: "start" + }] + } + }, { + regex: "$", + token: "empty", + next: function (currentState, stack) { + if (stack[0] === "heredoc" || stack[0] === "indentedHeredoc") + return stack[0]; + return currentState; + } + }, { + token: "keyword.operator", + regex: "!|\\$|%|&|\\*|/|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\||\\b(?:in|instanceof|new|delete|typeof|void)" + }, { + token: "paren.lparen", + regex: "[[({]" + }, { + token: "paren.rparen", + regex: "[\\])}]", + onMatch: function (value, currentState, stack) { + this.next = ''; + if (value == "}" && stack.length > 1 && stack[1] != "start") { + stack.shift(); + this.next = stack.shift(); + } + return this.token; + } + }, { + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: /[?:,;.]/ + } + ], + "comment": [ + { + token: "comment.multiline", + regex: "^=end(?=$|\\s.*$)", + next: "start" + }, { + token: "comment", + regex: ".+" + } + ], + "qStateWithInterpolation": [{ + token: "string.start", + regex: /[(\[<{]/, onMatch: function (val, state, stack) { + if (stack.length && val === stack[0]) { + stack.unshift(val, state); + return this.token; + } + return "string"; + } + }, { + token: "constant.language.escape", + regex: escapedChars + }, { + token: "constant.language.escape", + regex: /\\./ + }, { + token: "paren.start", + regex: /#{/, + push: "start" + }, { + token: "string.end", + regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) { + if (stack.length && val === closeParen[stack[0]]) { + stack.shift(); + this.next = stack.shift(); + return this.token; + } + this.next = ''; + return "string"; + } + }, { + defaultToken: "string" + }], + "qStateWithoutInterpolation": [{ + token: "string.start", + regex: /[(\[<{]/, onMatch: function (val, state, stack) { + if (stack.length && val === stack[0]) { + stack.unshift(val, state); + return this.token; + } + return "string"; + } + }, { + token: "constant.language.escape", + regex: /\\['\\]/ + }, { + token: "constant.language.escape", + regex: /\\./ + }, { + token: "string.end", + regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) { + if (stack.length && val === closeParen[stack[0]]) { + stack.shift(); + this.next = stack.shift(); + return this.token; + } + this.next = ''; + return "string"; + } + }, { + defaultToken: "string" + }], + "sStateWithoutInterpolation": [{ + token: "constant.other.symbol.ruby", + regex: /[(\[<{]/, onMatch: function (val, state, stack) { + if (stack.length && val === stack[0]) { + stack.unshift(val, state); + return this.token; + } + return "constant.other.symbol.ruby"; + } + }, { + token: "constant.other.symbol.ruby", + regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) { + if (stack.length && val === closeParen[stack[0]]) { + stack.shift(); + this.next = stack.shift(); + return this.token; + } + this.next = ''; + return "constant.other.symbol.ruby"; + } + }, { + defaultToken: "constant.other.symbol.ruby" + }], + "sStateWithInterpolation": [{ + token: "constant.other.symbol.ruby", + regex: /[(\[<{]/, onMatch: function (val, state, stack) { + if (stack.length && val === stack[0]) { + stack.unshift(val, state); + return this.token; + } + return "constant.other.symbol.ruby"; + } + }, { + token: "constant.language.escape", + regex: escapedChars + }, { + token: "constant.language.escape", + regex: /\\./ + }, { + token: "paren.start", + regex: /#{/, + push: "start" + }, { + token: "constant.other.symbol.ruby", + regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) { + if (stack.length && val === closeParen[stack[0]]) { + stack.shift(); + this.next = stack.shift(); + return this.token; + } + this.next = ''; + return "constant.other.symbol.ruby"; + } + }, { + defaultToken: "constant.other.symbol.ruby" + }], + "rState": [{ + token: "string.regexp", + regex: /[(\[<{]/, onMatch: function (val, state, stack) { + if (stack.length && val === stack[0]) { + stack.unshift(val, state); + return this.token; + } + return "constant.language.escape"; + } + }, { + token: "paren.start", + regex: /#{/, + push: "start" + }, { + token: "string.regexp", + regex: /\// + }, { + token: "string.regexp", + regex: /[)\]>}^|%][imxouesn]*/, onMatch: function (val, state, stack) { + if (stack.length && val[0] === closeParen[stack[0]]) { + stack.shift(); + this.next = stack.shift(); + return this.token; + } + this.next = ''; + return "constant.language.escape"; + } + }, + { include: "regex" }, + { + defaultToken: "string.regexp" + }], + "regex": [ + { + token: "regexp.keyword", + regex: /\\[wWdDhHsS]/ + }, { + token: "constant.language.escape", + regex: /\\[AGbBzZ]/ + }, { + token: "constant.language.escape", + regex: /\\g<[a-zA-Z0-9]*>/ + }, { + token: ["constant.language.escape", "regexp.keyword", "constant.language.escape"], + regex: /(\\p{\^?)(Alnum|Alpha|Blank|Cntrl|Digit|Graph|Lower|Print|Punct|Space|Upper|XDigit|Word|ASCII|Any|Assigned|Arabic|Armenian|Balinese|Bengali|Bopomofo|Braille|Buginese|Buhid|Canadian_Aboriginal|Carian|Cham|Cherokee|Common|Coptic|Cuneiform|Cypriot|Cyrillic|Deseret|Devanagari|Ethiopic|Georgian|Glagolitic|Gothic|Greek|Gujarati|Gurmukhi|Han|Hangul|Hanunoo|Hebrew|Hiragana|Inherited|Kannada|Katakana|Kayah_Li|Kharoshthi|Khmer|Lao|Latin|Lepcha|Limbu|Linear_B|Lycian|Lydian|Malayalam|Mongolian|Myanmar|New_Tai_Lue|Nko|Ogham|Ol_Chiki|Old_Italic|Old_Persian|Oriya|Osmanya|Phags_Pa|Phoenician|Rejang|Runic|Saurashtra|Shavian|Sinhala|Sundanese|Syloti_Nagri|Syriac|Tagalog|Tagbanwa|Tai_Le|Tamil|Telugu|Thaana|Thai|Tibetan|Tifinagh|Ugaritic|Vai|Yi|Ll|Lm|Lt|Lu|Lo|Mn|Mc|Me|Nd|Nl|Pc|Pd|Ps|Pe|Pi|Pf|Po|No|Sm|Sc|Sk|So|Zs|Zl|Zp|Cc|Cf|Cn|Co|Cs|N|L|M|P|S|Z|C)(})/ + }, { + token: ["constant.language.escape", "invalid", "constant.language.escape"], + regex: /(\\p{\^?)([^/]*)(})/ + }, { + token: "regexp.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "string.regexp", + regex: /[/][imxouesn]*/, + next: "start" + }, { + token: "invalid", + regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ + }, { + token: "constant.language.escape", + regex: /\(\?(?:[:=!>]|<'?[a-zA-Z]*'?>|<[=!])|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ + }, { + token: "constant.language.delimiter", + regex: /\|/ + }, { + token: "regexp.keyword", + regex: /\[\[:(?:alnum|alpha|blank|cntrl|digit|graph|lower|print|punct|space|upper|xdigit|word|ascii):\]\]/ + }, { + token: "constant.language.escape", + regex: /\[\^?/, + push: "regex_character_class" + }, { + defaultToken: "string.regexp" + } + ], + "regex_character_class": [ + { + token: "regexp.keyword", + regex: /\\[wWdDhHsS]/ + }, { + token: "regexp.charclass.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "constant.language.escape", + regex: /&?&?\[\^?/, + push: "regex_character_class" + }, { + token: "constant.language.escape", + regex: "]", + next: "pop" + }, { + token: "constant.language.escape", + regex: "-" + }, { + defaultToken: "string.regexp.characterclass" + } + ] + }; + this.normalizeRules(); +}; +oop.inherits(RubyHighlightRules, TextHighlightRules); +exports.RubyHighlightRules = RubyHighlightRules; + +}); + +ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) + return false; + return /^\s*\}/.test(input); + }; + this.autoOutdent = function (doc, row) { + var line = doc.getLine(row); + var match = line.match(/^(\s*\})/); + if (!match) + return 0; + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; + var indent = this.$getIndent(doc.getLine(openBracePos.row)); + doc.replace(new Range(row, 0, row, column - 1), indent); + }; + this.$getIndent = function (line) { + return line.match(/^\s*/)[0]; + }; +}).call(MatchingBraceOutdent.prototype); +exports.MatchingBraceOutdent = MatchingBraceOutdent; + +}); + +ace.define("ace/mode/folding/ruby",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range","ace/token_iterator"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var BaseFoldMode = require("./fold_mode").FoldMode; +var Range = require("../../range").Range; +var TokenIterator = require("../../token_iterator").TokenIterator; +var FoldMode = exports.FoldMode = function () { +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.indentKeywords = { + "class": 1, + "def": 1, + "module": 1, + "do": 1, + "unless": 1, + "if": 1, + "while": 1, + "for": 1, + "until": 1, + "begin": 1, + "else": 0, + "elsif": 0, + "rescue": 0, + "ensure": 0, + "when": 0, + "end": -1, + "case": 1, + "=begin": 1, + "=end": -1 + }; + this.foldingStartMarker = /(?:\s|^)(def|do|while|class|unless|module|if|for|until|begin|else|elsif|case|rescue|ensure|when)\b|({\s*$)|(=begin)/; + this.foldingStopMarker = /(=end(?=$|\s.*$))|(^\s*})|\b(end)\b/; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + var isStart = this.foldingStartMarker.test(line); + var isEnd = this.foldingStopMarker.test(line); + if (isStart && !isEnd) { + var match = line.match(this.foldingStartMarker); + if (match[1]) { + if (match[1] == "if" || match[1] == "else" || match[1] == "while" || match[1] == "until" || match[1] == "unless") { + if (match[1] == "else" && /^\s*else\s*$/.test(line) === false) { + return; + } + if (/^\s*(?:if|else|while|until|unless)\s*/.test(line) === false) { + return; + } + } + if (match[1] == "when") { + if (/\sthen\s/.test(line) === true) { + return; + } + } + if (session.getTokenAt(row, match.index + 2).type === "keyword") + return "start"; + } + else if (match[3]) { + if (session.getTokenAt(row, match.index + 1).type === "comment.multiline") + return "start"; + } + else { + return "start"; + } + } + if (foldStyle != "markbeginend" || !isEnd || isStart && isEnd) + return ""; + var match = line.match(this.foldingStopMarker); + if (match[3] === "end") { + if (session.getTokenAt(row, match.index + 1).type === "keyword") + return "end"; + } + else if (match[1]) { + if (session.getTokenAt(row, match.index + 1).type === "comment.multiline") + return "end"; + } + else + return "end"; + }; + this.getFoldWidgetRange = function (session, foldStyle, row) { + var line = session.doc.getLine(row); + var match = this.foldingStartMarker.exec(line); + if (match) { + if (match[1] || match[3]) + return this.rubyBlock(session, row, match.index + 2); + return this.openingBracketBlock(session, "{", row, match.index); + } + var match = this.foldingStopMarker.exec(line); + if (match) { + if (match[3] === "end") { + if (session.getTokenAt(row, match.index + 1).type === "keyword") + return this.rubyBlock(session, row, match.index + 1); + } + if (match[1] === "=end") { + if (session.getTokenAt(row, match.index + 1).type === "comment.multiline") + return this.rubyBlock(session, row, match.index + 1); + } + return this.closingBracketBlock(session, "}", row, match.index + match[0].length); + } + }; + this.rubyBlock = function (session, row, column, tokenRange) { + var stream = new TokenIterator(session, row, column); + var token = stream.getCurrentToken(); + if (!token || (token.type != "keyword" && token.type != "comment.multiline")) + return; + var val = token.value; + var line = session.getLine(row); + switch (token.value) { + case "if": + case "unless": + case "while": + case "until": + var checkToken = new RegExp("^\\s*" + token.value); + if (!checkToken.test(line)) { + return; + } + var dir = this.indentKeywords[val]; + break; + case "when": + if (/\sthen\s/.test(line)) { + return; + } + case "elsif": + case "rescue": + case "ensure": + var dir = 1; + break; + case "else": + var checkToken = new RegExp("^\\s*" + token.value + "\\s*$"); + if (!checkToken.test(line)) { + return; + } + var dir = 1; + break; + default: + var dir = this.indentKeywords[val]; + break; + } + var stack = [val]; + if (!dir) + return; + var startColumn = dir === -1 ? session.getLine(row - 1).length : session.getLine(row).length; + var startRow = row; + var ranges = []; + ranges.push(stream.getCurrentTokenRange()); + stream.step = dir === -1 ? stream.stepBackward : stream.stepForward; + if (token.type == "comment.multiline") { + while (token = stream.step()) { + if (token.type !== "comment.multiline") + continue; + if (dir == 1) { + startColumn = 6; + if (token.value == "=end") { + break; + } + } + else { + if (token.value == "=begin") { + break; + } + } + } + } + else { + while (token = stream.step()) { + var ignore = false; + if (token.type !== "keyword") + continue; + var level = dir * this.indentKeywords[token.value]; + line = session.getLine(stream.getCurrentTokenRow()); + switch (token.value) { + case "do": + for (var i = stream.$tokenIndex - 1; i >= 0; i--) { + var prevToken = stream.$rowTokens[i]; + if (prevToken && (prevToken.value == "while" || prevToken.value == "until" || prevToken.value == "for")) { + level = 0; + break; + } + } + break; + case "else": + var checkToken = new RegExp("^\\s*" + token.value + "\\s*$"); + if (!checkToken.test(line) || val == "case") { + level = 0; + ignore = true; + } + break; + case "if": + case "unless": + case "while": + case "until": + var checkToken = new RegExp("^\\s*" + token.value); + if (!checkToken.test(line)) { + level = 0; + ignore = true; + } + break; + case "when": + if (/\sthen\s/.test(line) || val == "case") { + level = 0; + ignore = true; + } + break; + } + if (level > 0) { + stack.unshift(token.value); + } + else if (level <= 0 && ignore === false) { + stack.shift(); + if (!stack.length) { + if ((val == "while" || val == "until" || val == "for") && token.value != "do") { + break; + } + if (token.value == "do" && dir == -1 && level != 0) + break; + if (token.value != "do") + break; + } + if (level === 0) { + stack.unshift(token.value); + } + } + } + } + if (!token) + return null; + if (tokenRange) { + ranges.push(stream.getCurrentTokenRange()); + return ranges; + } + var row = stream.getCurrentTokenRow(); + if (dir === -1) { + if (token.type === "comment.multiline") { + var endColumn = 6; + } + else { + var endColumn = session.getLine(row).length; + } + return new Range(row, endColumn, startRow - 1, startColumn); + } + else + return new Range(startRow, startColumn, row - 1, session.getLine(row - 1).length); + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/ruby",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/ruby_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/behaviour/cstyle","ace/mode/folding/ruby"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var RubyHighlightRules = require("./ruby_highlight_rules").RubyHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var Range = require("../range").Range; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var FoldMode = require("./folding/ruby").FoldMode; +var Mode = function () { + this.HighlightRules = RubyHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CstyleBehaviour(); + this.foldingRules = new FoldMode(); + this.indentKeywords = this.foldingRules.indentKeywords; +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "#"; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + if (state == "start") { + var match = line.match(/^.*[\{\(\[]\s*$/); + var startingClassOrMethod = line.match(/^\s*(class|def|module)\s.*$/); + var startingDoBlock = line.match(/.*do(\s*|\s+\|.*\|\s*)$/); + var startingConditional = line.match(/^\s*(if|else|when|elsif|unless|while|for|begin|rescue|ensure)\s*/); + if (match || startingClassOrMethod || startingDoBlock || startingConditional) { + indent += tab; + } + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return /^\s+(end|else|rescue|ensure)$/.test(line + input) || this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, session, row) { + var line = session.getLine(row); + if (/}/.test(line)) + return this.$outdent.autoOutdent(session, row); + var indent = this.$getIndent(line); + var prevLine = session.getLine(row - 1); + var prevIndent = this.$getIndent(prevLine); + var tab = session.getTabString(); + if (prevIndent.length <= indent.length) { + if (indent.slice(-tab.length) == tab) + session.remove(new Range(row, indent.length - tab.length, row, indent.length)); + } + }; + this.getMatching = function (session, row, column) { + if (row == undefined) { + var pos = session.selection.lead; + column = pos.column; + row = pos.row; + } + var startToken = session.getTokenAt(row, column); + if (startToken && startToken.value in this.indentKeywords) + return this.foldingRules.rubyBlock(session, row, column, true); + }; + this.$id = "ace/mode/ruby"; + this.snippetFileId = "ace/snippets/ruby"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/ruby"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/a68bd604e401377e745b8f3a2e5088f0.js.gz b/web/dist/a68bd604e401377e745b8f3a2e5088f0.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..234dad90bf58bf281ee7b7f118e022498d1ec32a GIT binary patch literal 7725 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 literal 0 HcmV?d00001 diff --git a/web/dist/a7182b8d60c4b8e3bc60bddc2d69da3c.js b/web/dist/a7182b8d60c4b8e3bc60bddc2d69da3c.js new file mode 100644 index 00000000..b26cc01b --- /dev/null +++ b/web/dist/a7182b8d60c4b8e3bc60bddc2d69da3c.js @@ -0,0 +1,18 @@ +ace.define("ace/theme/merbivore_soft.css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-merbivore-soft .ace_gutter {\n background: #262424;\n color: #E6E1DC\n}\n\n.ace-merbivore-soft .ace_print-margin {\n width: 1px;\n background: #262424\n}\n\n.ace-merbivore-soft {\n background-color: #1C1C1C;\n color: #E6E1DC\n}\n\n.ace-merbivore-soft .ace_cursor {\n color: #FFFFFF\n}\n\n.ace-merbivore-soft .ace_marker-layer .ace_selection {\n background: #494949\n}\n\n.ace-merbivore-soft.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #1C1C1C;\n}\n\n.ace-merbivore-soft .ace_marker-layer .ace_step {\n background: rgb(102, 82, 0)\n}\n\n.ace-merbivore-soft .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid #404040\n}\n\n.ace-merbivore-soft .ace_marker-layer .ace_active-line {\n background: #333435\n}\n\n.ace-merbivore-soft .ace_gutter-active-line {\n background-color: #333435\n}\n\n.ace-merbivore-soft .ace_marker-layer .ace_selected-word {\n border: 1px solid #494949\n}\n\n.ace-merbivore-soft .ace_invisible {\n color: #404040\n}\n\n.ace-merbivore-soft .ace_entity.ace_name.ace_tag,\n.ace-merbivore-soft .ace_keyword,\n.ace-merbivore-soft .ace_meta,\n.ace-merbivore-soft .ace_meta.ace_tag,\n.ace-merbivore-soft .ace_storage {\n color: #FC803A\n}\n\n.ace-merbivore-soft .ace_constant,\n.ace-merbivore-soft .ace_constant.ace_character,\n.ace-merbivore-soft .ace_constant.ace_character.ace_escape,\n.ace-merbivore-soft .ace_constant.ace_other,\n.ace-merbivore-soft .ace_support.ace_type {\n color: #68C1D8\n}\n\n.ace-merbivore-soft .ace_constant.ace_character.ace_escape {\n color: #B3E5B4\n}\n\n.ace-merbivore-soft .ace_constant.ace_language {\n color: #E1C582\n}\n\n.ace-merbivore-soft .ace_constant.ace_library,\n.ace-merbivore-soft .ace_string,\n.ace-merbivore-soft .ace_support.ace_constant {\n color: #8EC65F\n}\n\n.ace-merbivore-soft .ace_constant.ace_numeric {\n color: #7FC578\n}\n\n.ace-merbivore-soft .ace_invalid,\n.ace-merbivore-soft .ace_invalid.ace_deprecated {\n color: #FFFFFF;\n background-color: #FE3838\n}\n\n.ace-merbivore-soft .ace_fold {\n background-color: #FC803A;\n border-color: #E6E1DC\n}\n\n.ace-merbivore-soft .ace_comment,\n.ace-merbivore-soft .ace_meta {\n font-style: italic;\n color: #AC4BB8\n}\n\n.ace-merbivore-soft .ace_entity.ace_other.ace_attribute-name {\n color: #EAF1A3\n}\n\n.ace-merbivore-soft .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWOQkpLyZfD09PwPAAfYAnaStpHRAAAAAElFTkSuQmCC) right repeat-y\n}\n\n.ace-merbivore-soft .ace_indent-guide-active {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y;\n}\n"; + +}); + +ace.define("ace/theme/merbivore_soft",["require","exports","module","ace/theme/merbivore_soft.css","ace/lib/dom"], function(require, exports, module){exports.isDark = true; +exports.cssClass = "ace-merbivore-soft"; +exports.cssText = require("./merbivore_soft.css"); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass, false); + +}); (function() { + ace.require(["ace/theme/merbivore_soft"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/a7668d94ba4eb4fd33fef9ccdf584329.js b/web/dist/a7668d94ba4eb4fd33fef9ccdf584329.js new file mode 100644 index 00000000..507cf60c --- /dev/null +++ b/web/dist/a7668d94ba4eb4fd33fef9ccdf584329.js @@ -0,0 +1,18 @@ +ace.define("ace/theme/cloud9_night.css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-cloud9-night .ace_gutter {\n background: #303130;\n color: #eee\n}\n\n.ace-cloud9-night .ace_print-margin {\n width: 1px;\n background: #222\n}\n\n.ace-cloud9-night {\n background-color: #181818;\n color: #EBEBEB\n}\n\n.ace-cloud9-night .ace_cursor {\n color: #9F9F9F\n}\n\n.ace-cloud9-night .ace_marker-layer .ace_selection {\n background: #424242\n}\n\n.ace-cloud9-night.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #000000;\n border-radius: 2px\n}\n\n.ace-cloud9-night .ace_marker-layer .ace_step {\n background: rgb(102, 82, 0)\n}\n\n.ace-cloud9-night .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid #888888\n}\n\n.ace-cloud9-night .ace_marker-layer .ace_highlight {\n border: 1px solid rgb(110, 119, 0);\n border-bottom: 0;\n box-shadow: inset 0 -1px rgb(110, 119, 0);\n margin: -1px 0 0 -1px;\n background: rgba(255, 235, 0, 0.1);\n}\n\n.ace-cloud9-night .ace_marker-layer .ace_active-line {\n background: #292929\n}\n\n.ace-cloud9-night .ace_gutter-active-line {\n background-color: #3D3D3D\n}\n\n.ace-cloud9-night .ace_stack {\n background-color: rgb(66, 90, 44)\n}\n\n.ace-cloud9-night .ace_marker-layer .ace_selected-word {\n border: 1px solid #888888\n}\n\n.ace-cloud9-night .ace_invisible {\n color: #343434\n}\n\n.ace-cloud9-night .ace_keyword,\n.ace-cloud9-night .ace_meta,\n.ace-cloud9-night .ace_storage,\n.ace-cloud9-night .ace_storage.ace_type,\n.ace-cloud9-night .ace_support.ace_type {\n color: #C397D8\n}\n\n.ace-cloud9-night .ace_keyword.ace_operator {\n color: #70C0B1\n}\n\n.ace-cloud9-night .ace_constant.ace_character,\n.ace-cloud9-night .ace_constant.ace_language,\n.ace-cloud9-night .ace_constant.ace_numeric,\n.ace-cloud9-night .ace_keyword.ace_other.ace_unit,\n.ace-cloud9-night .ace_support.ace_constant,\n.ace-cloud9-night .ace_variable.ace_parameter {\n color: #E78C45\n}\n\n.ace-cloud9-night .ace_constant.ace_other {\n color: #EEEEEE\n}\n\n.ace-cloud9-night .ace_invalid {\n color: #CED2CF;\n background-color: #DF5F5F\n}\n\n.ace-cloud9-night .ace_invalid.ace_deprecated {\n color: #CED2CF;\n background-color: #B798BF\n}\n\n.ace-cloud9-night .ace_fold {\n background-color: #7AA6DA;\n border-color: #DEDEDE\n}\n\n.ace-cloud9-night .ace_entity.ace_name.ace_function,\n.ace-cloud9-night .ace_support.ace_function,\n.ace-cloud9-night .ace_variable:not(.ace_parameter),\n.ace-cloud9-night .ace_constant:not(.ace_numeric) {\n color: #7AA6DA\n}\n\n.ace-cloud9-night .ace_support.ace_class,\n.ace-cloud9-night .ace_support.ace_type {\n color: #E7C547\n}\n\n.ace-cloud9-night .ace_heading,\n.ace-cloud9-night .ace_markup.ace_heading,\n.ace-cloud9-night .ace_string {\n color: #B9CA4A\n}\n\n.ace-cloud9-night .ace_entity.ace_name.ace_tag,\n.ace-cloud9-night .ace_entity.ace_other.ace_attribute-name,\n.ace-cloud9-night .ace_meta.ace_tag,\n.ace-cloud9-night .ace_string.ace_regexp,\n.ace-cloud9-night .ace_variable {\n color: #D54E53\n}\n\n.ace-cloud9-night .ace_comment {\n color: #969896\n}\n\n.ace-cloud9-night .ace_c9searchresults.ace_keyword {\n color: #C2C280;\n}\n\n.ace-cloud9-night .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYFBXV/8PAAJoAXX4kT2EAAAAAElFTkSuQmCC) right repeat-y\n}\n\n.ace-cloud9-night .ace_indent-guide-active {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y;\n}\n"; + +}); + +ace.define("ace/theme/cloud9_night",["require","exports","module","ace/theme/cloud9_night.css","ace/lib/dom"], function(require, exports, module){exports.isDark = true; +exports.cssClass = "ace-cloud9-night"; +exports.cssText = require("./cloud9_night.css"); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); + +}); (function() { + ace.require(["ace/theme/cloud9_night"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/a77f254bc934c3d69dd51902da56f6f1.js b/web/dist/a77f254bc934c3d69dd51902da56f6f1.js new file mode 100644 index 00000000..c6e36369 --- /dev/null +++ b/web/dist/a77f254bc934c3d69dd51902da56f6f1.js @@ -0,0 +1,318 @@ +ace.define("ace/mode/perl_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var PerlHighlightRules = function () { + var keywords = ("base|constant|continue|else|elsif|for|foreach|format|goto|if|last|local|my|next|" + + "no|package|parent|redo|require|scalar|sub|unless|until|while|use|vars"); + var buildinConstants = ("ARGV|ENV|INC|SIG"); + var builtinFunctions = ("getprotobynumber|getprotobyname|getservbyname|gethostbyaddr|" + + "gethostbyname|getservbyport|getnetbyaddr|getnetbyname|getsockname|" + + "getpeername|setpriority|getprotoent|setprotoent|getpriority|" + + "endprotoent|getservent|setservent|endservent|sethostent|socketpair|" + + "getsockopt|gethostent|endhostent|setsockopt|setnetent|quotemeta|" + + "localtime|prototype|getnetent|endnetent|rewinddir|wantarray|getpwuid|" + + "closedir|getlogin|readlink|endgrent|getgrgid|getgrnam|shmwrite|" + + "shutdown|readline|endpwent|setgrent|readpipe|formline|truncate|" + + "dbmclose|syswrite|setpwent|getpwnam|getgrent|getpwent|ucfirst|sysread|" + + "setpgrp|shmread|sysseek|sysopen|telldir|defined|opendir|connect|" + + "lcfirst|getppid|binmode|syscall|sprintf|getpgrp|readdir|seekdir|" + + "waitpid|reverse|unshift|symlink|dbmopen|semget|msgrcv|rename|listen|" + + "chroot|msgsnd|shmctl|accept|unpack|exists|fileno|shmget|system|" + + "unlink|printf|gmtime|msgctl|semctl|values|rindex|substr|splice|" + + "length|msgget|select|socket|return|caller|delete|alarm|ioctl|index|" + + "undef|lstat|times|srand|chown|fcntl|close|write|umask|rmdir|study|" + + "sleep|chomp|untie|print|utime|mkdir|atan2|split|crypt|flock|chmod|" + + "BEGIN|bless|chdir|semop|shift|reset|link|stat|chop|grep|fork|dump|" + + "join|open|tell|pipe|exit|glob|warn|each|bind|sort|pack|eval|push|" + + "keys|getc|kill|seek|sqrt|send|wait|rand|tied|read|time|exec|recv|" + + "eof|chr|int|ord|exp|pos|pop|sin|log|abs|oct|hex|tie|cos|vec|END|ref|" + + "map|die|uc|lc|do"); + var keywordMapper = this.createKeywordMapper({ + "keyword": keywords, + "constant.language": buildinConstants, + "support.function": builtinFunctions + }, "identifier"); + this.$rules = { + "start": [ + { + token: "comment.doc", + regex: "^=(?:begin|item)\\b", + next: "block_comment" + }, { + token: "string.regexp", + regex: "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)" + }, { + token: "string", + regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + }, { + token: "string", + regex: '["].*\\\\$', + next: "qqstring" + }, { + token: "string", + regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + }, { + token: "string", + regex: "['].*\\\\$", + next: "qstring" + }, { + token: "constant.numeric", + regex: "0x[0-9a-fA-F]+\\b" + }, { + token: "constant.numeric", + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token: "keyword.operator", + regex: "%#|\\$#|\\.\\.\\.|\\|\\|=|>>=|<<=|<=>|&&=|=>|!~|\\^=|&=|\\|=|\\.=|x=|%=|\\/=|\\*=|\\-=|\\+=|=~|\\*\\*|\\-\\-|\\.\\.|\\|\\||&&|\\+\\+|\\->|!=|==|>=|<=|>>|<<|,|=|\\?\\:|\\^|\\||x|%|\\/|\\*|<|&|\\\\|~|!|>|\\.|\\-|\\+|\\-C|\\-b|\\-S|\\-u|\\-t|\\-p|\\-l|\\-d|\\-f|\\-g|\\-s|\\-z|\\-k|\\-e|\\-O|\\-T|\\-B|\\-M|\\-A|\\-X|\\-W|\\-c|\\-R|\\-o|\\-x|\\-w|\\-r|\\b(?:and|cmp|eq|ge|gt|le|lt|ne|not|or|xor)" + }, { + token: "comment", + regex: "#.*$" + }, { + token: "lparen", + regex: "[[({]" + }, { + token: "rparen", + regex: "[\\])}]" + }, { + token: "text", + regex: "\\s+" + } + ], + "qqstring": [ + { + token: "string", + regex: '(?:(?:\\\\.)|(?:[^"\\\\]))*?"', + next: "start" + }, { + token: "string", + regex: '.+' + } + ], + "qstring": [ + { + token: "string", + regex: "(?:(?:\\\\.)|(?:[^'\\\\]))*?'", + next: "start" + }, { + token: "string", + regex: '.+' + } + ], + "block_comment": [ + { + token: "comment.doc", + regex: "^=cut\\b", + next: "start" + }, + { + defaultToken: "comment.doc" + } + ] + }; +}; +oop.inherits(PerlHighlightRules, TextHighlightRules); +exports.PerlHighlightRules = PerlHighlightRules; + +}); + +ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) + return false; + return /^\s*\}/.test(input); + }; + this.autoOutdent = function (doc, row) { + var line = doc.getLine(row); + var match = line.match(/^(\s*\})/); + if (!match) + return 0; + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; + var indent = this.$getIndent(doc.getLine(openBracePos.row)); + doc.replace(new Range(row, 0, row, column - 1), indent); + }; + this.$getIndent = function (line) { + return line.match(/^\s*/)[0]; + }; +}).call(MatchingBraceOutdent.prototype); +exports.MatchingBraceOutdent = MatchingBraceOutdent; + +}); + +ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/perl",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/perl_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var PerlHighlightRules = require("./perl_highlight_rules").PerlHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = PerlHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.foldingRules = new CStyleFoldMode({ start: "^=(begin|item)\\b", end: "^=(cut)\\b" }); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "#"; + this.blockComment = [ + { start: "=begin", end: "=cut", lineStartOnly: true }, + { start: "=item", end: "=cut", lineStartOnly: true } + ]; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + if (state == "start") { + var match = line.match(/^.*[\{\(\[:]\s*$/); + if (match) { + indent += tab; + } + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.$id = "ace/mode/perl"; + this.snippetFileId = "ace/snippets/perl"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/perl"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/a77f254bc934c3d69dd51902da56f6f1.js.gz b/web/dist/a77f254bc934c3d69dd51902da56f6f1.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..1122caa08ae5cdd0c7ab3525aeb24d1bf366714b GIT binary patch literal 3545 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 Tx-M{Rt1=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next: "start" + }, { + token: "punctuation.operator", + regex: /[?:,;.]/, + next: "start" + }, { + token: "paren.lparen", + regex: /[\[({]/, + next: "start" + }, { + token: "paren.rparen", + regex: /[\])}]/ + } + ] + }; + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("start")]); + this.normalizeRules(); +}; +oop.inherits(SwiftHighlightRules, TextHighlightRules); +exports.HighlightRules = SwiftHighlightRules; + +}); + +ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/swift",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/swift_highlight_rules","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ +"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var HighlightRules = require("./swift_highlight_rules").HighlightRules; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var FoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = HighlightRules; + this.foldingRules = new FoldMode(); + this.$behaviour = new CstyleBehaviour(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "//"; + this.blockComment = { start: "/*", end: "*/", nestable: true }; + this.$id = "ace/mode/swift"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/swift"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/a7da972483728415ac8f250f02083cd8.js.gz b/web/dist/a7da972483728415ac8f250f02083cd8.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..2e1c8076477e021b7f4d82a63b9e8615d6d5bbe2 GIT binary patch literal 3409 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 nX6_mW>^zP^ITa0Ke%J}W)Q&85yF)' }, + { token: ['punctuation.definition.tag.apacheconf', + 'entity.tag.apacheconf', + 'punctuation.definition.tag.apacheconf'], + regex: '()' }, + { token: ['keyword.alias.apacheconf', 'text', + 'string.regexp.apacheconf', 'text', + 'string.replacement.apacheconf', 'text'], + regex: '(Rewrite(?:Rule|Cond))(\\s+)(.+?)(\\s+)(.+?)($|\\s)' }, + { token: ['keyword.alias.apacheconf', 'text', + 'entity.status.apacheconf', 'text', + 'string.regexp.apacheconf', 'text', + 'string.path.apacheconf', 'text'], + regex: '(RedirectMatch)(?:(\\s+)(\\d\\d\\d|permanent|temp|seeother|gone))?(\\s+)(.+?)(\\s+)(?:(.+?)($|\\s))?' }, + { token: ['keyword.alias.apacheconf', 'text', + 'entity.status.apacheconf', 'text', + 'string.path.apacheconf', 'text', + 'string.path.apacheconf', 'text'], + regex: '(Redirect)(?:(\\s+)(\\d\\d\\d|permanent|temp|seeother|gone))?(\\s+)(.+?)(\\s+)(?:(.+?)($|\\s))?' }, + { token: ['keyword.alias.apacheconf', 'text', + 'string.regexp.apacheconf', 'text', + 'string.path.apacheconf', 'text'], + regex: '(ScriptAliasMatch|AliasMatch)(\\s+)(.+?)(\\s+)(?:(.+?)(\\s))?' }, + { token: ['keyword.alias.apacheconf', 'text', + 'string.path.apacheconf', 'text', + 'string.path.apacheconf', 'text'], + regex: '(RedirectPermanent|RedirectTemp|ScriptAlias|Alias)(\\s+)(.+?)(\\s+)(?:(.+?)($|\\s))?' }, + { token: 'keyword.core.apacheconf', + regex: '\\b(?:AcceptPathInfo|AccessFileName|AddDefaultCharset|AddOutputFilterByType|AllowEncodedSlashes|AllowOverride|AuthName|AuthType|CGIMapExtension|ContentDigest|DefaultType|DocumentRoot|EnableMMAP|EnableSendfile|ErrorDocument|ErrorLog|FileETag|ForceType|HostnameLookups|IdentityCheck|Include|KeepAlive|KeepAliveTimeout|LimitInternalRecursion|LimitRequestBody|LimitRequestFields|LimitRequestFieldSize|LimitRequestLine|LimitXMLRequestBody|LogLevel|MaxKeepAliveRequests|NameVirtualHost|Options|Require|RLimitCPU|RLimitMEM|RLimitNPROC|Satisfy|ScriptInterpreterSource|ServerAdmin|ServerAlias|ServerName|ServerPath|ServerRoot|ServerSignature|ServerTokens|SetHandler|SetInputFilter|SetOutputFilter|TimeOut|TraceEnable|UseCanonicalName)\\b' }, + { token: 'keyword.mpm.apacheconf', + regex: '\\b(?:AcceptMutex|AssignUserID|BS2000Account|ChildPerUserID|CoreDumpDirectory|EnableExceptionHook|Group|Listen|ListenBacklog|LockFile|MaxClients|MaxMemFree|MaxRequestsPerChild|MaxRequestsPerThread|MaxSpareServers|MaxSpareThreads|MaxThreads|MaxThreadsPerChild|MinSpareServers|MinSpareThreads|NumServers|PidFile|ReceiveBufferSize|ScoreBoardFile|SendBufferSize|ServerLimit|StartServers|StartThreads|ThreadLimit|ThreadsPerChild|ThreadStackSize|User|Win32DisableAcceptEx)\\b' }, + { token: 'keyword.access.apacheconf', + regex: '\\b(?:Allow|Deny|Order)\\b' }, + { token: 'keyword.actions.apacheconf', + regex: '\\b(?:Action|Script)\\b' }, + { token: 'keyword.alias.apacheconf', + regex: '\\b(?:Alias|AliasMatch|Redirect|RedirectMatch|RedirectPermanent|RedirectTemp|ScriptAlias|ScriptAliasMatch)\\b' }, + { token: 'keyword.auth.apacheconf', + regex: '\\b(?:AuthAuthoritative|AuthGroupFile|AuthUserFile)\\b' }, + { token: 'keyword.auth_anon.apacheconf', + regex: '\\b(?:Anonymous|Anonymous_Authoritative|Anonymous_LogEmail|Anonymous_MustGiveEmail|Anonymous_NoUserID|Anonymous_VerifyEmail)\\b' }, + { token: 'keyword.auth_dbm.apacheconf', + regex: '\\b(?:AuthDBMAuthoritative|AuthDBMGroupFile|AuthDBMType|AuthDBMUserFile)\\b' }, + { token: 'keyword.auth_digest.apacheconf', + regex: '\\b(?:AuthDigestAlgorithm|AuthDigestDomain|AuthDigestFile|AuthDigestGroupFile|AuthDigestNcCheck|AuthDigestNonceFormat|AuthDigestNonceLifetime|AuthDigestQop|AuthDigestShmemSize)\\b' }, + { token: 'keyword.auth_ldap.apacheconf', + regex: '\\b(?:AuthLDAPAuthoritative|AuthLDAPBindDN|AuthLDAPBindPassword|AuthLDAPCharsetConfig|AuthLDAPCompareDNOnServer|AuthLDAPDereferenceAliases|AuthLDAPEnabled|AuthLDAPFrontPageHack|AuthLDAPGroupAttribute|AuthLDAPGroupAttributeIsDN|AuthLDAPRemoteUserIsDN|AuthLDAPUrl)\\b' }, + { token: 'keyword.autoindex.apacheconf', + regex: '\\b(?:AddAlt|AddAltByEncoding|AddAltByType|AddDescription|AddIcon|AddIconByEncoding|AddIconByType|DefaultIcon|HeaderName|IndexIgnore|IndexOptions|IndexOrderDefault|ReadmeName)\\b' }, + { token: 'keyword.cache.apacheconf', + regex: '\\b(?:CacheDefaultExpire|CacheDisable|CacheEnable|CacheForceCompletion|CacheIgnoreCacheControl|CacheIgnoreHeaders|CacheIgnoreNoLastMod|CacheLastModifiedFactor|CacheMaxExpire)\\b' }, + { token: 'keyword.cern_meta.apacheconf', + regex: '\\b(?:MetaDir|MetaFiles|MetaSuffix)\\b' }, + { token: 'keyword.cgi.apacheconf', + regex: '\\b(?:ScriptLog|ScriptLogBuffer|ScriptLogLength)\\b' }, + { token: 'keyword.cgid.apacheconf', + regex: '\\b(?:ScriptLog|ScriptLogBuffer|ScriptLogLength|ScriptSock)\\b' }, + { token: 'keyword.charset_lite.apacheconf', + regex: '\\b(?:CharsetDefault|CharsetOptions|CharsetSourceEnc)\\b' }, + { token: 'keyword.dav.apacheconf', + regex: '\\b(?:Dav|DavDepthInfinity|DavMinTimeout|DavLockDB)\\b' }, + { token: 'keyword.deflate.apacheconf', + regex: '\\b(?:DeflateBufferSize|DeflateCompressionLevel|DeflateFilterNote|DeflateMemLevel|DeflateWindowSize)\\b' }, + { token: 'keyword.dir.apacheconf', + regex: '\\b(?:DirectoryIndex|DirectorySlash)\\b' }, + { token: 'keyword.disk_cache.apacheconf', + regex: '\\b(?:CacheDirLength|CacheDirLevels|CacheExpiryCheck|CacheGcClean|CacheGcDaily|CacheGcInterval|CacheGcMemUsage|CacheGcUnused|CacheMaxFileSize|CacheMinFileSize|CacheRoot|CacheSize|CacheTimeMargin)\\b' }, + { token: 'keyword.dumpio.apacheconf', + regex: '\\b(?:DumpIOInput|DumpIOOutput)\\b' }, + { token: 'keyword.env.apacheconf', + regex: '\\b(?:PassEnv|SetEnv|UnsetEnv)\\b' }, + { token: 'keyword.expires.apacheconf', + regex: '\\b(?:ExpiresActive|ExpiresByType|ExpiresDefault)\\b' }, + { token: 'keyword.ext_filter.apacheconf', + regex: '\\b(?:ExtFilterDefine|ExtFilterOptions)\\b' }, + { token: 'keyword.file_cache.apacheconf', + regex: '\\b(?:CacheFile|MMapFile)\\b' }, + { token: 'keyword.headers.apacheconf', + regex: '\\b(?:Header|RequestHeader)\\b' }, + { token: 'keyword.imap.apacheconf', + regex: '\\b(?:ImapBase|ImapDefault|ImapMenu)\\b' }, + { token: 'keyword.include.apacheconf', + regex: '\\b(?:SSIEndTag|SSIErrorMsg|SSIStartTag|SSITimeFormat|SSIUndefinedEcho|XBitHack)\\b' }, + { token: 'keyword.isapi.apacheconf', + regex: '\\b(?:ISAPIAppendLogToErrors|ISAPIAppendLogToQuery|ISAPICacheFile|ISAPIFakeAsync|ISAPILogNotSupported|ISAPIReadAheadBuffer)\\b' }, + { token: 'keyword.ldap.apacheconf', + regex: '\\b(?:LDAPCacheEntries|LDAPCacheTTL|LDAPConnectionTimeout|LDAPOpCacheEntries|LDAPOpCacheTTL|LDAPSharedCacheFile|LDAPSharedCacheSize|LDAPTrustedCA|LDAPTrustedCAType)\\b' }, + { token: 'keyword.log.apacheconf', + regex: '\\b(?:BufferedLogs|CookieLog|CustomLog|LogFormat|TransferLog|ForensicLog)\\b' }, + { token: 'keyword.mem_cache.apacheconf', + regex: '\\b(?:MCacheMaxObjectCount|MCacheMaxObjectSize|MCacheMaxStreamingBuffer|MCacheMinObjectSize|MCacheRemovalAlgorithm|MCacheSize)\\b' }, + { token: 'keyword.mime.apacheconf', + regex: '\\b(?:AddCharset|AddEncoding|AddHandler|AddInputFilter|AddLanguage|AddOutputFilter|AddType|DefaultLanguage|ModMimeUsePathInfo|MultiviewsMatch|RemoveCharset|RemoveEncoding|RemoveHandler|RemoveInputFilter|RemoveLanguage|RemoveOutputFilter|RemoveType|TypesConfig)\\b' }, + { token: 'keyword.misc.apacheconf', + regex: '\\b(?:ProtocolEcho|Example|AddModuleInfo|MimeMagicFile|CheckSpelling|ExtendedStatus|SuexecUserGroup|UserDir)\\b' }, + { token: 'keyword.negotiation.apacheconf', + regex: '\\b(?:CacheNegotiatedDocs|ForceLanguagePriority|LanguagePriority)\\b' }, + { token: 'keyword.nw_ssl.apacheconf', + regex: '\\b(?:NWSSLTrustedCerts|NWSSLUpgradeable|SecureListen)\\b' }, + { token: 'keyword.proxy.apacheconf', + regex: '\\b(?:AllowCONNECT|NoProxy|ProxyBadHeader|ProxyBlock|ProxyDomain|ProxyErrorOverride|ProxyFtpDirCharset|ProxyIOBufferSize|ProxyMaxForwards|ProxyPass|ProxyPassReverse|ProxyPreserveHost|ProxyReceiveBufferSize|ProxyRemote|ProxyRemoteMatch|ProxyRequests|ProxyTimeout|ProxyVia)\\b' }, + { token: 'keyword.rewrite.apacheconf', + regex: '\\b(?:RewriteBase|RewriteCond|RewriteEngine|RewriteLock|RewriteLog|RewriteLogLevel|RewriteMap|RewriteOptions|RewriteRule)\\b' }, + { token: 'keyword.setenvif.apacheconf', + regex: '\\b(?:BrowserMatch|BrowserMatchNoCase|SetEnvIf|SetEnvIfNoCase)\\b' }, + { token: 'keyword.so.apacheconf', + regex: '\\b(?:LoadFile|LoadModule)\\b' }, + { token: 'keyword.ssl.apacheconf', + regex: '\\b(?:SSLCACertificateFile|SSLCACertificatePath|SSLCARevocationFile|SSLCARevocationPath|SSLCertificateChainFile|SSLCertificateFile|SSLCertificateKeyFile|SSLCipherSuite|SSLEngine|SSLMutex|SSLOptions|SSLPassPhraseDialog|SSLProtocol|SSLProxyCACertificateFile|SSLProxyCACertificatePath|SSLProxyCARevocationFile|SSLProxyCARevocationPath|SSLProxyCipherSuite|SSLProxyEngine|SSLProxyMachineCertificateFile|SSLProxyMachineCertificatePath|SSLProxyProtocol|SSLProxyVerify|SSLProxyVerifyDepth|SSLRandomSeed|SSLRequire|SSLRequireSSL|SSLSessionCache|SSLSessionCacheTimeout|SSLUserName|SSLVerifyClient|SSLVerifyDepth)\\b' }, + { token: 'keyword.usertrack.apacheconf', + regex: '\\b(?:CookieDomain|CookieExpires|CookieName|CookieStyle|CookieTracking)\\b' }, + { token: 'keyword.vhost_alias.apacheconf', + regex: '\\b(?:VirtualDocumentRoot|VirtualDocumentRootIP|VirtualScriptAlias|VirtualScriptAliasIP)\\b' }, + { token: ['keyword.php.apacheconf', + 'text', + 'entity.property.apacheconf', + 'text', + 'string.value.apacheconf', + 'text'], + regex: '\\b(php_value|php_flag)\\b(?:(\\s+)(.+?)(?:(\\s+)(.+?))?)?(\\s)' }, + { token: ['punctuation.variable.apacheconf', + 'variable.env.apacheconf', + 'variable.misc.apacheconf', + 'punctuation.variable.apacheconf'], + regex: '(%\\{)(?:(HTTP_USER_AGENT|HTTP_REFERER|HTTP_COOKIE|HTTP_FORWARDED|HTTP_HOST|HTTP_PROXY_CONNECTION|HTTP_ACCEPT|REMOTE_ADDR|REMOTE_HOST|REMOTE_PORT|REMOTE_USER|REMOTE_IDENT|REQUEST_METHOD|SCRIPT_FILENAME|PATH_INFO|QUERY_STRING|AUTH_TYPE|DOCUMENT_ROOT|SERVER_ADMIN|SERVER_NAME|SERVER_ADDR|SERVER_PORT|SERVER_PROTOCOL|SERVER_SOFTWARE|TIME_YEAR|TIME_MON|TIME_DAY|TIME_HOUR|TIME_MIN|TIME_SEC|TIME_WDAY|TIME|API_VERSION|THE_REQUEST|REQUEST_URI|REQUEST_FILENAME|IS_SUBREQ|HTTPS)|(.*?))(\\})' }, + { token: ['entity.mime-type.apacheconf', 'text'], + regex: '\\b((?:text|image|application|video|audio)/.+?)(\\s)' }, + { token: 'entity.helper.apacheconf', + regex: '\\b(?:from|unset|set|on|off)\\b', + caseInsensitive: true }, + { token: 'constant.integer.apacheconf', regex: '\\b\\d+\\b' }, + { token: ['text', + 'punctuation.definition.flag.apacheconf', + 'string.flag.apacheconf', + 'punctuation.definition.flag.apacheconf', + 'text'], + regex: '(\\s)(\\[)(.*?)(\\])(\\s)' }] }; + this.normalizeRules(); +}; +ApacheConfHighlightRules.metaData = { fileTypes: ['conf', + 'CONF', + 'htaccess', + 'HTACCESS', + 'htgroups', + 'HTGROUPS', + 'htpasswd', + 'HTPASSWD', + '.htaccess', + '.HTACCESS', + '.htgroups', + '.HTGROUPS', + '.htpasswd', + '.HTPASSWD'], + name: 'Apache Conf', + scopeName: 'source.apacheconf' }; +oop.inherits(ApacheConfHighlightRules, TextHighlightRules); +exports.ApacheConfHighlightRules = ApacheConfHighlightRules; + +}); + +ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/apache_conf",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/apache_conf_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ +"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var ApacheConfHighlightRules = require("./apache_conf_highlight_rules").ApacheConfHighlightRules; +var FoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = ApacheConfHighlightRules; + this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "#"; + this.$id = "ace/mode/apache_conf"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/apache_conf"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/a81cd084ae545af4318d919f40a91fa2.js.gz b/web/dist/a81cd084ae545af4318d919f40a91fa2.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..eb72710520d0338091543ae6e44374b5f260d3b7 GIT binary patch literal 5003 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/, + next: "start" + }, { + token: "keyword.operator", + regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next: "start" + }, { + token: "punctuation.operator", + regex: /[?:,;.]/, + next: "start" + }, { + token: "paren.lparen", + regex: /[\[({]/, + next: "start" + }, { + token: "paren.rparen", + regex: /[\])}]/ + }, { + token: "comment", + regex: /^#!.*$/ + } + ], + property: [{ + token: "text", + regex: "\\s+" + }, { + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()", + next: "function_arguments" + }, { + token: "punctuation.operator", + regex: /[.](?![.])/ + }, { + token: "support.function", + regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ + }, { + token: "support.function.dom", + regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ + }, { + token: "support.constant", + regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ + }, { + token: "identifier", + regex: identifierRe + }, { + regex: "", + token: "empty", + next: "no_regex" + } + ], + "start": [ + DocCommentHighlightRules.getStartRule("doc-start"), + comments("start"), + { + token: "string.regexp", + regex: "\\/", + next: "regex" + }, { + token: "text", + regex: "\\s+|^$", + next: "start" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "regex": [ + { + token: "regexp.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "string.regexp", + regex: "/[sxngimy]*", + next: "no_regex" + }, { + token: "invalid", + regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ + }, { + token: "constant.language.escape", + regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ + }, { + token: "constant.language.delimiter", + regex: /\|/ + }, { + token: "constant.language.escape", + regex: /\[\^?/, + next: "regex_character_class" + }, { + token: "empty", + regex: "$", + next: "no_regex" + }, { + defaultToken: "string.regexp" + } + ], + "regex_character_class": [ + { + token: "regexp.charclass.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "constant.language.escape", + regex: "]", + next: "regex" + }, { + token: "constant.language.escape", + regex: "-" + }, { + token: "empty", + regex: "$", + next: "no_regex" + }, { + defaultToken: "string.regexp.charachterclass" + } + ], + "default_parameter": [ + { + token: "string", + regex: "'(?=.)", + push: [ + { + token: "string", + regex: "'|$", + next: "pop" + }, { + include: "qstring" + } + ] + }, { + token: "string", + regex: '"(?=.)', + push: [ + { + token: "string", + regex: '"|$', + next: "pop" + }, { + include: "qqstring" + } + ] + }, { + token: "constant.language", + regex: "null|Infinity|NaN|undefined" + }, { + token: "constant.numeric", + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + }, { + token: "punctuation.operator", + regex: ",", + next: "function_arguments" + }, { + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "function_arguments": [ + comments("function_arguments"), + { + token: "variable.parameter", + regex: identifierRe + }, { + token: "punctuation.operator", + regex: "," + }, { + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: '"|$', + next: "no_regex" + }, { + defaultToken: "string" + } + ], + "qstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: "'|$", + next: "no_regex" + }, { + defaultToken: "string" + } + ] + }; + if (!options || !options.noES6) { + this.$rules.no_regex.unshift({ + regex: "[{}]", onMatch: function (val, state, stack) { + this.next = val == "{" ? this.nextState : ""; + if (val == "{" && stack.length) { + stack.unshift("start", state); + } + else if (val == "}" && stack.length) { + stack.shift(); + this.next = stack.shift(); + if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) + return "paren.quasi.end"; + } + return val == "{" ? "paren.lparen" : "paren.rparen"; + }, + nextState: "start" + }, { + token: "string.quasi.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedRe + }, { + token: "paren.quasi.start", + regex: /\${/, + push: "start" + }, { + token: "string.quasi.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string.quasi" + }] + }, { + token: ["variable.parameter", "text"], + regex: "(" + identifierRe + ")(\\s*)(?=\\=>)" + }, { + token: "paren.lparen", + regex: "(\\()(?=.+\\s*=>)", + next: "function_arguments" + }, { + token: "variable.language", + regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b" + }); + this.$rules["function_arguments"].unshift({ + token: "keyword.operator", + regex: "=", + next: "default_parameter" + }, { + token: "keyword.operator", + regex: "\\.{3}" + }); + this.$rules["property"].unshift({ + token: "support.function", + regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|" + + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()" + }, { + token: "constant.language", + regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b" + }); + if (!options || options.jsx != false) + JSX.call(this); + } + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]); + this.normalizeRules(); +}; +oop.inherits(JavaScriptHighlightRules, TextHighlightRules); +function JSX() { + var tagRegex = identifierRe.replace("\\d", "\\d\\-"); + var jsxTag = { + onMatch: function (val, state, stack) { + var offset = val.charAt(1) == "/" ? 2 : 1; + if (offset == 1) { + if (state != this.nextState) + stack.unshift(this.next, this.nextState, 0); + else + stack.unshift(this.next); + stack[2]++; + } + else if (offset == 2) { + if (state == this.nextState) { + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.shift(); + stack.shift(); + } + } + } + return [{ + type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", + value: val.slice(0, offset) + }, { + type: "meta.tag.tag-name.xml", + value: val.substr(offset) + }]; + }, + regex: "", + onMatch: function (value, currentState, stack) { + if (currentState == stack[0]) + stack.shift(); + if (value.length == 2) { + if (stack[0] == this.nextState) + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.splice(0, 2); + } + } + this.next = stack[0] || "start"; + return [{ type: this.token, value: value }]; + }, + nextState: "jsx" + }, + jsxJsRule, + comments("jsxAttributes"), + { + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + token: "text.tag-whitespace.xml", + regex: "\\s+" + }, { + token: "string.attribute-value.xml", + regex: "'", + stateName: "jsx_attr_q", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + stateName: "jsx_attr_qq", + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, + jsxTag + ]; + this.$rules.reference = [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }]; +} +function comments(next) { + return [ + { + token: "comment", + regex: /\/\*/, + next: [ + DocCommentHighlightRules.getTagRule(), + { token: "comment", regex: "\\*\\/", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } + ] + }, { + token: "comment", + regex: "\\/\\/", + next: [ + DocCommentHighlightRules.getTagRule(), + { token: "comment", regex: "$|^", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } + ] + } + ]; +} +exports.JavaScriptHighlightRules = JavaScriptHighlightRules; + +}); + +ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) + return false; + return /^\s*\}/.test(input); + }; + this.autoOutdent = function (doc, row) { + var line = doc.getLine(row); + var match = line.match(/^(\s*\})/); + if (!match) + return 0; + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; + var indent = this.$getIndent(doc.getLine(openBracePos.row)); + doc.replace(new Range(row, 0, row, column - 1), indent); + }; + this.$getIndent = function (line) { + return line.match(/^\s*/)[0]; + }; +}).call(MatchingBraceOutdent.prototype); +exports.MatchingBraceOutdent = MatchingBraceOutdent; + +}); + +ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = JavaScriptHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CstyleBehaviour(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "//"; + this.blockComment = { start: "/*", end: "*/" }; + this.$quotes = { '"': '"', "'": "'", "`": "`" }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + var endState = tokenizedLine.state; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + if (state == "start" || state == "no_regex") { + var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); + if (match) { + indent += tab; + } + } + else if (state == "doc-start") { + if (endState == "start" || endState == "no_regex") { + return ""; + } + var match = line.match(/^\s*(\/?)\*/); + if (match) { + if (match[1]) { + indent += " "; + } + indent += "* "; + } + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.createWorker = function (session) { + var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); + worker.attachToDocument(session.getDocument()); + worker.on("annotate", function (results) { + session.setAnnotations(results.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/javascript"; + this.snippetFileId = "ace/snippets/javascript"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +ace.define("ace/mode/typescript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/javascript_highlight_rules"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode_highlight_rules.tmpl.js (UUID: 21e323af-f665-4161-96e7-5087d262557e) */ +"use strict"; +var oop = require("../lib/oop"); +var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; +var TypeScriptHighlightRules = function (options) { + var tsRules = [ + { + token: ["storage.type", "text", "entity.name.function.ts"], + regex: "(function)(\\s+)([a-zA-Z0-9\$_\u00a1-\uffff][a-zA-Z0-9\d\$_\u00a1-\uffff]*)" + }, + { + token: "keyword", + regex: "(?:\\b(constructor|declare|interface|as|AS|public|private|extends|export|super|readonly|module|namespace|abstract|implements)\\b)" + }, + { + token: ["keyword", "storage.type.variable.ts"], + regex: "(class|type)(\\s+[a-zA-Z0-9_?.$][\\w?.$]*)" + }, + { + token: "keyword", + regex: "\\b(?:super|export|import|keyof|infer)\\b" + }, + { + token: ["storage.type.variable.ts"], + regex: "(?:\\b(this\\.|string\\b|bool\\b|boolean\\b|number\\b|true\\b|false\\b|undefined\\b|any\\b|null\\b|(?:unique )?symbol\\b|object\\b|never\\b|enum\\b))" + } + ]; + var JSRules = new JavaScriptHighlightRules({ jsx: (options && options.jsx) == true }).getRules(); + JSRules.no_regex = tsRules.concat(JSRules.no_regex); + this.$rules = JSRules; +}; +oop.inherits(TypeScriptHighlightRules, JavaScriptHighlightRules); +exports.TypeScriptHighlightRules = TypeScriptHighlightRules; + +}); + +ace.define("ace/mode/typescript",["require","exports","module","ace/lib/oop","ace/mode/javascript","ace/mode/typescript_highlight_rules","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle","ace/mode/matching_brace_outdent"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ +"use strict"; +var oop = require("../lib/oop"); +var jsMode = require("./javascript").Mode; +var TypeScriptHighlightRules = require("./typescript_highlight_rules").TypeScriptHighlightRules; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var Mode = function () { + this.HighlightRules = TypeScriptHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CstyleBehaviour(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, jsMode); +(function () { + this.createWorker = function (session) { + return null; + }; + this.$id = "ace/mode/typescript"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +ace.define("ace/mode/tsx",["require","exports","module","ace/lib/oop","ace/mode/typescript"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ +"use strict"; +var oop = require("../lib/oop"); +var tsMode = require("./typescript").Mode; +var Mode = function () { + tsMode.call(this); + this.$highlightRuleConfig = { jsx: true }; +}; +oop.inherits(Mode, tsMode); +(function () { + this.$id = "ace/mode/tsx"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/tsx"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/a898336d92cb4d2c2b18e46d9d10c636.js.gz b/web/dist/a898336d92cb4d2c2b18e46d9d10c636.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..45f440c1fb1563da1878189ec35c965e03ed5568 GIT binary patch literal 8507 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 pvrna= 0 && position.row < docLines.length && + position.column >= 0 && position.column <= docLines[position.row].length; +} +function validateDelta(docLines, delta) { + if (delta.action != "insert" && delta.action != "remove") + throwDeltaError(delta, "delta.action must be 'insert' or 'remove'"); + if (!(delta.lines instanceof Array)) + throwDeltaError(delta, "delta.lines must be an Array"); + if (!delta.start || !delta.end) + throwDeltaError(delta, "delta.start/end must be an present"); + var start = delta.start; + if (!positionInDocument(docLines, delta.start)) + throwDeltaError(delta, "delta.start must be contained in document"); + var end = delta.end; + if (delta.action == "remove" && !positionInDocument(docLines, end)) + throwDeltaError(delta, "delta.end must contained in document for 'remove' actions"); + var numRangeRows = end.row - start.row; + var numRangeLastLineChars = (end.column - (numRangeRows == 0 ? start.column : 0)); + if (numRangeRows != delta.lines.length - 1 || delta.lines[numRangeRows].length != numRangeLastLineChars) + throwDeltaError(delta, "delta.range must match delta lines"); +} +exports.applyDelta = function (docLines, delta, doNotValidate) { + var row = delta.start.row; + var startColumn = delta.start.column; + var line = docLines[row] || ""; + switch (delta.action) { + case "insert": + var lines = delta.lines; + if (lines.length === 1) { + docLines[row] = line.substring(0, startColumn) + delta.lines[0] + line.substring(startColumn); + } + else { + var args = [row, 1].concat(delta.lines); + docLines.splice.apply(docLines, args); + docLines[row] = line.substring(0, startColumn) + docLines[row]; + docLines[row + delta.lines.length - 1] += line.substring(startColumn); + } + break; + case "remove": + var endColumn = delta.end.column; + var endRow = delta.end.row; + if (row === endRow) { + docLines[row] = line.substring(0, startColumn) + line.substring(endColumn); + } + else { + docLines.splice(row, endRow - row + 1, line.substring(0, startColumn) + docLines[endRow].substring(endColumn)); + } + break; + } +}; + +}); + +ace.define("ace/lib/event_emitter",[], function(require, exports, module){"use strict"; +var EventEmitter = {}; +var stopPropagation = function () { this.propagationStopped = true; }; +var preventDefault = function () { this.defaultPrevented = true; }; +EventEmitter._emit = + EventEmitter._dispatchEvent = function (eventName, e) { + this._eventRegistry || (this._eventRegistry = {}); + this._defaultHandlers || (this._defaultHandlers = {}); + var listeners = this._eventRegistry[eventName] || []; + var defaultHandler = this._defaultHandlers[eventName]; + if (!listeners.length && !defaultHandler) + return; + if (typeof e != "object" || !e) + e = {}; + if (!e.type) + e.type = eventName; + if (!e.stopPropagation) + e.stopPropagation = stopPropagation; + if (!e.preventDefault) + e.preventDefault = preventDefault; + listeners = listeners.slice(); + for (var i = 0; i < listeners.length; i++) { + listeners[i](e, this); + if (e.propagationStopped) + break; + } + if (defaultHandler && !e.defaultPrevented) + return defaultHandler(e, this); + }; +EventEmitter._signal = function (eventName, e) { + var listeners = (this._eventRegistry || {})[eventName]; + if (!listeners) + return; + listeners = listeners.slice(); + for (var i = 0; i < listeners.length; i++) + listeners[i](e, this); +}; +EventEmitter.once = function (eventName, callback) { + var _self = this; + this.on(eventName, function newCallback() { + _self.off(eventName, newCallback); + callback.apply(null, arguments); + }); + if (!callback) { + return new Promise(function (resolve) { + callback = resolve; + }); + } +}; +EventEmitter.setDefaultHandler = function (eventName, callback) { + var handlers = this._defaultHandlers; + if (!handlers) + handlers = this._defaultHandlers = { _disabled_: {} }; + if (handlers[eventName]) { + var old = handlers[eventName]; + var disabled = handlers._disabled_[eventName]; + if (!disabled) + handlers._disabled_[eventName] = disabled = []; + disabled.push(old); + var i = disabled.indexOf(callback); + if (i != -1) + disabled.splice(i, 1); + } + handlers[eventName] = callback; +}; +EventEmitter.removeDefaultHandler = function (eventName, callback) { + var handlers = this._defaultHandlers; + if (!handlers) + return; + var disabled = handlers._disabled_[eventName]; + if (handlers[eventName] == callback) { + if (disabled) + this.setDefaultHandler(eventName, disabled.pop()); + } + else if (disabled) { + var i = disabled.indexOf(callback); + if (i != -1) + disabled.splice(i, 1); + } +}; +EventEmitter.on = + EventEmitter.addEventListener = function (eventName, callback, capturing) { + this._eventRegistry = this._eventRegistry || {}; + var listeners = this._eventRegistry[eventName]; + if (!listeners) + listeners = this._eventRegistry[eventName] = []; + if (listeners.indexOf(callback) == -1) + listeners[capturing ? "unshift" : "push"](callback); + return callback; + }; +EventEmitter.off = + EventEmitter.removeListener = + EventEmitter.removeEventListener = function (eventName, callback) { + this._eventRegistry = this._eventRegistry || {}; + var listeners = this._eventRegistry[eventName]; + if (!listeners) + return; + var index = listeners.indexOf(callback); + if (index !== -1) + listeners.splice(index, 1); + }; +EventEmitter.removeAllListeners = function (eventName) { + if (!eventName) + this._eventRegistry = this._defaultHandlers = undefined; + if (this._eventRegistry) + this._eventRegistry[eventName] = undefined; + if (this._defaultHandlers) + this._defaultHandlers[eventName] = undefined; +}; +exports.EventEmitter = EventEmitter; + +}); + +ace.define("ace/range",[], function(require, exports, module){"use strict"; +var comparePoints = function (p1, p2) { + return p1.row - p2.row || p1.column - p2.column; +}; +var Range = function (startRow, startColumn, endRow, endColumn) { + this.start = { + row: startRow, + column: startColumn + }; + this.end = { + row: endRow, + column: endColumn + }; +}; +(function () { + this.isEqual = function (range) { + return this.start.row === range.start.row && + this.end.row === range.end.row && + this.start.column === range.start.column && + this.end.column === range.end.column; + }; + this.toString = function () { + return ("Range: [" + this.start.row + "/" + this.start.column + + "] -> [" + this.end.row + "/" + this.end.column + "]"); + }; + this.contains = function (row, column) { + return this.compare(row, column) == 0; + }; + this.compareRange = function (range) { + var cmp, end = range.end, start = range.start; + cmp = this.compare(end.row, end.column); + if (cmp == 1) { + cmp = this.compare(start.row, start.column); + if (cmp == 1) { + return 2; + } + else if (cmp == 0) { + return 1; + } + else { + return 0; + } + } + else if (cmp == -1) { + return -2; + } + else { + cmp = this.compare(start.row, start.column); + if (cmp == -1) { + return -1; + } + else if (cmp == 1) { + return 42; + } + else { + return 0; + } + } + }; + this.comparePoint = function (p) { + return this.compare(p.row, p.column); + }; + this.containsRange = function (range) { + return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0; + }; + this.intersects = function (range) { + var cmp = this.compareRange(range); + return (cmp == -1 || cmp == 0 || cmp == 1); + }; + this.isEnd = function (row, column) { + return this.end.row == row && this.end.column == column; + }; + this.isStart = function (row, column) { + return this.start.row == row && this.start.column == column; + }; + this.setStart = function (row, column) { + if (typeof row == "object") { + this.start.column = row.column; + this.start.row = row.row; + } + else { + this.start.row = row; + this.start.column = column; + } + }; + this.setEnd = function (row, column) { + if (typeof row == "object") { + this.end.column = row.column; + this.end.row = row.row; + } + else { + this.end.row = row; + this.end.column = column; + } + }; + this.inside = function (row, column) { + if (this.compare(row, column) == 0) { + if (this.isEnd(row, column) || this.isStart(row, column)) { + return false; + } + else { + return true; + } + } + return false; + }; + this.insideStart = function (row, column) { + if (this.compare(row, column) == 0) { + if (this.isEnd(row, column)) { + return false; + } + else { + return true; + } + } + return false; + }; + this.insideEnd = function (row, column) { + if (this.compare(row, column) == 0) { + if (this.isStart(row, column)) { + return false; + } + else { + return true; + } + } + return false; + }; + this.compare = function (row, column) { + if (!this.isMultiLine()) { + if (row === this.start.row) { + return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0); + } + } + if (row < this.start.row) + return -1; + if (row > this.end.row) + return 1; + if (this.start.row === row) + return column >= this.start.column ? 0 : -1; + if (this.end.row === row) + return column <= this.end.column ? 0 : 1; + return 0; + }; + this.compareStart = function (row, column) { + if (this.start.row == row && this.start.column == column) { + return -1; + } + else { + return this.compare(row, column); + } + }; + this.compareEnd = function (row, column) { + if (this.end.row == row && this.end.column == column) { + return 1; + } + else { + return this.compare(row, column); + } + }; + this.compareInside = function (row, column) { + if (this.end.row == row && this.end.column == column) { + return 1; + } + else if (this.start.row == row && this.start.column == column) { + return -1; + } + else { + return this.compare(row, column); + } + }; + this.clipRows = function (firstRow, lastRow) { + if (this.end.row > lastRow) + var end = { row: lastRow + 1, column: 0 }; + else if (this.end.row < firstRow) + var end = { row: firstRow, column: 0 }; + if (this.start.row > lastRow) + var start = { row: lastRow + 1, column: 0 }; + else if (this.start.row < firstRow) + var start = { row: firstRow, column: 0 }; + return Range.fromPoints(start || this.start, end || this.end); + }; + this.extend = function (row, column) { + var cmp = this.compare(row, column); + if (cmp == 0) + return this; + else if (cmp == -1) + var start = { row: row, column: column }; + else + var end = { row: row, column: column }; + return Range.fromPoints(start || this.start, end || this.end); + }; + this.isEmpty = function () { + return (this.start.row === this.end.row && this.start.column === this.end.column); + }; + this.isMultiLine = function () { + return (this.start.row !== this.end.row); + }; + this.clone = function () { + return Range.fromPoints(this.start, this.end); + }; + this.collapseRows = function () { + if (this.end.column == 0) + return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row - 1), 0); + else + return new Range(this.start.row, 0, this.end.row, 0); + }; + this.toScreenRange = function (session) { + var screenPosStart = session.documentToScreenPosition(this.start); + var screenPosEnd = session.documentToScreenPosition(this.end); + return new Range(screenPosStart.row, screenPosStart.column, screenPosEnd.row, screenPosEnd.column); + }; + this.moveBy = function (row, column) { + this.start.row += row; + this.start.column += column; + this.end.row += row; + this.end.column += column; + }; +}).call(Range.prototype); +Range.fromPoints = function (start, end) { + return new Range(start.row, start.column, end.row, end.column); +}; +Range.comparePoints = comparePoints; +Range.comparePoints = function (p1, p2) { + return p1.row - p2.row || p1.column - p2.column; +}; +exports.Range = Range; + +}); + +ace.define("ace/anchor",[], function(require, exports, module){"use strict"; +var oop = require("./lib/oop"); +var EventEmitter = require("./lib/event_emitter").EventEmitter; +var Anchor = exports.Anchor = function (doc, row, column) { + this.$onChange = this.onChange.bind(this); + this.attach(doc); + if (typeof column == "undefined") + this.setPosition(row.row, row.column); + else + this.setPosition(row, column); +}; +(function () { + oop.implement(this, EventEmitter); + this.getPosition = function () { + return this.$clipPositionToDocument(this.row, this.column); + }; + this.getDocument = function () { + return this.document; + }; + this.$insertRight = false; + this.onChange = function (delta) { + if (delta.start.row == delta.end.row && delta.start.row != this.row) + return; + if (delta.start.row > this.row) + return; + var point = $getTransformedPoint(delta, { row: this.row, column: this.column }, this.$insertRight); + this.setPosition(point.row, point.column, true); + }; + function $pointsInOrder(point1, point2, equalPointsInOrder) { + var bColIsAfter = equalPointsInOrder ? point1.column <= point2.column : point1.column < point2.column; + return (point1.row < point2.row) || (point1.row == point2.row && bColIsAfter); + } + function $getTransformedPoint(delta, point, moveIfEqual) { + var deltaIsInsert = delta.action == "insert"; + var deltaRowShift = (deltaIsInsert ? 1 : -1) * (delta.end.row - delta.start.row); + var deltaColShift = (deltaIsInsert ? 1 : -1) * (delta.end.column - delta.start.column); + var deltaStart = delta.start; + var deltaEnd = deltaIsInsert ? deltaStart : delta.end; // Collapse insert range. + if ($pointsInOrder(point, deltaStart, moveIfEqual)) { + return { + row: point.row, + column: point.column + }; + } + if ($pointsInOrder(deltaEnd, point, !moveIfEqual)) { + return { + row: point.row + deltaRowShift, + column: point.column + (point.row == deltaEnd.row ? deltaColShift : 0) + }; + } + return { + row: deltaStart.row, + column: deltaStart.column + }; + } + this.setPosition = function (row, column, noClip) { + var pos; + if (noClip) { + pos = { + row: row, + column: column + }; + } + else { + pos = this.$clipPositionToDocument(row, column); + } + if (this.row == pos.row && this.column == pos.column) + return; + var old = { + row: this.row, + column: this.column + }; + this.row = pos.row; + this.column = pos.column; + this._signal("change", { + old: old, + value: pos + }); + }; + this.detach = function () { + this.document.off("change", this.$onChange); + }; + this.attach = function (doc) { + this.document = doc || this.document; + this.document.on("change", this.$onChange); + }; + this.$clipPositionToDocument = function (row, column) { + var pos = {}; + if (row >= this.document.getLength()) { + pos.row = Math.max(0, this.document.getLength() - 1); + pos.column = this.document.getLine(pos.row).length; + } + else if (row < 0) { + pos.row = 0; + pos.column = 0; + } + else { + pos.row = row; + pos.column = Math.min(this.document.getLine(pos.row).length, Math.max(0, column)); + } + if (column < 0) + pos.column = 0; + return pos; + }; +}).call(Anchor.prototype); + +}); + +ace.define("ace/document",[], function(require, exports, module){"use strict"; +var oop = require("./lib/oop"); +var applyDelta = require("./apply_delta").applyDelta; +var EventEmitter = require("./lib/event_emitter").EventEmitter; +var Range = require("./range").Range; +var Anchor = require("./anchor").Anchor; +var Document = function (textOrLines) { + this.$lines = [""]; + if (textOrLines.length === 0) { + this.$lines = [""]; + } + else if (Array.isArray(textOrLines)) { + this.insertMergedLines({ row: 0, column: 0 }, textOrLines); + } + else { + this.insert({ row: 0, column: 0 }, textOrLines); + } +}; +(function () { + oop.implement(this, EventEmitter); + this.setValue = function (text) { + var len = this.getLength() - 1; + this.remove(new Range(0, 0, len, this.getLine(len).length)); + this.insert({ row: 0, column: 0 }, text || ""); + }; + this.getValue = function () { + return this.getAllLines().join(this.getNewLineCharacter()); + }; + this.createAnchor = function (row, column) { + return new Anchor(this, row, column); + }; + if ("aaa".split(/a/).length === 0) { + this.$split = function (text) { + return text.replace(/\r\n|\r/g, "\n").split("\n"); + }; + } + else { + this.$split = function (text) { + return text.split(/\r\n|\r|\n/); + }; + } + this.$detectNewLine = function (text) { + var match = text.match(/^.*?(\r\n|\r|\n)/m); + this.$autoNewLine = match ? match[1] : "\n"; + this._signal("changeNewLineMode"); + }; + this.getNewLineCharacter = function () { + switch (this.$newLineMode) { + case "windows": + return "\r\n"; + case "unix": + return "\n"; + default: + return this.$autoNewLine || "\n"; + } + }; + this.$autoNewLine = ""; + this.$newLineMode = "auto"; + this.setNewLineMode = function (newLineMode) { + if (this.$newLineMode === newLineMode) + return; + this.$newLineMode = newLineMode; + this._signal("changeNewLineMode"); + }; + this.getNewLineMode = function () { + return this.$newLineMode; + }; + this.isNewLine = function (text) { + return (text == "\r\n" || text == "\r" || text == "\n"); + }; + this.getLine = function (row) { + return this.$lines[row] || ""; + }; + this.getLines = function (firstRow, lastRow) { + return this.$lines.slice(firstRow, lastRow + 1); + }; + this.getAllLines = function () { + return this.getLines(0, this.getLength()); + }; + this.getLength = function () { + return this.$lines.length; + }; + this.getTextRange = function (range) { + return this.getLinesForRange(range).join(this.getNewLineCharacter()); + }; + this.getLinesForRange = function (range) { + var lines; + if (range.start.row === range.end.row) { + lines = [this.getLine(range.start.row).substring(range.start.column, range.end.column)]; + } + else { + lines = this.getLines(range.start.row, range.end.row); + lines[0] = (lines[0] || "").substring(range.start.column); + var l = lines.length - 1; + if (range.end.row - range.start.row == l) + lines[l] = lines[l].substring(0, range.end.column); + } + return lines; + }; + this.insertLines = function (row, lines) { + console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."); + return this.insertFullLines(row, lines); + }; + this.removeLines = function (firstRow, lastRow) { + console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."); + return this.removeFullLines(firstRow, lastRow); + }; + this.insertNewLine = function (position) { + console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."); + return this.insertMergedLines(position, ["", ""]); + }; + this.insert = function (position, text) { + if (this.getLength() <= 1) + this.$detectNewLine(text); + return this.insertMergedLines(position, this.$split(text)); + }; + this.insertInLine = function (position, text) { + var start = this.clippedPos(position.row, position.column); + var end = this.pos(position.row, position.column + text.length); + this.applyDelta({ + start: start, + end: end, + action: "insert", + lines: [text] + }, true); + return this.clonePos(end); + }; + this.clippedPos = function (row, column) { + var length = this.getLength(); + if (row === undefined) { + row = length; + } + else if (row < 0) { + row = 0; + } + else if (row >= length) { + row = length - 1; + column = undefined; + } + var line = this.getLine(row); + if (column == undefined) + column = line.length; + column = Math.min(Math.max(column, 0), line.length); + return { row: row, column: column }; + }; + this.clonePos = function (pos) { + return { row: pos.row, column: pos.column }; + }; + this.pos = function (row, column) { + return { row: row, column: column }; + }; + this.$clipPosition = function (position) { + var length = this.getLength(); + if (position.row >= length) { + position.row = Math.max(0, length - 1); + position.column = this.getLine(length - 1).length; + } + else { + position.row = Math.max(0, position.row); + position.column = Math.min(Math.max(position.column, 0), this.getLine(position.row).length); + } + return position; + }; + this.insertFullLines = function (row, lines) { + row = Math.min(Math.max(row, 0), this.getLength()); + var column = 0; + if (row < this.getLength()) { + lines = lines.concat([""]); + column = 0; + } + else { + lines = [""].concat(lines); + row--; + column = this.$lines[row].length; + } + this.insertMergedLines({ row: row, column: column }, lines); + }; + this.insertMergedLines = function (position, lines) { + var start = this.clippedPos(position.row, position.column); + var end = { + row: start.row + lines.length - 1, + column: (lines.length == 1 ? start.column : 0) + lines[lines.length - 1].length + }; + this.applyDelta({ + start: start, + end: end, + action: "insert", + lines: lines + }); + return this.clonePos(end); + }; + this.remove = function (range) { + var start = this.clippedPos(range.start.row, range.start.column); + var end = this.clippedPos(range.end.row, range.end.column); + this.applyDelta({ + start: start, + end: end, + action: "remove", + lines: this.getLinesForRange({ start: start, end: end }) + }); + return this.clonePos(start); + }; + this.removeInLine = function (row, startColumn, endColumn) { + var start = this.clippedPos(row, startColumn); + var end = this.clippedPos(row, endColumn); + this.applyDelta({ + start: start, + end: end, + action: "remove", + lines: this.getLinesForRange({ start: start, end: end }) + }, true); + return this.clonePos(start); + }; + this.removeFullLines = function (firstRow, lastRow) { + firstRow = Math.min(Math.max(0, firstRow), this.getLength() - 1); + lastRow = Math.min(Math.max(0, lastRow), this.getLength() - 1); + var deleteFirstNewLine = lastRow == this.getLength() - 1 && firstRow > 0; + var deleteLastNewLine = lastRow < this.getLength() - 1; + var startRow = (deleteFirstNewLine ? firstRow - 1 : firstRow); + var startCol = (deleteFirstNewLine ? this.getLine(startRow).length : 0); + var endRow = (deleteLastNewLine ? lastRow + 1 : lastRow); + var endCol = (deleteLastNewLine ? 0 : this.getLine(endRow).length); + var range = new Range(startRow, startCol, endRow, endCol); + var deletedLines = this.$lines.slice(firstRow, lastRow + 1); + this.applyDelta({ + start: range.start, + end: range.end, + action: "remove", + lines: this.getLinesForRange(range) + }); + return deletedLines; + }; + this.removeNewLine = function (row) { + if (row < this.getLength() - 1 && row >= 0) { + this.applyDelta({ + start: this.pos(row, this.getLine(row).length), + end: this.pos(row + 1, 0), + action: "remove", + lines: ["", ""] + }); + } + }; + this.replace = function (range, text) { + if (!(range instanceof Range)) + range = Range.fromPoints(range.start, range.end); + if (text.length === 0 && range.isEmpty()) + return range.start; + if (text == this.getTextRange(range)) + return range.end; + this.remove(range); + var end; + if (text) { + end = this.insert(range.start, text); + } + else { + end = range.start; + } + return end; + }; + this.applyDeltas = function (deltas) { + for (var i = 0; i < deltas.length; i++) { + this.applyDelta(deltas[i]); + } + }; + this.revertDeltas = function (deltas) { + for (var i = deltas.length - 1; i >= 0; i--) { + this.revertDelta(deltas[i]); + } + }; + this.applyDelta = function (delta, doNotValidate) { + var isInsert = delta.action == "insert"; + if (isInsert ? delta.lines.length <= 1 && !delta.lines[0] + : !Range.comparePoints(delta.start, delta.end)) { + return; + } + if (isInsert && delta.lines.length > 20000) { + this.$splitAndapplyLargeDelta(delta, 20000); + } + else { + applyDelta(this.$lines, delta, doNotValidate); + this._signal("change", delta); + } + }; + this.$safeApplyDelta = function (delta) { + var docLength = this.$lines.length; + if (delta.action == "remove" && delta.start.row < docLength && delta.end.row < docLength + || delta.action == "insert" && delta.start.row <= docLength) { + this.applyDelta(delta); + } + }; + this.$splitAndapplyLargeDelta = function (delta, MAX) { + var lines = delta.lines; + var l = lines.length - MAX + 1; + var row = delta.start.row; + var column = delta.start.column; + for (var from = 0, to = 0; from < l; from = to) { + to += MAX - 1; + var chunk = lines.slice(from, to); + chunk.push(""); + this.applyDelta({ + start: this.pos(row + from, column), + end: this.pos(row + to, column = 0), + action: delta.action, + lines: chunk + }, true); + } + delta.lines = lines.slice(from); + delta.start.row = row + from; + delta.start.column = column; + this.applyDelta(delta, true); + }; + this.revertDelta = function (delta) { + this.$safeApplyDelta({ + start: this.clonePos(delta.start), + end: this.clonePos(delta.end), + action: (delta.action == "insert" ? "remove" : "insert"), + lines: delta.lines.slice() + }); + }; + this.indexToPosition = function (index, startRow) { + var lines = this.$lines || this.getAllLines(); + var newlineLength = this.getNewLineCharacter().length; + for (var i = startRow || 0, l = lines.length; i < l; i++) { + index -= lines[i].length + newlineLength; + if (index < 0) + return { row: i, column: index + lines[i].length + newlineLength }; + } + return { row: l - 1, column: index + lines[l - 1].length + newlineLength }; + }; + this.positionToIndex = function (pos, startRow) { + var lines = this.$lines || this.getAllLines(); + var newlineLength = this.getNewLineCharacter().length; + var index = 0; + var row = Math.min(pos.row, lines.length); + for (var i = startRow || 0; i < row; ++i) + index += lines[i].length + newlineLength; + return index + pos.column; + }; +}).call(Document.prototype); +exports.Document = Document; + +}); + +ace.define("ace/lib/lang",[], function(require, exports, module){"use strict"; +exports.last = function (a) { + return a[a.length - 1]; +}; +exports.stringReverse = function (string) { + return string.split("").reverse().join(""); +}; +exports.stringRepeat = function (string, count) { + var result = ''; + while (count > 0) { + if (count & 1) + result += string; + if (count >>= 1) + string += string; + } + return result; +}; +var trimBeginRegexp = /^\s\s*/; +var trimEndRegexp = /\s\s*$/; +exports.stringTrimLeft = function (string) { + return string.replace(trimBeginRegexp, ''); +}; +exports.stringTrimRight = function (string) { + return string.replace(trimEndRegexp, ''); +}; +exports.copyObject = function (obj) { + var copy = {}; + for (var key in obj) { + copy[key] = obj[key]; + } + return copy; +}; +exports.copyArray = function (array) { + var copy = []; + for (var i = 0, l = array.length; i < l; i++) { + if (array[i] && typeof array[i] == "object") + copy[i] = this.copyObject(array[i]); + else + copy[i] = array[i]; + } + return copy; +}; +exports.deepCopy = function deepCopy(obj) { + if (typeof obj !== "object" || !obj) + return obj; + var copy; + if (Array.isArray(obj)) { + copy = []; + for (var key = 0; key < obj.length; key++) { + copy[key] = deepCopy(obj[key]); + } + return copy; + } + if (Object.prototype.toString.call(obj) !== "[object Object]") + return obj; + copy = {}; + for (var key in obj) + copy[key] = deepCopy(obj[key]); + return copy; +}; +exports.arrayToMap = function (arr) { + var map = {}; + for (var i = 0; i < arr.length; i++) { + map[arr[i]] = 1; + } + return map; +}; +exports.createMap = function (props) { + var map = Object.create(null); + for (var i in props) { + map[i] = props[i]; + } + return map; +}; +exports.arrayRemove = function (array, value) { + for (var i = 0; i <= array.length; i++) { + if (value === array[i]) { + array.splice(i, 1); + } + } +}; +exports.escapeRegExp = function (str) { + return str.replace(/([.*+?^${}()|[\]\/\\])/g, '\\$1'); +}; +exports.escapeHTML = function (str) { + return ("" + str).replace(/&/g, "&").replace(/"/g, """).replace(/'/g, "'").replace(/= doc.$lines.length) { + err = new Error("Invalid delta"); + err.data = { + path: _self.$path, + linesLength: doc.$lines.length, + start: d.start, + end: d.end + }; + throw err; + } + + doc.applyDelta(d, true); + } + } + if (_self.$timeout) + return deferredUpdate.schedule(_self.$timeout); + _self.onUpdate(); + }); +}; + +(function() { + + this.$timeout = 500; + + this.setTimeout = function(timeout) { + this.$timeout = timeout; + }; + + this.setValue = function(value) { + this.doc.setValue(value); + this.deferredUpdate.schedule(this.$timeout); + }; + + this.getValue = function(callbackId) { + this.sender.callback(this.doc.getValue(), callbackId); + }; + + this.onUpdate = function() { + }; + + this.isPending = function() { + return this.deferredUpdate.isPending(); + }; + +}).call(Mirror.prototype); + +}); diff --git a/web/dist/ab224e40ec1be852b08440ae5b93334a.js.gz b/web/dist/ab224e40ec1be852b08440ae5b93334a.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..ccb5440da1bc7c084cc459266b29bf148beaeb08 GIT binary patch literal 8977 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 literal 0 HcmV?d00001 diff --git a/web/dist/ab30fd1481481ea1a281fe8b19b2bee0.js b/web/dist/ab30fd1481481ea1a281fe8b19b2bee0.js new file mode 100644 index 00000000..6442bdd3 --- /dev/null +++ b/web/dist/ab30fd1481481ea1a281fe8b19b2bee0.js @@ -0,0 +1,502 @@ +ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var DocCommentHighlightRules = function () { + this.$rules = { + "start": [{ + token: "comment.doc.tag", + regex: "@[\\w\\d_]+" // TODO: fix email addresses + }, + DocCommentHighlightRules.getTagRule(), + { + defaultToken: "comment.doc", + caseInsensitive: true + }] + }; +}; +oop.inherits(DocCommentHighlightRules, TextHighlightRules); +DocCommentHighlightRules.getTagRule = function (start) { + return { + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" + }; +}; +DocCommentHighlightRules.getStartRule = function (start) { + return { + token: "comment.doc", + regex: "\\/\\*(?=\\*)", + next: start + }; +}; +DocCommentHighlightRules.getEndRule = function (start) { + return { + token: "comment.doc", + regex: "\\*\\/", + next: start + }; +}; +exports.DocCommentHighlightRules = DocCommentHighlightRules; + +}); + +ace.define("ace/mode/c_cpp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var cFunctions = exports.cFunctions = "\\b(?:hypot(?:f|l)?|s(?:scanf|ystem|nprintf|ca(?:nf|lb(?:n(?:f|l)?|ln(?:f|l)?))|i(?:n(?:h(?:f|l)?|f|l)?|gn(?:al|bit))|tr(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?)|error|pbrk|ftime|len|rchr|xfrm)|printf|et(?:jmp|vbuf|locale|buf)|qrt(?:f|l)?|w(?:scanf|printf)|rand)|n(?:e(?:arbyint(?:f|l)?|xt(?:toward(?:f|l)?|after(?:f|l)?))|an(?:f|l)?)|c(?:s(?:in(?:h(?:f|l)?|f|l)?|qrt(?:f|l)?)|cos(?:h(?:f)?|f|l)?|imag(?:f|l)?|t(?:ime|an(?:h(?:f|l)?|f|l)?)|o(?:s(?:h(?:f|l)?|f|l)?|nj(?:f|l)?|pysign(?:f|l)?)|p(?:ow(?:f|l)?|roj(?:f|l)?)|e(?:il(?:f|l)?|xp(?:f|l)?)|l(?:o(?:ck|g(?:f|l)?)|earerr)|a(?:sin(?:h(?:f|l)?|f|l)?|cos(?:h(?:f|l)?|f|l)?|tan(?:h(?:f|l)?|f|l)?|lloc|rg(?:f|l)?|bs(?:f|l)?)|real(?:f|l)?|brt(?:f|l)?)|t(?:ime|o(?:upper|lower)|an(?:h(?:f|l)?|f|l)?|runc(?:f|l)?|gamma(?:f|l)?|mp(?:nam|file))|i(?:s(?:space|n(?:ormal|an)|cntrl|inf|digit|u(?:nordered|pper)|p(?:unct|rint)|finite|w(?:space|c(?:ntrl|type)|digit|upper|p(?:unct|rint)|lower|al(?:num|pha)|graph|xdigit|blank)|l(?:ower|ess(?:equal|greater)?)|al(?:num|pha)|gr(?:eater(?:equal)?|aph)|xdigit|blank)|logb(?:f|l)?|max(?:div|abs))|di(?:v|fftime)|_Exit|unget(?:c|wc)|p(?:ow(?:f|l)?|ut(?:s|c(?:har)?|wc(?:har)?)|error|rintf)|e(?:rf(?:c(?:f|l)?|f|l)?|x(?:it|p(?:2(?:f|l)?|f|l|m1(?:f|l)?)?))|v(?:s(?:scanf|nprintf|canf|printf|w(?:scanf|printf))|printf|f(?:scanf|printf|w(?:scanf|printf))|w(?:scanf|printf)|a_(?:start|copy|end|arg))|qsort|f(?:s(?:canf|e(?:tpos|ek))|close|tell|open|dim(?:f|l)?|p(?:classify|ut(?:s|c|w(?:s|c))|rintf)|e(?:holdexcept|set(?:e(?:nv|xceptflag)|round)|clearexcept|testexcept|of|updateenv|r(?:aiseexcept|ror)|get(?:e(?:nv|xceptflag)|round))|flush|w(?:scanf|ide|printf|rite)|loor(?:f|l)?|abs(?:f|l)?|get(?:s|c|pos|w(?:s|c))|re(?:open|e|ad|xp(?:f|l)?)|m(?:in(?:f|l)?|od(?:f|l)?|a(?:f|l|x(?:f|l)?)?))|l(?:d(?:iv|exp(?:f|l)?)|o(?:ngjmp|cal(?:time|econv)|g(?:1(?:p(?:f|l)?|0(?:f|l)?)|2(?:f|l)?|f|l|b(?:f|l)?)?)|abs|l(?:div|abs|r(?:int(?:f|l)?|ound(?:f|l)?))|r(?:int(?:f|l)?|ound(?:f|l)?)|gamma(?:f|l)?)|w(?:scanf|c(?:s(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?|mbs)|pbrk|ftime|len|r(?:chr|tombs)|xfrm)|to(?:b|mb)|rtomb)|printf|mem(?:set|c(?:hr|py|mp)|move))|a(?:s(?:sert|ctime|in(?:h(?:f|l)?|f|l)?)|cos(?:h(?:f|l)?|f|l)?|t(?:o(?:i|f|l(?:l)?)|exit|an(?:h(?:f|l)?|2(?:f|l)?|f|l)?)|b(?:s|ort))|g(?:et(?:s|c(?:har)?|env|wc(?:har)?)|mtime)|r(?:int(?:f|l)?|ound(?:f|l)?|e(?:name|alloc|wind|m(?:ove|quo(?:f|l)?|ainder(?:f|l)?))|a(?:nd|ise))|b(?:search|towc)|m(?:odf(?:f|l)?|em(?:set|c(?:hr|py|mp)|move)|ktime|alloc|b(?:s(?:init|towcs|rtowcs)|towc|len|r(?:towc|len))))\\b"; +var c_cppHighlightRules = function () { + var keywordControls = ("break|case|continue|default|do|else|for|goto|if|_Pragma|" + + "return|switch|while|catch|operator|try|throw|using"); + var storageType = ("asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|" + + "_Imaginary|int|int8_t|int16_t|int32_t|int64_t|long|short|signed|size_t|struct|typedef|uint8_t|uint16_t|uint32_t|uint64_t|union|unsigned|void|" + + "class|wchar_t|template|char16_t|char32_t"); + var storageModifiers = ("const|extern|register|restrict|static|volatile|inline|private|" + + "protected|public|friend|explicit|virtual|export|mutable|typename|" + + "constexpr|new|delete|alignas|alignof|decltype|noexcept|thread_local"); + var keywordOperators = ("and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|" + + "const_cast|dynamic_cast|reinterpret_cast|static_cast|sizeof|namespace"); + var builtinConstants = ("NULL|true|false|TRUE|FALSE|nullptr"); + var keywordMapper = this.$keywords = this.createKeywordMapper({ + "keyword.control": keywordControls, + "storage.type": storageType, + "storage.modifier": storageModifiers, + "keyword.operator": keywordOperators, + "variable.language": "this", + "constant.language": builtinConstants + }, "identifier"); + var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b"; + var escapeRe = /\\(?:['"?\\abfnrtv]|[0-7]{1,3}|x[a-fA-F\d]{2}|u[a-fA-F\d]{4}U[a-fA-F\d]{8}|.)/.source; + var formatRe = "%" + + /(\d+\$)?/.source // field (argument #) + + /[#0\- +']*/.source // flags + + /[,;:_]?/.source // separator character (AltiVec) + + /((-?\d+)|\*(-?\d+\$)?)?/.source // minimum field width + + /(\.((-?\d+)|\*(-?\d+\$)?)?)?/.source // precision + + /(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)?/.source // length modifier + + /(\[[^"\]]+\]|[diouxXDOUeEfFgGaACcSspn%])/.source; // conversion type + this.$rules = { + "start": [ + { + token: "comment", + regex: "//$", + next: "start" + }, { + token: "comment", + regex: "//", + next: "singleLineComment" + }, + DocCommentHighlightRules.getStartRule("doc-start"), + { + token: "comment", + regex: "\\/\\*", + next: "comment" + }, { + token: "string", + regex: "'(?:" + escapeRe + "|.)?'" + }, { + token: "string.start", + regex: '"', + stateName: "qqstring", + next: [ + { token: "string", regex: /\\\s*$/, next: "qqstring" }, + { token: "constant.language.escape", regex: escapeRe }, + { token: "constant.language.escape", regex: formatRe }, + { token: "string.end", regex: '"|$', next: "start" }, + { defaultToken: "string" } + ] + }, { + token: "string.start", + regex: 'R"\\(', + stateName: "rawString", + next: [ + { token: "string.end", regex: '\\)"', next: "start" }, + { defaultToken: "string" } + ] + }, { + token: "constant.numeric", + regex: "0[xX][0-9a-fA-F]+(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" + }, { + token: "constant.numeric", + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" + }, { + token: "keyword", + regex: "#\\s*(?:include|import|pragma|line|define|undef)\\b", + next: "directive" + }, { + token: "keyword", + regex: "#\\s*(?:endif|if|ifdef|else|elif|ifndef)\\b" + }, { + token: "support.function.C99.c", + regex: cFunctions + }, { + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*" + }, { + token: "keyword.operator", + regex: /--|\+\+|<<=|>>=|>>>=|<>|&&|\|\||\?:|[*%\/+\-&\^|~!<>=]=?/ + }, { + token: "punctuation.operator", + regex: "\\?|\\:|\\,|\\;|\\." + }, { + token: "paren.lparen", + regex: "[[({]" + }, { + token: "paren.rparen", + regex: "[\\])}]" + }, { + token: "text", + regex: "\\s+" + } + ], + "comment": [ + { + token: "comment", + regex: "\\*\\/", + next: "start" + }, { + defaultToken: "comment" + } + ], + "singleLineComment": [ + { + token: "comment", + regex: /\\$/, + next: "singleLineComment" + }, { + token: "comment", + regex: /$/, + next: "start" + }, { + defaultToken: "comment" + } + ], + "directive": [ + { + token: "constant.other.multiline", + regex: /\\/ + }, + { + token: "constant.other.multiline", + regex: /.*\\/ + }, + { + token: "constant.other", + regex: "\\s*<.+?>", + next: "start" + }, + { + token: "constant.other", + regex: '\\s*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]', + next: "start" + }, + { + token: "constant.other", + regex: "\\s*['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']", + next: "start" + }, + { + token: "constant.other", + regex: /[^\\\/]+/, + next: "start" + } + ] + }; + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("start")]); + this.normalizeRules(); +}; +oop.inherits(c_cppHighlightRules, TextHighlightRules); +exports.c_cppHighlightRules = c_cppHighlightRules; + +}); + +ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) + return false; + return /^\s*\}/.test(input); + }; + this.autoOutdent = function (doc, row) { + var line = doc.getLine(row); + var match = line.match(/^(\s*\})/); + if (!match) + return 0; + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; + var indent = this.$getIndent(doc.getLine(openBracePos.row)); + doc.replace(new Range(row, 0, row, column - 1), indent); + }; + this.$getIndent = function (line) { + return line.match(/^\s*/)[0]; + }; +}).call(MatchingBraceOutdent.prototype); +exports.MatchingBraceOutdent = MatchingBraceOutdent; + +}); + +ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/c_cpp",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/c_cpp_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var c_cppHighlightRules = require("./c_cpp_highlight_rules").c_cppHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var Range = require("../range").Range; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = c_cppHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CstyleBehaviour(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "//"; + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + var endState = tokenizedLine.state; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + if (state == "start") { + var match = line.match(/^.*[\{\(\[]\s*$/); + if (match) { + indent += tab; + } + } + else if (state == "doc-start") { + if (endState == "start") { + return ""; + } + var match = line.match(/^\s*(\/?)\*/); + if (match) { + if (match[1]) { + indent += " "; + } + indent += "* "; + } + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.$id = "ace/mode/c_cpp"; + this.snippetFileId = "ace/snippets/c_cpp"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +ace.define("ace/mode/protobuf_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var ProtobufHighlightRules = function () { + var builtinTypes = "double|float|int32|int64|uint32|uint64|sint32|" + + "sint64|fixed32|fixed64|sfixed32|sfixed64|bool|" + + "string|bytes"; + var keywordDeclaration = "message|required|optional|repeated|package|" + + "import|option|enum"; + var keywordMapper = this.createKeywordMapper({ + "keyword.declaration.protobuf": keywordDeclaration, + "support.type": builtinTypes + }, "identifier"); + this.$rules = { + "start": [{ + token: "comment", + regex: /\/\/.*$/ + }, { + token: "comment", + regex: /\/\*/, + next: "comment" + }, { + token: "constant", + regex: "<[^>]+>" + }, { + regex: "=", + token: "keyword.operator.assignment.protobuf" + }, { + token: "string", + regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + }, { + token: "string", + regex: '[\'](?:(?:\\\\.)|(?:[^\'\\\\]))*?[\']' + }, { + token: "constant.numeric", + regex: "0[xX][0-9a-fA-F]+\\b" + }, { + token: "constant.numeric", + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }], + "comment": [{ + token: "comment", + regex: "\\*\\/", + next: "start" + }, { + defaultToken: "comment" + }] + }; + this.normalizeRules(); +}; +oop.inherits(ProtobufHighlightRules, TextHighlightRules); +exports.ProtobufHighlightRules = ProtobufHighlightRules; + +}); + +ace.define("ace/mode/protobuf",["require","exports","module","ace/lib/oop","ace/mode/c_cpp","ace/mode/protobuf_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ +"use strict"; +var oop = require("../lib/oop"); +var CMode = require("./c_cpp").Mode; +var ProtobufHighlightRules = require("./protobuf_highlight_rules").ProtobufHighlightRules; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + CMode.call(this); + this.foldingRules = new CStyleFoldMode(); + this.HighlightRules = ProtobufHighlightRules; +}; +oop.inherits(Mode, CMode); +(function () { + this.lineCommentStart = "//"; + this.blockComment = { start: "/*", end: "*/" }; + this.$id = "ace/mode/protobuf"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/protobuf"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/ab30fd1481481ea1a281fe8b19b2bee0.js.gz b/web/dist/ab30fd1481481ea1a281fe8b19b2bee0.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..8ecd09f7f319ace649237c8a90a316285eb65ac5 GIT binary patch literal 5275 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\\^|~|<|>|<=|=>|==|!=|<>|=|\\*" + }, { + token: "paren.lparen", + regex: "[\\(]" + }, { + token: "paren.rparen", + regex: "[\\)]" + }, { + token: "punctuation", + regex: ",|;" + }, { + token: "text", + regex: "\\s+" + }], + comment: [ + DocCommentHighlightRules.getTagRule(), { + token: "comment", + regex: "\\*\\/", + next: "no_regex" + }, { + defaultToken: "comment", + caseInsensitive: true + } + ] + }; + for (var i = 0; i < setStatements.length; i++) { + this.$rules.start.unshift({ + token: "set.statement", + regex: setStatements[i] + }); + } + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("start")]); + this.normalizeRules(); + var completions = []; + var addCompletions = function (arr, meta) { + arr.forEach(function (v) { + completions.push({ + name: v, + value: v, + score: 0, + meta: meta + }); + }); + }; + addCompletions(builtInStoredProcedures.split('|'), 'procedure'); + addCompletions(logicalOperators.split('|'), 'operator'); + addCompletions(builtinFunctions.split('|'), 'function'); + addCompletions(dataTypes.split('|'), 'type'); + addCompletions(setStatements, 'statement'); + addCompletions(keywords.split('|'), 'keyword'); + this.completions = completions; +}; +oop.inherits(SqlServerHighlightRules, TextHighlightRules); +exports.SqlHighlightRules = SqlServerHighlightRules; + +}); + +ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/folding/sqlserver",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./cstyle").FoldMode; +var FoldMode = exports.FoldMode = function () { }; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /(\bCASE\b|\bBEGIN\b)|^\s*(\/\*)/i; + this.startRegionRe = /^\s*(\/\*|--)#?region\b/; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.getBeginEndBlock(session, row, i, match[1]); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + return; + }; + this.getBeginEndBlock = function (session, row, column, matchSequence) { + var start = { + row: row, + column: column + matchSequence.length + }; + var maxRow = session.getLength(); + var line; + var depth = 1; + var re = /(\bCASE\b|\bBEGIN\b)|(\bEND\b)/i; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth++; + else + depth--; + if (!depth) + break; + } + var endRow = row; + if (endRow > start.row) { + return new Range(start.row, start.column, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/sqlserver",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sqlserver_highlight_rules","ace/mode/folding/sqlserver"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var SqlServerHighlightRules = require("./sqlserver_highlight_rules").SqlHighlightRules; +var SqlServerFoldMode = require("./folding/sqlserver").FoldMode; +var Mode = function () { + this.HighlightRules = SqlServerHighlightRules; + this.foldingRules = new SqlServerFoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "--"; + this.blockComment = { start: "/*", end: "*/" }; + this.getCompletions = function (state, session, pos, prefix) { + return session.$mode.$highlightRules.completions; + }; + this.$id = "ace/mode/sqlserver"; + this.snippetFileId = "ace/snippets/sqlserver"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/sqlserver"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/ab6682f26350a18d64b57b1f6afedb5b.js.gz b/web/dist/ab6682f26350a18d64b57b1f6afedb5b.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..6482c122030200e8f3325768ab00984f1ad7facb GIT binary patch literal 7403 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 literal 0 HcmV?d00001 diff --git a/web/dist/ac87527deeab08356fce5f6f6cc26c54.js b/web/dist/ac87527deeab08356fce5f6f6cc26c54.js new file mode 100644 index 00000000..7f315c0d --- /dev/null +++ b/web/dist/ac87527deeab08356fce5f6f6cc26c54.js @@ -0,0 +1,864 @@ +ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var DocCommentHighlightRules = function () { + this.$rules = { + "start": [{ + token: "comment.doc.tag", + regex: "@[\\w\\d_]+" // TODO: fix email addresses + }, + DocCommentHighlightRules.getTagRule(), + { + defaultToken: "comment.doc", + caseInsensitive: true + }] + }; +}; +oop.inherits(DocCommentHighlightRules, TextHighlightRules); +DocCommentHighlightRules.getTagRule = function (start) { + return { + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" + }; +}; +DocCommentHighlightRules.getStartRule = function (start) { + return { + token: "comment.doc", + regex: "\\/\\*(?=\\*)", + next: start + }; +}; +DocCommentHighlightRules.getEndRule = function (start) { + return { + token: "comment.doc", + regex: "\\*\\/", + next: start + }; +}; +exports.DocCommentHighlightRules = DocCommentHighlightRules; + +}); + +ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; +var JavaScriptHighlightRules = function (options) { + var keywordMapper = this.createKeywordMapper({ + "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|" + // Constructors + "Namespace|QName|XML|XMLList|" + // E4X + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors + "SyntaxError|TypeError|URIError|" + + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions + "isNaN|parseFloat|parseInt|" + + "JSON|Math|" + // Other + "this|arguments|prototype|window|document", + "keyword": "const|yield|import|get|set|async|await|" + + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + + "__parent__|__count__|escape|unescape|with|__proto__|" + + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor", + "storage.type": "const|let|var|function", + "constant.language": "null|Infinity|NaN|undefined", + "support.function": "alert", + "constant.language.boolean": "true|false" + }, "identifier"); + var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; + var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex + "u[0-9a-fA-F]{4}|" + // unicode + "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode + "[0-2][0-7]{0,2}|" + // oct + "3[0-7][0-7]?|" + // oct + "[4-7][0-7]?|" + //oct + ".)"; + this.$rules = { + "no_regex": [ + DocCommentHighlightRules.getStartRule("doc-start"), + comments("no_regex"), + { + token: "string", + regex: "'(?=.)", + next: "qstring" + }, { + token: "string", + regex: '"(?=.)', + next: "qqstring" + }, { + token: "constant.numeric", + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + }, { + token: [ + "storage.type", "punctuation.operator", "support.function", + "punctuation.operator", "entity.name.function", "text", "keyword.operator" + ], + regex: "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe + ")(\\s*)(=)", + next: "function_arguments" + }, { + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", "storage.type", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "entity.name.function", "text", "keyword.operator", "text", "storage.type", + "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(function\\*?)(\\s+)(" + identifierRe + ")(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "entity.name.function", "text", "punctuation.operator", + "text", "storage.type", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "text", "text", "storage.type", "text", "paren.lparen" + ], + regex: "(:)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: "keyword", + regex: "from(?=\\s*('|\"))" + }, { + token: "keyword", + regex: "(?:" + kwBeforeRe + ")\\b", + next: "start" + }, { + token: "support.constant", + regex: /that\b/ + }, { + token: ["storage.type", "punctuation.operator", "support.function.firebug"], + regex: /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ + }, { + token: keywordMapper, + regex: identifierRe + }, { + token: "punctuation.operator", + regex: /[.](?![.])/, + next: "property" + }, { + token: "storage.type", + regex: /=>/, + next: "start" + }, { + token: "keyword.operator", + regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next: "start" + }, { + token: "punctuation.operator", + regex: /[?:,;.]/, + next: "start" + }, { + token: "paren.lparen", + regex: /[\[({]/, + next: "start" + }, { + token: "paren.rparen", + regex: /[\])}]/ + }, { + token: "comment", + regex: /^#!.*$/ + } + ], + property: [{ + token: "text", + regex: "\\s+" + }, { + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()", + next: "function_arguments" + }, { + token: "punctuation.operator", + regex: /[.](?![.])/ + }, { + token: "support.function", + regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ + }, { + token: "support.function.dom", + regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ + }, { + token: "support.constant", + regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ + }, { + token: "identifier", + regex: identifierRe + }, { + regex: "", + token: "empty", + next: "no_regex" + } + ], + "start": [ + DocCommentHighlightRules.getStartRule("doc-start"), + comments("start"), + { + token: "string.regexp", + regex: "\\/", + next: "regex" + }, { + token: "text", + regex: "\\s+|^$", + next: "start" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "regex": [ + { + token: "regexp.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "string.regexp", + regex: "/[sxngimy]*", + next: "no_regex" + }, { + token: "invalid", + regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ + }, { + token: "constant.language.escape", + regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ + }, { + token: "constant.language.delimiter", + regex: /\|/ + }, { + token: "constant.language.escape", + regex: /\[\^?/, + next: "regex_character_class" + }, { + token: "empty", + regex: "$", + next: "no_regex" + }, { + defaultToken: "string.regexp" + } + ], + "regex_character_class": [ + { + token: "regexp.charclass.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "constant.language.escape", + regex: "]", + next: "regex" + }, { + token: "constant.language.escape", + regex: "-" + }, { + token: "empty", + regex: "$", + next: "no_regex" + }, { + defaultToken: "string.regexp.charachterclass" + } + ], + "default_parameter": [ + { + token: "string", + regex: "'(?=.)", + push: [ + { + token: "string", + regex: "'|$", + next: "pop" + }, { + include: "qstring" + } + ] + }, { + token: "string", + regex: '"(?=.)', + push: [ + { + token: "string", + regex: '"|$', + next: "pop" + }, { + include: "qqstring" + } + ] + }, { + token: "constant.language", + regex: "null|Infinity|NaN|undefined" + }, { + token: "constant.numeric", + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + }, { + token: "punctuation.operator", + regex: ",", + next: "function_arguments" + }, { + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "function_arguments": [ + comments("function_arguments"), + { + token: "variable.parameter", + regex: identifierRe + }, { + token: "punctuation.operator", + regex: "," + }, { + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: '"|$', + next: "no_regex" + }, { + defaultToken: "string" + } + ], + "qstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: "'|$", + next: "no_regex" + }, { + defaultToken: "string" + } + ] + }; + if (!options || !options.noES6) { + this.$rules.no_regex.unshift({ + regex: "[{}]", onMatch: function (val, state, stack) { + this.next = val == "{" ? this.nextState : ""; + if (val == "{" && stack.length) { + stack.unshift("start", state); + } + else if (val == "}" && stack.length) { + stack.shift(); + this.next = stack.shift(); + if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) + return "paren.quasi.end"; + } + return val == "{" ? "paren.lparen" : "paren.rparen"; + }, + nextState: "start" + }, { + token: "string.quasi.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedRe + }, { + token: "paren.quasi.start", + regex: /\${/, + push: "start" + }, { + token: "string.quasi.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string.quasi" + }] + }, { + token: ["variable.parameter", "text"], + regex: "(" + identifierRe + ")(\\s*)(?=\\=>)" + }, { + token: "paren.lparen", + regex: "(\\()(?=.+\\s*=>)", + next: "function_arguments" + }, { + token: "variable.language", + regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b" + }); + this.$rules["function_arguments"].unshift({ + token: "keyword.operator", + regex: "=", + next: "default_parameter" + }, { + token: "keyword.operator", + regex: "\\.{3}" + }); + this.$rules["property"].unshift({ + token: "support.function", + regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|" + + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()" + }, { + token: "constant.language", + regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b" + }); + if (!options || options.jsx != false) + JSX.call(this); + } + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]); + this.normalizeRules(); +}; +oop.inherits(JavaScriptHighlightRules, TextHighlightRules); +function JSX() { + var tagRegex = identifierRe.replace("\\d", "\\d\\-"); + var jsxTag = { + onMatch: function (val, state, stack) { + var offset = val.charAt(1) == "/" ? 2 : 1; + if (offset == 1) { + if (state != this.nextState) + stack.unshift(this.next, this.nextState, 0); + else + stack.unshift(this.next); + stack[2]++; + } + else if (offset == 2) { + if (state == this.nextState) { + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.shift(); + stack.shift(); + } + } + } + return [{ + type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", + value: val.slice(0, offset) + }, { + type: "meta.tag.tag-name.xml", + value: val.substr(offset) + }]; + }, + regex: "", + onMatch: function (value, currentState, stack) { + if (currentState == stack[0]) + stack.shift(); + if (value.length == 2) { + if (stack[0] == this.nextState) + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.splice(0, 2); + } + } + this.next = stack[0] || "start"; + return [{ type: this.token, value: value }]; + }, + nextState: "jsx" + }, + jsxJsRule, + comments("jsxAttributes"), + { + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + token: "text.tag-whitespace.xml", + regex: "\\s+" + }, { + token: "string.attribute-value.xml", + regex: "'", + stateName: "jsx_attr_q", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + stateName: "jsx_attr_qq", + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, + jsxTag + ]; + this.$rules.reference = [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }]; +} +function comments(next) { + return [ + { + token: "comment", + regex: /\/\*/, + next: [ + DocCommentHighlightRules.getTagRule(), + { token: "comment", regex: "\\*\\/", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } + ] + }, { + token: "comment", + regex: "\\/\\/", + next: [ + DocCommentHighlightRules.getTagRule(), + { token: "comment", regex: "$|^", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } + ] + } + ]; +} +exports.JavaScriptHighlightRules = JavaScriptHighlightRules; + +}); + +ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) + return false; + return /^\s*\}/.test(input); + }; + this.autoOutdent = function (doc, row) { + var line = doc.getLine(row); + var match = line.match(/^(\s*\})/); + if (!match) + return 0; + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; + var indent = this.$getIndent(doc.getLine(openBracePos.row)); + doc.replace(new Range(row, 0, row, column - 1), indent); + }; + this.$getIndent = function (line) { + return line.match(/^\s*/)[0]; + }; +}).call(MatchingBraceOutdent.prototype); +exports.MatchingBraceOutdent = MatchingBraceOutdent; + +}); + +ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = JavaScriptHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CstyleBehaviour(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "//"; + this.blockComment = { start: "/*", end: "*/" }; + this.$quotes = { '"': '"', "'": "'", "`": "`" }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + var endState = tokenizedLine.state; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + if (state == "start" || state == "no_regex") { + var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); + if (match) { + indent += tab; + } + } + else if (state == "doc-start") { + if (endState == "start" || endState == "no_regex") { + return ""; + } + var match = line.match(/^\s*(\/?)\*/); + if (match) { + if (match[1]) { + indent += " "; + } + indent += "* "; + } + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.createWorker = function (session) { + var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); + worker.attachToDocument(session.getDocument()); + worker.on("annotate", function (results) { + session.setAnnotations(results.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/javascript"; + this.snippetFileId = "ace/snippets/javascript"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +ace.define("ace/mode/typescript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/javascript_highlight_rules"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode_highlight_rules.tmpl.js (UUID: 21e323af-f665-4161-96e7-5087d262557e) */ +"use strict"; +var oop = require("../lib/oop"); +var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; +var TypeScriptHighlightRules = function (options) { + var tsRules = [ + { + token: ["storage.type", "text", "entity.name.function.ts"], + regex: "(function)(\\s+)([a-zA-Z0-9\$_\u00a1-\uffff][a-zA-Z0-9\d\$_\u00a1-\uffff]*)" + }, + { + token: "keyword", + regex: "(?:\\b(constructor|declare|interface|as|AS|public|private|extends|export|super|readonly|module|namespace|abstract|implements)\\b)" + }, + { + token: ["keyword", "storage.type.variable.ts"], + regex: "(class|type)(\\s+[a-zA-Z0-9_?.$][\\w?.$]*)" + }, + { + token: "keyword", + regex: "\\b(?:super|export|import|keyof|infer)\\b" + }, + { + token: ["storage.type.variable.ts"], + regex: "(?:\\b(this\\.|string\\b|bool\\b|boolean\\b|number\\b|true\\b|false\\b|undefined\\b|any\\b|null\\b|(?:unique )?symbol\\b|object\\b|never\\b|enum\\b))" + } + ]; + var JSRules = new JavaScriptHighlightRules({ jsx: (options && options.jsx) == true }).getRules(); + JSRules.no_regex = tsRules.concat(JSRules.no_regex); + this.$rules = JSRules; +}; +oop.inherits(TypeScriptHighlightRules, JavaScriptHighlightRules); +exports.TypeScriptHighlightRules = TypeScriptHighlightRules; + +}); + +ace.define("ace/mode/typescript",["require","exports","module","ace/lib/oop","ace/mode/javascript","ace/mode/typescript_highlight_rules","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle","ace/mode/matching_brace_outdent"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ +"use strict"; +var oop = require("../lib/oop"); +var jsMode = require("./javascript").Mode; +var TypeScriptHighlightRules = require("./typescript_highlight_rules").TypeScriptHighlightRules; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var Mode = function () { + this.HighlightRules = TypeScriptHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CstyleBehaviour(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, jsMode); +(function () { + this.createWorker = function (session) { + return null; + }; + this.$id = "ace/mode/typescript"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/typescript"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/ac87527deeab08356fce5f6f6cc26c54.js.gz b/web/dist/ac87527deeab08356fce5f6f6cc26c54.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..83c80a3fabdc9aec9b68a152f4941c6f1426cbc5 GIT binary patch literal 8453 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 literal 0 HcmV?d00001 diff --git a/web/dist/acc30207efba7ab5b7b509b599f37e6f.js b/web/dist/acc30207efba7ab5b7b509b599f37e6f.js new file mode 100644 index 00000000..1ab28234 --- /dev/null +++ b/web/dist/acc30207efba7ab5b7b509b599f37e6f.js @@ -0,0 +1,9 @@ + +; (function() { + ace.require(["ace/snippets/nsis"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/acc7448b80728a73c9a4046b3ec4407f.js b/web/dist/acc7448b80728a73c9a4046b3ec4407f.js new file mode 100644 index 00000000..2f7fd35d --- /dev/null +++ b/web/dist/acc7448b80728a73c9a4046b3ec4407f.js @@ -0,0 +1,9 @@ + +; (function() { + ace.require(["ace/snippets/golang"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/accd1391b6d74a4f4ef8b1ca97d4c57f.js b/web/dist/accd1391b6d74a4f4ef8b1ca97d4c57f.js new file mode 100644 index 00000000..f9016c07 --- /dev/null +++ b/web/dist/accd1391b6d74a4f4ef8b1ca97d4c57f.js @@ -0,0 +1,321 @@ +ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var DocCommentHighlightRules = function () { + this.$rules = { + "start": [{ + token: "comment.doc.tag", + regex: "@[\\w\\d_]+" // TODO: fix email addresses + }, + DocCommentHighlightRules.getTagRule(), + { + defaultToken: "comment.doc", + caseInsensitive: true + }] + }; +}; +oop.inherits(DocCommentHighlightRules, TextHighlightRules); +DocCommentHighlightRules.getTagRule = function (start) { + return { + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" + }; +}; +DocCommentHighlightRules.getStartRule = function (start) { + return { + token: "comment.doc", + regex: "\\/\\*(?=\\*)", + next: start + }; +}; +DocCommentHighlightRules.getEndRule = function (start) { + return { + token: "comment.doc", + regex: "\\*\\/", + next: start + }; +}; +exports.DocCommentHighlightRules = DocCommentHighlightRules; + +}); + +ace.define("ace/mode/json_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var JsonHighlightRules = function () { + this.$rules = { + "start": [ + { + token: "variable", + regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]\\s*(?=:)' + }, { + token: "string", + regex: '"', + next: "string" + }, { + token: "constant.numeric", + regex: "0[xX][0-9a-fA-F]+\\b" + }, { + token: "constant.numeric", + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token: "constant.language.boolean", + regex: "(?:true|false)\\b" + }, { + token: "text", + regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + }, { + token: "comment", + regex: "\\/\\/.*$" + }, { + token: "comment.start", + regex: "\\/\\*", + next: "comment" + }, { + token: "paren.lparen", + regex: "[[({]" + }, { + token: "paren.rparen", + regex: "[\\])}]" + }, { + token: "punctuation.operator", + regex: /[,]/ + }, { + token: "text", + regex: "\\s+" + } + ], + "string": [ + { + token: "constant.language.escape", + regex: /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/ + }, { + token: "string", + regex: '"|$', + next: "start" + }, { + defaultToken: "string" + } + ], + "comment": [ + { + token: "comment.end", + regex: "\\*\\/", + next: "start" + }, { + defaultToken: "comment" + } + ] + }; +}; +oop.inherits(JsonHighlightRules, TextHighlightRules); +exports.JsonHighlightRules = JsonHighlightRules; + +}); + +ace.define("ace/mode/redshift_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules","ace/mode/json_highlight_rules"], function(require, exports, module){var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var JsonHighlightRules = require("./json_highlight_rules").JsonHighlightRules; +var RedshiftHighlightRules = function () { + var keywords = ("aes128|aes256|all|allowoverwrite|analyse|analyze|and|any|array|as|asc|authorization|backup|" + + "between|binary|blanksasnull|both|bytedict|bzip2|case|cast|check|collate|column|constraint|create|credentials|" + + "cross|current_date|current_time|current_timestamp|current_user|current_user_id|default|deferrable|deflate|defrag|delta|" + + "delta32k|desc|disable|distinct|do|else|emptyasnull|enable|encode|encrypt|encryption|end|except|explicit|false|for|foreign|" + + "freeze|from|full|globaldict256|globaldict64k|grant|group|gzip|having|identity|ignore|ilike|in|initially|inner|intersect|into|is|" + + "isnull|join|leading|left|like|limit|localtime|localtimestamp|lun|luns|lzo|lzop|minus|mostly13|mostly32|mostly8|natural|new|not|notnull|" + + "null|nulls|off|offline|offset|old|on|only|open|or|order|outer|overlaps|parallel|partition|percent|permissions|placing|primary|raw|readratio|" + + "recover|references|rejectlog|resort|restore|right|select|session_user|similar|some|sysdate|system|table|tag|tdes|text255|text32k|then|timestamp|" + + "to|top|trailing|true|truncatecolumns|union|unique|user|using|verbose|wallet|when|where|with|without"); + var builtinFunctions = ("current_schema|current_schemas|has_database_privilege|has_schema_privilege|has_table_privilege|age|current_time|current_timestamp|localtime|" + + "isfinite|now|ascii|get_bit|get_byte|octet_length|set_bit|set_byte|to_ascii|avg|count|listagg|max|min|stddev_samp|stddev_pop|sum|var_samp|var_pop|" + + "bit_and|bit_or|bool_and|bool_or|avg|count|cume_dist|dense_rank|first_value|last_value|lag|lead|listagg|max|median|min|nth_value|ntile|percent_rank|" + + "percentile_cont|percentile_disc|rank|ratio_to_report|row_number|case|coalesce|decode|greatest|least|nvl|nvl2|nullif|add_months|age|convert_timezone|" + + "current_date|timeofday|current_time|current_timestamp|date_cmp|date_cmp_timestamp|date_part_year|dateadd|datediff|date_part|date_trunc|extract|getdate|" + + "interval_cmp|isfinite|last_day|localtime|localtimestamp|months_between|next_day|now|sysdate|timestamp_cmp|timestamp_cmp_date|trunc|abs|acos|asin|atan|" + + "atan2|cbrt|ceiling|ceil|checksum|cos|cot|degrees|dexp|dlog1|dlog10|exp|floor|ln|log|mod|pi|power|radians|random|round|sin|sign|sqrt|tan|trunc|ascii|" + + "bpcharcmp|btrim|bttext_pattern_cmp|char_length|character_length|charindex|chr|concat|crc32|func_sha1|get_bit|get_byte|initcap|left|right|len|length|" + + "lower|lpad|rpad|ltrim|md5|octet_length|position|quote_ident|quote_literal|regexp_count|regexp_instr|regexp_replace|regexp_substr|repeat|replace|replicate|" + + "reverse|rtrim|set_bit|set_byte|split_part|strpos|strtol|substring|textlen|to_ascii|to_hex|translate|trim|upper|json_array_length|json_extract_array_element_text|" + + "json_extract_path_text|cast|convert|to_char|to_date|to_number|current_database|current_schema|current_schemas|current_user|current_user_id|has_database_privilege|" + + "has_schema_privilege|has_table_privilege|pg_backend_pid|pg_last_copy_count|pg_last_copy_id|pg_last_query_id|pg_last_unload_count|session_user|slice_num|user|version"); + var keywordMapper = this.createKeywordMapper({ + "support.function": builtinFunctions, + "keyword": keywords + }, "identifier", true); + var sqlRules = [{ + token: "string", + regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + }, { + token: "variable.language", + regex: '".*?"' + }, { + token: "constant.numeric", + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token: keywordMapper, + regex: "[a-zA-Z_][a-zA-Z0-9_$]*\\b" // TODO - Unicode in identifiers + }, { + token: "keyword.operator", + regex: "!|!!|!~|!~\\*|!~~|!~~\\*|#|##|#<|#<=|#<>|#=|#>|#>=|%|\\&|\\&\\&|\\&<|\\&<\\||\\&>|\\*|\\+|" + + "\\-|/|<|<#>|<\\->|<<|<<=|<<\\||<=|<>|<\\?>|<@|<\\^|=|>|>=|>>|>>=|>\\^|\\?#|\\?\\-|\\?\\-\\||" + + "\\?\\||\\?\\|\\||@|@\\-@|@>|@@|@@@|\\^|\\||\\|\\&>|\\|/|\\|>>|\\|\\||\\|\\|/|~|~\\*|~<=~|~<~|" + + "~=|~>=~|~>~|~~|~~\\*" + }, { + token: "paren.lparen", + regex: "[\\(]" + }, { + token: "paren.rparen", + regex: "[\\)]" + }, { + token: "text", + regex: "\\s+" + } + ]; + this.$rules = { + "start": [{ + token: "comment", + regex: "--.*$" + }, + DocCommentHighlightRules.getStartRule("doc-start"), + { + token: "comment", + regex: "\\/\\*", + next: "comment" + }, { + token: "keyword.statementBegin", + regex: "^[a-zA-Z]+", + next: "statement" + }, { + token: "support.buildin", + regex: "^\\\\[\\S]+.*$" + } + ], + "statement": [{ + token: "comment", + regex: "--.*$" + }, { + token: "comment", + regex: "\\/\\*", + next: "commentStatement" + }, { + token: "statementEnd", + regex: ";", + next: "start" + }, { + token: "string", + regex: "\\$json\\$", + next: "json-start" + }, { + token: "string", + regex: "\\$[\\w_0-9]*\\$$", + next: "dollarSql" + }, { + token: "string", + regex: "\\$[\\w_0-9]*\\$", + next: "dollarStatementString" + } + ].concat(sqlRules), + "dollarSql": [{ + token: "comment", + regex: "--.*$" + }, { + token: "comment", + regex: "\\/\\*", + next: "commentDollarSql" + }, { + token: "string", + regex: "^\\$[\\w_0-9]*\\$", + next: "statement" + }, { + token: "string", + regex: "\\$[\\w_0-9]*\\$", + next: "dollarSqlString" + } + ].concat(sqlRules), + "comment": [{ + token: "comment", + regex: ".*?\\*\\/", + next: "start" + }, { + token: "comment", + regex: ".+" + } + ], + "commentStatement": [{ + token: "comment", + regex: ".*?\\*\\/", + next: "statement" + }, { + token: "comment", + regex: ".+" + } + ], + "commentDollarSql": [{ + token: "comment", + regex: ".*?\\*\\/", + next: "dollarSql" + }, { + token: "comment", + regex: ".+" + } + ], + "dollarStatementString": [{ + token: "string", + regex: ".*?\\$[\\w_0-9]*\\$", + next: "statement" + }, { + token: "string", + regex: ".+" + } + ], + "dollarSqlString": [{ + token: "string", + regex: ".*?\\$[\\w_0-9]*\\$", + next: "dollarSql" + }, { + token: "string", + regex: ".+" + } + ] + }; + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("start")]); + this.embedRules(JsonHighlightRules, "json-", [{ token: "string", regex: "\\$json\\$", next: "statement" }]); +}; +oop.inherits(RedshiftHighlightRules, TextHighlightRules); +exports.RedshiftHighlightRules = RedshiftHighlightRules; + +}); + +ace.define("ace/mode/redshift",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/redshift_highlight_rules","ace/range"], function(require, exports, module){var oop = require("../lib/oop"); +var TextMode = require("../mode/text").Mode; +var RedshiftHighlightRules = require("./redshift_highlight_rules").RedshiftHighlightRules; +var Range = require("../range").Range; +var Mode = function () { + this.HighlightRules = RedshiftHighlightRules; +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "--"; + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { + if (state == "start" || state == "keyword.statementEnd") { + return ""; + } + else { + return this.$getIndent(line); // Keep whatever indent the previous line has + } + }; + this.$id = "ace/mode/redshift"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/redshift"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/accd1391b6d74a4f4ef8b1ca97d4c57f.js.gz b/web/dist/accd1391b6d74a4f4ef8b1ca97d4c57f.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..2e52582b873b73a9a7dc43d664333b9594970ba7 GIT binary patch literal 3306 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/, + next: "start" + }, { + token: "keyword.operator", + regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next: "start" + }, { + token: "punctuation.operator", + regex: /[?:,;.]/, + next: "start" + }, { + token: "paren.lparen", + regex: /[\[({]/, + next: "start" + }, { + token: "paren.rparen", + regex: /[\])}]/ + }, { + token: "comment", + regex: /^#!.*$/ + } + ], + property: [{ + token: "text", + regex: "\\s+" + }, { + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()", + next: "function_arguments" + }, { + token: "punctuation.operator", + regex: /[.](?![.])/ + }, { + token: "support.function", + regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ + }, { + token: "support.function.dom", + regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ + }, { + token: "support.constant", + regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ + }, { + token: "identifier", + regex: identifierRe + }, { + regex: "", + token: "empty", + next: "no_regex" + } + ], + "start": [ + DocCommentHighlightRules.getStartRule("doc-start"), + comments("start"), + { + token: "string.regexp", + regex: "\\/", + next: "regex" + }, { + token: "text", + regex: "\\s+|^$", + next: "start" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "regex": [ + { + token: "regexp.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "string.regexp", + regex: "/[sxngimy]*", + next: "no_regex" + }, { + token: "invalid", + regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ + }, { + token: "constant.language.escape", + regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ + }, { + token: "constant.language.delimiter", + regex: /\|/ + }, { + token: "constant.language.escape", + regex: /\[\^?/, + next: "regex_character_class" + }, { + token: "empty", + regex: "$", + next: "no_regex" + }, { + defaultToken: "string.regexp" + } + ], + "regex_character_class": [ + { + token: "regexp.charclass.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "constant.language.escape", + regex: "]", + next: "regex" + }, { + token: "constant.language.escape", + regex: "-" + }, { + token: "empty", + regex: "$", + next: "no_regex" + }, { + defaultToken: "string.regexp.charachterclass" + } + ], + "default_parameter": [ + { + token: "string", + regex: "'(?=.)", + push: [ + { + token: "string", + regex: "'|$", + next: "pop" + }, { + include: "qstring" + } + ] + }, { + token: "string", + regex: '"(?=.)', + push: [ + { + token: "string", + regex: '"|$', + next: "pop" + }, { + include: "qqstring" + } + ] + }, { + token: "constant.language", + regex: "null|Infinity|NaN|undefined" + }, { + token: "constant.numeric", + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + }, { + token: "punctuation.operator", + regex: ",", + next: "function_arguments" + }, { + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "function_arguments": [ + comments("function_arguments"), + { + token: "variable.parameter", + regex: identifierRe + }, { + token: "punctuation.operator", + regex: "," + }, { + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: '"|$', + next: "no_regex" + }, { + defaultToken: "string" + } + ], + "qstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: "'|$", + next: "no_regex" + }, { + defaultToken: "string" + } + ] + }; + if (!options || !options.noES6) { + this.$rules.no_regex.unshift({ + regex: "[{}]", onMatch: function (val, state, stack) { + this.next = val == "{" ? this.nextState : ""; + if (val == "{" && stack.length) { + stack.unshift("start", state); + } + else if (val == "}" && stack.length) { + stack.shift(); + this.next = stack.shift(); + if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) + return "paren.quasi.end"; + } + return val == "{" ? "paren.lparen" : "paren.rparen"; + }, + nextState: "start" + }, { + token: "string.quasi.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedRe + }, { + token: "paren.quasi.start", + regex: /\${/, + push: "start" + }, { + token: "string.quasi.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string.quasi" + }] + }, { + token: ["variable.parameter", "text"], + regex: "(" + identifierRe + ")(\\s*)(?=\\=>)" + }, { + token: "paren.lparen", + regex: "(\\()(?=.+\\s*=>)", + next: "function_arguments" + }, { + token: "variable.language", + regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b" + }); + this.$rules["function_arguments"].unshift({ + token: "keyword.operator", + regex: "=", + next: "default_parameter" + }, { + token: "keyword.operator", + regex: "\\.{3}" + }); + this.$rules["property"].unshift({ + token: "support.function", + regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|" + + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()" + }, { + token: "constant.language", + regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b" + }); + if (!options || options.jsx != false) + JSX.call(this); + } + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]); + this.normalizeRules(); +}; +oop.inherits(JavaScriptHighlightRules, TextHighlightRules); +function JSX() { + var tagRegex = identifierRe.replace("\\d", "\\d\\-"); + var jsxTag = { + onMatch: function (val, state, stack) { + var offset = val.charAt(1) == "/" ? 2 : 1; + if (offset == 1) { + if (state != this.nextState) + stack.unshift(this.next, this.nextState, 0); + else + stack.unshift(this.next); + stack[2]++; + } + else if (offset == 2) { + if (state == this.nextState) { + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.shift(); + stack.shift(); + } + } + } + return [{ + type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", + value: val.slice(0, offset) + }, { + type: "meta.tag.tag-name.xml", + value: val.substr(offset) + }]; + }, + regex: "", + onMatch: function (value, currentState, stack) { + if (currentState == stack[0]) + stack.shift(); + if (value.length == 2) { + if (stack[0] == this.nextState) + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.splice(0, 2); + } + } + this.next = stack[0] || "start"; + return [{ type: this.token, value: value }]; + }, + nextState: "jsx" + }, + jsxJsRule, + comments("jsxAttributes"), + { + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + token: "text.tag-whitespace.xml", + regex: "\\s+" + }, { + token: "string.attribute-value.xml", + regex: "'", + stateName: "jsx_attr_q", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + stateName: "jsx_attr_qq", + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, + jsxTag + ]; + this.$rules.reference = [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }]; +} +function comments(next) { + return [ + { + token: "comment", + regex: /\/\*/, + next: [ + DocCommentHighlightRules.getTagRule(), + { token: "comment", regex: "\\*\\/", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } + ] + }, { + token: "comment", + regex: "\\/\\/", + next: [ + DocCommentHighlightRules.getTagRule(), + { token: "comment", regex: "$|^", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } + ] + } + ]; +} +exports.JavaScriptHighlightRules = JavaScriptHighlightRules; + +}); + +ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) + return false; + return /^\s*\}/.test(input); + }; + this.autoOutdent = function (doc, row) { + var line = doc.getLine(row); + var match = line.match(/^(\s*\})/); + if (!match) + return 0; + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; + var indent = this.$getIndent(doc.getLine(openBracePos.row)); + doc.replace(new Range(row, 0, row, column - 1), indent); + }; + this.$getIndent = function (line) { + return line.match(/^\s*/)[0]; + }; +}).call(MatchingBraceOutdent.prototype); +exports.MatchingBraceOutdent = MatchingBraceOutdent; + +}); + +ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = JavaScriptHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CstyleBehaviour(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "//"; + this.blockComment = { start: "/*", end: "*/" }; + this.$quotes = { '"': '"', "'": "'", "`": "`" }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + var endState = tokenizedLine.state; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + if (state == "start" || state == "no_regex") { + var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); + if (match) { + indent += tab; + } + } + else if (state == "doc-start") { + if (endState == "start" || endState == "no_regex") { + return ""; + } + var match = line.match(/^\s*(\/?)\*/); + if (match) { + if (match[1]) { + indent += " "; + } + indent += "* "; + } + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.createWorker = function (session) { + var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); + worker.attachToDocument(session.getDocument()); + worker.on("annotate", function (results) { + session.setAnnotations(results.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/javascript"; + this.snippetFileId = "ace/snippets/javascript"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; +var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; +var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; +var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; +var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; +var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; +var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; +var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; +var CssHighlightRules = function () { + var keywordMapper = this.createKeywordMapper({ + "support.function": supportFunction, + "support.constant": supportConstant, + "support.type": supportType, + "support.constant.color": supportConstantColor, + "support.constant.fonts": supportConstantFonts + }, "text", true); + this.$rules = { + "start": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" + }, { + token: "string", + regex: "@(?!viewport)", + next: "media" + }, { + token: "keyword", + regex: "#[a-z0-9-_]+" + }, { + token: "keyword", + regex: "%" + }, { + token: "variable", + regex: "\\.[a-z0-9-_]+" + }, { + token: "string", + regex: ":[a-z0-9-_]+" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant", + regex: "[a-z0-9-_]+" + }, { + caseInsensitive: true + }], + "media": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "start" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + token: "string", + regex: ";", + next: "start" + }, { + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" + }], + "comments": [{ + token: "comment", + regex: "\\/\\*", + push: [{ + token: "comment", + regex: "\\*\\/", + next: "pop" + }, { + defaultToken: "comment" + }] + }], + "ruleset": [{ + regex: "-(webkit|ms|moz|o)-", + token: "text" + }, { + token: "punctuation.operator", + regex: "[:;]" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + include: ["strings", "url", "comments"] + }, { + token: ["constant.numeric", "keyword"], + regex: "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant.numeric", + regex: "#[a-f0-9]{6}" + }, { + token: "constant.numeric", + regex: "#[a-f0-9]{3}" + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"], + regex: pseudoElements + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"], + regex: pseudoClasses + }, { + include: "url" + }, { + token: keywordMapper, + regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" + }, { + caseInsensitive: true + }], + url: [{ + token: "support.function", + regex: "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token: "support.function", + regex: "\\)", + next: "pop" + }, { + defaultToken: "string" + }] + }], + strings: [{ + token: "string.start", + regex: "'", + push: [{ + token: "string.end", + regex: "'|$", + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }, { + token: "string.start", + regex: '"', + push: [{ + token: "string.end", + regex: '"|$', + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], + escapes: [{ + token: "constant.language.escape", + regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ + }] + }; + this.normalizeRules(); +}; +oop.inherits(CssHighlightRules, TextHighlightRules); +exports.CssHighlightRules = CssHighlightRules; + +}); + +ace.define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module){"use strict"; +var propertyMap = { + "background": { "#$0": 1 }, + "background-color": { "#$0": 1, "transparent": 1, "fixed": 1 }, + "background-image": { "url('/$0')": 1 }, + "background-repeat": { "repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1 }, + "background-position": { "bottom": 2, "center": 2, "left": 2, "right": 2, "top": 2, "inherit": 2 }, + "background-attachment": { "scroll": 1, "fixed": 1 }, + "background-size": { "cover": 1, "contain": 1 }, + "background-clip": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "background-origin": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "border": { "solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1 }, + "border-color": { "#$0": 1 }, + "border-style": { "solid": 2, "dashed": 2, "dotted": 2, "double": 2, "groove": 2, "hidden": 2, "inherit": 2, "inset": 2, "none": 2, "outset": 2, "ridged": 2 }, + "border-collapse": { "collapse": 1, "separate": 1 }, + "bottom": { "px": 1, "em": 1, "%": 1 }, + "clear": { "left": 1, "right": 1, "both": 1, "none": 1 }, + "color": { "#$0": 1, "rgb(#$00,0,0)": 1 }, + "cursor": { "default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1 }, + "display": { "none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1 }, + "empty-cells": { "show": 1, "hide": 1 }, + "float": { "left": 1, "right": 1, "none": 1 }, + "font-family": { "Arial": 2, "Comic Sans MS": 2, "Consolas": 2, "Courier New": 2, "Courier": 2, "Georgia": 2, "Monospace": 2, "Sans-Serif": 2, "Segoe UI": 2, "Tahoma": 2, "Times New Roman": 2, "Trebuchet MS": 2, "Verdana": 1 }, + "font-size": { "px": 1, "em": 1, "%": 1 }, + "font-weight": { "bold": 1, "normal": 1 }, + "font-style": { "italic": 1, "normal": 1 }, + "font-variant": { "normal": 1, "small-caps": 1 }, + "height": { "px": 1, "em": 1, "%": 1 }, + "left": { "px": 1, "em": 1, "%": 1 }, + "letter-spacing": { "normal": 1 }, + "line-height": { "normal": 1 }, + "list-style-type": { "none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1 }, + "margin": { "px": 1, "em": 1, "%": 1 }, + "margin-right": { "px": 1, "em": 1, "%": 1 }, + "margin-left": { "px": 1, "em": 1, "%": 1 }, + "margin-top": { "px": 1, "em": 1, "%": 1 }, + "margin-bottom": { "px": 1, "em": 1, "%": 1 }, + "max-height": { "px": 1, "em": 1, "%": 1 }, + "max-width": { "px": 1, "em": 1, "%": 1 }, + "min-height": { "px": 1, "em": 1, "%": 1 }, + "min-width": { "px": 1, "em": 1, "%": 1 }, + "overflow": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-x": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-y": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "padding": { "px": 1, "em": 1, "%": 1 }, + "padding-top": { "px": 1, "em": 1, "%": 1 }, + "padding-right": { "px": 1, "em": 1, "%": 1 }, + "padding-bottom": { "px": 1, "em": 1, "%": 1 }, + "padding-left": { "px": 1, "em": 1, "%": 1 }, + "page-break-after": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "page-break-before": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "position": { "absolute": 1, "relative": 1, "fixed": 1, "static": 1 }, + "right": { "px": 1, "em": 1, "%": 1 }, + "table-layout": { "fixed": 1, "auto": 1 }, + "text-decoration": { "none": 1, "underline": 1, "line-through": 1, "blink": 1 }, + "text-align": { "left": 1, "right": 1, "center": 1, "justify": 1 }, + "text-transform": { "capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1 }, + "top": { "px": 1, "em": 1, "%": 1 }, + "vertical-align": { "top": 1, "bottom": 1 }, + "visibility": { "hidden": 1, "visible": 1 }, + "white-space": { "nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1 }, + "width": { "px": 1, "em": 1, "%": 1 }, + "word-spacing": { "normal": 1 }, + "filter": { "alpha(opacity=$0100)": 1 }, + "text-shadow": { "$02px 2px 2px #777": 1 }, + "text-overflow": { "ellipsis-word": 1, "clip": 1, "ellipsis": 1 }, + "-moz-border-radius": 1, + "-moz-border-radius-topright": 1, + "-moz-border-radius-bottomright": 1, + "-moz-border-radius-topleft": 1, + "-moz-border-radius-bottomleft": 1, + "-webkit-border-radius": 1, + "-webkit-border-top-right-radius": 1, + "-webkit-border-top-left-radius": 1, + "-webkit-border-bottom-right-radius": 1, + "-webkit-border-bottom-left-radius": 1, + "-moz-box-shadow": 1, + "-webkit-box-shadow": 1, + "transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-moz-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-webkit-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 } +}; +var CssCompletions = function () { +}; +(function () { + this.completionsDefined = false; + this.defineCompletions = function () { + if (document) { + var style = document.createElement('c').style; + for (var i in style) { + if (typeof style[i] !== 'string') + continue; + var name = i.replace(/[A-Z]/g, function (x) { + return '-' + x.toLowerCase(); + }); + if (!propertyMap.hasOwnProperty(name)) + propertyMap[name] = 1; + } + } + this.completionsDefined = true; + }; + this.getCompletions = function (state, session, pos, prefix) { + if (!this.completionsDefined) { + this.defineCompletions(); + } + if (state === 'ruleset' || session.$mode.$id == "ace/mode/scss") { + var line = session.getLine(pos.row).substr(0, pos.column); + var inParens = /\([^)]*$/.test(line); + if (inParens) { + line = line.substr(line.lastIndexOf('(') + 1); + } + if (/:[^;]+$/.test(line)) { + /([\w\-]+):[^:]*$/.test(line); + return this.getPropertyValueCompletions(state, session, pos, prefix); + } + else { + return this.getPropertyCompletions(state, session, pos, prefix, inParens); + } + } + return []; + }; + this.getPropertyCompletions = function (state, session, pos, prefix, skipSemicolon) { + skipSemicolon = skipSemicolon || false; + var properties = Object.keys(propertyMap); + return properties.map(function (property) { + return { + caption: property, + snippet: property + ': $0' + (skipSemicolon ? '' : ';'), + meta: "property", + score: 1000000 + }; + }); + }; + this.getPropertyValueCompletions = function (state, session, pos, prefix) { + var line = session.getLine(pos.row).substr(0, pos.column); + var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; + if (!property) + return []; + var values = []; + if (property in propertyMap && typeof propertyMap[property] === "object") { + values = Object.keys(propertyMap[property]); + } + return values.map(function (value) { + return { + caption: value, + snippet: value, + meta: "property value", + score: 1000000 + }; + }); + }; +}).call(CssCompletions.prototype); +exports.CssCompletions = CssCompletions; + +}); + +ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Behaviour = require("../behaviour").Behaviour; +var CstyleBehaviour = require("./cstyle").CstyleBehaviour; +var TokenIterator = require("../../token_iterator").TokenIterator; +var CssBehaviour = function () { + this.inherit(CstyleBehaviour); + this.add("colon", "insertion", function (state, action, editor, session, text) { + if (text === ':' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.value.match(/\s+/)) { + token = iterator.stepBackward(); + } + if (token && token.type === 'support.type') { + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + if (rightChar === ':') { + return { + text: '', + selection: [1, 1] + }; + } + if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { + return { + text: ':;', + selection: [1, 1] + }; + } + } + } + }); + this.add("colon", "deletion", function (state, action, editor, session, range) { + var selected = session.doc.getTextRange(range); + if (!range.isMultiLine() && selected === ':') { + var cursor = editor.getCursorPosition(); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.value.match(/\s+/)) { + token = iterator.stepBackward(); + } + if (token && token.type === 'support.type') { + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.end.column, range.end.column + 1); + if (rightChar === ';') { + range.end.column++; + return range; + } + } + } + }); + this.add("semicolon", "insertion", function (state, action, editor, session, text) { + if (text === ';' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + if (rightChar === ';') { + return { + text: '', + selection: [1, 1] + }; + } + } + }); + this.add("!important", "insertion", function (state, action, editor, session, text) { + if (text === '!' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { + return { + text: '!important', + selection: [10, 10] + }; + } + } + }); +}; +oop.inherits(CssBehaviour, CstyleBehaviour); +exports.CssBehaviour = CssBehaviour; + +}); + +ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var CssCompletions = require("./css_completions").CssCompletions; +var CssBehaviour = require("./behaviour/css").CssBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = CssHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CssBehaviour(); + this.$completer = new CssCompletions(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.foldingRules = "cStyle"; + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokens = this.getTokenizer().getLineTokens(line, state).tokens; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + var match = line.match(/^.*\{\s*$/); + if (match) { + indent += tab; + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.getCompletions = function (state, session, pos, prefix) { + return this.$completer.getCompletions(state, session, pos, prefix); + }; + this.createWorker = function (session) { + var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); + worker.attachToDocument(session.getDocument()); + worker.on("annotate", function (e) { + session.setAnnotations(e.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/css"; + this.snippetFileId = "ace/snippets/css"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var XmlHighlightRules = function (normalize) { + var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; + this.$rules = { + start: [ + { token: "string.cdata.xml", regex: "<\\!\\[CDATA\\[", next: "cdata" }, + { + token: ["punctuation.instruction.xml", "keyword.instruction.xml"], + regex: "(<\\?)(" + tagRegex + ")", next: "processing_instruction" + }, + { token: "comment.start.xml", regex: "<\\!--", next: "comment" }, + { + token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], + regex: "(<\\!)(DOCTYPE)(?=[\\s])", next: "doctype", caseInsensitive: true + }, + { include: "tag" }, + { token: "text.end-tag-open.xml", regex: "", + next: "start" + }], + doctype: [ + { include: "whitespace" }, + { include: "string" }, + { token: "xml-pe.doctype.xml", regex: ">", next: "start" }, + { token: "xml-pe.xml", regex: "[-_a-zA-Z0-9:]+" }, + { token: "punctuation.int-subset", regex: "\\[", push: "int_subset" } + ], + int_subset: [{ + token: "text.xml", + regex: "\\s+" + }, { + token: "punctuation.int-subset.xml", + regex: "]", + next: "pop" + }, { + token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], + regex: "(<\\!)(" + tagRegex + ")", + push: [{ + token: "text", + regex: "\\s+" + }, + { + token: "punctuation.markup-decl.xml", + regex: ">", + next: "pop" + }, + { include: "string" }] + }], + cdata: [ + { token: "string.cdata.xml", regex: "\\]\\]>", next: "start" }, + { token: "text.xml", regex: "\\s+" }, + { token: "text.xml", regex: "(?:[^\\]]|\\](?!\\]>))+" } + ], + comment: [ + { token: "comment.end.xml", regex: "-->", next: "start" }, + { defaultToken: "comment.xml" } + ], + reference: [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + attr_reference: [{ + token: "constant.language.escape.reference.attribute-value.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + tag: [{ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], + regex: "(?:(<)|(", next: "start" } + ] + }], + tag_whitespace: [ + { token: "text.tag-whitespace.xml", regex: "\\s+" } + ], + whitespace: [ + { token: "text.whitespace.xml", regex: "\\s+" } + ], + string: [{ + token: "string.xml", + regex: "'", + push: [ + { token: "string.xml", regex: "'", next: "pop" }, + { defaultToken: "string.xml" } + ] + }, { + token: "string.xml", + regex: '"', + push: [ + { token: "string.xml", regex: '"', next: "pop" }, + { defaultToken: "string.xml" } + ] + }], + attributes: [{ + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + include: "tag_whitespace" + }, { + include: "attribute_value" + }], + attribute_value: [{ + token: "string.attribute-value.xml", + regex: "'", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }] + }; + if (this.constructor === XmlHighlightRules) + this.normalizeRules(); +}; +(function () { + this.embedTagRules = function (HighlightRules, prefix, tag) { + this.$rules.tag.unshift({ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(<)(" + tag + "(?=\\s|>|$))", + next: [ + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: prefix + "start" } + ] + }); + this.$rules[tag + "-end"] = [ + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start", + onMatch: function (value, currentState, stack) { + stack.splice(0); + return this.token; + } } + ]; + this.embedRules(HighlightRules, prefix, [{ + token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(|$))", + next: tag + "-end" + }, { + token: "string.cdata.xml", + regex: "<\\!\\[CDATA\\[" + }, { + token: "string.cdata.xml", + regex: "\\]\\]>" + }]); + }; +}).call(TextHighlightRules.prototype); +oop.inherits(XmlHighlightRules, TextHighlightRules); +exports.XmlHighlightRules = XmlHighlightRules; + +}); + +ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; +var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; +var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; +var tagMap = lang.createMap({ + a: 'anchor', + button: 'form', + form: 'form', + img: 'image', + input: 'form', + label: 'form', + option: 'form', + script: 'script', + select: 'form', + textarea: 'form', + style: 'style', + table: 'table', + tbody: 'table', + td: 'table', + tfoot: 'table', + th: 'table', + tr: 'table' +}); +var HtmlHighlightRules = function () { + XmlHighlightRules.call(this); + this.addRules({ + attributes: [{ + include: "tag_whitespace" + }, { + token: "entity.other.attribute-name.xml", + regex: "[-_a-zA-Z0-9:.]+" + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=", + push: [{ + include: "tag_whitespace" + }, { + token: "string.unquoted.attribute-value.html", + regex: "[^<>='\"`\\s]+", + next: "pop" + }, { + token: "empty", + regex: "", + next: "pop" + }] + }, { + include: "attribute_value" + }], + tag: [{ + token: function (start, tag) { + var group = tagMap[tag]; + return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", + "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; + }, + regex: "(", next: "start" } + ] + }); + this.embedTagRules(CssHighlightRules, "css-", "style"); + this.embedTagRules(new JavaScriptHighlightRules({ jsx: false }).getRules(), "js-", "script"); + if (this.constructor === HtmlHighlightRules) + this.normalizeRules(); +}; +oop.inherits(HtmlHighlightRules, XmlHighlightRules); +exports.HtmlHighlightRules = HtmlHighlightRules; + +}); + +ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Behaviour = require("../behaviour").Behaviour; +var TokenIterator = require("../../token_iterator").TokenIterator; +var lang = require("../../lib/lang"); +function is(token, type) { + return token && token.type.lastIndexOf(type + ".xml") > -1; +} +var XmlBehaviour = function () { + this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { + if (text == '"' || text == "'") { + var quote = text; + var selected = session.doc.getTextRange(editor.getSelectionRange()); + if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { + return { + text: quote + selected + quote, + selection: false + }; + } + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { + return { + text: "", + selection: [1, 1] + }; + } + if (!token) + token = iterator.stepBackward(); + if (!token) + return; + while (is(token, "tag-whitespace") || is(token, "whitespace")) { + token = iterator.stepBackward(); + } + var rightSpace = !rightChar || rightChar.match(/\s/); + if (is(token, "attribute-equals") && (rightSpace || rightChar == '>') || (is(token, "decl-attribute-equals") && (rightSpace || rightChar == '?'))) { + return { + text: quote + quote, + selection: [1, 1] + }; + } + } + }); + this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { + var selected = session.doc.getTextRange(range); + if (!range.isMultiLine() && (selected == '"' || selected == "'")) { + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.start.column + 1, range.start.column + 2); + if (rightChar == selected) { + range.end.column++; + return range; + } + } + }); + this.add("autoclosing", "insertion", function (state, action, editor, session, text) { + if (text == '>') { + var position = editor.getSelectionRange().start; + var iterator = new TokenIterator(session, position.row, position.column); + var token = iterator.getCurrentToken() || iterator.stepBackward(); + if (!token || !(is(token, "tag-name") || is(token, "tag-whitespace") || is(token, "attribute-name") || is(token, "attribute-equals") || is(token, "attribute-value"))) + return; + if (is(token, "reference.attribute-value")) + return; + if (is(token, "attribute-value")) { + var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; + if (position.column < tokenEndColumn) + return; + if (position.column == tokenEndColumn) { + var nextToken = iterator.stepForward(); + if (nextToken && is(nextToken, "attribute-value")) + return; + iterator.stepBackward(); + } + } + if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) + return; + while (!is(token, "tag-name")) { + token = iterator.stepBackward(); + if (token.value == "<") { + token = iterator.stepForward(); + break; + } + } + var tokenRow = iterator.getCurrentTokenRow(); + var tokenColumn = iterator.getCurrentTokenColumn(); + if (is(iterator.stepBackward(), "end-tag-open")) + return; + var element = token.value; + if (tokenRow == position.row) + element = element.substring(0, position.column - tokenColumn); + if (this.voidElements.hasOwnProperty(element.toLowerCase())) + return; + return { + text: ">" + "", + selection: [1, 1] + }; + } + }); + this.add("autoindent", "insertion", function (state, action, editor, session, text) { + if (text == "\n") { + var cursor = editor.getCursorPosition(); + var line = session.getLine(cursor.row); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.type.indexOf("tag-close") !== -1) { + if (token.value == "/>") + return; + while (token && token.type.indexOf("tag-name") === -1) { + token = iterator.stepBackward(); + } + if (!token) { + return; + } + var tag = token.value; + var row = iterator.getCurrentTokenRow(); + token = iterator.stepBackward(); + if (!token || token.type.indexOf("end-tag") !== -1) { + return; + } + if (this.voidElements && !this.voidElements[tag]) { + var nextToken = session.getTokenAt(cursor.row, cursor.column + 1); + var line = session.getLine(row); + var nextIndent = this.$getIndent(line); + var indent = nextIndent + session.getTabString(); + if (nextToken && nextToken.value === " -1; +} +(function () { + this.getFoldWidget = function (session, foldStyle, row) { + var tag = this._getFirstTagInLine(session, row); + if (!tag) + return this.getCommentFoldWidget(session, row); + if (tag.closing || (!tag.tagName && tag.selfClosing)) + return foldStyle === "markbeginend" ? "end" : ""; + if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) + return ""; + if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) + return ""; + return "start"; + }; + this.getCommentFoldWidget = function (session, row) { + if (/comment/.test(session.getState(row)) && /'; + break; + } + } + return tag; + } + else if (is(token, "tag-close")) { + tag.selfClosing = token.value == '/>'; + return tag; + } + tag.start.column += token.value.length; + } + return null; + }; + this._findEndTagInLine = function (session, row, tagName, startColumn) { + var tokens = session.getTokens(row); + var column = 0; + for (var i = 0; i < tokens.length; i++) { + var token = tokens[i]; + column += token.value.length; + if (column < startColumn) + continue; + if (is(token, "end-tag-open")) { + token = tokens[i + 1]; + if (token && token.value == tagName) + return true; + } + } + return false; + }; + this.getFoldWidgetRange = function (session, foldStyle, row) { + var tags = session.getMatchingTags({ row: row, column: 0 }); + if (tags) { + return new Range(tags.openTag.end.row, tags.openTag.end.column, tags.closeTag.start.row, tags.closeTag.start.column); + } + else { + return this.getCommentFoldWidget(session, row) + && session.getCommentFoldRange(row, session.getLine(row).length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var MixedFoldMode = require("./mixed").FoldMode; +var XmlFoldMode = require("./xml").FoldMode; +var CStyleFoldMode = require("./cstyle").FoldMode; +var FoldMode = exports.FoldMode = function (voidElements, optionalTags) { + MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { + "js-": new CStyleFoldMode(), + "css-": new CStyleFoldMode() + }); +}; +oop.inherits(FoldMode, MixedFoldMode); + +}); + +ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module){"use strict"; +var TokenIterator = require("../token_iterator").TokenIterator; +var commonAttributes = [ + "accesskey", + "class", + "contenteditable", + "contextmenu", + "dir", + "draggable", + "dropzone", + "hidden", + "id", + "inert", + "itemid", + "itemprop", + "itemref", + "itemscope", + "itemtype", + "lang", + "spellcheck", + "style", + "tabindex", + "title", + "translate" +]; +var eventAttributes = [ + "onabort", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextmenu", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onmousewheel", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onscroll", + "onseeked", + "onseeking", + "onselect", + "onshow", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "onvolumechange", + "onwaiting" +]; +var globalAttributes = commonAttributes.concat(eventAttributes); +var attributeMap = { + "a": { "href": 1, "target": { "_blank": 1, "top": 1 }, "ping": 1, "rel": { "nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1 }, "media": 1, "hreflang": 1, "type": 1 }, + "abbr": {}, + "address": {}, + "area": { "shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1 }, + "article": { "pubdate": 1 }, + "aside": {}, + "audio": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "b": {}, + "base": { "href": 1, "target": 1 }, + "bdi": {}, + "bdo": {}, + "blockquote": { "cite": 1 }, + "body": { "onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1 }, + "br": {}, + "button": { "autofocus": 1, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": { "button": 1, "submit": 1 } }, + "canvas": { "width": 1, "height": 1 }, + "caption": {}, + "cite": {}, + "code": {}, + "col": { "span": 1 }, + "colgroup": { "span": 1 }, + "command": { "type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1 }, + "data": {}, + "datalist": {}, + "dd": {}, + "del": { "cite": 1, "datetime": 1 }, + "details": { "open": 1 }, + "dfn": {}, + "dialog": { "open": 1 }, + "div": {}, + "dl": {}, + "dt": {}, + "em": {}, + "embed": { "src": 1, "height": 1, "width": 1, "type": 1 }, + "fieldset": { "disabled": 1, "form": 1, "name": 1 }, + "figcaption": {}, + "figure": {}, + "footer": {}, + "form": { "accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": { "multipart/form-data": 1, "application/x-www-form-urlencoded": 1 }, "method": { "get": 1, "post": 1 }, "name": 1, "novalidate": 1, "target": { "_blank": 1, "top": 1 } }, + "h1": {}, + "h2": {}, + "h3": {}, + "h4": {}, + "h5": {}, + "h6": {}, + "head": {}, + "header": {}, + "hr": {}, + "html": { "manifest": 1 }, + "i": {}, + "iframe": { "name": 1, "src": 1, "height": 1, "width": 1, "sandbox": { "allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1 }, "seamless": { "seamless": 1 } }, + "img": { "alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1 }, + "input": { + "type": { "text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1 }, + "accept": 1, "alt": 1, "autocomplete": { "on": 1, "off": 1 }, "autofocus": { "autofocus": 1 }, "checked": { "checked": 1 }, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": { "application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1 }, "formmethod": { "get": 1, "post": 1 }, "formnovalidate": { "formnovalidate": 1 }, "formtarget": { "_blank": 1, "_self": 1, "_parent": 1, "_top": 1 }, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": { "multiple": 1 }, "name": 1, "pattern": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1 + }, + "ins": { "cite": 1, "datetime": 1 }, + "kbd": {}, + "keygen": { "autofocus": 1, "challenge": { "challenge": 1 }, "disabled": { "disabled": 1 }, "form": 1, "keytype": { "rsa": 1, "dsa": 1, "ec": 1 }, "name": 1 }, + "label": { "form": 1, "for": 1 }, + "legend": {}, + "li": { "value": 1 }, + "link": { "href": 1, "hreflang": 1, "rel": { "stylesheet": 1, "icon": 1 }, "media": { "all": 1, "screen": 1, "print": 1 }, "type": { "text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1 }, "sizes": 1 }, + "main": {}, + "map": { "name": 1 }, + "mark": {}, + "math": {}, + "menu": { "type": 1, "label": 1 }, + "meta": { "http-equiv": { "content-type": 1 }, "name": { "description": 1, "keywords": 1 }, "content": { "text/html; charset=UTF-8": 1 }, "charset": 1 }, + "meter": { "value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1 }, + "nav": {}, + "noscript": { "href": 1 }, + "object": { "param": 1, "data": 1, "type": 1, "height": 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1 }, + "ol": { "start": 1, "reversed": 1 }, + "optgroup": { "disabled": 1, "label": 1 }, + "option": { "disabled": 1, "selected": 1, "label": 1, "value": 1 }, + "output": { "for": 1, "form": 1, "name": 1 }, + "p": {}, + "param": { "name": 1, "value": 1 }, + "pre": {}, + "progress": { "value": 1, "max": 1 }, + "q": { "cite": 1 }, + "rp": {}, + "rt": {}, + "ruby": {}, + "s": {}, + "samp": {}, + "script": { "charset": 1, "type": { "text/javascript": 1 }, "src": 1, "defer": 1, "async": 1 }, + "select": { "autofocus": 1, "disabled": 1, "form": 1, "multiple": { "multiple": 1 }, "name": 1, "size": 1, "readonly": { "readonly": 1 } }, + "small": {}, + "source": { "src": 1, "type": 1, "media": 1 }, + "span": {}, + "strong": {}, + "style": { "type": 1, "media": { "all": 1, "screen": 1, "print": 1 }, "scoped": 1 }, + "sub": {}, + "sup": {}, + "svg": {}, + "table": { "summary": 1 }, + "tbody": {}, + "td": { "headers": 1, "rowspan": 1, "colspan": 1 }, + "textarea": { "autofocus": { "autofocus": 1 }, "disabled": { "disabled": 1 }, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "rows": 1, "cols": 1, "wrap": { "on": 1, "off": 1, "hard": 1, "soft": 1 } }, + "tfoot": {}, + "th": { "headers": 1, "rowspan": 1, "colspan": 1, "scope": 1 }, + "thead": {}, + "time": { "datetime": 1 }, + "title": {}, + "tr": {}, + "track": { "kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1 }, + "section": {}, + "summary": {}, + "u": {}, + "ul": {}, + "var": {}, + "video": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "width": 1, "height": 1, "poster": 1, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "wbr": {} +}; +var elements = Object.keys(attributeMap); +function is(token, type) { + return token.type.lastIndexOf(type + ".xml") > -1; +} +function findTagName(session, pos) { + var iterator = new TokenIterator(session, pos.row, pos.column); + var token = iterator.getCurrentToken(); + while (token && !is(token, "tag-name")) { + token = iterator.stepBackward(); + } + if (token) + return token.value; +} +function findAttributeName(session, pos) { + var iterator = new TokenIterator(session, pos.row, pos.column); + var token = iterator.getCurrentToken(); + while (token && !is(token, "attribute-name")) { + token = iterator.stepBackward(); + } + if (token) + return token.value; +} +var HtmlCompletions = function () { +}; +(function () { + this.getCompletions = function (state, session, pos, prefix) { + var token = session.getTokenAt(pos.row, pos.column); + if (!token) + return []; + if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) + return this.getTagCompletions(state, session, pos, prefix); + if (is(token, "tag-whitespace") || is(token, "attribute-name")) + return this.getAttributeCompletions(state, session, pos, prefix); + if (is(token, "attribute-value")) + return this.getAttributeValueCompletions(state, session, pos, prefix); + var line = session.getLine(pos.row).substr(0, pos.column); + if (/&[a-z]*$/i.test(line)) + return this.getHTMLEntityCompletions(state, session, pos, prefix); + return []; + }; + this.getTagCompletions = function (state, session, pos, prefix) { + return elements.map(function (element) { + return { + value: element, + meta: "tag", + score: 1000000 + }; + }); + }; + this.getAttributeCompletions = function (state, session, pos, prefix) { + var tagName = findTagName(session, pos); + if (!tagName) + return []; + var attributes = globalAttributes; + if (tagName in attributeMap) { + attributes = attributes.concat(Object.keys(attributeMap[tagName])); + } + return attributes.map(function (attribute) { + return { + caption: attribute, + snippet: attribute + '="$0"', + meta: "attribute", + score: 1000000 + }; + }); + }; + this.getAttributeValueCompletions = function (state, session, pos, prefix) { + var tagName = findTagName(session, pos); + var attributeName = findAttributeName(session, pos); + if (!tagName) + return []; + var values = []; + if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { + values = Object.keys(attributeMap[tagName][attributeName]); + } + return values.map(function (value) { + return { + caption: value, + snippet: value, + meta: "attribute value", + score: 1000000 + }; + }); + }; + this.getHTMLEntityCompletions = function (state, session, pos, prefix) { + var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;']; + return values.map(function (value) { + return { + caption: value, + snippet: value, + meta: "html entity", + score: 1000000 + }; + }); + }; +}).call(HtmlCompletions.prototype); +exports.HtmlCompletions = HtmlCompletions; + +}); + +ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextMode = require("./text").Mode; +var JavaScriptMode = require("./javascript").Mode; +var CssMode = require("./css").Mode; +var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; +var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; +var HtmlFoldMode = require("./folding/html").FoldMode; +var HtmlCompletions = require("./html_completions").HtmlCompletions; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; +var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; +var Mode = function (options) { + this.fragmentContext = options && options.fragmentContext; + this.HighlightRules = HtmlHighlightRules; + this.$behaviour = new XmlBehaviour(); + this.$completer = new HtmlCompletions(); + this.createModeDelegates({ + "js-": JavaScriptMode, + "css-": CssMode + }); + this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); +}; +oop.inherits(Mode, TextMode); +(function () { + this.blockComment = { start: "" }; + this.voidElements = lang.arrayToMap(voidElements); + this.getNextLineIndent = function (state, line, tab) { + return this.$getIndent(line); + }; + this.checkOutdent = function (state, line, input) { + return false; + }; + this.getCompletions = function (state, session, pos, prefix) { + return this.$completer.getCompletions(state, session, pos, prefix); + }; + this.createWorker = function (session) { + if (this.constructor != Mode) + return; + var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker"); + worker.attachToDocument(session.getDocument()); + if (this.fragmentContext) + worker.call("setOptions", [{ context: this.fragmentContext }]); + worker.on("error", function (e) { + session.setAnnotations(e.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/html"; + this.snippetFileId = "ace/snippets/html"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +ace.define("ace/mode/velocity_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/html_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; +var VelocityHighlightRules = function () { + HtmlHighlightRules.call(this); + var builtinConstants = lang.arrayToMap(('true|false|null').split('|')); + var builtinFunctions = lang.arrayToMap(("_DateTool|_DisplayTool|_EscapeTool|_FieldTool|_MathTool|_NumberTool|_SerializerTool|_SortTool|_StringTool|_XPathTool").split('|')); + var builtinVariables = lang.arrayToMap(('$contentRoot|$foreach').split('|')); + var keywords = lang.arrayToMap(("#set|#macro|#include|#parse|" + + "#if|#elseif|#else|#foreach|" + + "#break|#end|#stop").split('|')); + this.$rules.start.push({ + token: "comment", + regex: "##.*$" + }, { + token: "comment.block", + regex: "#\\*", + next: "vm_comment" + }, { + token: "string.regexp", + regex: "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)" + }, { + token: "string", + regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + }, { + token: "string", + regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + }, { + token: "constant.numeric", + regex: "0[xX][0-9a-fA-F]+\\b" + }, { + token: "constant.numeric", + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token: "constant.language.boolean", + regex: "(?:true|false)\\b" + }, { + token: function (value) { + if (keywords.hasOwnProperty(value)) + return "keyword"; + else if (builtinConstants.hasOwnProperty(value)) + return "constant.language"; + else if (builtinVariables.hasOwnProperty(value)) + return "variable.language"; + else if (builtinFunctions.hasOwnProperty(value) || builtinFunctions.hasOwnProperty(value.substring(1))) + return "support.function"; + else if (value == "debugger") + return "invalid.deprecated"; + else if (value.match(/^(\$[a-zA-Z_][a-zA-Z0-9_]*)$/)) + return "variable"; + return "identifier"; + }, + regex: "[a-zA-Z$#][a-zA-Z0-9_]*\\b" + }, { + token: "keyword.operator", + regex: "!|&|\\*|\\-|\\+|=|!=|<=|>=|<|>|&&|\\|\\|" + }, { + token: "lparen", + regex: "[[({]" + }, { + token: "rparen", + regex: "[\\])}]" + }, { + token: "text", + regex: "\\s+" + }); + this.$rules["vm_comment"] = [ + { + token: "comment", + regex: "\\*#|-->", + next: "start" + }, { + defaultToken: "comment" + } + ]; + this.$rules["vm_start"] = [ + { + token: "variable", + regex: "}", + next: "pop" + }, { + token: "string.regexp", + regex: "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)" + }, { + token: "string", + regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + }, { + token: "string", + regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + }, { + token: "constant.numeric", + regex: "0[xX][0-9a-fA-F]+\\b" + }, { + token: "constant.numeric", + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token: "constant.language.boolean", + regex: "(?:true|false)\\b" + }, { + token: function (value) { + if (keywords.hasOwnProperty(value)) + return "keyword"; + else if (builtinConstants.hasOwnProperty(value)) + return "constant.language"; + else if (builtinVariables.hasOwnProperty(value)) + return "variable.language"; + else if (builtinFunctions.hasOwnProperty(value) || builtinFunctions.hasOwnProperty(value.substring(1))) + return "support.function"; + else if (value == "debugger") + return "invalid.deprecated"; + else if (value.match(/^(\$[a-zA-Z_$][a-zA-Z0-9_]*)$/)) + return "variable"; + return "identifier"; + }, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token: "keyword.operator", + regex: "!|&|\\*|\\-|\\+|=|!=|<=|>=|<|>|&&|\\|\\|" + }, { + token: "lparen", + regex: "[[({]" + }, { + token: "rparen", + regex: "[\\])}]" + }, { + token: "text", + regex: "\\s+" + } + ]; + for (var i in this.$rules) { + this.$rules[i].unshift({ + token: "variable", + regex: "\\${", + push: "vm_start" + }); + } + this.normalizeRules(); +}; +oop.inherits(VelocityHighlightRules, TextHighlightRules); +exports.VelocityHighlightRules = VelocityHighlightRules; + +}); + +ace.define("ace/mode/folding/velocity",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var BaseFoldMode = require("./fold_mode").FoldMode; +var Range = require("../../range").Range; +var FoldMode = exports.FoldMode = function () { }; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.getFoldWidgetRange = function (session, foldStyle, row) { + var range = this.indentationBlock(session, row); + if (range) + return range; + var re = /\S/; + var line = session.getLine(row); + var startLevel = line.search(re); + if (startLevel == -1 || line[startLevel] != "##") + return; + var startColumn = line.length; + var maxRow = session.getLength(); + var startRow = row; + var endRow = row; + while (++row < maxRow) { + line = session.getLine(row); + var level = line.search(re); + if (level == -1) + continue; + if (line[level] != "##") + break; + endRow = row; + } + if (endRow > startRow) { + var endColumn = session.getLine(endRow).length; + return new Range(startRow, startColumn, endRow, endColumn); + } + }; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + var indent = line.search(/\S/); + var next = session.getLine(row + 1); + var prev = session.getLine(row - 1); + var prevIndent = prev.search(/\S/); + var nextIndent = next.search(/\S/); + if (indent == -1) { + session.foldWidgets[row - 1] = prevIndent != -1 && prevIndent < nextIndent ? "start" : ""; + return ""; + } + if (prevIndent == -1) { + if (indent == nextIndent && line[indent] == "##" && next[indent] == "##") { + session.foldWidgets[row - 1] = ""; + session.foldWidgets[row + 1] = ""; + return "start"; + } + } + else if (prevIndent == indent && line[indent] == "##" && prev[indent] == "##") { + if (session.getLine(row - 2).search(/\S/) == -1) { + session.foldWidgets[row - 1] = "start"; + session.foldWidgets[row + 1] = ""; + return ""; + } + } + if (prevIndent != -1 && prevIndent < indent) + session.foldWidgets[row - 1] = "start"; + else + session.foldWidgets[row - 1] = ""; + if (indent < nextIndent) + return "start"; + else + return ""; + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/velocity",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/velocity_highlight_rules","ace/mode/folding/velocity"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ +"use strict"; +var oop = require("../lib/oop"); +var HtmlMode = require("./html").Mode; +var VelocityHighlightRules = require("./velocity_highlight_rules").VelocityHighlightRules; +var FoldMode = require("./folding/velocity").FoldMode; +var Mode = function () { + HtmlMode.call(this); + this.HighlightRules = VelocityHighlightRules; + this.foldingRules = new FoldMode(); +}; +oop.inherits(Mode, HtmlMode); +(function () { + this.lineCommentStart = "##"; + this.blockComment = { start: "#*", end: "*#" }; + this.$id = "ace/mode/velocity"; + this.snippetFileId = "ace/snippets/velocity"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/velocity"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/ad5c4f70b45e47d623fee743299c075b.js.gz b/web/dist/ad5c4f70b45e47d623fee743299c075b.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..1c768186b67d9f02667eb611be82f08f9abff580 GIT binary patch literal 22957 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 z z+_pX<*7k7%?{0=|F3B!psSEJ5z+5l*U7E8vLK4Ro4TUBN?Ixi0)D4mUJ+nr*w+=% zP&voK|4h+Ptsl*{wx47;Z8tv)UB{Q2v=J?|Ar8o&6q+iWHW}JG!Id}Zf}%cqA8zcx zFTt>=27R5TepqeY03#x`R_oDqbu>kJH3fROF_${r04J?Aqt%8j#gJ#yj( zsO8lfyW#e>Lv4#C8=}IFsI4TftwgseYO5*O7Iyohq@y)=-trAF*4W1N8BLM=P z=KeJ8+)8&322ZaGpKzYf^X#JeVcg6iC_;4Efh#JsRMfHTaM;(Lb}cJr+A?J2f|dP4 zBlpX4$@2al+|%Dg`n^5A*ZirZrtXq~0$X=}Pw#&Gp~s>iRmm?z(%SkrxR6x$Rt*)j zo=A@wAx10M#NOa|uhBi8vb%obp6@-NJ6zU-JU#Z~1N2bkp?WgD2+)I8+T<;0x>)1NNd7+o)H!qx6zKDx~J3IKg+t;G0q9xV% z30T7VIy_2T200oxd4Pb>9n@gD;w24x|8I=p6?tAMMB1KXfJ|!4iYVa<9P8@~B^Um( z5#!y7T>o)tF1vyS)0yBG(o2g?voGQeokxVa$x)Tq`nnt(ny>H%8V# z@lJn9xFRpzHWc}6Z#qlJrV7bPUqCk$P>5z8lR)_DD?RON9gah}Oi*|qtKu~&lQi|d z+u$_&p|uJC5zFw$AsNWPGxAyFV!CY>wFU=miy>Q8WT(1F)k{=W?|CT8+(eDPw%eG0 zUAIZtTZ!_8V^C77@+I(fShMx>j;L#ZwF1KIM9au=9^IuoI6RMTNktkl>m1bV<+4)4 z<)_SU`#{KDEz{z$%j(Vf8mqXO0lT*iojv*P-Er&fyYG)$KfOL~z5em! zE1KOlt6A->Bc^9QVEjZk<~eb#J$6PlGcLwX_SS+T~OMd-1E_ oyP5{XYr~MMr|M`es$YY|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|=", + next: "start" + }, { + token: "punctuation.operator", + regex: "\\?|\\:|\\,|\\;|\\.", + next: "start" + }, { + token: "paren.lparen", + regex: "[({\\[]", + next: "start" + }, { + token: "paren.rparen", + regex: "[\\]})]" + }, { + token: "text", + regex: "\\s+" + }, { + token: "text", + regex: "$", + next: "start" + }], + blockComment: [{ + regex: "^\\s*%{\\s*$", + token: "comment.start", + push: "blockComment" + }, { + regex: "^\\s*%}\\s*$", + token: "comment.end", + next: "pop" + }, { + defaultToken: "comment" + }] + }; + this.normalizeRules(); +}; +oop.inherits(MatlabHighlightRules, TextHighlightRules); +exports.MatlabHighlightRules = MatlabHighlightRules; + +}); + +ace.define("ace/mode/matlab",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/matlab_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var MatlabHighlightRules = require("./matlab_highlight_rules").MatlabHighlightRules; +var Mode = function () { + this.HighlightRules = MatlabHighlightRules; + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "%"; + this.blockComment = { start: "%{", end: "%}" }; + this.$id = "ace/mode/matlab"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/matlab"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/af1de9b532b5108926ebe8f8dbe98c9d.js.gz b/web/dist/af1de9b532b5108926ebe8f8dbe98c9d.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..136ba1c7867453691a263cde0e2338142b7c1f59 GIT binary patch literal 9483 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/, + next: "start" + }, { + token: "keyword.operator", + regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next: "start" + }, { + token: "punctuation.operator", + regex: /[?:,;.]/, + next: "start" + }, { + token: "paren.lparen", + regex: /[\[({]/, + next: "start" + }, { + token: "paren.rparen", + regex: /[\])}]/ + }, { + token: "comment", + regex: /^#!.*$/ + } + ], + property: [{ + token: "text", + regex: "\\s+" + }, { + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()", + next: "function_arguments" + }, { + token: "punctuation.operator", + regex: /[.](?![.])/ + }, { + token: "support.function", + regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ + }, { + token: "support.function.dom", + regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ + }, { + token: "support.constant", + regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ + }, { + token: "identifier", + regex: identifierRe + }, { + regex: "", + token: "empty", + next: "no_regex" + } + ], + "start": [ + DocCommentHighlightRules.getStartRule("doc-start"), + comments("start"), + { + token: "string.regexp", + regex: "\\/", + next: "regex" + }, { + token: "text", + regex: "\\s+|^$", + next: "start" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "regex": [ + { + token: "regexp.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "string.regexp", + regex: "/[sxngimy]*", + next: "no_regex" + }, { + token: "invalid", + regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ + }, { + token: "constant.language.escape", + regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ + }, { + token: "constant.language.delimiter", + regex: /\|/ + }, { + token: "constant.language.escape", + regex: /\[\^?/, + next: "regex_character_class" + }, { + token: "empty", + regex: "$", + next: "no_regex" + }, { + defaultToken: "string.regexp" + } + ], + "regex_character_class": [ + { + token: "regexp.charclass.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "constant.language.escape", + regex: "]", + next: "regex" + }, { + token: "constant.language.escape", + regex: "-" + }, { + token: "empty", + regex: "$", + next: "no_regex" + }, { + defaultToken: "string.regexp.charachterclass" + } + ], + "default_parameter": [ + { + token: "string", + regex: "'(?=.)", + push: [ + { + token: "string", + regex: "'|$", + next: "pop" + }, { + include: "qstring" + } + ] + }, { + token: "string", + regex: '"(?=.)', + push: [ + { + token: "string", + regex: '"|$', + next: "pop" + }, { + include: "qqstring" + } + ] + }, { + token: "constant.language", + regex: "null|Infinity|NaN|undefined" + }, { + token: "constant.numeric", + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + }, { + token: "punctuation.operator", + regex: ",", + next: "function_arguments" + }, { + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "function_arguments": [ + comments("function_arguments"), + { + token: "variable.parameter", + regex: identifierRe + }, { + token: "punctuation.operator", + regex: "," + }, { + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: '"|$', + next: "no_regex" + }, { + defaultToken: "string" + } + ], + "qstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: "'|$", + next: "no_regex" + }, { + defaultToken: "string" + } + ] + }; + if (!options || !options.noES6) { + this.$rules.no_regex.unshift({ + regex: "[{}]", onMatch: function (val, state, stack) { + this.next = val == "{" ? this.nextState : ""; + if (val == "{" && stack.length) { + stack.unshift("start", state); + } + else if (val == "}" && stack.length) { + stack.shift(); + this.next = stack.shift(); + if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) + return "paren.quasi.end"; + } + return val == "{" ? "paren.lparen" : "paren.rparen"; + }, + nextState: "start" + }, { + token: "string.quasi.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedRe + }, { + token: "paren.quasi.start", + regex: /\${/, + push: "start" + }, { + token: "string.quasi.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string.quasi" + }] + }, { + token: ["variable.parameter", "text"], + regex: "(" + identifierRe + ")(\\s*)(?=\\=>)" + }, { + token: "paren.lparen", + regex: "(\\()(?=.+\\s*=>)", + next: "function_arguments" + }, { + token: "variable.language", + regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b" + }); + this.$rules["function_arguments"].unshift({ + token: "keyword.operator", + regex: "=", + next: "default_parameter" + }, { + token: "keyword.operator", + regex: "\\.{3}" + }); + this.$rules["property"].unshift({ + token: "support.function", + regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|" + + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()" + }, { + token: "constant.language", + regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b" + }); + if (!options || options.jsx != false) + JSX.call(this); + } + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]); + this.normalizeRules(); +}; +oop.inherits(JavaScriptHighlightRules, TextHighlightRules); +function JSX() { + var tagRegex = identifierRe.replace("\\d", "\\d\\-"); + var jsxTag = { + onMatch: function (val, state, stack) { + var offset = val.charAt(1) == "/" ? 2 : 1; + if (offset == 1) { + if (state != this.nextState) + stack.unshift(this.next, this.nextState, 0); + else + stack.unshift(this.next); + stack[2]++; + } + else if (offset == 2) { + if (state == this.nextState) { + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.shift(); + stack.shift(); + } + } + } + return [{ + type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", + value: val.slice(0, offset) + }, { + type: "meta.tag.tag-name.xml", + value: val.substr(offset) + }]; + }, + regex: "", + onMatch: function (value, currentState, stack) { + if (currentState == stack[0]) + stack.shift(); + if (value.length == 2) { + if (stack[0] == this.nextState) + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.splice(0, 2); + } + } + this.next = stack[0] || "start"; + return [{ type: this.token, value: value }]; + }, + nextState: "jsx" + }, + jsxJsRule, + comments("jsxAttributes"), + { + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + token: "text.tag-whitespace.xml", + regex: "\\s+" + }, { + token: "string.attribute-value.xml", + regex: "'", + stateName: "jsx_attr_q", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + stateName: "jsx_attr_qq", + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, + jsxTag + ]; + this.$rules.reference = [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }]; +} +function comments(next) { + return [ + { + token: "comment", + regex: /\/\*/, + next: [ + DocCommentHighlightRules.getTagRule(), + { token: "comment", regex: "\\*\\/", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } + ] + }, { + token: "comment", + regex: "\\/\\/", + next: [ + DocCommentHighlightRules.getTagRule(), + { token: "comment", regex: "$|^", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } + ] + } + ]; +} +exports.JavaScriptHighlightRules = JavaScriptHighlightRules; + +}); + +ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) + return false; + return /^\s*\}/.test(input); + }; + this.autoOutdent = function (doc, row) { + var line = doc.getLine(row); + var match = line.match(/^(\s*\})/); + if (!match) + return 0; + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; + var indent = this.$getIndent(doc.getLine(openBracePos.row)); + doc.replace(new Range(row, 0, row, column - 1), indent); + }; + this.$getIndent = function (line) { + return line.match(/^\s*/)[0]; + }; +}).call(MatchingBraceOutdent.prototype); +exports.MatchingBraceOutdent = MatchingBraceOutdent; + +}); + +ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = JavaScriptHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CstyleBehaviour(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "//"; + this.blockComment = { start: "/*", end: "*/" }; + this.$quotes = { '"': '"', "'": "'", "`": "`" }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + var endState = tokenizedLine.state; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + if (state == "start" || state == "no_regex") { + var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); + if (match) { + indent += tab; + } + } + else if (state == "doc-start") { + if (endState == "start" || endState == "no_regex") { + return ""; + } + var match = line.match(/^\s*(\/?)\*/); + if (match) { + if (match[1]) { + indent += " "; + } + indent += "* "; + } + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.createWorker = function (session) { + var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); + worker.attachToDocument(session.getDocument()); + worker.on("annotate", function (results) { + session.setAnnotations(results.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/javascript"; + this.snippetFileId = "ace/snippets/javascript"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; +var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; +var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; +var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; +var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; +var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; +var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; +var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; +var CssHighlightRules = function () { + var keywordMapper = this.createKeywordMapper({ + "support.function": supportFunction, + "support.constant": supportConstant, + "support.type": supportType, + "support.constant.color": supportConstantColor, + "support.constant.fonts": supportConstantFonts + }, "text", true); + this.$rules = { + "start": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" + }, { + token: "string", + regex: "@(?!viewport)", + next: "media" + }, { + token: "keyword", + regex: "#[a-z0-9-_]+" + }, { + token: "keyword", + regex: "%" + }, { + token: "variable", + regex: "\\.[a-z0-9-_]+" + }, { + token: "string", + regex: ":[a-z0-9-_]+" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant", + regex: "[a-z0-9-_]+" + }, { + caseInsensitive: true + }], + "media": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "start" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + token: "string", + regex: ";", + next: "start" + }, { + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" + }], + "comments": [{ + token: "comment", + regex: "\\/\\*", + push: [{ + token: "comment", + regex: "\\*\\/", + next: "pop" + }, { + defaultToken: "comment" + }] + }], + "ruleset": [{ + regex: "-(webkit|ms|moz|o)-", + token: "text" + }, { + token: "punctuation.operator", + regex: "[:;]" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + include: ["strings", "url", "comments"] + }, { + token: ["constant.numeric", "keyword"], + regex: "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant.numeric", + regex: "#[a-f0-9]{6}" + }, { + token: "constant.numeric", + regex: "#[a-f0-9]{3}" + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"], + regex: pseudoElements + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"], + regex: pseudoClasses + }, { + include: "url" + }, { + token: keywordMapper, + regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" + }, { + caseInsensitive: true + }], + url: [{ + token: "support.function", + regex: "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token: "support.function", + regex: "\\)", + next: "pop" + }, { + defaultToken: "string" + }] + }], + strings: [{ + token: "string.start", + regex: "'", + push: [{ + token: "string.end", + regex: "'|$", + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }, { + token: "string.start", + regex: '"', + push: [{ + token: "string.end", + regex: '"|$', + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], + escapes: [{ + token: "constant.language.escape", + regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ + }] + }; + this.normalizeRules(); +}; +oop.inherits(CssHighlightRules, TextHighlightRules); +exports.CssHighlightRules = CssHighlightRules; + +}); + +ace.define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module){"use strict"; +var propertyMap = { + "background": { "#$0": 1 }, + "background-color": { "#$0": 1, "transparent": 1, "fixed": 1 }, + "background-image": { "url('/$0')": 1 }, + "background-repeat": { "repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1 }, + "background-position": { "bottom": 2, "center": 2, "left": 2, "right": 2, "top": 2, "inherit": 2 }, + "background-attachment": { "scroll": 1, "fixed": 1 }, + "background-size": { "cover": 1, "contain": 1 }, + "background-clip": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "background-origin": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "border": { "solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1 }, + "border-color": { "#$0": 1 }, + "border-style": { "solid": 2, "dashed": 2, "dotted": 2, "double": 2, "groove": 2, "hidden": 2, "inherit": 2, "inset": 2, "none": 2, "outset": 2, "ridged": 2 }, + "border-collapse": { "collapse": 1, "separate": 1 }, + "bottom": { "px": 1, "em": 1, "%": 1 }, + "clear": { "left": 1, "right": 1, "both": 1, "none": 1 }, + "color": { "#$0": 1, "rgb(#$00,0,0)": 1 }, + "cursor": { "default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1 }, + "display": { "none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1 }, + "empty-cells": { "show": 1, "hide": 1 }, + "float": { "left": 1, "right": 1, "none": 1 }, + "font-family": { "Arial": 2, "Comic Sans MS": 2, "Consolas": 2, "Courier New": 2, "Courier": 2, "Georgia": 2, "Monospace": 2, "Sans-Serif": 2, "Segoe UI": 2, "Tahoma": 2, "Times New Roman": 2, "Trebuchet MS": 2, "Verdana": 1 }, + "font-size": { "px": 1, "em": 1, "%": 1 }, + "font-weight": { "bold": 1, "normal": 1 }, + "font-style": { "italic": 1, "normal": 1 }, + "font-variant": { "normal": 1, "small-caps": 1 }, + "height": { "px": 1, "em": 1, "%": 1 }, + "left": { "px": 1, "em": 1, "%": 1 }, + "letter-spacing": { "normal": 1 }, + "line-height": { "normal": 1 }, + "list-style-type": { "none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1 }, + "margin": { "px": 1, "em": 1, "%": 1 }, + "margin-right": { "px": 1, "em": 1, "%": 1 }, + "margin-left": { "px": 1, "em": 1, "%": 1 }, + "margin-top": { "px": 1, "em": 1, "%": 1 }, + "margin-bottom": { "px": 1, "em": 1, "%": 1 }, + "max-height": { "px": 1, "em": 1, "%": 1 }, + "max-width": { "px": 1, "em": 1, "%": 1 }, + "min-height": { "px": 1, "em": 1, "%": 1 }, + "min-width": { "px": 1, "em": 1, "%": 1 }, + "overflow": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-x": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-y": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "padding": { "px": 1, "em": 1, "%": 1 }, + "padding-top": { "px": 1, "em": 1, "%": 1 }, + "padding-right": { "px": 1, "em": 1, "%": 1 }, + "padding-bottom": { "px": 1, "em": 1, "%": 1 }, + "padding-left": { "px": 1, "em": 1, "%": 1 }, + "page-break-after": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "page-break-before": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "position": { "absolute": 1, "relative": 1, "fixed": 1, "static": 1 }, + "right": { "px": 1, "em": 1, "%": 1 }, + "table-layout": { "fixed": 1, "auto": 1 }, + "text-decoration": { "none": 1, "underline": 1, "line-through": 1, "blink": 1 }, + "text-align": { "left": 1, "right": 1, "center": 1, "justify": 1 }, + "text-transform": { "capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1 }, + "top": { "px": 1, "em": 1, "%": 1 }, + "vertical-align": { "top": 1, "bottom": 1 }, + "visibility": { "hidden": 1, "visible": 1 }, + "white-space": { "nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1 }, + "width": { "px": 1, "em": 1, "%": 1 }, + "word-spacing": { "normal": 1 }, + "filter": { "alpha(opacity=$0100)": 1 }, + "text-shadow": { "$02px 2px 2px #777": 1 }, + "text-overflow": { "ellipsis-word": 1, "clip": 1, "ellipsis": 1 }, + "-moz-border-radius": 1, + "-moz-border-radius-topright": 1, + "-moz-border-radius-bottomright": 1, + "-moz-border-radius-topleft": 1, + "-moz-border-radius-bottomleft": 1, + "-webkit-border-radius": 1, + "-webkit-border-top-right-radius": 1, + "-webkit-border-top-left-radius": 1, + "-webkit-border-bottom-right-radius": 1, + "-webkit-border-bottom-left-radius": 1, + "-moz-box-shadow": 1, + "-webkit-box-shadow": 1, + "transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-moz-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-webkit-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 } +}; +var CssCompletions = function () { +}; +(function () { + this.completionsDefined = false; + this.defineCompletions = function () { + if (document) { + var style = document.createElement('c').style; + for (var i in style) { + if (typeof style[i] !== 'string') + continue; + var name = i.replace(/[A-Z]/g, function (x) { + return '-' + x.toLowerCase(); + }); + if (!propertyMap.hasOwnProperty(name)) + propertyMap[name] = 1; + } + } + this.completionsDefined = true; + }; + this.getCompletions = function (state, session, pos, prefix) { + if (!this.completionsDefined) { + this.defineCompletions(); + } + if (state === 'ruleset' || session.$mode.$id == "ace/mode/scss") { + var line = session.getLine(pos.row).substr(0, pos.column); + var inParens = /\([^)]*$/.test(line); + if (inParens) { + line = line.substr(line.lastIndexOf('(') + 1); + } + if (/:[^;]+$/.test(line)) { + /([\w\-]+):[^:]*$/.test(line); + return this.getPropertyValueCompletions(state, session, pos, prefix); + } + else { + return this.getPropertyCompletions(state, session, pos, prefix, inParens); + } + } + return []; + }; + this.getPropertyCompletions = function (state, session, pos, prefix, skipSemicolon) { + skipSemicolon = skipSemicolon || false; + var properties = Object.keys(propertyMap); + return properties.map(function (property) { + return { + caption: property, + snippet: property + ': $0' + (skipSemicolon ? '' : ';'), + meta: "property", + score: 1000000 + }; + }); + }; + this.getPropertyValueCompletions = function (state, session, pos, prefix) { + var line = session.getLine(pos.row).substr(0, pos.column); + var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; + if (!property) + return []; + var values = []; + if (property in propertyMap && typeof propertyMap[property] === "object") { + values = Object.keys(propertyMap[property]); + } + return values.map(function (value) { + return { + caption: value, + snippet: value, + meta: "property value", + score: 1000000 + }; + }); + }; +}).call(CssCompletions.prototype); +exports.CssCompletions = CssCompletions; + +}); + +ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Behaviour = require("../behaviour").Behaviour; +var CstyleBehaviour = require("./cstyle").CstyleBehaviour; +var TokenIterator = require("../../token_iterator").TokenIterator; +var CssBehaviour = function () { + this.inherit(CstyleBehaviour); + this.add("colon", "insertion", function (state, action, editor, session, text) { + if (text === ':' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.value.match(/\s+/)) { + token = iterator.stepBackward(); + } + if (token && token.type === 'support.type') { + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + if (rightChar === ':') { + return { + text: '', + selection: [1, 1] + }; + } + if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { + return { + text: ':;', + selection: [1, 1] + }; + } + } + } + }); + this.add("colon", "deletion", function (state, action, editor, session, range) { + var selected = session.doc.getTextRange(range); + if (!range.isMultiLine() && selected === ':') { + var cursor = editor.getCursorPosition(); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.value.match(/\s+/)) { + token = iterator.stepBackward(); + } + if (token && token.type === 'support.type') { + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.end.column, range.end.column + 1); + if (rightChar === ';') { + range.end.column++; + return range; + } + } + } + }); + this.add("semicolon", "insertion", function (state, action, editor, session, text) { + if (text === ';' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + if (rightChar === ';') { + return { + text: '', + selection: [1, 1] + }; + } + } + }); + this.add("!important", "insertion", function (state, action, editor, session, text) { + if (text === '!' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { + return { + text: '!important', + selection: [10, 10] + }; + } + } + }); +}; +oop.inherits(CssBehaviour, CstyleBehaviour); +exports.CssBehaviour = CssBehaviour; + +}); + +ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var CssCompletions = require("./css_completions").CssCompletions; +var CssBehaviour = require("./behaviour/css").CssBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = CssHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CssBehaviour(); + this.$completer = new CssCompletions(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.foldingRules = "cStyle"; + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokens = this.getTokenizer().getLineTokens(line, state).tokens; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + var match = line.match(/^.*\{\s*$/); + if (match) { + indent += tab; + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.getCompletions = function (state, session, pos, prefix) { + return this.$completer.getCompletions(state, session, pos, prefix); + }; + this.createWorker = function (session) { + var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); + worker.attachToDocument(session.getDocument()); + worker.on("annotate", function (e) { + session.setAnnotations(e.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/css"; + this.snippetFileId = "ace/snippets/css"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var XmlHighlightRules = function (normalize) { + var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; + this.$rules = { + start: [ + { token: "string.cdata.xml", regex: "<\\!\\[CDATA\\[", next: "cdata" }, + { + token: ["punctuation.instruction.xml", "keyword.instruction.xml"], + regex: "(<\\?)(" + tagRegex + ")", next: "processing_instruction" + }, + { token: "comment.start.xml", regex: "<\\!--", next: "comment" }, + { + token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], + regex: "(<\\!)(DOCTYPE)(?=[\\s])", next: "doctype", caseInsensitive: true + }, + { include: "tag" }, + { token: "text.end-tag-open.xml", regex: "", + next: "start" + }], + doctype: [ + { include: "whitespace" }, + { include: "string" }, + { token: "xml-pe.doctype.xml", regex: ">", next: "start" }, + { token: "xml-pe.xml", regex: "[-_a-zA-Z0-9:]+" }, + { token: "punctuation.int-subset", regex: "\\[", push: "int_subset" } + ], + int_subset: [{ + token: "text.xml", + regex: "\\s+" + }, { + token: "punctuation.int-subset.xml", + regex: "]", + next: "pop" + }, { + token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], + regex: "(<\\!)(" + tagRegex + ")", + push: [{ + token: "text", + regex: "\\s+" + }, + { + token: "punctuation.markup-decl.xml", + regex: ">", + next: "pop" + }, + { include: "string" }] + }], + cdata: [ + { token: "string.cdata.xml", regex: "\\]\\]>", next: "start" }, + { token: "text.xml", regex: "\\s+" }, + { token: "text.xml", regex: "(?:[^\\]]|\\](?!\\]>))+" } + ], + comment: [ + { token: "comment.end.xml", regex: "-->", next: "start" }, + { defaultToken: "comment.xml" } + ], + reference: [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + attr_reference: [{ + token: "constant.language.escape.reference.attribute-value.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + tag: [{ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], + regex: "(?:(<)|(", next: "start" } + ] + }], + tag_whitespace: [ + { token: "text.tag-whitespace.xml", regex: "\\s+" } + ], + whitespace: [ + { token: "text.whitespace.xml", regex: "\\s+" } + ], + string: [{ + token: "string.xml", + regex: "'", + push: [ + { token: "string.xml", regex: "'", next: "pop" }, + { defaultToken: "string.xml" } + ] + }, { + token: "string.xml", + regex: '"', + push: [ + { token: "string.xml", regex: '"', next: "pop" }, + { defaultToken: "string.xml" } + ] + }], + attributes: [{ + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + include: "tag_whitespace" + }, { + include: "attribute_value" + }], + attribute_value: [{ + token: "string.attribute-value.xml", + regex: "'", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }] + }; + if (this.constructor === XmlHighlightRules) + this.normalizeRules(); +}; +(function () { + this.embedTagRules = function (HighlightRules, prefix, tag) { + this.$rules.tag.unshift({ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(<)(" + tag + "(?=\\s|>|$))", + next: [ + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: prefix + "start" } + ] + }); + this.$rules[tag + "-end"] = [ + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start", + onMatch: function (value, currentState, stack) { + stack.splice(0); + return this.token; + } } + ]; + this.embedRules(HighlightRules, prefix, [{ + token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(|$))", + next: tag + "-end" + }, { + token: "string.cdata.xml", + regex: "<\\!\\[CDATA\\[" + }, { + token: "string.cdata.xml", + regex: "\\]\\]>" + }]); + }; +}).call(TextHighlightRules.prototype); +oop.inherits(XmlHighlightRules, TextHighlightRules); +exports.XmlHighlightRules = XmlHighlightRules; + +}); + +ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; +var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; +var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; +var tagMap = lang.createMap({ + a: 'anchor', + button: 'form', + form: 'form', + img: 'image', + input: 'form', + label: 'form', + option: 'form', + script: 'script', + select: 'form', + textarea: 'form', + style: 'style', + table: 'table', + tbody: 'table', + td: 'table', + tfoot: 'table', + th: 'table', + tr: 'table' +}); +var HtmlHighlightRules = function () { + XmlHighlightRules.call(this); + this.addRules({ + attributes: [{ + include: "tag_whitespace" + }, { + token: "entity.other.attribute-name.xml", + regex: "[-_a-zA-Z0-9:.]+" + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=", + push: [{ + include: "tag_whitespace" + }, { + token: "string.unquoted.attribute-value.html", + regex: "[^<>='\"`\\s]+", + next: "pop" + }, { + token: "empty", + regex: "", + next: "pop" + }] + }, { + include: "attribute_value" + }], + tag: [{ + token: function (start, tag) { + var group = tagMap[tag]; + return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", + "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; + }, + regex: "(", next: "start" } + ] + }); + this.embedTagRules(CssHighlightRules, "css-", "style"); + this.embedTagRules(new JavaScriptHighlightRules({ jsx: false }).getRules(), "js-", "script"); + if (this.constructor === HtmlHighlightRules) + this.normalizeRules(); +}; +oop.inherits(HtmlHighlightRules, XmlHighlightRules); +exports.HtmlHighlightRules = HtmlHighlightRules; + +}); + +ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Behaviour = require("../behaviour").Behaviour; +var TokenIterator = require("../../token_iterator").TokenIterator; +var lang = require("../../lib/lang"); +function is(token, type) { + return token && token.type.lastIndexOf(type + ".xml") > -1; +} +var XmlBehaviour = function () { + this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { + if (text == '"' || text == "'") { + var quote = text; + var selected = session.doc.getTextRange(editor.getSelectionRange()); + if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { + return { + text: quote + selected + quote, + selection: false + }; + } + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { + return { + text: "", + selection: [1, 1] + }; + } + if (!token) + token = iterator.stepBackward(); + if (!token) + return; + while (is(token, "tag-whitespace") || is(token, "whitespace")) { + token = iterator.stepBackward(); + } + var rightSpace = !rightChar || rightChar.match(/\s/); + if (is(token, "attribute-equals") && (rightSpace || rightChar == '>') || (is(token, "decl-attribute-equals") && (rightSpace || rightChar == '?'))) { + return { + text: quote + quote, + selection: [1, 1] + }; + } + } + }); + this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { + var selected = session.doc.getTextRange(range); + if (!range.isMultiLine() && (selected == '"' || selected == "'")) { + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.start.column + 1, range.start.column + 2); + if (rightChar == selected) { + range.end.column++; + return range; + } + } + }); + this.add("autoclosing", "insertion", function (state, action, editor, session, text) { + if (text == '>') { + var position = editor.getSelectionRange().start; + var iterator = new TokenIterator(session, position.row, position.column); + var token = iterator.getCurrentToken() || iterator.stepBackward(); + if (!token || !(is(token, "tag-name") || is(token, "tag-whitespace") || is(token, "attribute-name") || is(token, "attribute-equals") || is(token, "attribute-value"))) + return; + if (is(token, "reference.attribute-value")) + return; + if (is(token, "attribute-value")) { + var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; + if (position.column < tokenEndColumn) + return; + if (position.column == tokenEndColumn) { + var nextToken = iterator.stepForward(); + if (nextToken && is(nextToken, "attribute-value")) + return; + iterator.stepBackward(); + } + } + if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) + return; + while (!is(token, "tag-name")) { + token = iterator.stepBackward(); + if (token.value == "<") { + token = iterator.stepForward(); + break; + } + } + var tokenRow = iterator.getCurrentTokenRow(); + var tokenColumn = iterator.getCurrentTokenColumn(); + if (is(iterator.stepBackward(), "end-tag-open")) + return; + var element = token.value; + if (tokenRow == position.row) + element = element.substring(0, position.column - tokenColumn); + if (this.voidElements.hasOwnProperty(element.toLowerCase())) + return; + return { + text: ">" + "", + selection: [1, 1] + }; + } + }); + this.add("autoindent", "insertion", function (state, action, editor, session, text) { + if (text == "\n") { + var cursor = editor.getCursorPosition(); + var line = session.getLine(cursor.row); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.type.indexOf("tag-close") !== -1) { + if (token.value == "/>") + return; + while (token && token.type.indexOf("tag-name") === -1) { + token = iterator.stepBackward(); + } + if (!token) { + return; + } + var tag = token.value; + var row = iterator.getCurrentTokenRow(); + token = iterator.stepBackward(); + if (!token || token.type.indexOf("end-tag") !== -1) { + return; + } + if (this.voidElements && !this.voidElements[tag]) { + var nextToken = session.getTokenAt(cursor.row, cursor.column + 1); + var line = session.getLine(row); + var nextIndent = this.$getIndent(line); + var indent = nextIndent + session.getTabString(); + if (nextToken && nextToken.value === " -1; +} +(function () { + this.getFoldWidget = function (session, foldStyle, row) { + var tag = this._getFirstTagInLine(session, row); + if (!tag) + return this.getCommentFoldWidget(session, row); + if (tag.closing || (!tag.tagName && tag.selfClosing)) + return foldStyle === "markbeginend" ? "end" : ""; + if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) + return ""; + if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) + return ""; + return "start"; + }; + this.getCommentFoldWidget = function (session, row) { + if (/comment/.test(session.getState(row)) && /'; + break; + } + } + return tag; + } + else if (is(token, "tag-close")) { + tag.selfClosing = token.value == '/>'; + return tag; + } + tag.start.column += token.value.length; + } + return null; + }; + this._findEndTagInLine = function (session, row, tagName, startColumn) { + var tokens = session.getTokens(row); + var column = 0; + for (var i = 0; i < tokens.length; i++) { + var token = tokens[i]; + column += token.value.length; + if (column < startColumn) + continue; + if (is(token, "end-tag-open")) { + token = tokens[i + 1]; + if (token && token.value == tagName) + return true; + } + } + return false; + }; + this.getFoldWidgetRange = function (session, foldStyle, row) { + var tags = session.getMatchingTags({ row: row, column: 0 }); + if (tags) { + return new Range(tags.openTag.end.row, tags.openTag.end.column, tags.closeTag.start.row, tags.closeTag.start.column); + } + else { + return this.getCommentFoldWidget(session, row) + && session.getCommentFoldRange(row, session.getLine(row).length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var MixedFoldMode = require("./mixed").FoldMode; +var XmlFoldMode = require("./xml").FoldMode; +var CStyleFoldMode = require("./cstyle").FoldMode; +var FoldMode = exports.FoldMode = function (voidElements, optionalTags) { + MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { + "js-": new CStyleFoldMode(), + "css-": new CStyleFoldMode() + }); +}; +oop.inherits(FoldMode, MixedFoldMode); + +}); + +ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module){"use strict"; +var TokenIterator = require("../token_iterator").TokenIterator; +var commonAttributes = [ + "accesskey", + "class", + "contenteditable", + "contextmenu", + "dir", + "draggable", + "dropzone", + "hidden", + "id", + "inert", + "itemid", + "itemprop", + "itemref", + "itemscope", + "itemtype", + "lang", + "spellcheck", + "style", + "tabindex", + "title", + "translate" +]; +var eventAttributes = [ + "onabort", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextmenu", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onmousewheel", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onscroll", + "onseeked", + "onseeking", + "onselect", + "onshow", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "onvolumechange", + "onwaiting" +]; +var globalAttributes = commonAttributes.concat(eventAttributes); +var attributeMap = { + "a": { "href": 1, "target": { "_blank": 1, "top": 1 }, "ping": 1, "rel": { "nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1 }, "media": 1, "hreflang": 1, "type": 1 }, + "abbr": {}, + "address": {}, + "area": { "shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1 }, + "article": { "pubdate": 1 }, + "aside": {}, + "audio": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "b": {}, + "base": { "href": 1, "target": 1 }, + "bdi": {}, + "bdo": {}, + "blockquote": { "cite": 1 }, + "body": { "onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1 }, + "br": {}, + "button": { "autofocus": 1, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": { "button": 1, "submit": 1 } }, + "canvas": { "width": 1, "height": 1 }, + "caption": {}, + "cite": {}, + "code": {}, + "col": { "span": 1 }, + "colgroup": { "span": 1 }, + "command": { "type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1 }, + "data": {}, + "datalist": {}, + "dd": {}, + "del": { "cite": 1, "datetime": 1 }, + "details": { "open": 1 }, + "dfn": {}, + "dialog": { "open": 1 }, + "div": {}, + "dl": {}, + "dt": {}, + "em": {}, + "embed": { "src": 1, "height": 1, "width": 1, "type": 1 }, + "fieldset": { "disabled": 1, "form": 1, "name": 1 }, + "figcaption": {}, + "figure": {}, + "footer": {}, + "form": { "accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": { "multipart/form-data": 1, "application/x-www-form-urlencoded": 1 }, "method": { "get": 1, "post": 1 }, "name": 1, "novalidate": 1, "target": { "_blank": 1, "top": 1 } }, + "h1": {}, + "h2": {}, + "h3": {}, + "h4": {}, + "h5": {}, + "h6": {}, + "head": {}, + "header": {}, + "hr": {}, + "html": { "manifest": 1 }, + "i": {}, + "iframe": { "name": 1, "src": 1, "height": 1, "width": 1, "sandbox": { "allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1 }, "seamless": { "seamless": 1 } }, + "img": { "alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1 }, + "input": { + "type": { "text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1 }, + "accept": 1, "alt": 1, "autocomplete": { "on": 1, "off": 1 }, "autofocus": { "autofocus": 1 }, "checked": { "checked": 1 }, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": { "application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1 }, "formmethod": { "get": 1, "post": 1 }, "formnovalidate": { "formnovalidate": 1 }, "formtarget": { "_blank": 1, "_self": 1, "_parent": 1, "_top": 1 }, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": { "multiple": 1 }, "name": 1, "pattern": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1 + }, + "ins": { "cite": 1, "datetime": 1 }, + "kbd": {}, + "keygen": { "autofocus": 1, "challenge": { "challenge": 1 }, "disabled": { "disabled": 1 }, "form": 1, "keytype": { "rsa": 1, "dsa": 1, "ec": 1 }, "name": 1 }, + "label": { "form": 1, "for": 1 }, + "legend": {}, + "li": { "value": 1 }, + "link": { "href": 1, "hreflang": 1, "rel": { "stylesheet": 1, "icon": 1 }, "media": { "all": 1, "screen": 1, "print": 1 }, "type": { "text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1 }, "sizes": 1 }, + "main": {}, + "map": { "name": 1 }, + "mark": {}, + "math": {}, + "menu": { "type": 1, "label": 1 }, + "meta": { "http-equiv": { "content-type": 1 }, "name": { "description": 1, "keywords": 1 }, "content": { "text/html; charset=UTF-8": 1 }, "charset": 1 }, + "meter": { "value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1 }, + "nav": {}, + "noscript": { "href": 1 }, + "object": { "param": 1, "data": 1, "type": 1, "height": 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1 }, + "ol": { "start": 1, "reversed": 1 }, + "optgroup": { "disabled": 1, "label": 1 }, + "option": { "disabled": 1, "selected": 1, "label": 1, "value": 1 }, + "output": { "for": 1, "form": 1, "name": 1 }, + "p": {}, + "param": { "name": 1, "value": 1 }, + "pre": {}, + "progress": { "value": 1, "max": 1 }, + "q": { "cite": 1 }, + "rp": {}, + "rt": {}, + "ruby": {}, + "s": {}, + "samp": {}, + "script": { "charset": 1, "type": { "text/javascript": 1 }, "src": 1, "defer": 1, "async": 1 }, + "select": { "autofocus": 1, "disabled": 1, "form": 1, "multiple": { "multiple": 1 }, "name": 1, "size": 1, "readonly": { "readonly": 1 } }, + "small": {}, + "source": { "src": 1, "type": 1, "media": 1 }, + "span": {}, + "strong": {}, + "style": { "type": 1, "media": { "all": 1, "screen": 1, "print": 1 }, "scoped": 1 }, + "sub": {}, + "sup": {}, + "svg": {}, + "table": { "summary": 1 }, + "tbody": {}, + "td": { "headers": 1, "rowspan": 1, "colspan": 1 }, + "textarea": { "autofocus": { "autofocus": 1 }, "disabled": { "disabled": 1 }, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "rows": 1, "cols": 1, "wrap": { "on": 1, "off": 1, "hard": 1, "soft": 1 } }, + "tfoot": {}, + "th": { "headers": 1, "rowspan": 1, "colspan": 1, "scope": 1 }, + "thead": {}, + "time": { "datetime": 1 }, + "title": {}, + "tr": {}, + "track": { "kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1 }, + "section": {}, + "summary": {}, + "u": {}, + "ul": {}, + "var": {}, + "video": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "width": 1, "height": 1, "poster": 1, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "wbr": {} +}; +var elements = Object.keys(attributeMap); +function is(token, type) { + return token.type.lastIndexOf(type + ".xml") > -1; +} +function findTagName(session, pos) { + var iterator = new TokenIterator(session, pos.row, pos.column); + var token = iterator.getCurrentToken(); + while (token && !is(token, "tag-name")) { + token = iterator.stepBackward(); + } + if (token) + return token.value; +} +function findAttributeName(session, pos) { + var iterator = new TokenIterator(session, pos.row, pos.column); + var token = iterator.getCurrentToken(); + while (token && !is(token, "attribute-name")) { + token = iterator.stepBackward(); + } + if (token) + return token.value; +} +var HtmlCompletions = function () { +}; +(function () { + this.getCompletions = function (state, session, pos, prefix) { + var token = session.getTokenAt(pos.row, pos.column); + if (!token) + return []; + if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) + return this.getTagCompletions(state, session, pos, prefix); + if (is(token, "tag-whitespace") || is(token, "attribute-name")) + return this.getAttributeCompletions(state, session, pos, prefix); + if (is(token, "attribute-value")) + return this.getAttributeValueCompletions(state, session, pos, prefix); + var line = session.getLine(pos.row).substr(0, pos.column); + if (/&[a-z]*$/i.test(line)) + return this.getHTMLEntityCompletions(state, session, pos, prefix); + return []; + }; + this.getTagCompletions = function (state, session, pos, prefix) { + return elements.map(function (element) { + return { + value: element, + meta: "tag", + score: 1000000 + }; + }); + }; + this.getAttributeCompletions = function (state, session, pos, prefix) { + var tagName = findTagName(session, pos); + if (!tagName) + return []; + var attributes = globalAttributes; + if (tagName in attributeMap) { + attributes = attributes.concat(Object.keys(attributeMap[tagName])); + } + return attributes.map(function (attribute) { + return { + caption: attribute, + snippet: attribute + '="$0"', + meta: "attribute", + score: 1000000 + }; + }); + }; + this.getAttributeValueCompletions = function (state, session, pos, prefix) { + var tagName = findTagName(session, pos); + var attributeName = findAttributeName(session, pos); + if (!tagName) + return []; + var values = []; + if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { + values = Object.keys(attributeMap[tagName][attributeName]); + } + return values.map(function (value) { + return { + caption: value, + snippet: value, + meta: "attribute value", + score: 1000000 + }; + }); + }; + this.getHTMLEntityCompletions = function (state, session, pos, prefix) { + var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;']; + return values.map(function (value) { + return { + caption: value, + snippet: value, + meta: "html entity", + score: 1000000 + }; + }); + }; +}).call(HtmlCompletions.prototype); +exports.HtmlCompletions = HtmlCompletions; + +}); + +ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextMode = require("./text").Mode; +var JavaScriptMode = require("./javascript").Mode; +var CssMode = require("./css").Mode; +var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; +var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; +var HtmlFoldMode = require("./folding/html").FoldMode; +var HtmlCompletions = require("./html_completions").HtmlCompletions; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; +var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; +var Mode = function (options) { + this.fragmentContext = options && options.fragmentContext; + this.HighlightRules = HtmlHighlightRules; + this.$behaviour = new XmlBehaviour(); + this.$completer = new HtmlCompletions(); + this.createModeDelegates({ + "js-": JavaScriptMode, + "css-": CssMode + }); + this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); +}; +oop.inherits(Mode, TextMode); +(function () { + this.blockComment = { start: "" }; + this.voidElements = lang.arrayToMap(voidElements); + this.getNextLineIndent = function (state, line, tab) { + return this.$getIndent(line); + }; + this.checkOutdent = function (state, line, input) { + return false; + }; + this.getCompletions = function (state, session, pos, prefix) { + return this.$completer.getCompletions(state, session, pos, prefix); + }; + this.createWorker = function (session) { + if (this.constructor != Mode) + return; + var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker"); + worker.attachToDocument(session.getDocument()); + if (this.fragmentContext) + worker.call("setOptions", [{ context: this.fragmentContext }]); + worker.on("error", function (e) { + session.setAnnotations(e.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/html"; + this.snippetFileId = "ace/snippets/html"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +ace.define("ace/mode/smarty_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules"], function(require, exports, module){/* This file was autogenerated from https://raw.github.com/amitsnyderman/sublime-smarty/master/Syntaxes/Smarty.tmLanguage (uuid: ) */ +"use strict"; +var oop = require("../lib/oop"); +var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; +var SmartyHighlightRules = function () { + HtmlHighlightRules.call(this); + var smartyRules = { start: [{ include: '#comments' }, + { include: '#blocks' }], + '#blocks': [{ token: 'punctuation.section.embedded.begin.smarty', + regex: '\\{%?', + push: [{ token: 'punctuation.section.embedded.end.smarty', + regex: '%?\\}', + next: 'pop' }, + { include: '#strings' }, + { include: '#variables' }, + { include: '#lang' }, + { defaultToken: 'source.smarty' }] }], + '#comments': [{ token: ['punctuation.definition.comment.smarty', + 'comment.block.smarty'], + regex: '(\\{%?)(\\*)', + push: [{ token: 'comment.block.smarty', regex: '\\*%?\\}', next: 'pop' }, + { defaultToken: 'comment.block.smarty' }] }], + '#lang': [{ token: 'keyword.operator.smarty', + regex: '(?:!=|!|<=|>=|<|>|===|==|%|&&|\\|\\|)|\\b(?:and|or|eq|neq|ne|gte|gt|ge|lte|lt|le|not|mod)\\b' }, + { token: 'constant.language.smarty', + regex: '\\b(?:TRUE|FALSE|true|false)\\b' }, + { token: 'keyword.control.smarty', + regex: '\\b(?:if|else|elseif|foreach|foreachelse|section|switch|case|break|default)\\b' }, + { token: 'variable.parameter.smarty', regex: '\\b[a-zA-Z]+=' }, + { token: 'support.function.built-in.smarty', + regex: '\\b(?:capture|config_load|counter|cycle|debug|eval|fetch|include_php|include|insert|literal|math|strip|rdelim|ldelim|assign|constant|block|html_[a-z_]*)\\b' }, + { token: 'support.function.variable-modifier.smarty', + regex: '\\|(?:capitalize|cat|count_characters|count_paragraphs|count_sentences|count_words|date_format|default|escape|indent|lower|nl2br|regex_replace|replace|spacify|string_format|strip_tags|strip|truncate|upper|wordwrap)' }], + '#strings': [{ token: 'punctuation.definition.string.begin.smarty', + regex: '\'', + push: [{ token: 'punctuation.definition.string.end.smarty', + regex: '\'', + next: 'pop' }, + { token: 'constant.character.escape.smarty', regex: '\\\\.' }, + { defaultToken: 'string.quoted.single.smarty' }] }, + { token: 'punctuation.definition.string.begin.smarty', + regex: '"', + push: [{ token: 'punctuation.definition.string.end.smarty', + regex: '"', + next: 'pop' }, + { token: 'constant.character.escape.smarty', regex: '\\\\.' }, + { defaultToken: 'string.quoted.double.smarty' }] }], + '#variables': [{ token: ['punctuation.definition.variable.smarty', + 'variable.other.global.smarty'], + regex: '\\b(\\$)(Smarty\\.)' }, + { token: ['punctuation.definition.variable.smarty', + 'variable.other.smarty'], + regex: '(\\$)([a-zA-Z_][a-zA-Z0-9_]*)\\b' }, + { token: ['keyword.operator.smarty', 'variable.other.property.smarty'], + regex: '(->)([a-zA-Z_][a-zA-Z0-9_]*)\\b' }, + { token: ['keyword.operator.smarty', + 'meta.function-call.object.smarty', + 'punctuation.definition.variable.smarty', + 'variable.other.smarty', + 'punctuation.definition.variable.smarty'], + regex: '(->)([a-zA-Z_][a-zA-Z0-9_]*)(\\()(.*?)(\\))' }] }; + var smartyStart = smartyRules.start; + for (var rule in this.$rules) { + this.$rules[rule].unshift.apply(this.$rules[rule], smartyStart); + } + Object.keys(smartyRules).forEach(function (x) { + if (!this.$rules[x]) + this.$rules[x] = smartyRules[x]; + }, this); + this.normalizeRules(); +}; +SmartyHighlightRules.metaData = { fileTypes: ['tpl'], + foldingStartMarker: '\\{%?', + foldingStopMarker: '%?\\}', + name: 'Smarty', + scopeName: 'text.html.smarty' }; +oop.inherits(SmartyHighlightRules, HtmlHighlightRules); +exports.SmartyHighlightRules = SmartyHighlightRules; + +}); + +ace.define("ace/mode/smarty",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/smarty_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var HtmlMode = require("./html").Mode; +var SmartyHighlightRules = require("./smarty_highlight_rules").SmartyHighlightRules; +var Mode = function () { + HtmlMode.call(this); + this.HighlightRules = SmartyHighlightRules; +}; +oop.inherits(Mode, HtmlMode); +(function () { + this.$id = "ace/mode/smarty"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/smarty"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/b036b967d8279eb68e21b6624846b420.js.gz b/web/dist/b036b967d8279eb68e21b6624846b420.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..401eb7fd8313abffd35e23812558b21738271d43 GIT binary patch literal 22574 zcmV(_K-9kxa5 zij2A>L2{$zF0;GT#e&XnKXU=Fz}~o&r6hfxrnLxQaTyE-GXr2S@F!w06|*1`y{= zVKCm02WagZ-Pn6<%gJ92jW;M4o+M5L)mof>Z33hVkcn2YR#KgV#-bBmN=2kPe;bKMia|M5lte}=<{r^EH*$NrQ4a6N#tTKfy~7DCyDSg@i+TZ&k_PqF7U^p7=(T_Ujyd=fzW-CB>t8BDvm?p zNAhbZFJG&M<(o_-J}?>i-Fi6|iF`NySxhqdUd&%zuH-Qcb2OLVC-LQ#Jic0v<4|@x zyC@M}0<^$gCs5WE0^RTYrASvmYV!YLQ2zM#Tm1KJkY>8@t3UndmLU+o0=xkTufy2S zzIe(|Q{>No;>epQd-7)!)L9_--yDM4-D-ab@)8)^)#wsGtD&MKn>-<1Ah=ei75U>-edFvE!>K^Dnv32jKJ^`r-W>4wL|z ziU~|&_%2Nd=Ef?HfNCYQuRfZP^$|KDgYAyfG0r&rNL`WJps0ooWQ(3wO<0sdr@g@lT-AX*El zG!6I-1t4b{OA$gYVA*~cUdb7ZgvLy{+F&MwNXGaVga?oS1S4@FSuV-+BEYt?MFKs` zk}HWlg)GpLggGlO7D0$T2aHX{cs-wsieW!J1&kwiJe8-wDc2Md>BI-5ts@nnIv^*a z6F!$JnS_3t0%@$55}2Qerm0NVz(pi8dc}Ad5vs_OLlxj2S!Kca2oL1m*BSY}ei&U_esr9do_ z0Wt(D-?g3b$=;uDOkR=xxtt$zKOMoJ{~BFC-pkvLCt0573;Irfjw&;p{Hgfe`8@Cx z0%{jJQG8138?JR)uQ!a6+v@^j>GNW#u=r5QN7~Dq*tk5=YGz83vSCHF18VTVtH{6_ zXZIIXLt#Pn2~F;FsmY!CCbw_XOdH@Iuxy&tx4!=vi1p<1$B{*1yYeJ{$72t{@mCOh zGTQZq*zU zB>D&Oij^!(FL9^6>iX)+BNxi91`%jhRvo~zU`+8>iO9T6srpepk@j#xI?C^Er|b2G z!-3Z`0$RoEvZjx`-eCiwYoJe!?C<_sxNpW?b=@U=TDUH@tJ6tL4?_C6GyFH>TLpBl zU|oBp(?D$ey2G(GiPoaDy8in^^Y0IrzYS@(gGG*a2>v?xtJ?M={ z2iBqwsQ|ayYdg#fjV+XVr5U?r*9d$4Z65N&OjvAD0gcw%PKmov= zFZ=|Ty|Y+`@mvbp#>#@FfF&<(AYkxSG?jju!n%B`1%R_FS__UnRof%KC9Bb0J{gR9 zM-Skyw_iK{pfy89+0|C-x<(a9w|@A1|IVnctO?XM+waTa?r;}YQrBPH$iu@!iT{@m z@c)PM%iY5x`5gZ|ke`1phwwi+JUWmk4<7#U^GCbG{{I{9|1>&0x;xOf9kZi@y=Q~b z9ky??(S~-1C%x-CZ#LQ7?8v(rZMD2!7B*drRsQsc2ZKis3srtrAvZMXHy%mX=$rZZ zT)O)o9r|~qLmwU3YP5HB|5E?9~?@F8BwBsdeE3?LH8 zkK#l8GLAAlxtWTwpU8QHN0y$%o%%K8SxGbiNV5b1iss%C{7EL{3eD>+26!fD%S~o z{igtsUP2Jhtw5w>57rs$%7-6KL-Fby(CNv@KM&?u_XNk&M+Cl% zr{YB>Um$)FRWd>}`kBN@xQ5<<8npD}autA@BSjF(P*6eaJ9ON18!+JG;AHEBo5OB; zl8$a6{W!Y{#qmOjOnx7))+8FtVZA<_|<^1JBeE?w7j6g!A4C{XtAr(x4TA0?5sPRCB4+a4{Q*rrjCNm$93Il@# z9;8_0)g_;OzVxYga=lzhk@=H_LMsv_qAgwE{K)(O4;|IX6dtz$bxr{bxKHoXnE#Bu z4I&sgUjrpq3Ii*70X3!z8LsC+ln!8E69G}|$#e=mOl6WHM)44m&Lolic`m@@T&|#P zMG78I1%@Q5>Isr7pM1TBRmAr(R&hx{2qY0c!IuhfLL8J>3&0YPHO{BxN`0guM$&o% zXoNDtOrTe1#JMHW0;I{%m)-m{4HGps}aoAS}--7EW~L-L0sQc zEQk1u;%6V@2!?o;3S?_vBW|uF4#DkMnJHey&=AYW>hXLz4Bg&PmzOkdGCn61Qe7g9 zVTydfk$f?RuU`*g)>p1)g&Lw#X72=p>u`h!;(LxB618w~y zm}U#;LWnftPtH6Kt;`NV!heE99l&U9lB#PZ%V1&yo%?bbWF*WolzBux8L_FQn7+xx zQkuSDD$+L)WXL>p;bVm_7eP41FR6SDQwazN`MxfWvzn&Dgr@>fT_mWUoK?Rh$$?Bk ze*NOZi(@7f>93exKEP)jAUsOPlJa#N1I%A5(}mZd>QUM6lNh8C%&PetbwG}_yrLNl zYM-$iQ4Gk-yN2?>AJgPyr2rSqNbK>2LQ6`JW?zd{wg7Dlr(ncNl%NT*PS6TQuGT~hEY46+!@qG1@{efn zNJ5@B5zLUK&r~0$f_I#tDNqZs2STFEyjo>(u6D&Zc5>z6oW?;({3yj*NSY%b0G_T) zx?Y6A94hwbP~-9ceUH=X$>~%1RO#>dPb4(g&=x@wV+D=|DzXHjFppsNvf}oUCpdAT z$!bmb1{O5ELc1Ch=%@^#3f5!HIghVMmJwXX7{~m}7q{%h$4(x{p+RUOCb3<_fC{=I1mdeCOX^uw6mZuZ7G{WA) zgb0~naA^eO6oYDq19>({pFANNAsrIt8V)9_IoSf|f+STESta%Rt2oQzWjkmLL~^e?O347aZVFG7zZJmM*+)@6VnjT&Y4mXe|Z1x z4-uONPUZJFY2~})Hx6AW4K);m9;0ZIQu^9o2B7o(gNOurxnyRXDAu64H?Z}W+}RxDac%6B;A5Muv%vY*B{X*hQL56q4pJ;n<@27Y1NV!A3V>#$6XX)c|?J!{1M2Fh|lA)Dw# zNvMyw4hX`!c>@|r$SV>U6ElO%a7gCslmQCc{ouJpIv`To+ixW={edgc>H>hBhw&K5 z;F2}NC7~0R=3xdT5FsO2;|%ao;j1NY00t!|vaZL-x!(PSg0JM$S4u-9BE~YP9MVL< z&QWa~ zs82U4VE$g!Z+jUlvdw#?`R$#1vS_RPyvep~K;W+$_h7c75zcz0)Q zb;H*%^0ye-YFov6s2Jyi_D3?>GIV`198N8(&r3W0^hOT6t&Iye6TtpSdKt}w<<;oX z*63=S&k@M@py4ofe|Sx%dwWO2>7(Jz$?l_(gg*~|IvR2K;ZLKJqmdjQU4OB6a~lIg zV;Ri*S52VwhDRp{hYz4NPr7g+OrznEJn4B4f7*R?G#GsnD6p&xU|HP6<@Sg2o_l*T z{HfspkFuRkw9bD@2IqG;D<9qoofWPXy5!z=R+oCY^(@BDoIS$hnGG;<-|GPp1f{vj=ox_i@KB4>&nzt?Uve?4;yl6XKoMYBIh@?umb}757FF`Xbf*| zuQY70g_#SAcPBYXyRFg<5IP`e+y#FXO{-jce44FV13nzqqn$m zePDTtIQPT74xJ0p&*aRjLL;__$mkq)pg`yFu+zQnc8>B7w1?b5cJr)M8hd7y`uuZl zXb=kAZ})0+L(ZeSrFP>Ks9w2|vU-Turk%ELwrrbQu4t=>k`~z!4pU?huyssN(}&l2 zaM{WKVeXxeRqDOJ`PS=U6gQ?wC&*5s+l5JY(w zwKQo8JA@3l8tf`k-v3u&uSl(cst58Gylo?YYh2N|2G#YwDeZziyxytEerysqL$G{A~~s4DV44^sw9`@t5$fo=kU4Lf;=1S@=Z%< zwT$cZU923dEzgP#OPSi{%Z_+zU^qJ9|NleyXWkK>vWiT;_0gi@`y^flsmOhKQHvJ8 zvgFE16_}$MA=C2OhlcU68ZYJjsm*9<+2W9Hm$c}#xn8rWs~ar5^Xrnp#QBgo5i8+m zlBRL`5A>>n&Qd6#c0f`Yq{se@OcKyx3urjeL{7$NiyY6N;-4pvWg5)U--n2lznStx z0{Yg@LK2b2;W?f!lN%3Xp8M!z6d2A)3*U0K*N>5B`5=kVgeVL?3U19SyAG`L z@KxhF(CBi|#h&f)EA!{?5dhFoYz8<0QY0fgm={xIpX6?=Z~LJEG=A{sj-QmKRW#wRqxc6F9iK*kR{Mm6C>8sAU{&R|)l6Xp^SIUZL<_ z=W&GshnnOzwN_L?IZvLBc6XnBRI0n#r<4hQ z2{>ukzipxXw#;_3K~=r^tU_t6Q~a)0sC|MU@yYY0y#a$7flXkj?UIHI92uqoGEgYe zN5j{_aAk*PQsv z{UgML;S#&fUXhZ@zzK4j@4{!T;^X?nUdh_)Q<8UPhA>}o8O>i)<%;vV1mU&SU>n7{ ztSVPPgd*b5+7vM$?Ab{GW*)z`4k^rSpstP6>zakXqS;X;7&&4QplY#NNx(=YlQ2%J z$i!Gu96c|5spjBo;CT}^fj!=^3xF)b&We+Vxy0j=J#9BB^V8c?~%;Q47iW!n0 z5V#D&Ivc2_XLT_(MhA`qUl*+7d5V}di`srcU^O9tXM}0Pj5%zf<>E?{rXLxhlI40s zjqV}Armc@0RGt&{_3jkXNfkgtQXa%ptm*WZZsk5niIT2c!C|*;Zw3_UsU5rAz&0yE zD9oDC-Q#tqyVC}*_k&n${C9`gf<&y7Wd@ddIaap;mzQmzcUUui{s%lAAMHN#B*kpM zl{!&*PlgYt2e9Pt;|FW{0pK_JV##nYQrKO$-zOWGShZIJvz50$e6(M+#Ze}aTe!4$ zDa$}oazU=zB$w*V&uF)INH_rA}!S@w{_l}_} zK2d@Cd#~ovipfGu&Z^4cWraQ9lz1`9B1zKo_J0DA{BVB&vOA-Uo>#S~r2V63pA}NE z@T1|4D$NZ%D=jnpbrx5FHH{}gb@7D_6XF4(fQ#cjh#Ed zKYOa;1KmKy&Ye{yZQteb0n~u{JtCn+AA(3>ngtS|kT2HtY=jo;_bh-gpWYFR#08UY zkGk=A&+bmA-+AKgsRk%F+^tr5BBjEq+= z04njd-#Zyz4^M`@k$3Xb@Mbs~dZR}mv(;1L#t=tH|KQ1=SmtN2MnS^Qs3c^XT= zEg+{*NW!0e?+-@_eH@PMQm4SE5WoKjrVv7GYxe1Uuu3@T?yEWIhaiq%M#Fcyt=A;v zRPGuIPGy-UJ7XZos9Qz4ThgMIPq!q+ z@<88~IPuisw#2FG*-V#vXy{f%bAeIWgi_6=ZYzZ_BXJ?4%hRx=0$sy_igUbQmH9m` zTCmNEZ!h&Siz+G(K%z^+C_QmYgT7Q#@6x~IFLqz3V*8who&oCgc6YJ%FIAx;y|h9~ zX|>gW6HQS%?_ss!qJAi;T+qh;bG_awm8X}N$`GdO@%sW(DG0TkM2Is~u@{0uRaATa zuD+`yPD1gaA%;4JR{`|~US`_a$aZsTGG%~*1`hGGY0xJALyiAW=}*DPp^~a^iW*A3 z7S}l4v!~OZs%Ni6xt#846W>Zbr>rqlGm%_-D6o=>iEU;BD(T*B=IbVIlH@x6(SgzO zWxo%KK6cwHs{6X&6dhzh*(dkO8 z)&>BrV)3=V{eAlxys@?IfreMih0ti|QJ1(71Rw2p-QDe9)-hWuUE^7`IzXO0#XjJTsE7MVyv6(+E%Glbi{epBMTUR`g3qFeJw=A-B^B+_?41gA2 zl$5GtqT+QTQy2Essg$j2(vpU*OrZ*ysoui=29?*QPPorQ2`6rPzw=~7?%c^lR-Z4{ zNEF6U-HOy$h^p-&W!$9Fa`WVh1!U!U(}2{DF`je|$Ad=)lD0{QCnK+@@-!|``O-fP z?d~Ctd)>-A581k@0^f2{Rk0PAkBifLC%F~@HQRkhJQ@Zxp)tSwu(^q>FLGxCpF6Y>`{i&*Iwd!!yZOf`4KZ>pB z9=Yme30JiwDDtR_*g7n+1!M07^%T@eD%B+}hkP>^MqIpWFW@N!t#;)IYOBFizV2X}VpH<$+uo^@U4J)5FCcjEd-7@9?wy0m516Ni# zSO;lPx+iH`){VE;zA=WDQ$=OGRQ0{-z}R|44g$(jlbbZ(N`SpVxfoZc?pS>wS!m8% z-PEp+K6Crpbt}h$Oe|9sPDME5>rPR?o_q69e=5jNZ5|I2?U6fATPMY0vmgxnI0RN& zpdV)M(@Wac7jk--zv$|^?trr1eSSKF)BYKTKy*aW%Vj@Z_~3EYQV zE~{Tfl{&`vy-bwxqGJq1d@d5A10CpJ=D{nu^2tfL{?!=KQ36p%7)%{Qq^yvm(Ozla zpCMIR31fal!b%Aunx!j|q$@$MEZJc#V$9I-HUr*VMk?gSVU5T{nc*GyKFke#9tqWn zK1q2i2p?1RX_|Z1FT@o-i>ZY2Vj^RgQh7NFG!Qi=Cjg6Dv($Vz<+Z3dTAL&|`al983cV%3y+u5?&FfFp)3xDGNXcRw%YK z5xV+sb)r-@`Y1>F^$!S4@J}M< zK2j&Q4GH=(3=TQs*GXh~WT!C6=LvEOSjPI}H9mqTbg%K1DWG@#i^?R2bwGkl4^}9^ zK~I3Ep5chyOl)F5`XSTem_X!g>RyA0j%gFjz=hgIYiP7a-XJv6;}==trWVI zn=J%(DNkj5*~Ah=K8pZ#k%{}P_P8Z_+zhb!h=`r3Tt|R1RM4IYDv1Pxiog$wM*ugngyad$P^+reROq3SdUZvA#?7vY7~|W9sDi+Rp{Aq{ltO=C;euWE zKdwoW2vDsEQk+<0pyo6D8%;ob`r$IhZKROCti^c{hq&31;A&+IYSz_79HWjf6&Ynh z`43dJMnS%affnec)0k9)IEiM&mpCUx(;z$p`5i1%)FiF|!BaGb#LpNoDRWd^q6Au^ zSOTgo2ZV@ph?CA1{#igFT=Id4qA*OBbCKtc$vjg9Cm`%7mc=H(i#Kl*%j9mEV&N+#nLg5Gvj9lYxQx0Gz&-r{P74P z&8HayHCs;>Y2eE_=tU{0b+Mc;;xyxoh%%YujauPi^!G|2hn3Xm0+{dB6lH&$5rjaB zpg15tFf@;4aE`CIF>XWuT;QBB0e}`?O7$-yu0IrjKEUd1M(b-}g47=hF(q&i2bV$y zN(B@rBETv{wW^>>BseLghKs{`yf~(i%n>tQc2rjf{7{5>W&_Al&>vlCByekh=?bP$ z4DGVawB{5iP+c5UB*u}|I$4GKivd?f4S}in3U6ZDIda0{IFl9*6o}}^pc+ac0g(a8(0-!cAl%wetGoK{B z@_EEkAGH%sRm6~jVyp5Q976yW1So6+5rLKlya!hgnn-fw=aiBYNeYUHw8tYS7~s1g zV1TOe;3z|x1(E_*csVK*1GreAzQBlQ&cBS$gjBS~KU8@&>wgUjcUsT-_2(|`uZ6T8 zTf>~4#7kUx#p?vuM7V*7gFJ%*ehLf$J?J5WSBnMI{?Bm%3p)G~Z>q#&LWL+&` z`3OJw@FaA30ezGi%#0L-sTczzf)2vEb_I0+R;Q>2Ux+b3l?ZjotAgQx!}#Eu6ZceYu!vkwWAz-Ijj_@Pbi{bDOWx~v zL9dq9zJSfSYK+@)$s7oSAweAo*1#6FUZ!d36tH{{j5(FJmbX6YU)pGg zPvHM%f3ln~mOU>X6nB&M%9+gztOv#USCJWeoM*&?#)cXPw3S${mvpwKa=25TmdnwE z|4jK)P)_K{m4H`ryWzOZ%3pk|GPY4pLr#<%kQD6>K+VG+?FXZ~#cLW3&QM*~4%ZED z`d}BtHt(xB{)d}dz3JYeWAOjeJ9=;)hzlGfuf97dx&1BLRixk0@E_2f3Gl%F>1g*( zEB@mawQ0Yzjrbni4$_UNKe%1J?cY5iiL`yi4Ipm^aiz}?x0vnHpK0vhXNqt8fZ`St z{Lb3kNQBSsuC2{e6Eq(hWT~V=3QI@zel{+_X@T z@N$cs-A@*BvXoOXhZTrK1Cm6}Y4d0*zxfDj3V8-U%Owu)Y9d#eTwO~1m_YUvm%NcY zU&!;Ne+hpe`}tCyU&udtzbB!*xnk0&X1J=n{_{=uo?G~0ixy7oIe zt_=?g6qE$0t#@$LUnOD|TzW?!^p|*w&X0q_QoQ#mBCZ7}Wn6l{lAvpRA+lc1DSq5M z1neTS?zNUW=d0V{mfNU*hs9~>*Lc*F-EgM2sNo~45hY$Dbb8UR`>%Ix7#f#<} zsHNmm_TH%F*LkA#Kh)BS-6%9|SgmaTRQj-Y!ai?@)6w;ly+7Z`lb=k2S9qCqRJtXz z`RS3;-fhjBBYFqCYOlAHw())p=*Fv1(EXnccVljQy+zwZf>L0%O}qJp1z7%EgZB3D zF$A7y$FJSuRS72-?#|{02P%bZwCd_0b7igr<@e71!^b;bU1qjJ;oK&SO=y!9H+rR_ z#`Z?V)xg%ZqOESZ9X7Rq@Kao`kOiQMptX|8&Eu)ICMWKqY`Cxg#DaLyUPl*I0U4m`64B<@Y z+)70+$VgO=vx#BPwdqu$bBaELGr-PF}hm!dVp=Ke5Od!)P#T=1=6dR5|gJ z`M3wM$9wQUcLwua4$iMci6#>^Q&X`eqxFeCwL zXf78{4GvLhsHi>XENnr$A-~$@)l{Q1ArTsLNT<}of@f0))cCi`Y2Pv`LX&69ZHyc8 zIJb;S^8wAywMZb_dEH;K?9`dqXx)uDcJ1nuWe2QMEE7g257`hqDP;2Kl(JK_O}SHq zEGC^ICdD9tFG{t;yM4oIs}k*pHov#ERsL;+Np4@=K0jTNX_?(zC~Kd8i|X|~CC+W+ zIc8L*tSW|=Sv0X4RjpJFDWP{#(bXqbq;#-$Sg@|LZC79m+I271ZC9o}!51&$aVZN` zd|^pP@Dh@q;}!CCxUw=kjrpkrA9NYTLsLe!R85W3RqVQHRkauM@h9HwOHh#zBMBH{)by}doF3; zV62t>d>>m;G783?y1{$+@bQz!g;jxdEtE?xnm$@KIvxWkcil&1h&eUZ=Hg*)krAphbiSdsVm>}@u7}O43+?CkLF@=mpH@@l`R8e%+p#dn?a zw>M5+^#5nHKewGOUDkRDW^YP6{hiKk=W>w6-=d6oi7ypYIa;rIy7Pgxt2$Wt>AQ>Q zdzI2d_`K?lS*1=e+sJiHTj!Uoo-S~wzs}2VC28n4tF@P3P)y(tAEp*xjH+q2h}mj_ z?0K7f^8pno6Pz7#&!^mCJ;c3n_G)FjwMy}Py^4Tq9QCf$b4U86;K$V00bk~;bnpE= zZf7I5_J_TbpYZJz`?0JlC*NG6iqaHN>>QZ^V9&OGN}e1q-_3eEy&ZgTx%lkBO{t;% zgOi`0jS6pfRWynZz+4Rbqg@XQ95ljT@sfn5-@l`+n>~RGTl7RvxPNgdC4&IhDRCk}L8cwo&sq6z2>>D~BeG06sJ;wtS~ z{G#j-E-y7$`YTJE=u$PFGpp=5=r-(u;ZNmrIOQrX&jOUYbI^JC7};pg?c`BsXQy+} z*?G28@gO0->U=;uyHriZkzWc65COvUG5zNba@j*(&7c;k_%=-N4!Dbb00-6dDyC@e zG#shp`o=qXGAg`{V+OSH75I_c9NVhmbEJi83>-n^915a4Ru<8=c+%k!zv&SZRaP)y z)mRPH=GAx&{_eS!0u@u@_9V>jde_r$&G!OXa<;o5PVG(6RR}BnDwcFcH=*$?+4eM@ z-qy#tsicJ$ayrXDW#4~sa<32DRXf+VylZ#8LD8XhlUMF$U)*H>@J98k3|pb!-oVLk zlz+SF8bx27BlZeV*tebh>9j}ZaAb;zM~#WHODr)npD%!Q#54dnEasM3kNg^yoSs`p z4eVeC=RX%3mBGx_TnyDsO8Q>ya`me8s~n@~FV?|Y{^$f( zJ>aJ&Ib5r;(MaGzK-Hq)K$`@ry;q^LaT)D^dcZG1E7!%tba%f}uPQZ!&L+O{CubLa zGVN_t-wJIi2iLd;vToh&R5e^7fb6F|b7XndDKw z9Xz}L4i+`vn|cm16)a1(VjxNJDInT5AlPXQS|Cj{no>_%QNe;PQ}K=(&W*gjYP$Ll z-}(LUoy2|nX?y0AmMTBoQ<%$z7w&F5*HXOm;$ zxShpfTH(0A!qEG7{z_G0YoX9Xdknonao?e0O9YPBpw7HM}mq5moyVQq9{? z|9PS4uFf@`o|;)(sJO+6*RS?&5;Euf!K7dBnIzHjfh6(o^fVI6r`B&GappUF4C!(i z-oax?zrpKAcl@-`kIS&ZMVh&$XZuRa{P}yl28cs+a(ck`)rXgp$Nk}Y2LFvt`lkm2 zbB*2p@~GSFJ4^|`6Nd_~i?>iGNaF(-L3}Y=-BA8=ID9Z1p1l0}#fKO03t!YdQ_9@c z=0v8>Rt^V1;zN^bUd?fP+UZ5-(x&=OTu3)zbD3DYl5fR9ea<0NHUup#F zwv-GDuhn$Yc)7R9Va8NU!hRu*I#xH3ntZqRG-dqh6x#&G<%el=tKGwGT;6nZuh&}@ ztGZy_+FcM%2khB~jsPEczMXd;Yw*<+DYM7Qt~U{+>S{f$SI&9eiRbyORqvT@s>dx4 z;=u@qgVAn7ahDZmecY}RnN<~YdiG+_g&e0UNA>Kp^785$38}5K?RRY~D{{-!hB>d?eJwOmVZ?|UFDwU+qb0YYe!oT6s{PkB2w@}6Z{<{DV2W>;|A3{>|G=)NpOGi(&;M|VQTDQ75-opG z=&QPqAL?ZY3f|K@>p(8X`2_Vh=n$}(*q8gB*MmrrWgd7(ZMZ1Y@X1DQVMZkF)-xA9!nLTOmvstrY5%BVE|nS>H4W5h zuAbD-W}{~3nX4I2)zoa=z-=mLKHA1{SMxk*aND(E!0hVn>TEevKkStbg^GNxW*}Sm zpK9!MllQ4xbQ-I>|4tY9CeN!|FShP`VRf%-DtGp7Rn)+B%0|4Kam*RpOtkF;&?is4 z%I3D8h%RnU>$e9sk#Q9~cQTi^!t1Bc?MA$|pXZN!o$u#V_S%3k40+3l1mrP!cO)2J`y zt4gz^#4^33Ly*SuxqRpqRiZj|XbV;74%8sVDS}$54~;6%NGyz>sE*>}d0o7FSiiB; z(3!i_=gLTmBRZBp=oIdOkgXV6SRSjRxy+xO)fxWL$3eQnC*yjLy+*4)!VdMP!t~Ep z%L)jkiNG_aj`Fu&BsA*(ZE4%3@BOv}o)fuEBU|%vYt3H^Rq^EHUK-IG4F!%_zL!%z zr*e+@95aj(E8XBCvg)j>l-77^xXAA0*brm5s@}pZ>}UVn=jR}sa#fvb-rGqe_MjpM zbO;tAF$s5#FQGXO_)m(*JZ%{!$>Wq{fd?GfKNdhD&x$1*fgYRF) ziPD^avuAjYvx5!}R2l}|lwb*~&mD5!sZ-Db#LX1?V-dPZvAT;fEjIewA!{oa&PoEUBYLTMT2kDR zU$@x8Kl$m)=Z8DP?!WL*diTCOotqIyqwp3`eF_|-ds(4x*lcyozmlx9*eF`F)050- zTu96kwc$~ta#*9Mb?M4Gwn#REUv@i3fV>XPt!clDP93_g9#@N3(*V`U@IhtN1jle( zyb7(aLS1cC1dqI4asD>E>4p;~&DOJ7wiSr)0Z_s>CuWQSf{~YHt zWbuq#1;@(kJn!_M02OJqw8iapzU)Tg@N`PjFuj-CPPiS1jxlt!yHn`}h#)}L4%y1r znA+S{&96lr>nlV2!K=96WGX~wR>1r18>|l)%0e3TBfqo-&HN+rR|e7PD}EZcciWp# zjDX#|$z4v`cq@uHR{JYa|K?W;e?M1(?Td|S^ng5i`K<01l*=wTh_SvaOO0D!o~u*% zKH*BFx#mqUdY^Wsxv3)Vo|_*u{7^U;bdPmQ2(&-l@da!{wZ~XJ)bSu6ZvetX@=M_R zRW8P=h=CVOUAi{kv)Zt$CC2%DhdON6QfUm?qN<}E?^795J8pDWcW}#+>G$jVpl3Nh z(BjTcLXp?P^IiKZ`mL_#bK#tk>Pz~C^rxFxo9;;^`LwvAUw=J+GZo;yB3wk!JGb|u zoIJ1eRH5BHJL0jZRxl=SE1q-{ETBy66GRj-$L;ts7I{!)xVT0wvDyus*xiR}_-r^< zT?Qp8y>=p_z+`JJ&APX%uUt!ww+$-rDw@9JX;nW=oS}z10=6p=zRXzdFrz>loi7Wm zc@0}2?P`RHP^hwD69$*=AF2fF>o}>RHoM`xEU?WW&Eu80ZrJdu?i)4JW(G7l260>< zJXg*SD*OkU*$a$-PAZFY*xO3$c~ChEKUu4BF4HoxsZFoCG0tu=w&ZbtI~1E)^FF?4 zm@n|PSH}%oPqxZAUW2|p-UZbAe{C5D0;L|d?Ht-uyT+Fg_4?3}0_BGC3iX@0xsZQc z5*nSpjg~4WMkrVD#RL7SZqf6xZpCq`+!6t`nxtB*JjX3jx-hkC`n6ka4BxCy-aKoi zHt-ee`_US@!>D^-E?Qcxr+=4Dv1pGfQ2SF|v;Pa2!X1_VlUo1c1=h6xyt|!9Qyg?7 zI7&4+tcB)Q+_l%DH!ZzulvqGye4&_1cAXyi<6{;TZ51*T zF_ZC-IJVbtM!C_Eq9p==YXXScM~05)@b5KNQjiKnSxZCy9j*tn@ot?_~W zslESn;BL0|cx4|8>~*SqT@?-v>}cb`k#+&Jq{oSFd2pmF!QWF%x!=PfP;Kh{8FBkX zS4LKTjWH`J*DREYF#G%gg$)C#bM|88z?VDnnC;v`6-1_@g5@#Q?e94qYVa?F{G|ji z``{_+I{MWQeC*-DVZK}aS;173j&11ooBZvFp?!#)#$J^L8J(B!&GvDLr#OZxPx7V(UPB&9%VkFGRUHF z!2W@6%VxdW*2sRK(v?nLy2@)!6Wkgc2M6{Vm#lPAc%geGuK^cQmY))7tZ>`PtjW<5 zW19g382smuMZ0&~Vyu3o>yTF5JEqdO-L}QxyQJT`{d;b^#IG!pDmTEJrFE^8%y~5r zbBuUf$e!DoEYPO(ZzqK`DHd`uRNmk{Z<*h>yt38jJ!Sjphp!?uoH3l*2B6v)($UQi zJ5H1y#<21h8iDL6)LTs zBx{+Ab)8~mL6X8EX8tCkl~jJD=PapsIqJ_VpH{J)&LI_5alLYFXvn6=4NqSmsN35# zzPP&pQET+P%9c$}c@c$9BF174{fMSyZAiZdhFI*Ln6_|v?Y2cpn>O*RDjGNP6r@EE z82`X!r#w$8&`)-nx($xxM}V7K(MfFlSLY?r9k6P8Di9Iv+ADVq<$ZfgJmN6!fBB$a zv$;=ss=HysT+uzd8)X`9)d|OoW^sceEo>;{(}uPIeP^w2J@E%>^fUNTCr8?MCM50d zR_$ZzO(ErQGZ-}0aZf@YR|W6`Noc8Ece*gK- zv)bY{hfQtvNo?8R&o@4Pw_W#c*{yc)lxI!zD79Pwml%C5k0L(L44>dA9~5uRxeQBq z{3|f6_QZ{&ZjRdRzLp;?t9<9QKsANa#D)W14LNQ#j~b3~3-6H7@jZ`CBlF7N8m-$l zv=x|KBfa~TbjCWrMI+joH!9{mrO)yne6G=!^|Z9c%`*x^UUy<9ytEX3P&`gkvYV={ zPw4|q@egLca{jQTU=-VxD2ba)4HjUxyhA&jSKxxTgTgrc&BUmDt?b9 zjMa^%s_dI#bT8(h(g%Kimc!R`s&myIR^%&j2WD^cWozd(ix$LrNADmuT^(t2Zv>Yu zarDAmw=&Kh07&%UdM5M@!0rSV>8Xi;2!c^Ug9E&O;3QvWFo0{FGz}6HO#J!W&OU|3 z2?&9o4_g! zGhiBDL{7pg5ozkAtSvah*q^#FF(v2Tg*3dsSWYjXU>U=lcLAWJWo%=UlHzr-oQq&e zvH_)pi-oYMZRM|RDsd?fV?ksMKFqwiiwhW{5(y=Oyy5C-I!WTtYBCk#%pNa{JFV~$ zycJ)>7gj6-f#Q^3kC%a+eGL=arqC={0v@LHs(?;AN3E&^`Gp^33JBB{m_}z zMGlJBGADl4D@=bS<&Cu|dtJCzycXotHLyQqTnA`V0K6svb&8Wu$H1h{^aq#`5W=g{ z-4%ky$q9@hWsYLdSwg@Mr~4sHM0!6##n;&aCId&taeRhbgetla;YtP3uoTd)VrVL% zgE84UCqmbOUTXv>(RuV-1ykWCCLIlPG}ud!8oq85iW3V~*^o1HK82a_7+bnF@#&Q4 z%}#=KIrlwX_$v+bB#x75YPC|`AmFEn@h1fk8MRMbe3t=DvS1Pl24uA!PZiGd3~4YG z4&3W$5G%lwNj^UDcs-jL{9*!4Lds~x7?)v8^l)uLoQ%vJCRxg#te6@BAiybq(?La1 z&{^bOrZIyL#i}$FM5=S9dtknsF|;mmOx~_6^~~#G>kIwRlK6Zc9W2ZX>3K( z;A8$R1$E1=Y#mv7b6E0zIV8_MSMniY`NhSjK}y#@`KuM<;Y2?uDklcn=+sIO(L@un zN`Zl1#8WFFib)>kUByIau8?^n2ibz&nIYF!2Z$>$b9RXbG@5f?5$i=T%@&3u;f){% zH|oK58$pUL@_0Ng#1(H$SAOJH7Kh|5q4x7~=|>8=7NW>?jS2@7(={9YI0sRYG_k~o z*{&O72Bj;{8&p&5+Kz`onmK7xC#Lzno*a8rN}z~ytA-gIXof(0LeAHjgHd39VLY$P z8=O0NLnr3IDwb|+tSL2Tc=-_Txnp1Au(Lpf(^Lz^0-PB1sM9JM)R|jH#EQR8l^@h|z{wumUl$kG1wKZtAblk+mddM7vmN)V>G#3T(dSk4}(zS-eLQ^1W*tzSr~r7Y%nzX zs70za53{0uPzij^dZE*S4ucAA&=IYH(If`AT&%kqsbS$(J22-oeqj+}W6|u1tg@2o zSeW{xk7)Tmn;8nQg?CYwv({!L#$sWq-2KpD;Gw8uwJTWH!8%LF zLVqF_aX8JX5Lg{7@0GS{#keN5Yd6)OO-!+lT$#+d0bZD>-~~7V)1o@|ndRpR?R!7dO5t-iS$g&mQ$Yw>- zY$o?DmCt~I)FN1x<_t}_1x%gwE;9g)EmR(!b(Fq#_``?S{r|T3tkL3Z=vWtVS1}ed zFbpH#T|qaSn$ZJ%%k|Q!6LbX|Pf@HKc{$`{a>wJJahHoX5PVQ)^1103bmG>^fW@M$ z`9M4QfxGlDYb4r!)O39=08xdEtIS$671Z$ZsK-X}E@jpp9x7H<<#`ydGo{6t`Mg2x zU)i|V2)(XeujYl^C4t%BEE5KkgDLn+%^pSKfRQ-Mqhvk4vg6LS7AT=kQJZ$$Wk`Wf z9xAR9IU}=~XmwfK?lQT0ObjJ!2_R{L2=7Nb9VMX;D`K50b zHfcO7Za|S^UkAI3t+1=d-^Fxs!K*Z^>l%HF&lBzZi5v4LN)jv-Z50`4%75K?0H|PjaoD#upBYqsn9zT z<^xbv(w=?hOQbhmgDoseiym5qafoW$hA4z=H7nsj{IhKBduH0~-LoaM3R#~!mzY$QTAHAqF=d8Xc zUyt!7dur{NdE{no>w$`GC<`B&+_e;}?qEh*SZTyWBY<0Y!fJ%aOo2~^YJ>Nrx_1AL znYVAe!Q+9V3s1SKQGRNwDP*7CZX7*&xF7IM4Dxx<2>CZ3-hTUvJm7B+b%FQ_cC9XL z+-An8`nB{K!1B+Uo+`PQ3P8I#nh6DO+rk>@qo z;9K>%v|&E9rVe$Gc97RuK?G5-TH)K(CJ$&VJBQtekE z`YH_OoF;VW#XRxPRXtWP6tnbd$vMK+!dIy#v|RCTG*!Q44x`zZRkD&@>MP{xVe| zT%S|$RX%(o556)G3ln;k51+7t_$rJFr3|)+RN&Pr4Z@f^AnY*i^>Ypdn#TUC58tTx zg5!F~L>@?Z=)`4^GPY+?JmWx|_-e>zi9dPrG!OpC1ivuBl(YWDUoN@zc^=}<&AEYv zM)N|Wc_I8HOI0uo1Mcse9DzX|d}A;e?L<$6|WV;|2~1%In4^i zQyowZq^c_Qi`JnOKpT{a3MpDn47DYimJP#A3@s;ymJ{KtB*jvboT}e1R37~sGJcbs zq!UBZ=~#!3C%zu6)Cy{1#ywaLESRGn2Xn=bQa3bHL2fl&`BODgnsVV+sDR3&L<;;q z(SfHr@P!VjG9NX0e(;&dGyS^|iD3TuVWD|;=7zLb2L(mTfe+ujd;gtEj1%s4PG~uu zWiV`<_Cr3E)>cpt+*%LZ4`z0)P3VVwBCV~UqTDsm3X}a0mPA@x;U7#^9k>vICg~rU z&@TDspE+z-R#3_8f9mpAI`BUlQy)#>;%D_6L16Uk_p8U^33`WL{ksbtR$u!pY%V&t zKka9wTU+>4G7ByNHuBk*J^3Nf@97 z#BceEDn4UTzFtZ=^alCG()=y7a%Ky`c9EB9T6J$Vbuv{xMrP%&92aj;^;}uSdsbFO z?f`lN*JGsyrQUCr8RO!W+cMo3!MCZv8xwno)C3xwii zR*(KdcVP_)I%noQEUWHXyK}aD%UVs)vSV~b@4AB;7;_i9(5CG$AV*srR{YHwP01k}Oo*;t=Jg zM6JxRs(gTy{K*zy%6xE0Q@d(E)!j_J&}|^i+AOkng5nn?Z9znH31lOj-F6Gb-|&4H zf3o-xe;rTONG`S$Fq2kvq*=vkT=-S(q+oSZk-b|fMWJ(Y-BCBa52{(#&8Q3|=nh?V zYudtaNdwieLxV3OSWf#qprDfZneUagz(NZdt{~}d>RyF^!(tgj+GtoHrkz<5FFR>po6nSUwL{bNcVWXo@Xg|7X%==9d>0C=v~d9?r8 zE!5IGR{9ve7EiU8D=4`qr8nQGK3$CwHz(F($2)&ez5~;p@>|DNE)rds$9hcJq*9gY zVdNeAJ!EC)#ZMAX#dJXaAO{TBPVLjrJHz4iACGqGUr%q>7&Oqm6+Ski>NGI{};RwYE+ssLX;lukMUdh)lzCC^= z(Y2Z+^=(6A8Y{|nvTakrOrlFM`U7FSIuF{5{-sZ9%FFa3$l%ii)`yZjB}z4-8z9s3 zZb0il(hn%3&8-LHbr5F#cI*!Oi#uoQL`Xo>ESR67Stx|p z=*&h=u0R8UPL0=dDbD>+lG_WZc*5ywvC?75FF(nU?D9g1_hlq9qm@ji0;Ho1`3G-d z%p<8OK@zb`l33W^)6t_1$SZYNW3vzR7t8{YwCTCzo(CDd4G%+@ai>r5nt?xoPNXUU z$7r7TtA$QT(a}#d5jsw{awJ+epVBSFOjCgrDKvqo!8M8u(LJz?!l&az5+J9EAR}?9 zf6>Y=gBAdcQjZ>=^~hA1H8?D z)hm79v)gwr1K4(V7F6B*1V7GHQ@+#ip(cj!YLxO^V-`TMDNh6f* zsC-b)9&hkgEyV{&a$ozIPm5{XtoU%X5-HMdwhHwysy%1w_*)Tv3>S;L(Eo?|v0l!zVX<+Rc)oeXfCAZj9`jkB+J6^Lxb#KRv zh@$eTnK~`YPs(bLWfiFb+#6IQwDQQu-t4J=fu`k`^O3|fR!>SW*krJ5^1W|8?Z(8>u?&PQ<6;GQ@v9=J4KE&Yu7Rnev#j^#U;Xal VP1QrIUhyT%{}1rQE7Vk<0RTYS8Y2Jz literal 0 HcmV?d00001 diff --git a/web/dist/b131314d1ea62fa7bba91a4da8360298.js b/web/dist/b131314d1ea62fa7bba91a4da8360298.js new file mode 100644 index 00000000..a93c94c0 --- /dev/null +++ b/web/dist/b131314d1ea62fa7bba91a4da8360298.js @@ -0,0 +1,9 @@ + +; (function() { + ace.require(["ace/snippets/zeek"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/b17d523e22cd12b9c29e60edc5171b60.js b/web/dist/b17d523e22cd12b9c29e60edc5171b60.js new file mode 100644 index 00000000..07972d98 --- /dev/null +++ b/web/dist/b17d523e22cd12b9c29e60edc5171b60.js @@ -0,0 +1,252 @@ +ace.define("ace/ext/modelist",["require","exports","module"], function(require, exports, module){"use strict"; +var modes = []; +function getModeForPath(path) { + var mode = modesByName.text; + var fileName = path.split(/[\/\\]/).pop(); + for (var i = 0; i < modes.length; i++) { + if (modes[i].supportsFile(fileName)) { + mode = modes[i]; + break; + } + } + return mode; +} +var Mode = function (name, caption, extensions) { + this.name = name; + this.caption = caption; + this.mode = "ace/mode/" + name; + this.extensions = extensions; + var re; + if (/\^/.test(extensions)) { + re = extensions.replace(/\|(\^)?/g, function (a, b) { + return "$|" + (b ? "^" : "^.*\\."); + }) + "$"; + } + else { + re = "^.*\\.(" + extensions + ")$"; + } + this.extRe = new RegExp(re, "gi"); +}; +Mode.prototype.supportsFile = function (filename) { + return filename.match(this.extRe); +}; +var supportedModes = { + ABAP: ["abap"], + ABC: ["abc"], + ActionScript: ["as"], + ADA: ["ada|adb"], + Alda: ["alda"], + Apache_Conf: ["^htaccess|^htgroups|^htpasswd|^conf|htaccess|htgroups|htpasswd"], + Apex: ["apex|cls|trigger|tgr"], + AQL: ["aql"], + AsciiDoc: ["asciidoc|adoc"], + ASL: ["dsl|asl|asl.json"], + Assembly_x86: ["asm|a"], + AutoHotKey: ["ahk"], + BatchFile: ["bat|cmd"], + BibTeX: ["bib"], + C_Cpp: ["cpp|c|cc|cxx|h|hh|hpp|ino"], + C9Search: ["c9search_results"], + Cirru: ["cirru|cr"], + Clojure: ["clj|cljs"], + Cobol: ["CBL|COB"], + coffee: ["coffee|cf|cson|^Cakefile"], + ColdFusion: ["cfm|cfc"], + Crystal: ["cr"], + CSharp: ["cs"], + Csound_Document: ["csd"], + Csound_Orchestra: ["orc"], + Csound_Score: ["sco"], + CSS: ["css"], + Curly: ["curly"], + D: ["d|di"], + Dart: ["dart"], + Diff: ["diff|patch"], + Dockerfile: ["^Dockerfile"], + Dot: ["dot"], + Drools: ["drl"], + Edifact: ["edi"], + Eiffel: ["e|ge"], + EJS: ["ejs"], + Elixir: ["ex|exs"], + Elm: ["elm"], + Erlang: ["erl|hrl"], + Forth: ["frt|fs|ldr|fth|4th"], + Fortran: ["f|f90"], + FSharp: ["fsi|fs|ml|mli|fsx|fsscript"], + FSL: ["fsl"], + FTL: ["ftl"], + Gcode: ["gcode"], + Gherkin: ["feature"], + Gitignore: ["^.gitignore"], + Glsl: ["glsl|frag|vert"], + Gobstones: ["gbs"], + golang: ["go"], + GraphQLSchema: ["gql"], + Groovy: ["groovy"], + HAML: ["haml"], + Handlebars: ["hbs|handlebars|tpl|mustache"], + Haskell: ["hs"], + Haskell_Cabal: ["cabal"], + haXe: ["hx"], + Hjson: ["hjson"], + HTML: ["html|htm|xhtml|vue|we|wpy"], + HTML_Elixir: ["eex|html.eex"], + HTML_Ruby: ["erb|rhtml|html.erb"], + INI: ["ini|conf|cfg|prefs"], + Io: ["io"], + Ion: ["ion"], + Jack: ["jack"], + Jade: ["jade|pug"], + Java: ["java"], + JavaScript: ["js|jsm|jsx|cjs|mjs"], + JEXL: ["jexl"], + JSON: ["json"], + JSON5: ["json5"], + JSONiq: ["jq"], + JSP: ["jsp"], + JSSM: ["jssm|jssm_state"], + JSX: ["jsx"], + Julia: ["jl"], + Kotlin: ["kt|kts"], + LaTeX: ["tex|latex|ltx|bib"], + Latte: ["latte"], + LESS: ["less"], + Liquid: ["liquid"], + Lisp: ["lisp"], + LiveScript: ["ls"], + Log: ["log"], + LogiQL: ["logic|lql"], + Logtalk: ["lgt"], + LSL: ["lsl"], + Lua: ["lua"], + LuaPage: ["lp"], + Lucene: ["lucene"], + Makefile: ["^Makefile|^GNUmakefile|^makefile|^OCamlMakefile|make"], + Markdown: ["md|markdown"], + Mask: ["mask"], + MATLAB: ["matlab"], + Maze: ["mz"], + MediaWiki: ["wiki|mediawiki"], + MEL: ["mel"], + MIPS: ["s|asm"], + MIXAL: ["mixal"], + MUSHCode: ["mc|mush"], + MySQL: ["mysql"], + Nginx: ["nginx|conf"], + Nim: ["nim"], + Nix: ["nix"], + NSIS: ["nsi|nsh"], + Nunjucks: ["nunjucks|nunjs|nj|njk"], + ObjectiveC: ["m|mm"], + OCaml: ["ml|mli"], + PartiQL: ["partiql|pql"], + Pascal: ["pas|p"], + Perl: ["pl|pm"], + pgSQL: ["pgsql"], + PHP: ["php|inc|phtml|shtml|php3|php4|php5|phps|phpt|aw|ctp|module"], + PHP_Laravel_blade: ["blade.php"], + Pig: ["pig"], + PLSQL: ["plsql"], + Powershell: ["ps1"], + Praat: ["praat|praatscript|psc|proc"], + Prisma: ["prisma"], + Prolog: ["plg|prolog"], + Properties: ["properties"], + Protobuf: ["proto"], + Puppet: ["epp|pp"], + Python: ["py"], + QML: ["qml"], + R: ["r"], + Raku: ["raku|rakumod|rakutest|p6|pl6|pm6"], + Razor: ["cshtml|asp"], + RDoc: ["Rd"], + Red: ["red|reds"], + RHTML: ["Rhtml"], + Robot: ["robot|resource"], + RST: ["rst"], + Ruby: ["rb|ru|gemspec|rake|^Guardfile|^Rakefile|^Gemfile"], + Rust: ["rs"], + SaC: ["sac"], + SASS: ["sass"], + SCAD: ["scad"], + Scala: ["scala|sbt"], + Scheme: ["scm|sm|rkt|oak|scheme"], + Scrypt: ["scrypt"], + SCSS: ["scss"], + SH: ["sh|bash|^.bashrc"], + SJS: ["sjs"], + Slim: ["slim|skim"], + Smarty: ["smarty|tpl"], + Smithy: ["smithy"], + snippets: ["snippets"], + Soy_Template: ["soy"], + Space: ["space"], + SPARQL: ["rq"], + SQL: ["sql"], + SQLServer: ["sqlserver"], + Stylus: ["styl|stylus"], + SVG: ["svg"], + Swift: ["swift"], + Tcl: ["tcl"], + Terraform: ["tf", "tfvars", "terragrunt"], + Tex: ["tex"], + Text: ["txt"], + Textile: ["textile"], + Toml: ["toml"], + TSX: ["tsx"], + Turtle: ["ttl"], + Twig: ["twig|swig"], + Typescript: ["ts|typescript|str"], + Vala: ["vala"], + VBScript: ["vbs|vb"], + Velocity: ["vm"], + Verilog: ["v|vh|sv|svh"], + VHDL: ["vhd|vhdl"], + Visualforce: ["vfp|component|page"], + Wollok: ["wlk|wpgm|wtest"], + XML: ["xml|rdf|rss|wsdl|xslt|atom|mathml|mml|xul|xbl|xaml"], + XQuery: ["xq"], + YAML: ["yaml|yml"], + Zeek: ["zeek|bro"], + Django: ["html"] +}; +var nameOverrides = { + ObjectiveC: "Objective-C", + CSharp: "C#", + golang: "Go", + C_Cpp: "C and C++", + Csound_Document: "Csound Document", + Csound_Orchestra: "Csound", + Csound_Score: "Csound Score", + coffee: "CoffeeScript", + HTML_Ruby: "HTML (Ruby)", + HTML_Elixir: "HTML (Elixir)", + FTL: "FreeMarker", + PHP_Laravel_blade: "PHP (Blade Template)", + Perl6: "Perl 6", + AutoHotKey: "AutoHotkey / AutoIt" +}; +var modesByName = {}; +for (var name in supportedModes) { + var data = supportedModes[name]; + var displayName = (nameOverrides[name] || name).replace(/_/g, " "); + var filename = name.toLowerCase(); + var mode = new Mode(filename, displayName, data[0]); + modesByName[filename] = mode; + modes.push(mode); +} +module.exports = { + getModeForPath: getModeForPath, + modes: modes, + modesByName: modesByName +}; + +}); (function() { + ace.require(["ace/ext/modelist"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/b435aebcb57d65080cfd510e0a9d5d9d.js b/web/dist/b435aebcb57d65080cfd510e0a9d5d9d.js new file mode 100644 index 00000000..c073affa --- /dev/null +++ b/web/dist/b435aebcb57d65080cfd510e0a9d5d9d.js @@ -0,0 +1,9 @@ + +; (function() { + ace.require(["ace/snippets/prisma"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/b4e1edf89aca93d0b8087f0f63b8d36f.js b/web/dist/b4e1edf89aca93d0b8087f0f63b8d36f.js new file mode 100644 index 00000000..02176722 --- /dev/null +++ b/web/dist/b4e1edf89aca93d0b8087f0f63b8d36f.js @@ -0,0 +1,338 @@ +ace.define("ace/ext/searchbox.css",["require","exports","module"], function(require, exports, module){module.exports = "\n\n/* ------------------------------------------------------------------------------------------\n * Editor Search Form\n * --------------------------------------------------------------------------------------- */\n.ace_search {\n background-color: #ddd;\n color: #666;\n border: 1px solid #cbcbcb;\n border-top: 0 none;\n overflow: hidden;\n margin: 0;\n padding: 4px 6px 0 4px;\n position: absolute;\n top: 0;\n z-index: 99;\n white-space: normal;\n}\n.ace_search.left {\n border-left: 0 none;\n border-radius: 0px 0px 5px 0px;\n left: 0;\n}\n.ace_search.right {\n border-radius: 0px 0px 0px 5px;\n border-right: 0 none;\n right: 0;\n}\n\n.ace_search_form, .ace_replace_form {\n margin: 0 20px 4px 0;\n overflow: hidden;\n line-height: 1.9;\n}\n.ace_replace_form {\n margin-right: 0;\n}\n.ace_search_form.ace_nomatch {\n outline: 1px solid red;\n}\n\n.ace_search_field {\n border-radius: 3px 0 0 3px;\n background-color: white;\n color: black;\n border: 1px solid #cbcbcb;\n border-right: 0 none;\n outline: 0;\n padding: 0;\n font-size: inherit;\n margin: 0;\n line-height: inherit;\n padding: 0 6px;\n min-width: 17em;\n vertical-align: top;\n min-height: 1.8em;\n box-sizing: content-box;\n}\n.ace_searchbtn {\n border: 1px solid #cbcbcb;\n line-height: inherit;\n display: inline-block;\n padding: 0 6px;\n background: #fff;\n border-right: 0 none;\n border-left: 1px solid #dcdcdc;\n cursor: pointer;\n margin: 0;\n position: relative;\n color: #666;\n}\n.ace_searchbtn:last-child {\n border-radius: 0 3px 3px 0;\n border-right: 1px solid #cbcbcb;\n}\n.ace_searchbtn:disabled {\n background: none;\n cursor: default;\n}\n.ace_searchbtn:hover {\n background-color: #eef1f6;\n}\n.ace_searchbtn.prev, .ace_searchbtn.next {\n padding: 0px 0.7em\n}\n.ace_searchbtn.prev:after, .ace_searchbtn.next:after {\n content: \"\";\n border: solid 2px #888;\n width: 0.5em;\n height: 0.5em;\n border-width: 2px 0 0 2px;\n display:inline-block;\n transform: rotate(-45deg);\n}\n.ace_searchbtn.next:after {\n border-width: 0 2px 2px 0 ;\n}\n.ace_searchbtn_close {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAZ0lEQVR42u2SUQrAMAhDvazn8OjZBilCkYVVxiis8H4CT0VrAJb4WHT3C5xU2a2IQZXJjiQIRMdkEoJ5Q2yMqpfDIo+XY4k6h+YXOyKqTIj5REaxloNAd0xiKmAtsTHqW8sR2W5f7gCu5nWFUpVjZwAAAABJRU5ErkJggg==) no-repeat 50% 0;\n border-radius: 50%;\n border: 0 none;\n color: #656565;\n cursor: pointer;\n font: 16px/16px Arial;\n padding: 0;\n height: 14px;\n width: 14px;\n top: 9px;\n right: 7px;\n position: absolute;\n}\n.ace_searchbtn_close:hover {\n background-color: #656565;\n background-position: 50% 100%;\n color: white;\n}\n\n.ace_button {\n margin-left: 2px;\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n -o-user-select: none;\n -ms-user-select: none;\n user-select: none;\n overflow: hidden;\n opacity: 0.7;\n border: 1px solid rgba(100,100,100,0.23);\n padding: 1px;\n box-sizing: border-box!important;\n color: black;\n}\n\n.ace_button:hover {\n background-color: #eee;\n opacity:1;\n}\n.ace_button:active {\n background-color: #ddd;\n}\n\n.ace_button.checked {\n border-color: #3399ff;\n opacity:1;\n}\n\n.ace_search_options{\n margin-bottom: 3px;\n text-align: right;\n -webkit-user-select: none;\n -moz-user-select: none;\n -o-user-select: none;\n -ms-user-select: none;\n user-select: none;\n clear: both;\n}\n\n.ace_search_counter {\n float: left;\n font-family: arial;\n padding: 0 8px;\n}"; + +}); + +ace.define("ace/ext/searchbox",["require","exports","module","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/ext/searchbox.css","ace/keyboard/hash_handler","ace/lib/keys"], function(require, exports, module){"use strict"; +var dom = require("../lib/dom"); +var lang = require("../lib/lang"); +var event = require("../lib/event"); +var searchboxCss = require("./searchbox.css"); +var HashHandler = require("../keyboard/hash_handler").HashHandler; +var keyUtil = require("../lib/keys"); +var MAX_COUNT = 999; +dom.importCssString(searchboxCss, "ace_searchbox", false); +var SearchBox = function (editor, range, showReplaceForm) { + var div = dom.createElement("div"); + dom.buildDom(["div", { class: "ace_search right" }, + ["span", { action: "hide", class: "ace_searchbtn_close" }], + ["div", { class: "ace_search_form" }, + ["input", { class: "ace_search_field", placeholder: "Search for", spellcheck: "false" }], + ["span", { action: "findPrev", class: "ace_searchbtn prev" }, "\u200b"], + ["span", { action: "findNext", class: "ace_searchbtn next" }, "\u200b"], + ["span", { action: "findAll", class: "ace_searchbtn", title: "Alt-Enter" }, "All"] + ], + ["div", { class: "ace_replace_form" }, + ["input", { class: "ace_search_field", placeholder: "Replace with", spellcheck: "false" }], + ["span", { action: "replaceAndFindNext", class: "ace_searchbtn" }, "Replace"], + ["span", { action: "replaceAll", class: "ace_searchbtn" }, "All"] + ], + ["div", { class: "ace_search_options" }, + ["span", { action: "toggleReplace", class: "ace_button", title: "Toggle Replace mode", + style: "float:left;margin-top:-2px;padding:0 5px;" }, "+"], + ["span", { class: "ace_search_counter" }], + ["span", { action: "toggleRegexpMode", class: "ace_button", title: "RegExp Search" }, ".*"], + ["span", { action: "toggleCaseSensitive", class: "ace_button", title: "CaseSensitive Search" }, "Aa"], + ["span", { action: "toggleWholeWords", class: "ace_button", title: "Whole Word Search" }, "\\b"], + ["span", { action: "searchInSelection", class: "ace_button", title: "Search In Selection" }, "S"] + ] + ], div); + this.element = div.firstChild; + this.setSession = this.setSession.bind(this); + this.$init(); + this.setEditor(editor); + dom.importCssString(searchboxCss, "ace_searchbox", editor.container); +}; +(function () { + this.setEditor = function (editor) { + editor.searchBox = this; + editor.renderer.scroller.appendChild(this.element); + this.editor = editor; + }; + this.setSession = function (e) { + this.searchRange = null; + this.$syncOptions(true); + }; + this.$initElements = function (sb) { + this.searchBox = sb.querySelector(".ace_search_form"); + this.replaceBox = sb.querySelector(".ace_replace_form"); + this.searchOption = sb.querySelector("[action=searchInSelection]"); + this.replaceOption = sb.querySelector("[action=toggleReplace]"); + this.regExpOption = sb.querySelector("[action=toggleRegexpMode]"); + this.caseSensitiveOption = sb.querySelector("[action=toggleCaseSensitive]"); + this.wholeWordOption = sb.querySelector("[action=toggleWholeWords]"); + this.searchInput = this.searchBox.querySelector(".ace_search_field"); + this.replaceInput = this.replaceBox.querySelector(".ace_search_field"); + this.searchCounter = sb.querySelector(".ace_search_counter"); + }; + this.$init = function () { + var sb = this.element; + this.$initElements(sb); + var _this = this; + event.addListener(sb, "mousedown", function (e) { + setTimeout(function () { + _this.activeInput.focus(); + }, 0); + event.stopPropagation(e); + }); + event.addListener(sb, "click", function (e) { + var t = e.target || e.srcElement; + var action = t.getAttribute("action"); + if (action && _this[action]) + _this[action](); + else if (_this.$searchBarKb.commands[action]) + _this.$searchBarKb.commands[action].exec(_this); + event.stopPropagation(e); + }); + event.addCommandKeyListener(sb, function (e, hashId, keyCode) { + var keyString = keyUtil.keyCodeToString(keyCode); + var command = _this.$searchBarKb.findKeyCommand(hashId, keyString); + if (command && command.exec) { + command.exec(_this); + event.stopEvent(e); + } + }); + this.$onChange = lang.delayedCall(function () { + _this.find(false, false); + }); + event.addListener(this.searchInput, "input", function () { + _this.$onChange.schedule(20); + }); + event.addListener(this.searchInput, "focus", function () { + _this.activeInput = _this.searchInput; + _this.searchInput.value && _this.highlight(); + }); + event.addListener(this.replaceInput, "focus", function () { + _this.activeInput = _this.replaceInput; + _this.searchInput.value && _this.highlight(); + }); + }; + this.$closeSearchBarKb = new HashHandler([{ + bindKey: "Esc", + name: "closeSearchBar", + exec: function (editor) { + editor.searchBox.hide(); + } + }]); + this.$searchBarKb = new HashHandler(); + this.$searchBarKb.bindKeys({ + "Ctrl-f|Command-f": function (sb) { + var isReplace = sb.isReplace = !sb.isReplace; + sb.replaceBox.style.display = isReplace ? "" : "none"; + sb.replaceOption.checked = false; + sb.$syncOptions(); + sb.searchInput.focus(); + }, + "Ctrl-H|Command-Option-F": function (sb) { + if (sb.editor.getReadOnly()) + return; + sb.replaceOption.checked = true; + sb.$syncOptions(); + sb.replaceInput.focus(); + }, + "Ctrl-G|Command-G": function (sb) { + sb.findNext(); + }, + "Ctrl-Shift-G|Command-Shift-G": function (sb) { + sb.findPrev(); + }, + "esc": function (sb) { + setTimeout(function () { sb.hide(); }); + }, + "Return": function (sb) { + if (sb.activeInput == sb.replaceInput) + sb.replace(); + sb.findNext(); + }, + "Shift-Return": function (sb) { + if (sb.activeInput == sb.replaceInput) + sb.replace(); + sb.findPrev(); + }, + "Alt-Return": function (sb) { + if (sb.activeInput == sb.replaceInput) + sb.replaceAll(); + sb.findAll(); + }, + "Tab": function (sb) { + (sb.activeInput == sb.replaceInput ? sb.searchInput : sb.replaceInput).focus(); + } + }); + this.$searchBarKb.addCommands([{ + name: "toggleRegexpMode", + bindKey: { win: "Alt-R|Alt-/", mac: "Ctrl-Alt-R|Ctrl-Alt-/" }, + exec: function (sb) { + sb.regExpOption.checked = !sb.regExpOption.checked; + sb.$syncOptions(); + } + }, { + name: "toggleCaseSensitive", + bindKey: { win: "Alt-C|Alt-I", mac: "Ctrl-Alt-R|Ctrl-Alt-I" }, + exec: function (sb) { + sb.caseSensitiveOption.checked = !sb.caseSensitiveOption.checked; + sb.$syncOptions(); + } + }, { + name: "toggleWholeWords", + bindKey: { win: "Alt-B|Alt-W", mac: "Ctrl-Alt-B|Ctrl-Alt-W" }, + exec: function (sb) { + sb.wholeWordOption.checked = !sb.wholeWordOption.checked; + sb.$syncOptions(); + } + }, { + name: "toggleReplace", + exec: function (sb) { + sb.replaceOption.checked = !sb.replaceOption.checked; + sb.$syncOptions(); + } + }, { + name: "searchInSelection", + exec: function (sb) { + sb.searchOption.checked = !sb.searchRange; + sb.setSearchRange(sb.searchOption.checked && sb.editor.getSelectionRange()); + sb.$syncOptions(); + } + }]); + this.setSearchRange = function (range) { + this.searchRange = range; + if (range) { + this.searchRangeMarker = this.editor.session.addMarker(range, "ace_active-line"); + } + else if (this.searchRangeMarker) { + this.editor.session.removeMarker(this.searchRangeMarker); + this.searchRangeMarker = null; + } + }; + this.$syncOptions = function (preventScroll) { + dom.setCssClass(this.replaceOption, "checked", this.searchRange); + dom.setCssClass(this.searchOption, "checked", this.searchOption.checked); + this.replaceOption.textContent = this.replaceOption.checked ? "-" : "+"; + dom.setCssClass(this.regExpOption, "checked", this.regExpOption.checked); + dom.setCssClass(this.wholeWordOption, "checked", this.wholeWordOption.checked); + dom.setCssClass(this.caseSensitiveOption, "checked", this.caseSensitiveOption.checked); + var readOnly = this.editor.getReadOnly(); + this.replaceOption.style.display = readOnly ? "none" : ""; + this.replaceBox.style.display = this.replaceOption.checked && !readOnly ? "" : "none"; + this.find(false, false, preventScroll); + }; + this.highlight = function (re) { + this.editor.session.highlight(re || this.editor.$search.$options.re); + this.editor.renderer.updateBackMarkers(); + }; + this.find = function (skipCurrent, backwards, preventScroll) { + var range = this.editor.find(this.searchInput.value, { + skipCurrent: skipCurrent, + backwards: backwards, + wrap: true, + regExp: this.regExpOption.checked, + caseSensitive: this.caseSensitiveOption.checked, + wholeWord: this.wholeWordOption.checked, + preventScroll: preventScroll, + range: this.searchRange + }); + var noMatch = !range && this.searchInput.value; + dom.setCssClass(this.searchBox, "ace_nomatch", noMatch); + this.editor._emit("findSearchBox", { match: !noMatch }); + this.highlight(); + this.updateCounter(); + }; + this.updateCounter = function () { + var editor = this.editor; + var regex = editor.$search.$options.re; + var all = 0; + var before = 0; + if (regex) { + var value = this.searchRange + ? editor.session.getTextRange(this.searchRange) + : editor.getValue(); + var offset = editor.session.doc.positionToIndex(editor.selection.anchor); + if (this.searchRange) + offset -= editor.session.doc.positionToIndex(this.searchRange.start); + var last = regex.lastIndex = 0; + var m; + while ((m = regex.exec(value))) { + all++; + last = m.index; + if (last <= offset) + before++; + if (all > MAX_COUNT) + break; + if (!m[0]) { + regex.lastIndex = last += 1; + if (last >= value.length) + break; + } + } + } + this.searchCounter.textContent = before + " of " + (all > MAX_COUNT ? MAX_COUNT + "+" : all); + }; + this.findNext = function () { + this.find(true, false); + }; + this.findPrev = function () { + this.find(true, true); + }; + this.findAll = function () { + var range = this.editor.findAll(this.searchInput.value, { + regExp: this.regExpOption.checked, + caseSensitive: this.caseSensitiveOption.checked, + wholeWord: this.wholeWordOption.checked + }); + var noMatch = !range && this.searchInput.value; + dom.setCssClass(this.searchBox, "ace_nomatch", noMatch); + this.editor._emit("findSearchBox", { match: !noMatch }); + this.highlight(); + this.hide(); + }; + this.replace = function () { + if (!this.editor.getReadOnly()) + this.editor.replace(this.replaceInput.value); + }; + this.replaceAndFindNext = function () { + if (!this.editor.getReadOnly()) { + this.editor.replace(this.replaceInput.value); + this.findNext(); + } + }; + this.replaceAll = function () { + if (!this.editor.getReadOnly()) + this.editor.replaceAll(this.replaceInput.value); + }; + this.hide = function () { + this.active = false; + this.setSearchRange(null); + this.editor.off("changeSession", this.setSession); + this.element.style.display = "none"; + this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb); + this.editor.focus(); + }; + this.show = function (value, isReplace) { + this.active = true; + this.editor.on("changeSession", this.setSession); + this.element.style.display = ""; + this.replaceOption.checked = isReplace; + if (value) + this.searchInput.value = value; + this.searchInput.focus(); + this.searchInput.select(); + this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb); + this.$syncOptions(true); + }; + this.isFocused = function () { + var el = document.activeElement; + return el == this.searchInput || el == this.replaceInput; + }; +}).call(SearchBox.prototype); +exports.SearchBox = SearchBox; +exports.Search = function (editor, isReplace) { + var sb = editor.searchBox || new SearchBox(editor); + sb.show(editor.session.getTextRange(), isReplace); +}; + +}); (function() { + ace.require(["ace/ext/searchbox"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/b4e1edf89aca93d0b8087f0f63b8d36f.js.gz b/web/dist/b4e1edf89aca93d0b8087f0f63b8d36f.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..c61458a6dd073153d13a81b0becaa7046ff3f5ec GIT binary patch literal 4198 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 wJT4~7|Exuyl`o04AmDEin*ZU;Y^!nom38LI((b/, + next: "start" + }, { + token: "keyword.operator", + regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next: "start" + }, { + token: "punctuation.operator", + regex: /[?:,;.]/, + next: "start" + }, { + token: "paren.lparen", + regex: /[\[({]/, + next: "start" + }, { + token: "paren.rparen", + regex: /[\])}]/ + }, { + token: "comment", + regex: /^#!.*$/ + } + ], + property: [{ + token: "text", + regex: "\\s+" + }, { + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()", + next: "function_arguments" + }, { + token: "punctuation.operator", + regex: /[.](?![.])/ + }, { + token: "support.function", + regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ + }, { + token: "support.function.dom", + regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ + }, { + token: "support.constant", + regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ + }, { + token: "identifier", + regex: identifierRe + }, { + regex: "", + token: "empty", + next: "no_regex" + } + ], + "start": [ + DocCommentHighlightRules.getStartRule("doc-start"), + comments("start"), + { + token: "string.regexp", + regex: "\\/", + next: "regex" + }, { + token: "text", + regex: "\\s+|^$", + next: "start" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "regex": [ + { + token: "regexp.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "string.regexp", + regex: "/[sxngimy]*", + next: "no_regex" + }, { + token: "invalid", + regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ + }, { + token: "constant.language.escape", + regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ + }, { + token: "constant.language.delimiter", + regex: /\|/ + }, { + token: "constant.language.escape", + regex: /\[\^?/, + next: "regex_character_class" + }, { + token: "empty", + regex: "$", + next: "no_regex" + }, { + defaultToken: "string.regexp" + } + ], + "regex_character_class": [ + { + token: "regexp.charclass.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "constant.language.escape", + regex: "]", + next: "regex" + }, { + token: "constant.language.escape", + regex: "-" + }, { + token: "empty", + regex: "$", + next: "no_regex" + }, { + defaultToken: "string.regexp.charachterclass" + } + ], + "default_parameter": [ + { + token: "string", + regex: "'(?=.)", + push: [ + { + token: "string", + regex: "'|$", + next: "pop" + }, { + include: "qstring" + } + ] + }, { + token: "string", + regex: '"(?=.)', + push: [ + { + token: "string", + regex: '"|$', + next: "pop" + }, { + include: "qqstring" + } + ] + }, { + token: "constant.language", + regex: "null|Infinity|NaN|undefined" + }, { + token: "constant.numeric", + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + }, { + token: "punctuation.operator", + regex: ",", + next: "function_arguments" + }, { + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "function_arguments": [ + comments("function_arguments"), + { + token: "variable.parameter", + regex: identifierRe + }, { + token: "punctuation.operator", + regex: "," + }, { + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: '"|$', + next: "no_regex" + }, { + defaultToken: "string" + } + ], + "qstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: "'|$", + next: "no_regex" + }, { + defaultToken: "string" + } + ] + }; + if (!options || !options.noES6) { + this.$rules.no_regex.unshift({ + regex: "[{}]", onMatch: function (val, state, stack) { + this.next = val == "{" ? this.nextState : ""; + if (val == "{" && stack.length) { + stack.unshift("start", state); + } + else if (val == "}" && stack.length) { + stack.shift(); + this.next = stack.shift(); + if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) + return "paren.quasi.end"; + } + return val == "{" ? "paren.lparen" : "paren.rparen"; + }, + nextState: "start" + }, { + token: "string.quasi.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedRe + }, { + token: "paren.quasi.start", + regex: /\${/, + push: "start" + }, { + token: "string.quasi.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string.quasi" + }] + }, { + token: ["variable.parameter", "text"], + regex: "(" + identifierRe + ")(\\s*)(?=\\=>)" + }, { + token: "paren.lparen", + regex: "(\\()(?=.+\\s*=>)", + next: "function_arguments" + }, { + token: "variable.language", + regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b" + }); + this.$rules["function_arguments"].unshift({ + token: "keyword.operator", + regex: "=", + next: "default_parameter" + }, { + token: "keyword.operator", + regex: "\\.{3}" + }); + this.$rules["property"].unshift({ + token: "support.function", + regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|" + + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()" + }, { + token: "constant.language", + regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b" + }); + if (!options || options.jsx != false) + JSX.call(this); + } + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]); + this.normalizeRules(); +}; +oop.inherits(JavaScriptHighlightRules, TextHighlightRules); +function JSX() { + var tagRegex = identifierRe.replace("\\d", "\\d\\-"); + var jsxTag = { + onMatch: function (val, state, stack) { + var offset = val.charAt(1) == "/" ? 2 : 1; + if (offset == 1) { + if (state != this.nextState) + stack.unshift(this.next, this.nextState, 0); + else + stack.unshift(this.next); + stack[2]++; + } + else if (offset == 2) { + if (state == this.nextState) { + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.shift(); + stack.shift(); + } + } + } + return [{ + type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", + value: val.slice(0, offset) + }, { + type: "meta.tag.tag-name.xml", + value: val.substr(offset) + }]; + }, + regex: "", + onMatch: function (value, currentState, stack) { + if (currentState == stack[0]) + stack.shift(); + if (value.length == 2) { + if (stack[0] == this.nextState) + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.splice(0, 2); + } + } + this.next = stack[0] || "start"; + return [{ type: this.token, value: value }]; + }, + nextState: "jsx" + }, + jsxJsRule, + comments("jsxAttributes"), + { + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + token: "text.tag-whitespace.xml", + regex: "\\s+" + }, { + token: "string.attribute-value.xml", + regex: "'", + stateName: "jsx_attr_q", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + stateName: "jsx_attr_qq", + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, + jsxTag + ]; + this.$rules.reference = [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }]; +} +function comments(next) { + return [ + { + token: "comment", + regex: /\/\*/, + next: [ + DocCommentHighlightRules.getTagRule(), + { token: "comment", regex: "\\*\\/", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } + ] + }, { + token: "comment", + regex: "\\/\\/", + next: [ + DocCommentHighlightRules.getTagRule(), + { token: "comment", regex: "$|^", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } + ] + } + ]; +} +exports.JavaScriptHighlightRules = JavaScriptHighlightRules; + +}); + +ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) + return false; + return /^\s*\}/.test(input); + }; + this.autoOutdent = function (doc, row) { + var line = doc.getLine(row); + var match = line.match(/^(\s*\})/); + if (!match) + return 0; + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; + var indent = this.$getIndent(doc.getLine(openBracePos.row)); + doc.replace(new Range(row, 0, row, column - 1), indent); + }; + this.$getIndent = function (line) { + return line.match(/^\s*/)[0]; + }; +}).call(MatchingBraceOutdent.prototype); +exports.MatchingBraceOutdent = MatchingBraceOutdent; + +}); + +ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = JavaScriptHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CstyleBehaviour(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "//"; + this.blockComment = { start: "/*", end: "*/" }; + this.$quotes = { '"': '"', "'": "'", "`": "`" }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + var endState = tokenizedLine.state; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + if (state == "start" || state == "no_regex") { + var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); + if (match) { + indent += tab; + } + } + else if (state == "doc-start") { + if (endState == "start" || endState == "no_regex") { + return ""; + } + var match = line.match(/^\s*(\/?)\*/); + if (match) { + if (match[1]) { + indent += " "; + } + indent += "* "; + } + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.createWorker = function (session) { + var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); + worker.attachToDocument(session.getDocument()); + worker.on("annotate", function (results) { + session.setAnnotations(results.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/javascript"; + this.snippetFileId = "ace/snippets/javascript"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; +var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; +var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; +var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; +var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; +var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; +var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; +var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; +var CssHighlightRules = function () { + var keywordMapper = this.createKeywordMapper({ + "support.function": supportFunction, + "support.constant": supportConstant, + "support.type": supportType, + "support.constant.color": supportConstantColor, + "support.constant.fonts": supportConstantFonts + }, "text", true); + this.$rules = { + "start": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" + }, { + token: "string", + regex: "@(?!viewport)", + next: "media" + }, { + token: "keyword", + regex: "#[a-z0-9-_]+" + }, { + token: "keyword", + regex: "%" + }, { + token: "variable", + regex: "\\.[a-z0-9-_]+" + }, { + token: "string", + regex: ":[a-z0-9-_]+" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant", + regex: "[a-z0-9-_]+" + }, { + caseInsensitive: true + }], + "media": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "start" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + token: "string", + regex: ";", + next: "start" + }, { + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" + }], + "comments": [{ + token: "comment", + regex: "\\/\\*", + push: [{ + token: "comment", + regex: "\\*\\/", + next: "pop" + }, { + defaultToken: "comment" + }] + }], + "ruleset": [{ + regex: "-(webkit|ms|moz|o)-", + token: "text" + }, { + token: "punctuation.operator", + regex: "[:;]" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + include: ["strings", "url", "comments"] + }, { + token: ["constant.numeric", "keyword"], + regex: "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant.numeric", + regex: "#[a-f0-9]{6}" + }, { + token: "constant.numeric", + regex: "#[a-f0-9]{3}" + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"], + regex: pseudoElements + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"], + regex: pseudoClasses + }, { + include: "url" + }, { + token: keywordMapper, + regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" + }, { + caseInsensitive: true + }], + url: [{ + token: "support.function", + regex: "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token: "support.function", + regex: "\\)", + next: "pop" + }, { + defaultToken: "string" + }] + }], + strings: [{ + token: "string.start", + regex: "'", + push: [{ + token: "string.end", + regex: "'|$", + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }, { + token: "string.start", + regex: '"', + push: [{ + token: "string.end", + regex: '"|$', + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], + escapes: [{ + token: "constant.language.escape", + regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ + }] + }; + this.normalizeRules(); +}; +oop.inherits(CssHighlightRules, TextHighlightRules); +exports.CssHighlightRules = CssHighlightRules; + +}); + +ace.define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module){"use strict"; +var propertyMap = { + "background": { "#$0": 1 }, + "background-color": { "#$0": 1, "transparent": 1, "fixed": 1 }, + "background-image": { "url('/$0')": 1 }, + "background-repeat": { "repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1 }, + "background-position": { "bottom": 2, "center": 2, "left": 2, "right": 2, "top": 2, "inherit": 2 }, + "background-attachment": { "scroll": 1, "fixed": 1 }, + "background-size": { "cover": 1, "contain": 1 }, + "background-clip": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "background-origin": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "border": { "solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1 }, + "border-color": { "#$0": 1 }, + "border-style": { "solid": 2, "dashed": 2, "dotted": 2, "double": 2, "groove": 2, "hidden": 2, "inherit": 2, "inset": 2, "none": 2, "outset": 2, "ridged": 2 }, + "border-collapse": { "collapse": 1, "separate": 1 }, + "bottom": { "px": 1, "em": 1, "%": 1 }, + "clear": { "left": 1, "right": 1, "both": 1, "none": 1 }, + "color": { "#$0": 1, "rgb(#$00,0,0)": 1 }, + "cursor": { "default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1 }, + "display": { "none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1 }, + "empty-cells": { "show": 1, "hide": 1 }, + "float": { "left": 1, "right": 1, "none": 1 }, + "font-family": { "Arial": 2, "Comic Sans MS": 2, "Consolas": 2, "Courier New": 2, "Courier": 2, "Georgia": 2, "Monospace": 2, "Sans-Serif": 2, "Segoe UI": 2, "Tahoma": 2, "Times New Roman": 2, "Trebuchet MS": 2, "Verdana": 1 }, + "font-size": { "px": 1, "em": 1, "%": 1 }, + "font-weight": { "bold": 1, "normal": 1 }, + "font-style": { "italic": 1, "normal": 1 }, + "font-variant": { "normal": 1, "small-caps": 1 }, + "height": { "px": 1, "em": 1, "%": 1 }, + "left": { "px": 1, "em": 1, "%": 1 }, + "letter-spacing": { "normal": 1 }, + "line-height": { "normal": 1 }, + "list-style-type": { "none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1 }, + "margin": { "px": 1, "em": 1, "%": 1 }, + "margin-right": { "px": 1, "em": 1, "%": 1 }, + "margin-left": { "px": 1, "em": 1, "%": 1 }, + "margin-top": { "px": 1, "em": 1, "%": 1 }, + "margin-bottom": { "px": 1, "em": 1, "%": 1 }, + "max-height": { "px": 1, "em": 1, "%": 1 }, + "max-width": { "px": 1, "em": 1, "%": 1 }, + "min-height": { "px": 1, "em": 1, "%": 1 }, + "min-width": { "px": 1, "em": 1, "%": 1 }, + "overflow": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-x": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-y": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "padding": { "px": 1, "em": 1, "%": 1 }, + "padding-top": { "px": 1, "em": 1, "%": 1 }, + "padding-right": { "px": 1, "em": 1, "%": 1 }, + "padding-bottom": { "px": 1, "em": 1, "%": 1 }, + "padding-left": { "px": 1, "em": 1, "%": 1 }, + "page-break-after": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "page-break-before": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "position": { "absolute": 1, "relative": 1, "fixed": 1, "static": 1 }, + "right": { "px": 1, "em": 1, "%": 1 }, + "table-layout": { "fixed": 1, "auto": 1 }, + "text-decoration": { "none": 1, "underline": 1, "line-through": 1, "blink": 1 }, + "text-align": { "left": 1, "right": 1, "center": 1, "justify": 1 }, + "text-transform": { "capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1 }, + "top": { "px": 1, "em": 1, "%": 1 }, + "vertical-align": { "top": 1, "bottom": 1 }, + "visibility": { "hidden": 1, "visible": 1 }, + "white-space": { "nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1 }, + "width": { "px": 1, "em": 1, "%": 1 }, + "word-spacing": { "normal": 1 }, + "filter": { "alpha(opacity=$0100)": 1 }, + "text-shadow": { "$02px 2px 2px #777": 1 }, + "text-overflow": { "ellipsis-word": 1, "clip": 1, "ellipsis": 1 }, + "-moz-border-radius": 1, + "-moz-border-radius-topright": 1, + "-moz-border-radius-bottomright": 1, + "-moz-border-radius-topleft": 1, + "-moz-border-radius-bottomleft": 1, + "-webkit-border-radius": 1, + "-webkit-border-top-right-radius": 1, + "-webkit-border-top-left-radius": 1, + "-webkit-border-bottom-right-radius": 1, + "-webkit-border-bottom-left-radius": 1, + "-moz-box-shadow": 1, + "-webkit-box-shadow": 1, + "transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-moz-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-webkit-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 } +}; +var CssCompletions = function () { +}; +(function () { + this.completionsDefined = false; + this.defineCompletions = function () { + if (document) { + var style = document.createElement('c').style; + for (var i in style) { + if (typeof style[i] !== 'string') + continue; + var name = i.replace(/[A-Z]/g, function (x) { + return '-' + x.toLowerCase(); + }); + if (!propertyMap.hasOwnProperty(name)) + propertyMap[name] = 1; + } + } + this.completionsDefined = true; + }; + this.getCompletions = function (state, session, pos, prefix) { + if (!this.completionsDefined) { + this.defineCompletions(); + } + if (state === 'ruleset' || session.$mode.$id == "ace/mode/scss") { + var line = session.getLine(pos.row).substr(0, pos.column); + var inParens = /\([^)]*$/.test(line); + if (inParens) { + line = line.substr(line.lastIndexOf('(') + 1); + } + if (/:[^;]+$/.test(line)) { + /([\w\-]+):[^:]*$/.test(line); + return this.getPropertyValueCompletions(state, session, pos, prefix); + } + else { + return this.getPropertyCompletions(state, session, pos, prefix, inParens); + } + } + return []; + }; + this.getPropertyCompletions = function (state, session, pos, prefix, skipSemicolon) { + skipSemicolon = skipSemicolon || false; + var properties = Object.keys(propertyMap); + return properties.map(function (property) { + return { + caption: property, + snippet: property + ': $0' + (skipSemicolon ? '' : ';'), + meta: "property", + score: 1000000 + }; + }); + }; + this.getPropertyValueCompletions = function (state, session, pos, prefix) { + var line = session.getLine(pos.row).substr(0, pos.column); + var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; + if (!property) + return []; + var values = []; + if (property in propertyMap && typeof propertyMap[property] === "object") { + values = Object.keys(propertyMap[property]); + } + return values.map(function (value) { + return { + caption: value, + snippet: value, + meta: "property value", + score: 1000000 + }; + }); + }; +}).call(CssCompletions.prototype); +exports.CssCompletions = CssCompletions; + +}); + +ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Behaviour = require("../behaviour").Behaviour; +var CstyleBehaviour = require("./cstyle").CstyleBehaviour; +var TokenIterator = require("../../token_iterator").TokenIterator; +var CssBehaviour = function () { + this.inherit(CstyleBehaviour); + this.add("colon", "insertion", function (state, action, editor, session, text) { + if (text === ':' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.value.match(/\s+/)) { + token = iterator.stepBackward(); + } + if (token && token.type === 'support.type') { + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + if (rightChar === ':') { + return { + text: '', + selection: [1, 1] + }; + } + if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { + return { + text: ':;', + selection: [1, 1] + }; + } + } + } + }); + this.add("colon", "deletion", function (state, action, editor, session, range) { + var selected = session.doc.getTextRange(range); + if (!range.isMultiLine() && selected === ':') { + var cursor = editor.getCursorPosition(); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.value.match(/\s+/)) { + token = iterator.stepBackward(); + } + if (token && token.type === 'support.type') { + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.end.column, range.end.column + 1); + if (rightChar === ';') { + range.end.column++; + return range; + } + } + } + }); + this.add("semicolon", "insertion", function (state, action, editor, session, text) { + if (text === ';' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + if (rightChar === ';') { + return { + text: '', + selection: [1, 1] + }; + } + } + }); + this.add("!important", "insertion", function (state, action, editor, session, text) { + if (text === '!' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { + return { + text: '!important', + selection: [10, 10] + }; + } + } + }); +}; +oop.inherits(CssBehaviour, CstyleBehaviour); +exports.CssBehaviour = CssBehaviour; + +}); + +ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var CssCompletions = require("./css_completions").CssCompletions; +var CssBehaviour = require("./behaviour/css").CssBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = CssHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CssBehaviour(); + this.$completer = new CssCompletions(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.foldingRules = "cStyle"; + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokens = this.getTokenizer().getLineTokens(line, state).tokens; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + var match = line.match(/^.*\{\s*$/); + if (match) { + indent += tab; + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.getCompletions = function (state, session, pos, prefix) { + return this.$completer.getCompletions(state, session, pos, prefix); + }; + this.createWorker = function (session) { + var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); + worker.attachToDocument(session.getDocument()); + worker.on("annotate", function (e) { + session.setAnnotations(e.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/css"; + this.snippetFileId = "ace/snippets/css"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var XmlHighlightRules = function (normalize) { + var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; + this.$rules = { + start: [ + { token: "string.cdata.xml", regex: "<\\!\\[CDATA\\[", next: "cdata" }, + { + token: ["punctuation.instruction.xml", "keyword.instruction.xml"], + regex: "(<\\?)(" + tagRegex + ")", next: "processing_instruction" + }, + { token: "comment.start.xml", regex: "<\\!--", next: "comment" }, + { + token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], + regex: "(<\\!)(DOCTYPE)(?=[\\s])", next: "doctype", caseInsensitive: true + }, + { include: "tag" }, + { token: "text.end-tag-open.xml", regex: "", + next: "start" + }], + doctype: [ + { include: "whitespace" }, + { include: "string" }, + { token: "xml-pe.doctype.xml", regex: ">", next: "start" }, + { token: "xml-pe.xml", regex: "[-_a-zA-Z0-9:]+" }, + { token: "punctuation.int-subset", regex: "\\[", push: "int_subset" } + ], + int_subset: [{ + token: "text.xml", + regex: "\\s+" + }, { + token: "punctuation.int-subset.xml", + regex: "]", + next: "pop" + }, { + token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], + regex: "(<\\!)(" + tagRegex + ")", + push: [{ + token: "text", + regex: "\\s+" + }, + { + token: "punctuation.markup-decl.xml", + regex: ">", + next: "pop" + }, + { include: "string" }] + }], + cdata: [ + { token: "string.cdata.xml", regex: "\\]\\]>", next: "start" }, + { token: "text.xml", regex: "\\s+" }, + { token: "text.xml", regex: "(?:[^\\]]|\\](?!\\]>))+" } + ], + comment: [ + { token: "comment.end.xml", regex: "-->", next: "start" }, + { defaultToken: "comment.xml" } + ], + reference: [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + attr_reference: [{ + token: "constant.language.escape.reference.attribute-value.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + tag: [{ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], + regex: "(?:(<)|(", next: "start" } + ] + }], + tag_whitespace: [ + { token: "text.tag-whitespace.xml", regex: "\\s+" } + ], + whitespace: [ + { token: "text.whitespace.xml", regex: "\\s+" } + ], + string: [{ + token: "string.xml", + regex: "'", + push: [ + { token: "string.xml", regex: "'", next: "pop" }, + { defaultToken: "string.xml" } + ] + }, { + token: "string.xml", + regex: '"', + push: [ + { token: "string.xml", regex: '"', next: "pop" }, + { defaultToken: "string.xml" } + ] + }], + attributes: [{ + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + include: "tag_whitespace" + }, { + include: "attribute_value" + }], + attribute_value: [{ + token: "string.attribute-value.xml", + regex: "'", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }] + }; + if (this.constructor === XmlHighlightRules) + this.normalizeRules(); +}; +(function () { + this.embedTagRules = function (HighlightRules, prefix, tag) { + this.$rules.tag.unshift({ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(<)(" + tag + "(?=\\s|>|$))", + next: [ + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: prefix + "start" } + ] + }); + this.$rules[tag + "-end"] = [ + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start", + onMatch: function (value, currentState, stack) { + stack.splice(0); + return this.token; + } } + ]; + this.embedRules(HighlightRules, prefix, [{ + token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(|$))", + next: tag + "-end" + }, { + token: "string.cdata.xml", + regex: "<\\!\\[CDATA\\[" + }, { + token: "string.cdata.xml", + regex: "\\]\\]>" + }]); + }; +}).call(TextHighlightRules.prototype); +oop.inherits(XmlHighlightRules, TextHighlightRules); +exports.XmlHighlightRules = XmlHighlightRules; + +}); + +ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; +var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; +var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; +var tagMap = lang.createMap({ + a: 'anchor', + button: 'form', + form: 'form', + img: 'image', + input: 'form', + label: 'form', + option: 'form', + script: 'script', + select: 'form', + textarea: 'form', + style: 'style', + table: 'table', + tbody: 'table', + td: 'table', + tfoot: 'table', + th: 'table', + tr: 'table' +}); +var HtmlHighlightRules = function () { + XmlHighlightRules.call(this); + this.addRules({ + attributes: [{ + include: "tag_whitespace" + }, { + token: "entity.other.attribute-name.xml", + regex: "[-_a-zA-Z0-9:.]+" + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=", + push: [{ + include: "tag_whitespace" + }, { + token: "string.unquoted.attribute-value.html", + regex: "[^<>='\"`\\s]+", + next: "pop" + }, { + token: "empty", + regex: "", + next: "pop" + }] + }, { + include: "attribute_value" + }], + tag: [{ + token: function (start, tag) { + var group = tagMap[tag]; + return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", + "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; + }, + regex: "(", next: "start" } + ] + }); + this.embedTagRules(CssHighlightRules, "css-", "style"); + this.embedTagRules(new JavaScriptHighlightRules({ jsx: false }).getRules(), "js-", "script"); + if (this.constructor === HtmlHighlightRules) + this.normalizeRules(); +}; +oop.inherits(HtmlHighlightRules, XmlHighlightRules); +exports.HtmlHighlightRules = HtmlHighlightRules; + +}); + +ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Behaviour = require("../behaviour").Behaviour; +var TokenIterator = require("../../token_iterator").TokenIterator; +var lang = require("../../lib/lang"); +function is(token, type) { + return token && token.type.lastIndexOf(type + ".xml") > -1; +} +var XmlBehaviour = function () { + this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { + if (text == '"' || text == "'") { + var quote = text; + var selected = session.doc.getTextRange(editor.getSelectionRange()); + if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { + return { + text: quote + selected + quote, + selection: false + }; + } + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { + return { + text: "", + selection: [1, 1] + }; + } + if (!token) + token = iterator.stepBackward(); + if (!token) + return; + while (is(token, "tag-whitespace") || is(token, "whitespace")) { + token = iterator.stepBackward(); + } + var rightSpace = !rightChar || rightChar.match(/\s/); + if (is(token, "attribute-equals") && (rightSpace || rightChar == '>') || (is(token, "decl-attribute-equals") && (rightSpace || rightChar == '?'))) { + return { + text: quote + quote, + selection: [1, 1] + }; + } + } + }); + this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { + var selected = session.doc.getTextRange(range); + if (!range.isMultiLine() && (selected == '"' || selected == "'")) { + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.start.column + 1, range.start.column + 2); + if (rightChar == selected) { + range.end.column++; + return range; + } + } + }); + this.add("autoclosing", "insertion", function (state, action, editor, session, text) { + if (text == '>') { + var position = editor.getSelectionRange().start; + var iterator = new TokenIterator(session, position.row, position.column); + var token = iterator.getCurrentToken() || iterator.stepBackward(); + if (!token || !(is(token, "tag-name") || is(token, "tag-whitespace") || is(token, "attribute-name") || is(token, "attribute-equals") || is(token, "attribute-value"))) + return; + if (is(token, "reference.attribute-value")) + return; + if (is(token, "attribute-value")) { + var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; + if (position.column < tokenEndColumn) + return; + if (position.column == tokenEndColumn) { + var nextToken = iterator.stepForward(); + if (nextToken && is(nextToken, "attribute-value")) + return; + iterator.stepBackward(); + } + } + if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) + return; + while (!is(token, "tag-name")) { + token = iterator.stepBackward(); + if (token.value == "<") { + token = iterator.stepForward(); + break; + } + } + var tokenRow = iterator.getCurrentTokenRow(); + var tokenColumn = iterator.getCurrentTokenColumn(); + if (is(iterator.stepBackward(), "end-tag-open")) + return; + var element = token.value; + if (tokenRow == position.row) + element = element.substring(0, position.column - tokenColumn); + if (this.voidElements.hasOwnProperty(element.toLowerCase())) + return; + return { + text: ">" + "", + selection: [1, 1] + }; + } + }); + this.add("autoindent", "insertion", function (state, action, editor, session, text) { + if (text == "\n") { + var cursor = editor.getCursorPosition(); + var line = session.getLine(cursor.row); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.type.indexOf("tag-close") !== -1) { + if (token.value == "/>") + return; + while (token && token.type.indexOf("tag-name") === -1) { + token = iterator.stepBackward(); + } + if (!token) { + return; + } + var tag = token.value; + var row = iterator.getCurrentTokenRow(); + token = iterator.stepBackward(); + if (!token || token.type.indexOf("end-tag") !== -1) { + return; + } + if (this.voidElements && !this.voidElements[tag]) { + var nextToken = session.getTokenAt(cursor.row, cursor.column + 1); + var line = session.getLine(row); + var nextIndent = this.$getIndent(line); + var indent = nextIndent + session.getTabString(); + if (nextToken && nextToken.value === " -1; +} +(function () { + this.getFoldWidget = function (session, foldStyle, row) { + var tag = this._getFirstTagInLine(session, row); + if (!tag) + return this.getCommentFoldWidget(session, row); + if (tag.closing || (!tag.tagName && tag.selfClosing)) + return foldStyle === "markbeginend" ? "end" : ""; + if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) + return ""; + if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) + return ""; + return "start"; + }; + this.getCommentFoldWidget = function (session, row) { + if (/comment/.test(session.getState(row)) && /'; + break; + } + } + return tag; + } + else if (is(token, "tag-close")) { + tag.selfClosing = token.value == '/>'; + return tag; + } + tag.start.column += token.value.length; + } + return null; + }; + this._findEndTagInLine = function (session, row, tagName, startColumn) { + var tokens = session.getTokens(row); + var column = 0; + for (var i = 0; i < tokens.length; i++) { + var token = tokens[i]; + column += token.value.length; + if (column < startColumn) + continue; + if (is(token, "end-tag-open")) { + token = tokens[i + 1]; + if (token && token.value == tagName) + return true; + } + } + return false; + }; + this.getFoldWidgetRange = function (session, foldStyle, row) { + var tags = session.getMatchingTags({ row: row, column: 0 }); + if (tags) { + return new Range(tags.openTag.end.row, tags.openTag.end.column, tags.closeTag.start.row, tags.closeTag.start.column); + } + else { + return this.getCommentFoldWidget(session, row) + && session.getCommentFoldRange(row, session.getLine(row).length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var MixedFoldMode = require("./mixed").FoldMode; +var XmlFoldMode = require("./xml").FoldMode; +var CStyleFoldMode = require("./cstyle").FoldMode; +var FoldMode = exports.FoldMode = function (voidElements, optionalTags) { + MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { + "js-": new CStyleFoldMode(), + "css-": new CStyleFoldMode() + }); +}; +oop.inherits(FoldMode, MixedFoldMode); + +}); + +ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module){"use strict"; +var TokenIterator = require("../token_iterator").TokenIterator; +var commonAttributes = [ + "accesskey", + "class", + "contenteditable", + "contextmenu", + "dir", + "draggable", + "dropzone", + "hidden", + "id", + "inert", + "itemid", + "itemprop", + "itemref", + "itemscope", + "itemtype", + "lang", + "spellcheck", + "style", + "tabindex", + "title", + "translate" +]; +var eventAttributes = [ + "onabort", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextmenu", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onmousewheel", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onscroll", + "onseeked", + "onseeking", + "onselect", + "onshow", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "onvolumechange", + "onwaiting" +]; +var globalAttributes = commonAttributes.concat(eventAttributes); +var attributeMap = { + "a": { "href": 1, "target": { "_blank": 1, "top": 1 }, "ping": 1, "rel": { "nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1 }, "media": 1, "hreflang": 1, "type": 1 }, + "abbr": {}, + "address": {}, + "area": { "shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1 }, + "article": { "pubdate": 1 }, + "aside": {}, + "audio": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "b": {}, + "base": { "href": 1, "target": 1 }, + "bdi": {}, + "bdo": {}, + "blockquote": { "cite": 1 }, + "body": { "onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1 }, + "br": {}, + "button": { "autofocus": 1, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": { "button": 1, "submit": 1 } }, + "canvas": { "width": 1, "height": 1 }, + "caption": {}, + "cite": {}, + "code": {}, + "col": { "span": 1 }, + "colgroup": { "span": 1 }, + "command": { "type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1 }, + "data": {}, + "datalist": {}, + "dd": {}, + "del": { "cite": 1, "datetime": 1 }, + "details": { "open": 1 }, + "dfn": {}, + "dialog": { "open": 1 }, + "div": {}, + "dl": {}, + "dt": {}, + "em": {}, + "embed": { "src": 1, "height": 1, "width": 1, "type": 1 }, + "fieldset": { "disabled": 1, "form": 1, "name": 1 }, + "figcaption": {}, + "figure": {}, + "footer": {}, + "form": { "accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": { "multipart/form-data": 1, "application/x-www-form-urlencoded": 1 }, "method": { "get": 1, "post": 1 }, "name": 1, "novalidate": 1, "target": { "_blank": 1, "top": 1 } }, + "h1": {}, + "h2": {}, + "h3": {}, + "h4": {}, + "h5": {}, + "h6": {}, + "head": {}, + "header": {}, + "hr": {}, + "html": { "manifest": 1 }, + "i": {}, + "iframe": { "name": 1, "src": 1, "height": 1, "width": 1, "sandbox": { "allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1 }, "seamless": { "seamless": 1 } }, + "img": { "alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1 }, + "input": { + "type": { "text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1 }, + "accept": 1, "alt": 1, "autocomplete": { "on": 1, "off": 1 }, "autofocus": { "autofocus": 1 }, "checked": { "checked": 1 }, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": { "application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1 }, "formmethod": { "get": 1, "post": 1 }, "formnovalidate": { "formnovalidate": 1 }, "formtarget": { "_blank": 1, "_self": 1, "_parent": 1, "_top": 1 }, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": { "multiple": 1 }, "name": 1, "pattern": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1 + }, + "ins": { "cite": 1, "datetime": 1 }, + "kbd": {}, + "keygen": { "autofocus": 1, "challenge": { "challenge": 1 }, "disabled": { "disabled": 1 }, "form": 1, "keytype": { "rsa": 1, "dsa": 1, "ec": 1 }, "name": 1 }, + "label": { "form": 1, "for": 1 }, + "legend": {}, + "li": { "value": 1 }, + "link": { "href": 1, "hreflang": 1, "rel": { "stylesheet": 1, "icon": 1 }, "media": { "all": 1, "screen": 1, "print": 1 }, "type": { "text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1 }, "sizes": 1 }, + "main": {}, + "map": { "name": 1 }, + "mark": {}, + "math": {}, + "menu": { "type": 1, "label": 1 }, + "meta": { "http-equiv": { "content-type": 1 }, "name": { "description": 1, "keywords": 1 }, "content": { "text/html; charset=UTF-8": 1 }, "charset": 1 }, + "meter": { "value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1 }, + "nav": {}, + "noscript": { "href": 1 }, + "object": { "param": 1, "data": 1, "type": 1, "height": 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1 }, + "ol": { "start": 1, "reversed": 1 }, + "optgroup": { "disabled": 1, "label": 1 }, + "option": { "disabled": 1, "selected": 1, "label": 1, "value": 1 }, + "output": { "for": 1, "form": 1, "name": 1 }, + "p": {}, + "param": { "name": 1, "value": 1 }, + "pre": {}, + "progress": { "value": 1, "max": 1 }, + "q": { "cite": 1 }, + "rp": {}, + "rt": {}, + "ruby": {}, + "s": {}, + "samp": {}, + "script": { "charset": 1, "type": { "text/javascript": 1 }, "src": 1, "defer": 1, "async": 1 }, + "select": { "autofocus": 1, "disabled": 1, "form": 1, "multiple": { "multiple": 1 }, "name": 1, "size": 1, "readonly": { "readonly": 1 } }, + "small": {}, + "source": { "src": 1, "type": 1, "media": 1 }, + "span": {}, + "strong": {}, + "style": { "type": 1, "media": { "all": 1, "screen": 1, "print": 1 }, "scoped": 1 }, + "sub": {}, + "sup": {}, + "svg": {}, + "table": { "summary": 1 }, + "tbody": {}, + "td": { "headers": 1, "rowspan": 1, "colspan": 1 }, + "textarea": { "autofocus": { "autofocus": 1 }, "disabled": { "disabled": 1 }, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "rows": 1, "cols": 1, "wrap": { "on": 1, "off": 1, "hard": 1, "soft": 1 } }, + "tfoot": {}, + "th": { "headers": 1, "rowspan": 1, "colspan": 1, "scope": 1 }, + "thead": {}, + "time": { "datetime": 1 }, + "title": {}, + "tr": {}, + "track": { "kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1 }, + "section": {}, + "summary": {}, + "u": {}, + "ul": {}, + "var": {}, + "video": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "width": 1, "height": 1, "poster": 1, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "wbr": {} +}; +var elements = Object.keys(attributeMap); +function is(token, type) { + return token.type.lastIndexOf(type + ".xml") > -1; +} +function findTagName(session, pos) { + var iterator = new TokenIterator(session, pos.row, pos.column); + var token = iterator.getCurrentToken(); + while (token && !is(token, "tag-name")) { + token = iterator.stepBackward(); + } + if (token) + return token.value; +} +function findAttributeName(session, pos) { + var iterator = new TokenIterator(session, pos.row, pos.column); + var token = iterator.getCurrentToken(); + while (token && !is(token, "attribute-name")) { + token = iterator.stepBackward(); + } + if (token) + return token.value; +} +var HtmlCompletions = function () { +}; +(function () { + this.getCompletions = function (state, session, pos, prefix) { + var token = session.getTokenAt(pos.row, pos.column); + if (!token) + return []; + if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) + return this.getTagCompletions(state, session, pos, prefix); + if (is(token, "tag-whitespace") || is(token, "attribute-name")) + return this.getAttributeCompletions(state, session, pos, prefix); + if (is(token, "attribute-value")) + return this.getAttributeValueCompletions(state, session, pos, prefix); + var line = session.getLine(pos.row).substr(0, pos.column); + if (/&[a-z]*$/i.test(line)) + return this.getHTMLEntityCompletions(state, session, pos, prefix); + return []; + }; + this.getTagCompletions = function (state, session, pos, prefix) { + return elements.map(function (element) { + return { + value: element, + meta: "tag", + score: 1000000 + }; + }); + }; + this.getAttributeCompletions = function (state, session, pos, prefix) { + var tagName = findTagName(session, pos); + if (!tagName) + return []; + var attributes = globalAttributes; + if (tagName in attributeMap) { + attributes = attributes.concat(Object.keys(attributeMap[tagName])); + } + return attributes.map(function (attribute) { + return { + caption: attribute, + snippet: attribute + '="$0"', + meta: "attribute", + score: 1000000 + }; + }); + }; + this.getAttributeValueCompletions = function (state, session, pos, prefix) { + var tagName = findTagName(session, pos); + var attributeName = findAttributeName(session, pos); + if (!tagName) + return []; + var values = []; + if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { + values = Object.keys(attributeMap[tagName][attributeName]); + } + return values.map(function (value) { + return { + caption: value, + snippet: value, + meta: "attribute value", + score: 1000000 + }; + }); + }; + this.getHTMLEntityCompletions = function (state, session, pos, prefix) { + var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;']; + return values.map(function (value) { + return { + caption: value, + snippet: value, + meta: "html entity", + score: 1000000 + }; + }); + }; +}).call(HtmlCompletions.prototype); +exports.HtmlCompletions = HtmlCompletions; + +}); + +ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextMode = require("./text").Mode; +var JavaScriptMode = require("./javascript").Mode; +var CssMode = require("./css").Mode; +var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; +var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; +var HtmlFoldMode = require("./folding/html").FoldMode; +var HtmlCompletions = require("./html_completions").HtmlCompletions; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; +var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; +var Mode = function (options) { + this.fragmentContext = options && options.fragmentContext; + this.HighlightRules = HtmlHighlightRules; + this.$behaviour = new XmlBehaviour(); + this.$completer = new HtmlCompletions(); + this.createModeDelegates({ + "js-": JavaScriptMode, + "css-": CssMode + }); + this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); +}; +oop.inherits(Mode, TextMode); +(function () { + this.blockComment = { start: "" }; + this.voidElements = lang.arrayToMap(voidElements); + this.getNextLineIndent = function (state, line, tab) { + return this.$getIndent(line); + }; + this.checkOutdent = function (state, line, input) { + return false; + }; + this.getCompletions = function (state, session, pos, prefix) { + return this.$completer.getCompletions(state, session, pos, prefix); + }; + this.createWorker = function (session) { + if (this.constructor != Mode) + return; + var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker"); + worker.attachToDocument(session.getDocument()); + if (this.fragmentContext) + worker.call("setOptions", [{ context: this.fragmentContext }]); + worker.on("error", function (e) { + session.setAnnotations(e.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/html"; + this.snippetFileId = "ace/snippets/html"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +ace.define("ace/mode/tex_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){/* + * tex_highlight_rules.js + * + * Copyright (C) 2009-11 by RStudio, Inc. + * + * The Initial Developer of the Original Code is + * Ajax.org B.V. + * Portions created by the Initial Developer are Copyright (C) 2010 + * the Initial Developer. All Rights Reserved. + * + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * + */ +"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var TexHighlightRules = function (textClass) { + if (!textClass) + textClass = "text"; + this.$rules = { + "start": [ + { + token: "comment", + regex: "%.*$" + }, { + token: textClass, + regex: "\\\\[$&%#\\{\\}]" + }, { + token: "keyword", + regex: "\\\\(?:documentclass|usepackage|newcounter|setcounter|addtocounter|value|arabic|stepcounter|newenvironment|renewenvironment|ref|vref|eqref|pageref|label|cite[a-zA-Z]*|tag|begin|end|bibitem)\\b", + next: "nospell" + }, { + token: "keyword", + regex: "\\\\(?:[a-zA-Z0-9]+|[^a-zA-Z0-9])" + }, { + token: "paren.keyword.operator", + regex: "[[({]" + }, { + token: "paren.keyword.operator", + regex: "[\\])}]" + }, { + token: textClass, + regex: "\\s+" + } + ], + "nospell": [ + { + token: "comment", + regex: "%.*$", + next: "start" + }, { + token: "nospell." + textClass, + regex: "\\\\[$&%#\\{\\}]" + }, { + token: "keyword", + regex: "\\\\(?:documentclass|usepackage|newcounter|setcounter|addtocounter|value|arabic|stepcounter|newenvironment|renewenvironment|ref|vref|eqref|pageref|label|cite[a-zA-Z]*|tag|begin|end|bibitem)\\b" + }, { + token: "keyword", + regex: "\\\\(?:[a-zA-Z0-9]+|[^a-zA-Z0-9])", + next: "start" + }, { + token: "paren.keyword.operator", + regex: "[[({]" + }, { + token: "paren.keyword.operator", + regex: "[\\])]" + }, { + token: "paren.keyword.operator", + regex: "}", + next: "start" + }, { + token: "nospell." + textClass, + regex: "\\s+" + }, { + token: "nospell." + textClass, + regex: "\\w+" + } + ] + }; +}; +oop.inherits(TexHighlightRules, TextHighlightRules); +exports.TexHighlightRules = TexHighlightRules; + +}); + +ace.define("ace/mode/r_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/tex_highlight_rules"], function(require, exports, module){/* + * r_highlight_rules.js + * + * Copyright (C) 2009-11 by RStudio, Inc. + * + * The Initial Developer of the Original Code is + * Ajax.org B.V. + * Portions created by the Initial Developer are Copyright (C) 2010 + * the Initial Developer. All Rights Reserved. + * + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * + */ +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var TexHighlightRules = require("./tex_highlight_rules").TexHighlightRules; +var RHighlightRules = function () { + var keywords = lang.arrayToMap(("function|if|in|break|next|repeat|else|for|return|switch|while|try|tryCatch|stop|warning|require|library|attach|detach|source|setMethod|setGeneric|setGroupGeneric|setClass") + .split("|")); + var buildinConstants = lang.arrayToMap(("NULL|NA|TRUE|FALSE|T|F|Inf|NaN|NA_integer_|NA_real_|NA_character_|" + + "NA_complex_").split("|")); + this.$rules = { + "start": [ + { + token: "comment.sectionhead", + regex: "#+(?!').*(?:----|====|####)\\s*$" + }, + { + token: "comment", + regex: "#+'", + next: "rd-start" + }, + { + token: "comment", + regex: "#.*$" + }, + { + token: "string", + regex: '["]', + next: "qqstring" + }, + { + token: "string", + regex: "[']", + next: "qstring" + }, + { + token: "constant.numeric", + regex: "0[xX][0-9a-fA-F]+[Li]?\\b" + }, + { + token: "constant.numeric", + regex: "\\d+L\\b" + }, + { + token: "constant.numeric", + regex: "\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d*)?i?\\b" + }, + { + token: "constant.numeric", + regex: "\\.\\d+(?:[eE][+\\-]?\\d*)?i?\\b" + }, + { + token: "constant.language.boolean", + regex: "(?:TRUE|FALSE|T|F)\\b" + }, + { + token: "identifier", + regex: "`.*?`" + }, + { + onMatch: function (value) { + if (keywords[value]) + return "keyword"; + else if (buildinConstants[value]) + return "constant.language"; + else if (value == '...' || value.match(/^\.\.\d+$/)) + return "variable.language"; + else + return "identifier"; + }, + regex: "[a-zA-Z.][a-zA-Z0-9._]*\\b" + }, + { + token: "keyword.operator", + regex: "%%|>=|<=|==|!=|\\->|<\\-|\\|\\||&&|=|\\+|\\-|\\*|/|\\^|>|<|!|&|\\||~|\\$|:" + }, + { + token: "keyword.operator", + regex: "%.*?%" + }, + { + token: "paren.keyword.operator", + regex: "[[({]" + }, + { + token: "paren.keyword.operator", + regex: "[\\])}]" + }, + { + token: "text", + regex: "\\s+" + } + ], + "qqstring": [ + { + token: "string", + regex: '(?:(?:\\\\.)|(?:[^"\\\\]))*?"', + next: "start" + }, + { + token: "string", + regex: '.+' + } + ], + "qstring": [ + { + token: "string", + regex: "(?:(?:\\\\.)|(?:[^'\\\\]))*?'", + next: "start" + }, + { + token: "string", + regex: '.+' + } + ] + }; + var rdRules = new TexHighlightRules("comment").getRules(); + for (var i = 0; i < rdRules["start"].length; i++) { + rdRules["start"][i].token += ".virtual-comment"; + } + this.addRules(rdRules, "rd-"); + this.$rules["rd-start"].unshift({ + token: "text", + regex: "^", + next: "start" + }); + this.$rules["rd-start"].unshift({ + token: "keyword", + regex: "@(?!@)[^ ]*" + }); + this.$rules["rd-start"].unshift({ + token: "comment", + regex: "@@" + }); + this.$rules["rd-start"].push({ + token: "comment", + regex: "[^%\\\\[({\\])}]+" + }); +}; +oop.inherits(RHighlightRules, TextHighlightRules); +exports.RHighlightRules = RHighlightRules; + +}); + +ace.define("ace/mode/rhtml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/r_highlight_rules","ace/mode/html_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){/* + * rhtml_highlight_rules.js + * + * Copyright (C) 2009-11 by RStudio, Inc. + * + * The Initial Developer of the Original Code is + * Ajax.org B.V. + * Portions created by the Initial Developer are Copyright (C) 2010 + * the Initial Developer. All Rights Reserved. + * + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * + */ +"use strict"; +var oop = require("../lib/oop"); +var RHighlightRules = require("./r_highlight_rules").RHighlightRules; +var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var RHtmlHighlightRules = function () { + HtmlHighlightRules.call(this); + this.$rules["start"].unshift({ + token: "support.function.codebegin", + regex: "^<" + "!--\\s*begin.rcode\\s*(?:.*)", + next: "r-start" + }); + this.embedRules(RHighlightRules, "r-", [{ + token: "support.function.codeend", + regex: "^\\s*end.rcode\\s*-->", + next: "start" + }], ["start"]); + this.normalizeRules(); +}; +oop.inherits(RHtmlHighlightRules, TextHighlightRules); +exports.RHtmlHighlightRules = RHtmlHighlightRules; + +}); + +ace.define("ace/mode/rhtml",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/rhtml_highlight_rules"], function(require, exports, module){/* + * rhtml.js + * + * Copyright (C) 2009-11 by RStudio, Inc. + * + * The Initial Developer of the Original Code is + * Ajax.org B.V. + * Portions created by the Initial Developer are Copyright (C) 2010 + * the Initial Developer. All Rights Reserved. + * + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + */ +"use strict"; +var oop = require("../lib/oop"); +var HtmlMode = require("./html").Mode; +var RHtmlHighlightRules = require("./rhtml_highlight_rules").RHtmlHighlightRules; +var Mode = function (doc, session) { + HtmlMode.call(this); + this.$session = session; + this.HighlightRules = RHtmlHighlightRules; +}; +oop.inherits(Mode, HtmlMode); +(function () { + this.insertChunkInfo = { + value: "\n", + position: { row: 0, column: 15 } + }; + this.getLanguageMode = function (position) { + return this.$session.getState(position.row).match(/^r-/) ? 'R' : 'HTML'; + }; + this.$id = "ace/mode/rhtml"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/rhtml"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/baf9051837c09b438b0e7d1e09b231e3.js.gz b/web/dist/baf9051837c09b438b0e7d1e09b231e3.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..7b6ecc78db008b16b71ce822ffcd40a4460b8433 GIT binary patch literal 23984 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 startRow) { + var endColumn = session.getLine(endRow).length; + return new Range(startRow, startColumn, endRow, endColumn); + } + }; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + var indent = line.search(/\S/); + var next = session.getLine(row + 1); + var prev = session.getLine(row - 1); + var prevIndent = prev.search(/\S/); + var nextIndent = next.search(/\S/); + if (indent == -1) { + session.foldWidgets[row - 1] = prevIndent != -1 && prevIndent < nextIndent ? "start" : ""; + return ""; + } + if (prevIndent == -1) { + if (indent == nextIndent && line[indent] == "#" && next[indent] == "#") { + session.foldWidgets[row - 1] = ""; + session.foldWidgets[row + 1] = ""; + return "start"; + } + } + else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { + if (session.getLine(row - 2).search(/\S/) == -1) { + session.foldWidgets[row - 1] = "start"; + session.foldWidgets[row + 1] = ""; + return ""; + } + } + if (prevIndent != -1 && prevIndent < indent) + session.foldWidgets[row - 1] = "start"; + else + session.foldWidgets[row - 1] = ""; + if (indent < nextIndent) + return "start"; + else + return ""; + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/cirru",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/cirru_highlight_rules","ace/mode/folding/coffee"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var CirruHighlightRules = require("./cirru_highlight_rules").CirruHighlightRules; +var CoffeeFoldMode = require("./folding/coffee").FoldMode; +var Mode = function () { + this.HighlightRules = CirruHighlightRules; + this.foldingRules = new CoffeeFoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "--"; + this.$id = "ace/mode/cirru"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/cirru"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/beebd365e9d52fb45e4e2e0e8f3f25f3.js b/web/dist/beebd365e9d52fb45e4e2e0e8f3f25f3.js new file mode 100644 index 00000000..c33f23c1 --- /dev/null +++ b/web/dist/beebd365e9d52fb45e4e2e0e8f3f25f3.js @@ -0,0 +1,78 @@ +ace.define("ace/snippets/xquery.snippets",["require","exports","module"], function(require, exports, module) {module.exports = 'snippet for\n\ + for \$\${1:item} in \${2:expr}\n\ +snippet return\n\ + return \${1:expr}\n\ +snippet import\n\ + import module namespace \${1:ns} = "\${2:http://www.example.com/}";\n\ +snippet some\n\ + some \$\${1:varname} in \${2:expr} satisfies \${3:expr}\n\ +snippet every\n\ + every \$\${1:varname} in \${2:expr} satisfies \${3:expr}\n\ +snippet if\n\ + if(\${1:true}) then \${2:expr} else \${3:true}\n\ +snippet switch\n\ + switch(\${1:"foo"})\n\ + case \${2:"foo"}\n\ + return \${3:true}\n\ + default return \${4:false}\n\ +snippet try\n\ + try { \${1:expr} } catch \${2:*} { \${3:expr} }\n\ +snippet tumbling\n\ + for tumbling window \$\${1:varname} in \${2:expr}\n\ + start at \$\${3:start} when \${4:expr}\n\ + end at \$\${5:end} when \${6:expr}\n\ + return \${7:expr}\n\ +snippet sliding\n\ + for sliding window \$\${1:varname} in \${2:expr}\n\ + start at \$\${3:start} when \${4:expr}\n\ + end at \$\${5:end} when \${6:expr}\n\ + return \${7:expr}\n\ +snippet let\n\ + let \$\${1:varname} := \${2:expr}\n\ +snippet group\n\ + group by \$\${1:varname} := \${2:expr}\n\ +snippet order\n\ + order by \${1:expr} \${2:descending}\n\ +snippet stable\n\ + stable order by \${1:expr}\n\ +snippet count\n\ + count \$\${1:varname}\n\ +snippet ordered\n\ + ordered { \${1:expr} }\n\ +snippet unordered\n\ + unordered { \${1:expr} }\n\ +snippet treat \n\ + treat as \${1:expr}\n\ +snippet castable\n\ + castable as \${1:atomicType}\n\ +snippet cast\n\ + cast as \${1:atomicType}\n\ +snippet typeswitch\n\ + typeswitch(\${1:expr})\n\ + case \${2:type} return \${3:expr}\n\ + default return \${4:expr}\n\ +snippet var\n\ + declare variable \$\${1:varname} := \${2:expr};\n\ +snippet fn\n\ + declare function \${1:ns}:\${2:name}(){\n\ + \${3:expr}\n\ + };\n\ +snippet module\n\ + module namespace \${1:ns} = "\${2:http://www.example.com}";\n\ +'; + +}); + +ace.define("ace/snippets/xquery",["require","exports","module","ace/snippets/xquery.snippets"], function(require, exports, module) {"use strict"; + +exports.snippetText = require("./xquery.snippets"); +exports.scope = "xquery"; + +}); (function() { + ace.require(["ace/snippets/xquery"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/bf615f3f2fbded014d7c7c2cba2a55da.js b/web/dist/bf615f3f2fbded014d7c7c2cba2a55da.js new file mode 100644 index 00000000..0783019f --- /dev/null +++ b/web/dist/bf615f3f2fbded014d7c7c2cba2a55da.js @@ -0,0 +1,18 @@ +ace.define("ace/theme/tomorrow.css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-tomorrow .ace_gutter {\n background: #f6f6f6;\n color: #4D4D4C\n}\n\n.ace-tomorrow .ace_print-margin {\n width: 1px;\n background: #f6f6f6\n}\n\n.ace-tomorrow {\n background-color: #FFFFFF;\n color: #4D4D4C\n}\n\n.ace-tomorrow .ace_cursor {\n color: #AEAFAD\n}\n\n.ace-tomorrow .ace_marker-layer .ace_selection {\n background: #D6D6D6\n}\n\n.ace-tomorrow.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #FFFFFF;\n}\n\n.ace-tomorrow .ace_marker-layer .ace_step {\n background: rgb(255, 255, 0)\n}\n\n.ace-tomorrow .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid #D1D1D1\n}\n\n.ace-tomorrow .ace_marker-layer .ace_active-line {\n background: #EFEFEF\n}\n\n.ace-tomorrow .ace_gutter-active-line {\n background-color : #dcdcdc\n}\n\n.ace-tomorrow .ace_marker-layer .ace_selected-word {\n border: 1px solid #D6D6D6\n}\n\n.ace-tomorrow .ace_invisible {\n color: #D1D1D1\n}\n\n.ace-tomorrow .ace_keyword,\n.ace-tomorrow .ace_meta,\n.ace-tomorrow .ace_storage,\n.ace-tomorrow .ace_storage.ace_type,\n.ace-tomorrow .ace_support.ace_type {\n color: #8959A8\n}\n\n.ace-tomorrow .ace_keyword.ace_operator {\n color: #3E999F\n}\n\n.ace-tomorrow .ace_constant.ace_character,\n.ace-tomorrow .ace_constant.ace_language,\n.ace-tomorrow .ace_constant.ace_numeric,\n.ace-tomorrow .ace_keyword.ace_other.ace_unit,\n.ace-tomorrow .ace_support.ace_constant,\n.ace-tomorrow .ace_variable.ace_parameter {\n color: #F5871F\n}\n\n.ace-tomorrow .ace_constant.ace_other {\n color: #666969\n}\n\n.ace-tomorrow .ace_invalid {\n color: #FFFFFF;\n background-color: #C82829\n}\n\n.ace-tomorrow .ace_invalid.ace_deprecated {\n color: #FFFFFF;\n background-color: #8959A8\n}\n\n.ace-tomorrow .ace_fold {\n background-color: #4271AE;\n border-color: #4D4D4C\n}\n\n.ace-tomorrow .ace_entity.ace_name.ace_function,\n.ace-tomorrow .ace_support.ace_function,\n.ace-tomorrow .ace_variable {\n color: #4271AE\n}\n\n.ace-tomorrow .ace_support.ace_class,\n.ace-tomorrow .ace_support.ace_type {\n color: #C99E00\n}\n\n.ace-tomorrow .ace_heading,\n.ace-tomorrow .ace_markup.ace_heading,\n.ace-tomorrow .ace_string {\n color: #718C00\n}\n\n.ace-tomorrow .ace_entity.ace_name.ace_tag,\n.ace-tomorrow .ace_entity.ace_other.ace_attribute-name,\n.ace-tomorrow .ace_meta.ace_tag,\n.ace-tomorrow .ace_string.ace_regexp,\n.ace-tomorrow .ace_variable {\n color: #C82829\n}\n\n.ace-tomorrow .ace_comment {\n color: #8E908C\n}\n\n.ace-tomorrow .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bdu3f/BwAlfgctduB85QAAAABJRU5ErkJggg==) right repeat-y\n}\n\n.ace-tomorrow .ace_indent-guide-active {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC\") right repeat-y;\n} \n"; + +}); + +ace.define("ace/theme/tomorrow",["require","exports","module","ace/theme/tomorrow.css","ace/lib/dom"], function(require, exports, module){exports.isDark = false; +exports.cssClass = "ace-tomorrow"; +exports.cssText = require("./tomorrow.css"); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass, false); + +}); (function() { + ace.require(["ace/theme/tomorrow"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/bfc402925b28862b622c68f515be1b98.js b/web/dist/bfc402925b28862b622c68f515be1b98.js new file mode 100644 index 00000000..c238c2fa --- /dev/null +++ b/web/dist/bfc402925b28862b622c68f515be1b98.js @@ -0,0 +1,271 @@ +ace.define("ace/mode/jexl_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var JexlHighlightRules = function () { + var keywords = "return|var|function|and|or|not|if|for|while|do|continue|break"; + var buildinConstants = "null"; + var supportFunc = "empty|size|new"; + var keywordMapper = this.createKeywordMapper({ + "keyword": keywords, + "constant.language": buildinConstants, + "support.function": supportFunc + }, "identifier"); + var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex + "u[0-9a-fA-F]{4}|" + // unicode + "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode + "|.)"; + this.$rules = { + "start": [ + { + token: "comment", + regex: "\\/\\/.*$" + }, { + token: "comment", + regex: "##.*$" + }, { + token: "comment", + regex: "\\/\\*", + next: "comment" + }, { + token: ["comment", "text"], + regex: "(#pragma)(\\s.*$)" + }, { + token: "string", + regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + }, { + token: "string", + regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + }, { + token: "string", + regex: "`", + push: [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "`", + next: "pop" + }, { + token: "lparen", + regex: "\\${", + push: [ + { + token: "rparen", + regex: "}", + next: "pop" + }, { + include: "start" + } + ] + }, { + defaultToken: "string" + } + ] + }, { + token: "constant.numeric", + regex: /0(?:[xX][0-9a-fA-F][0-9a-fA-F_]*|[bB][01][01_]*)[LlSsDdFfYy]?\b/ + }, { + token: "constant.numeric", + regex: /[+-]?\d[\d_]*(?:(?:\.[\d_]*)?(?:[eE][+-]?[\d_]+)?)?[LlSsDdFfYy]?\b/ + }, { + token: "constant.language.boolean", + regex: "(?:true|false)\\b" + }, { + token: "string.regexp", + regex: "~/", + push: [ + { + token: "constant.language.escape", + regex: "\\\\/" + }, { + token: "string.regexp", + regex: "$|/", + next: "pop" + }, { + defaultToken: "string.regexp" + } + ] + }, { + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token: "keyword.operator", + regex: "&&|\\|\\||!|&|\\||\\^|~|\\?|:|\\?\\?|==|!=|<|<=|>|>=|=~|!~|=\\^|=\\$|!\\$|\\+|\\-|\\*|%|\\/|=" + }, { + token: "lparen", + regex: "[[({]" + }, { + token: "rparen", + regex: "[\\])}]" + }, { + token: "text", + regex: "\\s+" + }, { + token: "punctuation", + regex: "[,.]" + }, { + token: "storage.type.annotation", + regex: "@[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + } + ], + "comment": [ + { + token: "comment", + regex: "\\*\\/", + next: "start" + }, { + defaultToken: "comment" + } + ] + }; + this.normalizeRules(); +}; +oop.inherits(JexlHighlightRules, TextHighlightRules); +exports.JexlHighlightRules = JexlHighlightRules; + +}); + +ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/jexl",["require","exports","module","ace/lib/oop","ace/mode/jexl_highlight_rules","ace/mode/text","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var JexlHighlightRules = require("./jexl_highlight_rules").JexlHighlightRules; +var TextMode = require("./text").Mode; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = JexlHighlightRules; + this.$behaviour = new CstyleBehaviour(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = ["//", "##"]; + this.blockComment = { start: "/*", end: "*/" }; + this.$id = "ace/mode/jexl"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/jexl"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/bff4a02980e8088d0e56593d6da137cf.js b/web/dist/bff4a02980e8088d0e56593d6da137cf.js new file mode 100644 index 00000000..d2dfd9b7 --- /dev/null +++ b/web/dist/bff4a02980e8088d0e56593d6da137cf.js @@ -0,0 +1,18 @@ +ace.define("ace/theme/merbivore.css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-merbivore .ace_gutter {\n background: #202020;\n color: #E6E1DC\n}\n\n.ace-merbivore .ace_print-margin {\n width: 1px;\n background: #555651\n}\n\n.ace-merbivore {\n background-color: #161616;\n color: #E6E1DC\n}\n\n.ace-merbivore .ace_cursor {\n color: #FFFFFF\n}\n\n.ace-merbivore .ace_marker-layer .ace_selection {\n background: #454545\n}\n\n.ace-merbivore.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #161616;\n}\n\n.ace-merbivore .ace_marker-layer .ace_step {\n background: rgb(102, 82, 0)\n}\n\n.ace-merbivore .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid #404040\n}\n\n.ace-merbivore .ace_marker-layer .ace_active-line {\n background: #333435\n}\n\n.ace-merbivore .ace_gutter-active-line {\n background-color: #333435\n}\n\n.ace-merbivore .ace_marker-layer .ace_selected-word {\n border: 1px solid #454545\n}\n\n.ace-merbivore .ace_invisible {\n color: #404040\n}\n\n.ace-merbivore .ace_entity.ace_name.ace_tag,\n.ace-merbivore .ace_keyword,\n.ace-merbivore .ace_meta,\n.ace-merbivore .ace_meta.ace_tag,\n.ace-merbivore .ace_storage,\n.ace-merbivore .ace_support.ace_function {\n color: #FC6F09\n}\n\n.ace-merbivore .ace_constant,\n.ace-merbivore .ace_constant.ace_character,\n.ace-merbivore .ace_constant.ace_character.ace_escape,\n.ace-merbivore .ace_constant.ace_other,\n.ace-merbivore .ace_support.ace_type {\n color: #1EDAFB\n}\n\n.ace-merbivore .ace_constant.ace_character.ace_escape {\n color: #519F50\n}\n\n.ace-merbivore .ace_constant.ace_language {\n color: #FDC251\n}\n\n.ace-merbivore .ace_constant.ace_library,\n.ace-merbivore .ace_string,\n.ace-merbivore .ace_support.ace_constant {\n color: #8DFF0A\n}\n\n.ace-merbivore .ace_constant.ace_numeric {\n color: #58C554\n}\n\n.ace-merbivore .ace_invalid {\n color: #FFFFFF;\n background-color: #990000\n}\n\n.ace-merbivore .ace_fold {\n background-color: #FC6F09;\n border-color: #E6E1DC\n}\n\n.ace-merbivore .ace_comment {\n font-style: italic;\n color: #AD2EA4\n}\n\n.ace-merbivore .ace_entity.ace_other.ace_attribute-name {\n color: #FFFF89\n}\n\n.ace-merbivore .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWMQFxf3ZXB1df0PAAdsAmERTkEHAAAAAElFTkSuQmCC) right repeat-y\n}\n\n.ace-merbivore .ace_indent-guide-active {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y;\n}\n"; + +}); + +ace.define("ace/theme/merbivore",["require","exports","module","ace/theme/merbivore.css","ace/lib/dom"], function(require, exports, module){exports.isDark = true; +exports.cssClass = "ace-merbivore"; +exports.cssText = require("./merbivore.css"); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass, false); + +}); (function() { + ace.require(["ace/theme/merbivore"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/c137d4af8541a1abf4598a9760ef6a74.js b/web/dist/c137d4af8541a1abf4598a9760ef6a74.js new file mode 100644 index 00000000..8c9bd861 --- /dev/null +++ b/web/dist/c137d4af8541a1abf4598a9760ef6a74.js @@ -0,0 +1,2791 @@ +ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; +var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; +var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; +var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; +var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; +var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; +var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; +var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; +var CssHighlightRules = function () { + var keywordMapper = this.createKeywordMapper({ + "support.function": supportFunction, + "support.constant": supportConstant, + "support.type": supportType, + "support.constant.color": supportConstantColor, + "support.constant.fonts": supportConstantFonts + }, "text", true); + this.$rules = { + "start": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" + }, { + token: "string", + regex: "@(?!viewport)", + next: "media" + }, { + token: "keyword", + regex: "#[a-z0-9-_]+" + }, { + token: "keyword", + regex: "%" + }, { + token: "variable", + regex: "\\.[a-z0-9-_]+" + }, { + token: "string", + regex: ":[a-z0-9-_]+" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant", + regex: "[a-z0-9-_]+" + }, { + caseInsensitive: true + }], + "media": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "start" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + token: "string", + regex: ";", + next: "start" + }, { + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" + }], + "comments": [{ + token: "comment", + regex: "\\/\\*", + push: [{ + token: "comment", + regex: "\\*\\/", + next: "pop" + }, { + defaultToken: "comment" + }] + }], + "ruleset": [{ + regex: "-(webkit|ms|moz|o)-", + token: "text" + }, { + token: "punctuation.operator", + regex: "[:;]" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + include: ["strings", "url", "comments"] + }, { + token: ["constant.numeric", "keyword"], + regex: "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant.numeric", + regex: "#[a-f0-9]{6}" + }, { + token: "constant.numeric", + regex: "#[a-f0-9]{3}" + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"], + regex: pseudoElements + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"], + regex: pseudoClasses + }, { + include: "url" + }, { + token: keywordMapper, + regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" + }, { + caseInsensitive: true + }], + url: [{ + token: "support.function", + regex: "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token: "support.function", + regex: "\\)", + next: "pop" + }, { + defaultToken: "string" + }] + }], + strings: [{ + token: "string.start", + regex: "'", + push: [{ + token: "string.end", + regex: "'|$", + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }, { + token: "string.start", + regex: '"', + push: [{ + token: "string.end", + regex: '"|$', + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], + escapes: [{ + token: "constant.language.escape", + regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ + }] + }; + this.normalizeRules(); +}; +oop.inherits(CssHighlightRules, TextHighlightRules); +exports.CssHighlightRules = CssHighlightRules; + +}); + +ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var DocCommentHighlightRules = function () { + this.$rules = { + "start": [{ + token: "comment.doc.tag", + regex: "@[\\w\\d_]+" // TODO: fix email addresses + }, + DocCommentHighlightRules.getTagRule(), + { + defaultToken: "comment.doc", + caseInsensitive: true + }] + }; +}; +oop.inherits(DocCommentHighlightRules, TextHighlightRules); +DocCommentHighlightRules.getTagRule = function (start) { + return { + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" + }; +}; +DocCommentHighlightRules.getStartRule = function (start) { + return { + token: "comment.doc", + regex: "\\/\\*(?=\\*)", + next: start + }; +}; +DocCommentHighlightRules.getEndRule = function (start) { + return { + token: "comment.doc", + regex: "\\*\\/", + next: start + }; +}; +exports.DocCommentHighlightRules = DocCommentHighlightRules; + +}); + +ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; +var JavaScriptHighlightRules = function (options) { + var keywordMapper = this.createKeywordMapper({ + "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|" + // Constructors + "Namespace|QName|XML|XMLList|" + // E4X + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors + "SyntaxError|TypeError|URIError|" + + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions + "isNaN|parseFloat|parseInt|" + + "JSON|Math|" + // Other + "this|arguments|prototype|window|document", + "keyword": "const|yield|import|get|set|async|await|" + + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + + "__parent__|__count__|escape|unescape|with|__proto__|" + + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor", + "storage.type": "const|let|var|function", + "constant.language": "null|Infinity|NaN|undefined", + "support.function": "alert", + "constant.language.boolean": "true|false" + }, "identifier"); + var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; + var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex + "u[0-9a-fA-F]{4}|" + // unicode + "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode + "[0-2][0-7]{0,2}|" + // oct + "3[0-7][0-7]?|" + // oct + "[4-7][0-7]?|" + //oct + ".)"; + this.$rules = { + "no_regex": [ + DocCommentHighlightRules.getStartRule("doc-start"), + comments("no_regex"), + { + token: "string", + regex: "'(?=.)", + next: "qstring" + }, { + token: "string", + regex: '"(?=.)', + next: "qqstring" + }, { + token: "constant.numeric", + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + }, { + token: [ + "storage.type", "punctuation.operator", "support.function", + "punctuation.operator", "entity.name.function", "text", "keyword.operator" + ], + regex: "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe + ")(\\s*)(=)", + next: "function_arguments" + }, { + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", "storage.type", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "entity.name.function", "text", "keyword.operator", "text", "storage.type", + "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(function\\*?)(\\s+)(" + identifierRe + ")(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "entity.name.function", "text", "punctuation.operator", + "text", "storage.type", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "text", "text", "storage.type", "text", "paren.lparen" + ], + regex: "(:)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: "keyword", + regex: "from(?=\\s*('|\"))" + }, { + token: "keyword", + regex: "(?:" + kwBeforeRe + ")\\b", + next: "start" + }, { + token: "support.constant", + regex: /that\b/ + }, { + token: ["storage.type", "punctuation.operator", "support.function.firebug"], + regex: /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ + }, { + token: keywordMapper, + regex: identifierRe + }, { + token: "punctuation.operator", + regex: /[.](?![.])/, + next: "property" + }, { + token: "storage.type", + regex: /=>/, + next: "start" + }, { + token: "keyword.operator", + regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next: "start" + }, { + token: "punctuation.operator", + regex: /[?:,;.]/, + next: "start" + }, { + token: "paren.lparen", + regex: /[\[({]/, + next: "start" + }, { + token: "paren.rparen", + regex: /[\])}]/ + }, { + token: "comment", + regex: /^#!.*$/ + } + ], + property: [{ + token: "text", + regex: "\\s+" + }, { + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()", + next: "function_arguments" + }, { + token: "punctuation.operator", + regex: /[.](?![.])/ + }, { + token: "support.function", + regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ + }, { + token: "support.function.dom", + regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ + }, { + token: "support.constant", + regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ + }, { + token: "identifier", + regex: identifierRe + }, { + regex: "", + token: "empty", + next: "no_regex" + } + ], + "start": [ + DocCommentHighlightRules.getStartRule("doc-start"), + comments("start"), + { + token: "string.regexp", + regex: "\\/", + next: "regex" + }, { + token: "text", + regex: "\\s+|^$", + next: "start" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "regex": [ + { + token: "regexp.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "string.regexp", + regex: "/[sxngimy]*", + next: "no_regex" + }, { + token: "invalid", + regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ + }, { + token: "constant.language.escape", + regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ + }, { + token: "constant.language.delimiter", + regex: /\|/ + }, { + token: "constant.language.escape", + regex: /\[\^?/, + next: "regex_character_class" + }, { + token: "empty", + regex: "$", + next: "no_regex" + }, { + defaultToken: "string.regexp" + } + ], + "regex_character_class": [ + { + token: "regexp.charclass.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "constant.language.escape", + regex: "]", + next: "regex" + }, { + token: "constant.language.escape", + regex: "-" + }, { + token: "empty", + regex: "$", + next: "no_regex" + }, { + defaultToken: "string.regexp.charachterclass" + } + ], + "default_parameter": [ + { + token: "string", + regex: "'(?=.)", + push: [ + { + token: "string", + regex: "'|$", + next: "pop" + }, { + include: "qstring" + } + ] + }, { + token: "string", + regex: '"(?=.)', + push: [ + { + token: "string", + regex: '"|$', + next: "pop" + }, { + include: "qqstring" + } + ] + }, { + token: "constant.language", + regex: "null|Infinity|NaN|undefined" + }, { + token: "constant.numeric", + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + }, { + token: "punctuation.operator", + regex: ",", + next: "function_arguments" + }, { + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "function_arguments": [ + comments("function_arguments"), + { + token: "variable.parameter", + regex: identifierRe + }, { + token: "punctuation.operator", + regex: "," + }, { + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: '"|$', + next: "no_regex" + }, { + defaultToken: "string" + } + ], + "qstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: "'|$", + next: "no_regex" + }, { + defaultToken: "string" + } + ] + }; + if (!options || !options.noES6) { + this.$rules.no_regex.unshift({ + regex: "[{}]", onMatch: function (val, state, stack) { + this.next = val == "{" ? this.nextState : ""; + if (val == "{" && stack.length) { + stack.unshift("start", state); + } + else if (val == "}" && stack.length) { + stack.shift(); + this.next = stack.shift(); + if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) + return "paren.quasi.end"; + } + return val == "{" ? "paren.lparen" : "paren.rparen"; + }, + nextState: "start" + }, { + token: "string.quasi.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedRe + }, { + token: "paren.quasi.start", + regex: /\${/, + push: "start" + }, { + token: "string.quasi.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string.quasi" + }] + }, { + token: ["variable.parameter", "text"], + regex: "(" + identifierRe + ")(\\s*)(?=\\=>)" + }, { + token: "paren.lparen", + regex: "(\\()(?=.+\\s*=>)", + next: "function_arguments" + }, { + token: "variable.language", + regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b" + }); + this.$rules["function_arguments"].unshift({ + token: "keyword.operator", + regex: "=", + next: "default_parameter" + }, { + token: "keyword.operator", + regex: "\\.{3}" + }); + this.$rules["property"].unshift({ + token: "support.function", + regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|" + + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()" + }, { + token: "constant.language", + regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b" + }); + if (!options || options.jsx != false) + JSX.call(this); + } + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]); + this.normalizeRules(); +}; +oop.inherits(JavaScriptHighlightRules, TextHighlightRules); +function JSX() { + var tagRegex = identifierRe.replace("\\d", "\\d\\-"); + var jsxTag = { + onMatch: function (val, state, stack) { + var offset = val.charAt(1) == "/" ? 2 : 1; + if (offset == 1) { + if (state != this.nextState) + stack.unshift(this.next, this.nextState, 0); + else + stack.unshift(this.next); + stack[2]++; + } + else if (offset == 2) { + if (state == this.nextState) { + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.shift(); + stack.shift(); + } + } + } + return [{ + type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", + value: val.slice(0, offset) + }, { + type: "meta.tag.tag-name.xml", + value: val.substr(offset) + }]; + }, + regex: "", + onMatch: function (value, currentState, stack) { + if (currentState == stack[0]) + stack.shift(); + if (value.length == 2) { + if (stack[0] == this.nextState) + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.splice(0, 2); + } + } + this.next = stack[0] || "start"; + return [{ type: this.token, value: value }]; + }, + nextState: "jsx" + }, + jsxJsRule, + comments("jsxAttributes"), + { + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + token: "text.tag-whitespace.xml", + regex: "\\s+" + }, { + token: "string.attribute-value.xml", + regex: "'", + stateName: "jsx_attr_q", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + stateName: "jsx_attr_qq", + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, + jsxTag + ]; + this.$rules.reference = [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }]; +} +function comments(next) { + return [ + { + token: "comment", + regex: /\/\*/, + next: [ + DocCommentHighlightRules.getTagRule(), + { token: "comment", regex: "\\*\\/", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } + ] + }, { + token: "comment", + regex: "\\/\\/", + next: [ + DocCommentHighlightRules.getTagRule(), + { token: "comment", regex: "$|^", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } + ] + } + ]; +} +exports.JavaScriptHighlightRules = JavaScriptHighlightRules; + +}); + +ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var XmlHighlightRules = function (normalize) { + var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; + this.$rules = { + start: [ + { token: "string.cdata.xml", regex: "<\\!\\[CDATA\\[", next: "cdata" }, + { + token: ["punctuation.instruction.xml", "keyword.instruction.xml"], + regex: "(<\\?)(" + tagRegex + ")", next: "processing_instruction" + }, + { token: "comment.start.xml", regex: "<\\!--", next: "comment" }, + { + token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], + regex: "(<\\!)(DOCTYPE)(?=[\\s])", next: "doctype", caseInsensitive: true + }, + { include: "tag" }, + { token: "text.end-tag-open.xml", regex: "", + next: "start" + }], + doctype: [ + { include: "whitespace" }, + { include: "string" }, + { token: "xml-pe.doctype.xml", regex: ">", next: "start" }, + { token: "xml-pe.xml", regex: "[-_a-zA-Z0-9:]+" }, + { token: "punctuation.int-subset", regex: "\\[", push: "int_subset" } + ], + int_subset: [{ + token: "text.xml", + regex: "\\s+" + }, { + token: "punctuation.int-subset.xml", + regex: "]", + next: "pop" + }, { + token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], + regex: "(<\\!)(" + tagRegex + ")", + push: [{ + token: "text", + regex: "\\s+" + }, + { + token: "punctuation.markup-decl.xml", + regex: ">", + next: "pop" + }, + { include: "string" }] + }], + cdata: [ + { token: "string.cdata.xml", regex: "\\]\\]>", next: "start" }, + { token: "text.xml", regex: "\\s+" }, + { token: "text.xml", regex: "(?:[^\\]]|\\](?!\\]>))+" } + ], + comment: [ + { token: "comment.end.xml", regex: "-->", next: "start" }, + { defaultToken: "comment.xml" } + ], + reference: [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + attr_reference: [{ + token: "constant.language.escape.reference.attribute-value.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + tag: [{ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], + regex: "(?:(<)|(", next: "start" } + ] + }], + tag_whitespace: [ + { token: "text.tag-whitespace.xml", regex: "\\s+" } + ], + whitespace: [ + { token: "text.whitespace.xml", regex: "\\s+" } + ], + string: [{ + token: "string.xml", + regex: "'", + push: [ + { token: "string.xml", regex: "'", next: "pop" }, + { defaultToken: "string.xml" } + ] + }, { + token: "string.xml", + regex: '"', + push: [ + { token: "string.xml", regex: '"', next: "pop" }, + { defaultToken: "string.xml" } + ] + }], + attributes: [{ + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + include: "tag_whitespace" + }, { + include: "attribute_value" + }], + attribute_value: [{ + token: "string.attribute-value.xml", + regex: "'", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }] + }; + if (this.constructor === XmlHighlightRules) + this.normalizeRules(); +}; +(function () { + this.embedTagRules = function (HighlightRules, prefix, tag) { + this.$rules.tag.unshift({ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(<)(" + tag + "(?=\\s|>|$))", + next: [ + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: prefix + "start" } + ] + }); + this.$rules[tag + "-end"] = [ + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start", + onMatch: function (value, currentState, stack) { + stack.splice(0); + return this.token; + } } + ]; + this.embedRules(HighlightRules, prefix, [{ + token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(|$))", + next: tag + "-end" + }, { + token: "string.cdata.xml", + regex: "<\\!\\[CDATA\\[" + }, { + token: "string.cdata.xml", + regex: "\\]\\]>" + }]); + }; +}).call(TextHighlightRules.prototype); +oop.inherits(XmlHighlightRules, TextHighlightRules); +exports.XmlHighlightRules = XmlHighlightRules; + +}); + +ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; +var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; +var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; +var tagMap = lang.createMap({ + a: 'anchor', + button: 'form', + form: 'form', + img: 'image', + input: 'form', + label: 'form', + option: 'form', + script: 'script', + select: 'form', + textarea: 'form', + style: 'style', + table: 'table', + tbody: 'table', + td: 'table', + tfoot: 'table', + th: 'table', + tr: 'table' +}); +var HtmlHighlightRules = function () { + XmlHighlightRules.call(this); + this.addRules({ + attributes: [{ + include: "tag_whitespace" + }, { + token: "entity.other.attribute-name.xml", + regex: "[-_a-zA-Z0-9:.]+" + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=", + push: [{ + include: "tag_whitespace" + }, { + token: "string.unquoted.attribute-value.html", + regex: "[^<>='\"`\\s]+", + next: "pop" + }, { + token: "empty", + regex: "", + next: "pop" + }] + }, { + include: "attribute_value" + }], + tag: [{ + token: function (start, tag) { + var group = tagMap[tag]; + return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", + "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; + }, + regex: "(", next: "start" } + ] + }); + this.embedTagRules(CssHighlightRules, "css-", "style"); + this.embedTagRules(new JavaScriptHighlightRules({ jsx: false }).getRules(), "js-", "script"); + if (this.constructor === HtmlHighlightRules) + this.normalizeRules(); +}; +oop.inherits(HtmlHighlightRules, XmlHighlightRules); +exports.HtmlHighlightRules = HtmlHighlightRules; + +}); + +ace.define("ace/mode/markdown_highlight_rules",["require","exports","module","ace/config","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/html_highlight_rules"], function(require, exports, module){"use strict"; +var modes = require("../config").$modes; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; +var escaped = function (ch) { + return "(?:[^" + lang.escapeRegExp(ch) + "\\\\]|\\\\.)*"; +}; +var MarkdownHighlightRules = function () { + HtmlHighlightRules.call(this); + var codeBlockStartRule = { + token: "support.function", + regex: /^\s*(```+[^`]*|~~~+[^~]*)$/, + onMatch: function (value, state, stack, line) { + var m = value.match(/^(\s*)([`~]+)(.*)/); + var language = /[\w-]+|$/.exec(m[3])[0]; + if (!modes[language]) + language = ""; + stack.unshift("githubblock", [], [m[1], m[2], language], state); + return this.token; + }, + next: "githubblock" + }; + var codeBlockRules = [{ + token: "support.function", + regex: ".*", + onMatch: function (value, state, stack, line) { + var embedState = stack[1]; + var indent = stack[2][0]; + var endMarker = stack[2][1]; + var language = stack[2][2]; + var m = /^(\s*)(`+|~+)\s*$/.exec(value); + if (m && m[1].length < indent.length + 3 + && m[2].length >= endMarker.length && m[2][0] == endMarker[0]) { + stack.splice(0, 3); + this.next = stack.shift(); + return this.token; + } + this.next = ""; + if (language && modes[language]) { + var data = modes[language].getTokenizer().getLineTokens(value, embedState.slice(0)); + stack[1] = data.state; + return data.tokens; + } + return this.token; + } + }]; + this.$rules["start"].unshift({ + token: "empty_line", + regex: '^$', + next: "allowBlock" + }, { + token: "markup.heading.1", + regex: "^=+(?=\\s*$)" + }, { + token: "markup.heading.2", + regex: "^\\-+(?=\\s*$)" + }, { + token: function (value) { + return "markup.heading." + value.length; + }, + regex: /^#{1,6}(?=\s|$)/, + next: "header" + }, codeBlockStartRule, { + token: "string.blockquote", + regex: "^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+", + next: "blockquote" + }, { + token: "constant", + regex: "^ {0,3}(?:(?:\\* ?){3,}|(?:\\- ?){3,}|(?:\\_ ?){3,})\\s*$", + next: "allowBlock" + }, { + token: "markup.list", + regex: "^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+", + next: "listblock-start" + }, { + include: "basic" + }); + this.addRules({ + "basic": [{ + token: "constant.language.escape", + regex: /\\[\\`*_{}\[\]()#+\-.!]/ + }, { + token: "support.function", + regex: "(`+)(.*?[^`])(\\1)" + }, { + token: ["text", "constant", "text", "url", "string", "text"], + regex: "^([ ]{0,3}\\[)([^\\]]+)(\\]:\\s*)([^ ]+)(\\s*(?:[\"][^\"]+[\"])?(\\s*))$" + }, { + token: ["text", "string", "text", "constant", "text"], + regex: "(\\[)(" + escaped("]") + ")(\\]\\s*\\[)(" + escaped("]") + ")(\\])" + }, { + token: ["text", "string", "text", "markup.underline", "string", "text"], + regex: "(\\!?\\[)(" + // [ + escaped("]") + // link text or alt text + ")(\\]\\()" + // ]( + '((?:[^\\)\\s\\\\]|\\\\.|\\s(?=[^"]))*)' + // href or image + '(\\s*"' + escaped('"') + '"\\s*)?' + // "title" + "(\\))" // ) + }, { + token: "string.strong", + regex: "([*]{2}|[_]{2}(?=\\S))(.*?\\S[*_]*)(\\1)" + }, { + token: "string.emphasis", + regex: "([*]|[_](?=\\S))(.*?\\S[*_]*)(\\1)" + }, { + token: ["text", "url", "text"], + regex: "(<)(" + + "(?:https?|ftp|dict):[^'\">\\s]+" + + "|" + + "(?:mailto:)?[-.\\w]+\\@[-a-z0-9]+(?:\\.[-a-z0-9]+)*\\.[a-z]+" + + ")(>)" + }], + "allowBlock": [ + { token: "support.function", regex: "^ {4}.+", next: "allowBlock" }, + { token: "empty_line", regex: '^$', next: "allowBlock" }, + { token: "empty", regex: "", next: "start" } + ], + "header": [{ + regex: "$", + next: "start" + }, { + include: "basic" + }, { + defaultToken: "heading" + }], + "listblock-start": [{ + token: "support.variable", + regex: /(?:\[[ x]\])?/, + next: "listblock" + }], + "listblock": [{ + token: "empty_line", + regex: "^$", + next: "start" + }, { + token: "markup.list", + regex: "^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+", + next: "listblock-start" + }, { + include: "basic", noEscape: true + }, + codeBlockStartRule, + { + defaultToken: "list" //do not use markup.list to allow stling leading `*` differntly + }], + "blockquote": [{ + token: "empty_line", + regex: "^\\s*$", + next: "start" + }, { + token: "string.blockquote", + regex: "^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+", + next: "blockquote" + }, { + include: "basic", noEscape: true + }, { + defaultToken: "string.blockquote" + }], + "githubblock": codeBlockRules + }); + this.normalizeRules(); +}; +oop.inherits(MarkdownHighlightRules, TextHighlightRules); +exports.MarkdownHighlightRules = MarkdownHighlightRules; + +}); + +ace.define("ace/mode/folding/markdown",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var BaseFoldMode = require("./fold_mode").FoldMode; +var Range = require("../../range").Range; +var FoldMode = exports.FoldMode = function () { }; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /^(?:[=-]+\s*$|#{1,6} |`{3})/; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (!this.foldingStartMarker.test(line)) + return ""; + if (line[0] == "`") { + if (session.bgTokenizer.getState(row) == "start") + return "end"; + return "start"; + } + return "start"; + }; + this.getFoldWidgetRange = function (session, foldStyle, row) { + var line = session.getLine(row); + var startColumn = line.length; + var maxRow = session.getLength(); + var startRow = row; + var endRow = row; + if (!line.match(this.foldingStartMarker)) + return; + if (line[0] == "`") { + if (session.bgTokenizer.getState(row) !== "start") { + while (++row < maxRow) { + line = session.getLine(row); + if (line[0] == "`" & line.substring(0, 3) == "```") + break; + } + return new Range(startRow, startColumn, row, 0); + } + else { + while (row-- > 0) { + line = session.getLine(row); + if (line[0] == "`" & line.substring(0, 3) == "```") + break; + } + return new Range(row, line.length, startRow, 0); + } + } + var token; + function isHeading(row) { + token = session.getTokens(row)[0]; + return token && token.type.lastIndexOf(heading, 0) === 0; + } + var heading = "markup.heading"; + function getLevel() { + var ch = token.value[0]; + if (ch == "=") + return 6; + if (ch == "-") + return 5; + return 7 - token.value.search(/[^#]|$/); + } + if (isHeading(row)) { + var startHeadingLevel = getLevel(); + while (++row < maxRow) { + if (!isHeading(row)) + continue; + var level = getLevel(); + if (level >= startHeadingLevel) + break; + } + endRow = row - (!token || ["=", "-"].indexOf(token.value[0]) == -1 ? 1 : 2); + if (endRow > startRow) { + while (endRow > startRow && /^\s*$/.test(session.getLine(endRow))) + endRow--; + } + if (endRow > startRow) { + var endColumn = session.getLine(endRow).length; + return new Range(startRow, startColumn, endRow, endColumn); + } + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) + return false; + return /^\s*\}/.test(input); + }; + this.autoOutdent = function (doc, row) { + var line = doc.getLine(row); + var match = line.match(/^(\s*\})/); + if (!match) + return 0; + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; + var indent = this.$getIndent(doc.getLine(openBracePos.row)); + doc.replace(new Range(row, 0, row, column - 1), indent); + }; + this.$getIndent = function (line) { + return line.match(/^\s*/)[0]; + }; +}).call(MatchingBraceOutdent.prototype); +exports.MatchingBraceOutdent = MatchingBraceOutdent; + +}); + +ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = JavaScriptHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CstyleBehaviour(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "//"; + this.blockComment = { start: "/*", end: "*/" }; + this.$quotes = { '"': '"', "'": "'", "`": "`" }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + var endState = tokenizedLine.state; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + if (state == "start" || state == "no_regex") { + var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); + if (match) { + indent += tab; + } + } + else if (state == "doc-start") { + if (endState == "start" || endState == "no_regex") { + return ""; + } + var match = line.match(/^\s*(\/?)\*/); + if (match) { + if (match[1]) { + indent += " "; + } + indent += "* "; + } + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.createWorker = function (session) { + var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); + worker.attachToDocument(session.getDocument()); + worker.on("annotate", function (results) { + session.setAnnotations(results.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/javascript"; + this.snippetFileId = "ace/snippets/javascript"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +ace.define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module){"use strict"; +var propertyMap = { + "background": { "#$0": 1 }, + "background-color": { "#$0": 1, "transparent": 1, "fixed": 1 }, + "background-image": { "url('/$0')": 1 }, + "background-repeat": { "repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1 }, + "background-position": { "bottom": 2, "center": 2, "left": 2, "right": 2, "top": 2, "inherit": 2 }, + "background-attachment": { "scroll": 1, "fixed": 1 }, + "background-size": { "cover": 1, "contain": 1 }, + "background-clip": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "background-origin": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "border": { "solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1 }, + "border-color": { "#$0": 1 }, + "border-style": { "solid": 2, "dashed": 2, "dotted": 2, "double": 2, "groove": 2, "hidden": 2, "inherit": 2, "inset": 2, "none": 2, "outset": 2, "ridged": 2 }, + "border-collapse": { "collapse": 1, "separate": 1 }, + "bottom": { "px": 1, "em": 1, "%": 1 }, + "clear": { "left": 1, "right": 1, "both": 1, "none": 1 }, + "color": { "#$0": 1, "rgb(#$00,0,0)": 1 }, + "cursor": { "default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1 }, + "display": { "none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1 }, + "empty-cells": { "show": 1, "hide": 1 }, + "float": { "left": 1, "right": 1, "none": 1 }, + "font-family": { "Arial": 2, "Comic Sans MS": 2, "Consolas": 2, "Courier New": 2, "Courier": 2, "Georgia": 2, "Monospace": 2, "Sans-Serif": 2, "Segoe UI": 2, "Tahoma": 2, "Times New Roman": 2, "Trebuchet MS": 2, "Verdana": 1 }, + "font-size": { "px": 1, "em": 1, "%": 1 }, + "font-weight": { "bold": 1, "normal": 1 }, + "font-style": { "italic": 1, "normal": 1 }, + "font-variant": { "normal": 1, "small-caps": 1 }, + "height": { "px": 1, "em": 1, "%": 1 }, + "left": { "px": 1, "em": 1, "%": 1 }, + "letter-spacing": { "normal": 1 }, + "line-height": { "normal": 1 }, + "list-style-type": { "none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1 }, + "margin": { "px": 1, "em": 1, "%": 1 }, + "margin-right": { "px": 1, "em": 1, "%": 1 }, + "margin-left": { "px": 1, "em": 1, "%": 1 }, + "margin-top": { "px": 1, "em": 1, "%": 1 }, + "margin-bottom": { "px": 1, "em": 1, "%": 1 }, + "max-height": { "px": 1, "em": 1, "%": 1 }, + "max-width": { "px": 1, "em": 1, "%": 1 }, + "min-height": { "px": 1, "em": 1, "%": 1 }, + "min-width": { "px": 1, "em": 1, "%": 1 }, + "overflow": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-x": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-y": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "padding": { "px": 1, "em": 1, "%": 1 }, + "padding-top": { "px": 1, "em": 1, "%": 1 }, + "padding-right": { "px": 1, "em": 1, "%": 1 }, + "padding-bottom": { "px": 1, "em": 1, "%": 1 }, + "padding-left": { "px": 1, "em": 1, "%": 1 }, + "page-break-after": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "page-break-before": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "position": { "absolute": 1, "relative": 1, "fixed": 1, "static": 1 }, + "right": { "px": 1, "em": 1, "%": 1 }, + "table-layout": { "fixed": 1, "auto": 1 }, + "text-decoration": { "none": 1, "underline": 1, "line-through": 1, "blink": 1 }, + "text-align": { "left": 1, "right": 1, "center": 1, "justify": 1 }, + "text-transform": { "capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1 }, + "top": { "px": 1, "em": 1, "%": 1 }, + "vertical-align": { "top": 1, "bottom": 1 }, + "visibility": { "hidden": 1, "visible": 1 }, + "white-space": { "nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1 }, + "width": { "px": 1, "em": 1, "%": 1 }, + "word-spacing": { "normal": 1 }, + "filter": { "alpha(opacity=$0100)": 1 }, + "text-shadow": { "$02px 2px 2px #777": 1 }, + "text-overflow": { "ellipsis-word": 1, "clip": 1, "ellipsis": 1 }, + "-moz-border-radius": 1, + "-moz-border-radius-topright": 1, + "-moz-border-radius-bottomright": 1, + "-moz-border-radius-topleft": 1, + "-moz-border-radius-bottomleft": 1, + "-webkit-border-radius": 1, + "-webkit-border-top-right-radius": 1, + "-webkit-border-top-left-radius": 1, + "-webkit-border-bottom-right-radius": 1, + "-webkit-border-bottom-left-radius": 1, + "-moz-box-shadow": 1, + "-webkit-box-shadow": 1, + "transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-moz-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-webkit-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 } +}; +var CssCompletions = function () { +}; +(function () { + this.completionsDefined = false; + this.defineCompletions = function () { + if (document) { + var style = document.createElement('c').style; + for (var i in style) { + if (typeof style[i] !== 'string') + continue; + var name = i.replace(/[A-Z]/g, function (x) { + return '-' + x.toLowerCase(); + }); + if (!propertyMap.hasOwnProperty(name)) + propertyMap[name] = 1; + } + } + this.completionsDefined = true; + }; + this.getCompletions = function (state, session, pos, prefix) { + if (!this.completionsDefined) { + this.defineCompletions(); + } + if (state === 'ruleset' || session.$mode.$id == "ace/mode/scss") { + var line = session.getLine(pos.row).substr(0, pos.column); + var inParens = /\([^)]*$/.test(line); + if (inParens) { + line = line.substr(line.lastIndexOf('(') + 1); + } + if (/:[^;]+$/.test(line)) { + /([\w\-]+):[^:]*$/.test(line); + return this.getPropertyValueCompletions(state, session, pos, prefix); + } + else { + return this.getPropertyCompletions(state, session, pos, prefix, inParens); + } + } + return []; + }; + this.getPropertyCompletions = function (state, session, pos, prefix, skipSemicolon) { + skipSemicolon = skipSemicolon || false; + var properties = Object.keys(propertyMap); + return properties.map(function (property) { + return { + caption: property, + snippet: property + ': $0' + (skipSemicolon ? '' : ';'), + meta: "property", + score: 1000000 + }; + }); + }; + this.getPropertyValueCompletions = function (state, session, pos, prefix) { + var line = session.getLine(pos.row).substr(0, pos.column); + var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; + if (!property) + return []; + var values = []; + if (property in propertyMap && typeof propertyMap[property] === "object") { + values = Object.keys(propertyMap[property]); + } + return values.map(function (value) { + return { + caption: value, + snippet: value, + meta: "property value", + score: 1000000 + }; + }); + }; +}).call(CssCompletions.prototype); +exports.CssCompletions = CssCompletions; + +}); + +ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Behaviour = require("../behaviour").Behaviour; +var CstyleBehaviour = require("./cstyle").CstyleBehaviour; +var TokenIterator = require("../../token_iterator").TokenIterator; +var CssBehaviour = function () { + this.inherit(CstyleBehaviour); + this.add("colon", "insertion", function (state, action, editor, session, text) { + if (text === ':' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.value.match(/\s+/)) { + token = iterator.stepBackward(); + } + if (token && token.type === 'support.type') { + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + if (rightChar === ':') { + return { + text: '', + selection: [1, 1] + }; + } + if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { + return { + text: ':;', + selection: [1, 1] + }; + } + } + } + }); + this.add("colon", "deletion", function (state, action, editor, session, range) { + var selected = session.doc.getTextRange(range); + if (!range.isMultiLine() && selected === ':') { + var cursor = editor.getCursorPosition(); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.value.match(/\s+/)) { + token = iterator.stepBackward(); + } + if (token && token.type === 'support.type') { + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.end.column, range.end.column + 1); + if (rightChar === ';') { + range.end.column++; + return range; + } + } + } + }); + this.add("semicolon", "insertion", function (state, action, editor, session, text) { + if (text === ';' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + if (rightChar === ';') { + return { + text: '', + selection: [1, 1] + }; + } + } + }); + this.add("!important", "insertion", function (state, action, editor, session, text) { + if (text === '!' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { + return { + text: '!important', + selection: [10, 10] + }; + } + } + }); +}; +oop.inherits(CssBehaviour, CstyleBehaviour); +exports.CssBehaviour = CssBehaviour; + +}); + +ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var CssCompletions = require("./css_completions").CssCompletions; +var CssBehaviour = require("./behaviour/css").CssBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = CssHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CssBehaviour(); + this.$completer = new CssCompletions(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.foldingRules = "cStyle"; + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokens = this.getTokenizer().getLineTokens(line, state).tokens; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + var match = line.match(/^.*\{\s*$/); + if (match) { + indent += tab; + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.getCompletions = function (state, session, pos, prefix) { + return this.$completer.getCompletions(state, session, pos, prefix); + }; + this.createWorker = function (session) { + var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); + worker.attachToDocument(session.getDocument()); + worker.on("annotate", function (e) { + session.setAnnotations(e.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/css"; + this.snippetFileId = "ace/snippets/css"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Behaviour = require("../behaviour").Behaviour; +var TokenIterator = require("../../token_iterator").TokenIterator; +var lang = require("../../lib/lang"); +function is(token, type) { + return token && token.type.lastIndexOf(type + ".xml") > -1; +} +var XmlBehaviour = function () { + this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { + if (text == '"' || text == "'") { + var quote = text; + var selected = session.doc.getTextRange(editor.getSelectionRange()); + if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { + return { + text: quote + selected + quote, + selection: false + }; + } + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { + return { + text: "", + selection: [1, 1] + }; + } + if (!token) + token = iterator.stepBackward(); + if (!token) + return; + while (is(token, "tag-whitespace") || is(token, "whitespace")) { + token = iterator.stepBackward(); + } + var rightSpace = !rightChar || rightChar.match(/\s/); + if (is(token, "attribute-equals") && (rightSpace || rightChar == '>') || (is(token, "decl-attribute-equals") && (rightSpace || rightChar == '?'))) { + return { + text: quote + quote, + selection: [1, 1] + }; + } + } + }); + this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { + var selected = session.doc.getTextRange(range); + if (!range.isMultiLine() && (selected == '"' || selected == "'")) { + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.start.column + 1, range.start.column + 2); + if (rightChar == selected) { + range.end.column++; + return range; + } + } + }); + this.add("autoclosing", "insertion", function (state, action, editor, session, text) { + if (text == '>') { + var position = editor.getSelectionRange().start; + var iterator = new TokenIterator(session, position.row, position.column); + var token = iterator.getCurrentToken() || iterator.stepBackward(); + if (!token || !(is(token, "tag-name") || is(token, "tag-whitespace") || is(token, "attribute-name") || is(token, "attribute-equals") || is(token, "attribute-value"))) + return; + if (is(token, "reference.attribute-value")) + return; + if (is(token, "attribute-value")) { + var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; + if (position.column < tokenEndColumn) + return; + if (position.column == tokenEndColumn) { + var nextToken = iterator.stepForward(); + if (nextToken && is(nextToken, "attribute-value")) + return; + iterator.stepBackward(); + } + } + if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) + return; + while (!is(token, "tag-name")) { + token = iterator.stepBackward(); + if (token.value == "<") { + token = iterator.stepForward(); + break; + } + } + var tokenRow = iterator.getCurrentTokenRow(); + var tokenColumn = iterator.getCurrentTokenColumn(); + if (is(iterator.stepBackward(), "end-tag-open")) + return; + var element = token.value; + if (tokenRow == position.row) + element = element.substring(0, position.column - tokenColumn); + if (this.voidElements.hasOwnProperty(element.toLowerCase())) + return; + return { + text: ">" + "", + selection: [1, 1] + }; + } + }); + this.add("autoindent", "insertion", function (state, action, editor, session, text) { + if (text == "\n") { + var cursor = editor.getCursorPosition(); + var line = session.getLine(cursor.row); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.type.indexOf("tag-close") !== -1) { + if (token.value == "/>") + return; + while (token && token.type.indexOf("tag-name") === -1) { + token = iterator.stepBackward(); + } + if (!token) { + return; + } + var tag = token.value; + var row = iterator.getCurrentTokenRow(); + token = iterator.stepBackward(); + if (!token || token.type.indexOf("end-tag") !== -1) { + return; + } + if (this.voidElements && !this.voidElements[tag]) { + var nextToken = session.getTokenAt(cursor.row, cursor.column + 1); + var line = session.getLine(row); + var nextIndent = this.$getIndent(line); + var indent = nextIndent + session.getTabString(); + if (nextToken && nextToken.value === " -1; +} +(function () { + this.getFoldWidget = function (session, foldStyle, row) { + var tag = this._getFirstTagInLine(session, row); + if (!tag) + return this.getCommentFoldWidget(session, row); + if (tag.closing || (!tag.tagName && tag.selfClosing)) + return foldStyle === "markbeginend" ? "end" : ""; + if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) + return ""; + if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) + return ""; + return "start"; + }; + this.getCommentFoldWidget = function (session, row) { + if (/comment/.test(session.getState(row)) && /'; + break; + } + } + return tag; + } + else if (is(token, "tag-close")) { + tag.selfClosing = token.value == '/>'; + return tag; + } + tag.start.column += token.value.length; + } + return null; + }; + this._findEndTagInLine = function (session, row, tagName, startColumn) { + var tokens = session.getTokens(row); + var column = 0; + for (var i = 0; i < tokens.length; i++) { + var token = tokens[i]; + column += token.value.length; + if (column < startColumn) + continue; + if (is(token, "end-tag-open")) { + token = tokens[i + 1]; + if (token && token.value == tagName) + return true; + } + } + return false; + }; + this.getFoldWidgetRange = function (session, foldStyle, row) { + var tags = session.getMatchingTags({ row: row, column: 0 }); + if (tags) { + return new Range(tags.openTag.end.row, tags.openTag.end.column, tags.closeTag.start.row, tags.closeTag.start.column); + } + else { + return this.getCommentFoldWidget(session, row) + && session.getCommentFoldRange(row, session.getLine(row).length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var MixedFoldMode = require("./mixed").FoldMode; +var XmlFoldMode = require("./xml").FoldMode; +var CStyleFoldMode = require("./cstyle").FoldMode; +var FoldMode = exports.FoldMode = function (voidElements, optionalTags) { + MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { + "js-": new CStyleFoldMode(), + "css-": new CStyleFoldMode() + }); +}; +oop.inherits(FoldMode, MixedFoldMode); + +}); + +ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module){"use strict"; +var TokenIterator = require("../token_iterator").TokenIterator; +var commonAttributes = [ + "accesskey", + "class", + "contenteditable", + "contextmenu", + "dir", + "draggable", + "dropzone", + "hidden", + "id", + "inert", + "itemid", + "itemprop", + "itemref", + "itemscope", + "itemtype", + "lang", + "spellcheck", + "style", + "tabindex", + "title", + "translate" +]; +var eventAttributes = [ + "onabort", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextmenu", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onmousewheel", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onscroll", + "onseeked", + "onseeking", + "onselect", + "onshow", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "onvolumechange", + "onwaiting" +]; +var globalAttributes = commonAttributes.concat(eventAttributes); +var attributeMap = { + "a": { "href": 1, "target": { "_blank": 1, "top": 1 }, "ping": 1, "rel": { "nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1 }, "media": 1, "hreflang": 1, "type": 1 }, + "abbr": {}, + "address": {}, + "area": { "shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1 }, + "article": { "pubdate": 1 }, + "aside": {}, + "audio": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "b": {}, + "base": { "href": 1, "target": 1 }, + "bdi": {}, + "bdo": {}, + "blockquote": { "cite": 1 }, + "body": { "onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1 }, + "br": {}, + "button": { "autofocus": 1, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": { "button": 1, "submit": 1 } }, + "canvas": { "width": 1, "height": 1 }, + "caption": {}, + "cite": {}, + "code": {}, + "col": { "span": 1 }, + "colgroup": { "span": 1 }, + "command": { "type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1 }, + "data": {}, + "datalist": {}, + "dd": {}, + "del": { "cite": 1, "datetime": 1 }, + "details": { "open": 1 }, + "dfn": {}, + "dialog": { "open": 1 }, + "div": {}, + "dl": {}, + "dt": {}, + "em": {}, + "embed": { "src": 1, "height": 1, "width": 1, "type": 1 }, + "fieldset": { "disabled": 1, "form": 1, "name": 1 }, + "figcaption": {}, + "figure": {}, + "footer": {}, + "form": { "accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": { "multipart/form-data": 1, "application/x-www-form-urlencoded": 1 }, "method": { "get": 1, "post": 1 }, "name": 1, "novalidate": 1, "target": { "_blank": 1, "top": 1 } }, + "h1": {}, + "h2": {}, + "h3": {}, + "h4": {}, + "h5": {}, + "h6": {}, + "head": {}, + "header": {}, + "hr": {}, + "html": { "manifest": 1 }, + "i": {}, + "iframe": { "name": 1, "src": 1, "height": 1, "width": 1, "sandbox": { "allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1 }, "seamless": { "seamless": 1 } }, + "img": { "alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1 }, + "input": { + "type": { "text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1 }, + "accept": 1, "alt": 1, "autocomplete": { "on": 1, "off": 1 }, "autofocus": { "autofocus": 1 }, "checked": { "checked": 1 }, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": { "application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1 }, "formmethod": { "get": 1, "post": 1 }, "formnovalidate": { "formnovalidate": 1 }, "formtarget": { "_blank": 1, "_self": 1, "_parent": 1, "_top": 1 }, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": { "multiple": 1 }, "name": 1, "pattern": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1 + }, + "ins": { "cite": 1, "datetime": 1 }, + "kbd": {}, + "keygen": { "autofocus": 1, "challenge": { "challenge": 1 }, "disabled": { "disabled": 1 }, "form": 1, "keytype": { "rsa": 1, "dsa": 1, "ec": 1 }, "name": 1 }, + "label": { "form": 1, "for": 1 }, + "legend": {}, + "li": { "value": 1 }, + "link": { "href": 1, "hreflang": 1, "rel": { "stylesheet": 1, "icon": 1 }, "media": { "all": 1, "screen": 1, "print": 1 }, "type": { "text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1 }, "sizes": 1 }, + "main": {}, + "map": { "name": 1 }, + "mark": {}, + "math": {}, + "menu": { "type": 1, "label": 1 }, + "meta": { "http-equiv": { "content-type": 1 }, "name": { "description": 1, "keywords": 1 }, "content": { "text/html; charset=UTF-8": 1 }, "charset": 1 }, + "meter": { "value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1 }, + "nav": {}, + "noscript": { "href": 1 }, + "object": { "param": 1, "data": 1, "type": 1, "height": 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1 }, + "ol": { "start": 1, "reversed": 1 }, + "optgroup": { "disabled": 1, "label": 1 }, + "option": { "disabled": 1, "selected": 1, "label": 1, "value": 1 }, + "output": { "for": 1, "form": 1, "name": 1 }, + "p": {}, + "param": { "name": 1, "value": 1 }, + "pre": {}, + "progress": { "value": 1, "max": 1 }, + "q": { "cite": 1 }, + "rp": {}, + "rt": {}, + "ruby": {}, + "s": {}, + "samp": {}, + "script": { "charset": 1, "type": { "text/javascript": 1 }, "src": 1, "defer": 1, "async": 1 }, + "select": { "autofocus": 1, "disabled": 1, "form": 1, "multiple": { "multiple": 1 }, "name": 1, "size": 1, "readonly": { "readonly": 1 } }, + "small": {}, + "source": { "src": 1, "type": 1, "media": 1 }, + "span": {}, + "strong": {}, + "style": { "type": 1, "media": { "all": 1, "screen": 1, "print": 1 }, "scoped": 1 }, + "sub": {}, + "sup": {}, + "svg": {}, + "table": { "summary": 1 }, + "tbody": {}, + "td": { "headers": 1, "rowspan": 1, "colspan": 1 }, + "textarea": { "autofocus": { "autofocus": 1 }, "disabled": { "disabled": 1 }, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "rows": 1, "cols": 1, "wrap": { "on": 1, "off": 1, "hard": 1, "soft": 1 } }, + "tfoot": {}, + "th": { "headers": 1, "rowspan": 1, "colspan": 1, "scope": 1 }, + "thead": {}, + "time": { "datetime": 1 }, + "title": {}, + "tr": {}, + "track": { "kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1 }, + "section": {}, + "summary": {}, + "u": {}, + "ul": {}, + "var": {}, + "video": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "width": 1, "height": 1, "poster": 1, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "wbr": {} +}; +var elements = Object.keys(attributeMap); +function is(token, type) { + return token.type.lastIndexOf(type + ".xml") > -1; +} +function findTagName(session, pos) { + var iterator = new TokenIterator(session, pos.row, pos.column); + var token = iterator.getCurrentToken(); + while (token && !is(token, "tag-name")) { + token = iterator.stepBackward(); + } + if (token) + return token.value; +} +function findAttributeName(session, pos) { + var iterator = new TokenIterator(session, pos.row, pos.column); + var token = iterator.getCurrentToken(); + while (token && !is(token, "attribute-name")) { + token = iterator.stepBackward(); + } + if (token) + return token.value; +} +var HtmlCompletions = function () { +}; +(function () { + this.getCompletions = function (state, session, pos, prefix) { + var token = session.getTokenAt(pos.row, pos.column); + if (!token) + return []; + if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) + return this.getTagCompletions(state, session, pos, prefix); + if (is(token, "tag-whitespace") || is(token, "attribute-name")) + return this.getAttributeCompletions(state, session, pos, prefix); + if (is(token, "attribute-value")) + return this.getAttributeValueCompletions(state, session, pos, prefix); + var line = session.getLine(pos.row).substr(0, pos.column); + if (/&[a-z]*$/i.test(line)) + return this.getHTMLEntityCompletions(state, session, pos, prefix); + return []; + }; + this.getTagCompletions = function (state, session, pos, prefix) { + return elements.map(function (element) { + return { + value: element, + meta: "tag", + score: 1000000 + }; + }); + }; + this.getAttributeCompletions = function (state, session, pos, prefix) { + var tagName = findTagName(session, pos); + if (!tagName) + return []; + var attributes = globalAttributes; + if (tagName in attributeMap) { + attributes = attributes.concat(Object.keys(attributeMap[tagName])); + } + return attributes.map(function (attribute) { + return { + caption: attribute, + snippet: attribute + '="$0"', + meta: "attribute", + score: 1000000 + }; + }); + }; + this.getAttributeValueCompletions = function (state, session, pos, prefix) { + var tagName = findTagName(session, pos); + var attributeName = findAttributeName(session, pos); + if (!tagName) + return []; + var values = []; + if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { + values = Object.keys(attributeMap[tagName][attributeName]); + } + return values.map(function (value) { + return { + caption: value, + snippet: value, + meta: "attribute value", + score: 1000000 + }; + }); + }; + this.getHTMLEntityCompletions = function (state, session, pos, prefix) { + var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;']; + return values.map(function (value) { + return { + caption: value, + snippet: value, + meta: "html entity", + score: 1000000 + }; + }); + }; +}).call(HtmlCompletions.prototype); +exports.HtmlCompletions = HtmlCompletions; + +}); + +ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextMode = require("./text").Mode; +var JavaScriptMode = require("./javascript").Mode; +var CssMode = require("./css").Mode; +var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; +var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; +var HtmlFoldMode = require("./folding/html").FoldMode; +var HtmlCompletions = require("./html_completions").HtmlCompletions; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; +var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; +var Mode = function (options) { + this.fragmentContext = options && options.fragmentContext; + this.HighlightRules = HtmlHighlightRules; + this.$behaviour = new XmlBehaviour(); + this.$completer = new HtmlCompletions(); + this.createModeDelegates({ + "js-": JavaScriptMode, + "css-": CssMode + }); + this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); +}; +oop.inherits(Mode, TextMode); +(function () { + this.blockComment = { start: "" }; + this.voidElements = lang.arrayToMap(voidElements); + this.getNextLineIndent = function (state, line, tab) { + return this.$getIndent(line); + }; + this.checkOutdent = function (state, line, input) { + return false; + }; + this.getCompletions = function (state, session, pos, prefix) { + return this.$completer.getCompletions(state, session, pos, prefix); + }; + this.createWorker = function (session) { + if (this.constructor != Mode) + return; + var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker"); + worker.attachToDocument(session.getDocument()); + if (this.fragmentContext) + worker.call("setOptions", [{ context: this.fragmentContext }]); + worker.on("error", function (e) { + session.setAnnotations(e.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/html"; + this.snippetFileId = "ace/snippets/html"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +ace.define("ace/mode/sh_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var reservedKeywords = exports.reservedKeywords = ('!|{|}|case|do|done|elif|else|' + + 'esac|fi|for|if|in|then|until|while|' + + '&|;|export|local|read|typeset|unset|' + + 'elif|select|set|function|declare|readonly'); +var languageConstructs = exports.languageConstructs = ('[|]|alias|bg|bind|break|builtin|' + + 'cd|command|compgen|complete|continue|' + + 'dirs|disown|echo|enable|eval|exec|' + + 'exit|fc|fg|getopts|hash|help|history|' + + 'jobs|kill|let|logout|popd|printf|pushd|' + + 'pwd|return|set|shift|shopt|source|' + + 'suspend|test|times|trap|type|ulimit|' + + 'umask|unalias|wait'); +var ShHighlightRules = function () { + var keywordMapper = this.createKeywordMapper({ + "keyword": reservedKeywords, + "support.function.builtin": languageConstructs, + "invalid.deprecated": "debugger" + }, "identifier"); + var integer = "(?:(?:[1-9]\\d*)|(?:0))"; + var fraction = "(?:\\.\\d+)"; + var intPart = "(?:\\d+)"; + var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))"; + var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + ")"; + var floatNumber = "(?:" + exponentFloat + "|" + pointFloat + ")"; + var fileDescriptor = "(?:&" + intPart + ")"; + var variableName = "[a-zA-Z_][a-zA-Z0-9_]*"; + var variable = "(?:" + variableName + "(?==))"; + var builtinVariable = "(?:\\$(?:SHLVL|\\$|\\!|\\?))"; + var func = "(?:" + variableName + "\\s*\\(\\))"; + this.$rules = { + "start": [{ + token: "constant", + regex: /\\./ + }, { + token: ["text", "comment"], + regex: /(^|\s)(#.*)$/ + }, { + token: "string.start", + regex: '"', + push: [{ + token: "constant.language.escape", + regex: /\\(?:[$`"\\]|$)/ + }, { + include: "variables" + }, { + token: "keyword.operator", + regex: /`/ // TODO highlight ` + }, { + token: "string.end", + regex: '"', + next: "pop" + }, { + defaultToken: "string" + }] + }, { + token: "string", + regex: "\\$'", + push: [{ + token: "constant.language.escape", + regex: /\\(?:[abeEfnrtv\\'"]|x[a-fA-F\d]{1,2}|u[a-fA-F\d]{4}([a-fA-F\d]{4})?|c.|\d{1,3})/ + }, { + token: "string", + regex: "'", + next: "pop" + }, { + defaultToken: "string" + }] + }, { + regex: "<<<", + token: "keyword.operator" + }, { + stateName: "heredoc", + regex: "(<<-?)(\\s*)(['\"`]?)([\\w\\-]+)(['\"`]?)", + onMatch: function (value, currentState, stack) { + var next = value[2] == '-' ? "indentedHeredoc" : "heredoc"; + var tokens = value.split(this.splitRegex); + stack.push(next, tokens[4]); + return [ + { type: "constant", value: tokens[1] }, + { type: "text", value: tokens[2] }, + { type: "string", value: tokens[3] }, + { type: "support.class", value: tokens[4] }, + { type: "string", value: tokens[5] } + ]; + }, + rules: { + heredoc: [{ + onMatch: function (value, currentState, stack) { + if (value === stack[1]) { + stack.shift(); + stack.shift(); + this.next = stack[0] || "start"; + return "support.class"; + } + this.next = ""; + return "string"; + }, + regex: ".*$", + next: "start" + }], + indentedHeredoc: [{ + token: "string", + regex: "^\t+" + }, { + onMatch: function (value, currentState, stack) { + if (value === stack[1]) { + stack.shift(); + stack.shift(); + this.next = stack[0] || "start"; + return "support.class"; + } + this.next = ""; + return "string"; + }, + regex: ".*$", + next: "start" + }] + } + }, { + regex: "$", + token: "empty", + next: function (currentState, stack) { + if (stack[0] === "heredoc" || stack[0] === "indentedHeredoc") + return stack[0]; + return currentState; + } + }, { + token: ["keyword", "text", "text", "text", "variable"], + regex: /(declare|local|readonly)(\s+)(?:(-[fixar]+)(\s+))?([a-zA-Z_][a-zA-Z0-9_]*\b)/ + }, { + token: "variable.language", + regex: builtinVariable + }, { + token: "variable", + regex: variable + }, { + include: "variables" + }, { + token: "support.function", + regex: func + }, { + token: "support.function", + regex: fileDescriptor + }, { + token: "string", + start: "'", end: "'" + }, { + token: "constant.numeric", + regex: floatNumber + }, { + token: "constant.numeric", + regex: integer + "\\b" + }, { + token: keywordMapper, + regex: "[a-zA-Z_][a-zA-Z0-9_]*\\b" + }, { + token: "keyword.operator", + regex: "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|~|<|>|<=|=>|=|!=|[%&|`]" + }, { + token: "punctuation.operator", + regex: ";" + }, { + token: "paren.lparen", + regex: "[\\[\\(\\{]" + }, { + token: "paren.rparen", + regex: "[\\]]" + }, { + token: "paren.rparen", + regex: "[\\)\\}]", + next: "pop" + }], + variables: [{ + token: "variable", + regex: /(\$)(\w+)/ + }, { + token: ["variable", "paren.lparen"], + regex: /(\$)(\()/, + push: "start" + }, { + token: ["variable", "paren.lparen", "keyword.operator", "variable", "keyword.operator"], + regex: /(\$)(\{)([#!]?)(\w+|[*@#?\-$!0_])(:[?+\-=]?|##?|%%?|,,?\/|\^\^?)?/, + push: "start" + }, { + token: "variable", + regex: /\$[*@#?\-$!0_]/ + }, { + token: ["variable", "paren.lparen"], + regex: /(\$)(\{)/, + push: "start" + }] + }; + this.normalizeRules(); +}; +oop.inherits(ShHighlightRules, TextHighlightRules); +exports.ShHighlightRules = ShHighlightRules; + +}); + +ace.define("ace/mode/sh",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sh_highlight_rules","ace/range","ace/mode/folding/cstyle","ace/mode/behaviour/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var ShHighlightRules = require("./sh_highlight_rules").ShHighlightRules; +var Range = require("../range").Range; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var Mode = function () { + this.HighlightRules = ShHighlightRules; + this.foldingRules = new CStyleFoldMode(); + this.$behaviour = new CstyleBehaviour(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "#"; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + if (state == "start") { + var match = line.match(/^.*[\{\(\[:]\s*$/); + if (match) { + indent += tab; + } + } + return indent; + }; + var outdents = { + "pass": 1, + "return": 1, + "raise": 1, + "break": 1, + "continue": 1 + }; + this.checkOutdent = function (state, line, input) { + if (input !== "\r\n" && input !== "\r" && input !== "\n") + return false; + var tokens = this.getTokenizer().getLineTokens(line.trim(), state).tokens; + if (!tokens) + return false; + do { + var last = tokens.pop(); + } while (last && (last.type == "comment" || (last.type == "text" && last.value.match(/^\s+$/)))); + if (!last) + return false; + return (last.type == "keyword" && outdents[last.value]); + }; + this.autoOutdent = function (state, doc, row) { + row += 1; + var indent = this.$getIndent(doc.getLine(row)); + var tab = doc.getTabString(); + if (indent.slice(-tab.length) == tab) + doc.remove(new Range(row, indent.length - tab.length, row, indent.length)); + }; + this.$id = "ace/mode/sh"; + this.snippetFileId = "ace/snippets/sh"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +ace.define("ace/mode/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/xml_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/xml","ace/worker/worker_client"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextMode = require("./text").Mode; +var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; +var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; +var XmlFoldMode = require("./folding/xml").FoldMode; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var Mode = function () { + this.HighlightRules = XmlHighlightRules; + this.$behaviour = new XmlBehaviour(); + this.foldingRules = new XmlFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.voidElements = lang.arrayToMap([]); + this.blockComment = { start: "" }; + this.createWorker = function (session) { + var worker = new WorkerClient(["ace"], "ace/mode/xml_worker", "Worker"); + worker.attachToDocument(session.getDocument()); + worker.on("error", function (e) { + session.setAnnotations(e.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/xml"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +ace.define("ace/mode/markdown",["require","exports","module","ace/lib/oop","ace/mode/behaviour/cstyle","ace/mode/text","ace/mode/markdown_highlight_rules","ace/mode/folding/markdown","ace/mode/javascript","ace/mode/html","ace/mode/sh","ace/mode/sh","ace/mode/xml","ace/mode/css"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var TextMode = require("./text").Mode; +var MarkdownHighlightRules = require("./markdown_highlight_rules").MarkdownHighlightRules; +var MarkdownFoldMode = require("./folding/markdown").FoldMode; +var Mode = function () { + this.HighlightRules = MarkdownHighlightRules; + this.createModeDelegates({ + javascript: require("./javascript").Mode, + html: require("./html").Mode, + bash: require("./sh").Mode, + sh: require("./sh").Mode, + xml: require("./xml").Mode, + css: require("./css").Mode + }); + this.foldingRules = new MarkdownFoldMode(); + this.$behaviour = new CstyleBehaviour({ braces: true }); +}; +oop.inherits(Mode, TextMode); +(function () { + this.type = "text"; + this.blockComment = { start: "" }; + this.$quotes = { '"': '"', "`": "`" }; + this.getNextLineIndent = function (state, line, tab) { + if (state == "listblock") { + var match = /^(\s*)(?:([-+*])|(\d+)\.)(\s+)/.exec(line); + if (!match) + return ""; + var marker = match[2]; + if (!marker) + marker = parseInt(match[3], 10) + 1 + "."; + return match[1] + marker + match[4]; + } + else { + return this.$getIndent(line); + } + }; + this.$id = "ace/mode/markdown"; + this.snippetFileId = "ace/snippets/markdown"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/markdown"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/c137d4af8541a1abf4598a9760ef6a74.js.gz b/web/dist/c137d4af8541a1abf4598a9760ef6a74.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..8bf60741c116197882da84d0606ac93f18da7dff GIT binary patch literal 25138 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 z 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 literal 0 HcmV?d00001 diff --git a/web/dist/c23b1f80ab9746b425f3848bdaacc144.js b/web/dist/c23b1f80ab9746b425f3848bdaacc144.js new file mode 100644 index 00000000..c27c8180 --- /dev/null +++ b/web/dist/c23b1f80ab9746b425f3848bdaacc144.js @@ -0,0 +1,9 @@ + +; (function() { + ace.require(["ace/snippets/rdoc"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/c23cf8ce8d6d5a73803c971390656875.js b/web/dist/c23cf8ce8d6d5a73803c971390656875.js new file mode 100644 index 00000000..edf4ab1b --- /dev/null +++ b/web/dist/c23cf8ce8d6d5a73803c971390656875.js @@ -0,0 +1,18 @@ +ace.define("ace/theme/katzenmilch.css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-katzenmilch .ace_gutter,\n/* THIS THEME WAS AUTOGENERATED BY Theme.tmpl.css (UUID: ) */\n\n.ace-katzenmilch .ace_gutter {\n background: #e8e8e8;\n color: #333\n}\n\n.ace-katzenmilch .ace_print-margin {\n width: 1px;\n background: #e8e8e8\n}\n\n.ace-katzenmilch {\n background-color: #f3f2f3;\n color: rgba(15, 0, 9, 1.0)\n}\n\n.ace-katzenmilch .ace_cursor {\n border-left: 2px solid #100011\n}\n\n.ace-katzenmilch .ace_overwrite-cursors .ace_cursor {\n border-left: 0px;\n border-bottom: 1px solid #100011\n}\n\n.ace-katzenmilch .ace_marker-layer .ace_selection {\n background: rgba(100, 5, 208, 0.27)\n}\n\n.ace-katzenmilch.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #f3f2f3;\n}\n\n.ace-katzenmilch .ace_marker-layer .ace_step {\n background: rgb(198, 219, 174)\n}\n\n.ace-katzenmilch .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgba(0, 0, 0, 0.33);\n}\n\n.ace-katzenmilch .ace_marker-layer .ace_active-line {\n background: rgb(232, 242, 254)\n}\n\n.ace-katzenmilch .ace_gutter-active-line {\n background-color: rgb(232, 242, 254)\n}\n\n.ace-katzenmilch .ace_marker-layer .ace_selected-word {\n border: 1px solid rgba(100, 5, 208, 0.27)\n}\n\n.ace-katzenmilch .ace_invisible {\n color: #BFBFBF\n}\n\n.ace-katzenmilch .ace_fold {\n background-color: rgba(2, 95, 73, 0.97);\n border-color: rgba(15, 0, 9, 1.0)\n}\n\n.ace-katzenmilch .ace_keyword {\n color: #674Aa8;\n rbackground-color: rgba(163, 170, 216, 0.055)\n}\n\n.ace-katzenmilch .ace_constant.ace_language {\n color: #7D7e52;\n rbackground-color: rgba(189, 190, 130, 0.059)\n}\n\n.ace-katzenmilch .ace_constant.ace_numeric {\n color: rgba(79, 130, 123, 0.93);\n rbackground-color: rgba(119, 194, 187, 0.059)\n}\n\n.ace-katzenmilch .ace_constant.ace_character,\n.ace-katzenmilch .ace_constant.ace_other {\n color: rgba(2, 95, 105, 1.0);\n rbackground-color: rgba(127, 34, 153, 0.063)\n}\n\n.ace-katzenmilch .ace_support.ace_function {\n color: #9D7e62;\n rbackground-color: rgba(189, 190, 130, 0.039)\n}\n\n.ace-katzenmilch .ace_support.ace_class {\n color: rgba(239, 106, 167, 1.0);\n rbackground-color: rgba(239, 106, 167, 0.063)\n}\n\n.ace-katzenmilch .ace_storage {\n color: rgba(123, 92, 191, 1.0);\n rbackground-color: rgba(139, 93, 223, 0.051)\n}\n\n.ace-katzenmilch .ace_invalid {\n color: #DFDFD5;\n rbackground-color: #CC1B27\n}\n\n.ace-katzenmilch .ace_string {\n color: #5a5f9b;\n rbackground-color: rgba(170, 175, 219, 0.035)\n}\n\n.ace-katzenmilch .ace_comment {\n font-style: italic;\n color: rgba(64, 79, 80, 0.67);\n rbackground-color: rgba(95, 15, 255, 0.0078)\n}\n\n.ace-katzenmilch .ace_entity.ace_name.ace_function,\n.ace-katzenmilch .ace_variable {\n color: rgba(2, 95, 73, 0.97);\n rbackground-color: rgba(34, 255, 73, 0.12)\n}\n\n.ace-katzenmilch .ace_variable.ace_language {\n color: #316fcf;\n rbackground-color: rgba(58, 175, 255, 0.039)\n}\n\n.ace-katzenmilch .ace_variable.ace_parameter {\n font-style: italic;\n color: rgba(51, 150, 159, 0.87);\n rbackground-color: rgba(5, 214, 249, 0.043)\n}\n\n.ace-katzenmilch .ace_entity.ace_other.ace_attribute-name {\n color: rgba(73, 70, 194, 0.93);\n rbackground-color: rgba(73, 134, 194, 0.035)\n}\n\n.ace-katzenmilch .ace_entity.ace_name.ace_tag {\n color: #3976a2;\n rbackground-color: rgba(73, 166, 210, 0.039)\n}\n\n.ace-katzenmilch .ace_indent-guide {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;\n}\n\n.ace-katzenmilch .ace_indent-guide-active {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC\") right repeat-y;\n}\n"; + +}); + +ace.define("ace/theme/katzenmilch",["require","exports","module","ace/theme/katzenmilch.css","ace/lib/dom"], function(require, exports, module){exports.isDark = false; +exports.cssClass = "ace-katzenmilch"; +exports.cssText = require("./katzenmilch.css"); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass, false); + +}); (function() { + ace.require(["ace/theme/katzenmilch"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/c2b4975093d5885f2e8ff09c4fabe8f7.js b/web/dist/c2b4975093d5885f2e8ff09c4fabe8f7.js new file mode 100644 index 00000000..8a8b1538 --- /dev/null +++ b/web/dist/c2b4975093d5885f2e8ff09c4fabe8f7.js @@ -0,0 +1,27 @@ +ace.define("ace/mode/plain_text",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/text_highlight_rules","ace/mode/behaviour"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var Behaviour = require("./behaviour").Behaviour; +var Mode = function () { + this.HighlightRules = TextHighlightRules; + this.$behaviour = new Behaviour(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.type = "text"; + this.getNextLineIndent = function (state, line, tab) { + return ''; + }; + this.$id = "ace/mode/plain_text"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/plain_text"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/c2ded7fafb683b89f9fb51f37400cfb5.js b/web/dist/c2ded7fafb683b89f9fb51f37400cfb5.js new file mode 100644 index 00000000..1f2246cf --- /dev/null +++ b/web/dist/c2ded7fafb683b89f9fb51f37400cfb5.js @@ -0,0 +1,602 @@ +ace.define("ace/mode/vbscript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode_highlight_rules.tmpl.js (UUID: 7F9C9343-D48E-4E7D-BFE8-F680714DCD3E) */ +"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var VBScriptHighlightRules = function () { + var keywordMapper = this.createKeywordMapper({ + "keyword.control.asp": "If|Then|Else|ElseIf|End|While|Wend|For|To|Each|Case|Select|Return" + + "|Continue|Do|Until|Loop|Next|With|Exit|Function|Property|Type|Enum|Sub|IIf|Class", + "storage.type.asp": "Dim|Call|Const|Redim|Set|Let|Get|New|Randomize|Option|Explicit|Preserve|Erase|Execute|ExecuteGlobal", + "storage.modifier.asp": "Private|Public|Default", + "keyword.operator.asp": "Mod|And|Not|Or|Xor|As|Eqv|Imp|Is", + "constant.language.asp": "Empty|False|Nothing|Null|True", + "variable.language.vb.asp": "Me", + "support.class.vb.asp": "RegExp", + "support.class.asp": "Application|ObjectContext|Request|Response|Server|Session", + "support.class.collection.asp": "Contents|StaticObjects|ClientCertificate|Cookies|Form|QueryString|ServerVariables", + "support.constant.asp": "TotalBytes|Buffer|CacheControl|Charset|ContentType|Expires|ExpiresAbsolute" + + "|IsClientConnected|PICS|Status|ScriptTimeout|CodePage|LCID|SessionID|Timeout", + "support.function.asp": "Lock|Unlock|SetAbort|SetComplete|BinaryRead|AddHeader|AppendToLog" + + "|BinaryWrite|Clear|Flush|Redirect|Write|CreateObject|HTMLEncode|MapPath|URLEncode|Abandon|Convert|Regex", + "support.function.event.asp": "Application_OnEnd|Application_OnStart" + + "|OnTransactionAbort|OnTransactionCommit|Session_OnEnd|Session_OnStart", + "support.function.vb.asp": "Array|Add|Asc|Atn|CBool|CByte|CCur|CDate|CDbl|Chr|CInt|CLng" + + "|Conversions|Cos|CreateObject|CSng|CStr|Date|DateAdd|DateDiff|DatePart|DateSerial" + + "|DateValue|Day|Derived|Math|Escape|Eval|Exists|Exp|Filter|FormatCurrency" + + "|FormatDateTime|FormatNumber|FormatPercent|GetLocale|GetObject|GetRef|Hex" + + "|Hour|InputBox|InStr|InStrRev|Int|Fix|IsArray|IsDate|IsEmpty|IsNull|IsNumeric" + + "|IsObject|Item|Items|Join|Keys|LBound|LCase|Left|Len|LoadPicture|Log|LTrim|RTrim" + + "|Trim|Maths|Mid|Minute|Month|MonthName|MsgBox|Now|Oct|Remove|RemoveAll|Replace" + + "|RGB|Right|Rnd|Round|ScriptEngine|ScriptEngineBuildVersion|ScriptEngineMajorVersion" + + "|ScriptEngineMinorVersion|Second|SetLocale|Sgn|Sin|Space|Split|Sqr|StrComp|String|StrReverse" + + "|Tan|Time|Timer|TimeSerial|TimeValue|TypeName|UBound|UCase|Unescape|VarType|Weekday|WeekdayName|Year" + + "|AscB|AscW|ChrB|ChrW|InStrB|LeftB|LenB|MidB|RightB|Abs|GetUILanguage", + "support.type.vb.asp": "vbTrue|vbFalse|vbCr|vbCrLf|vbFormFeed|vbLf|vbNewLine|vbNullChar|vbNullString" + + "|vbTab|vbVerticalTab|vbBinaryCompare|vbTextCompare|vbSunday|vbMonday|vbTuesday|vbWednesday" + + "|vbThursday|vbFriday|vbSaturday|vbUseSystemDayOfWeek|vbFirstJan1|vbFirstFourDays|vbFirstFullWeek" + + "|vbGeneralDate|vbLongDate|vbShortDate|vbLongTime|vbShortTime|vbObjectError|vbEmpty|vbNull|vbInteger" + + "|vbLong|vbSingle|vbDouble|vbCurrency|vbDate|vbString|vbObject|vbError|vbBoolean|vbVariant" + + "|vbDataObject|vbDecimal|vbByte|vbArray|vbOKOnly|vbOKCancel|vbAbortRetryIgnore|vbYesNoCancel|vbYesNo" + + "|vbRetryCancel|vbCritical|vbQuestion|vbExclamation|vbInformation|vbDefaultButton1|vbDefaultButton2" + + "|vbDefaultButton3|vbDefaultButton4|vbApplicationModal|vbSystemModal|vbOK|vbCancel|vbAbort|vbRetry|vbIgnore|vbYes|vbNo" + + "|vbUseDefault" + }, "identifier", true); + this.$rules = { + "start": [ + { + token: [ + "meta.ending-space" + ], + regex: "$" + }, + { + token: [null], + regex: "^(?=\\t)", + next: "state_3" + }, + { + token: [null], + regex: "^(?= )", + next: "state_4" + }, + { + token: [ + "text", + "storage.type.function.asp", + "text", + "entity.name.function.asp", + "text", + "punctuation.definition.parameters.asp", + "variable.parameter.function.asp", + "punctuation.definition.parameters.asp" + ], + regex: "^(\\s*)(Function|Sub)(\\s+)([a-zA-Z_]\\w*)(\\s*)(\\()([^)]*)(\\))" + }, + { + token: "punctuation.definition.comment.asp", + regex: "'|REM(?=\\s|$)", + next: "comment", + caseInsensitive: true + }, + { + token: "storage.type.asp", + regex: "On\\s+Error\\s+(?:Resume\\s+Next|GoTo)\\b", + caseInsensitive: true + }, + { + token: "punctuation.definition.string.begin.asp", + regex: '"', + next: "string" + }, + { + token: [ + "punctuation.definition.variable.asp" + ], + regex: "(\\$)[a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*?\\b\\s*" + }, + { + token: "constant.numeric.asp", + regex: "-?\\b(?:(?:0(?:x|X)[0-9a-fA-F]*)|(?:(?:[0-9]+\\.?[0-9]*)|(?:\\.[0-9]+))(?:(?:e|E)(?:\\+|-)?[0-9]+)?)(?:L|l|UL|ul|u|U|F|f)?\\b" + }, + { + regex: "\\w+", + token: keywordMapper + }, + { + token: ["entity.name.function.asp"], + regex: "(?:(\\b[a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*?\\b)(?=\\(\\)?))" + }, + { + token: ["keyword.operator.asp"], + regex: "\\-|\\+|\\*|\\/|\\>|\\<|\\=|\\&|\\\\|\\^" + } + ], + "state_3": [ + { + token: [ + "meta.odd-tab.tabs", + "meta.even-tab.tabs" + ], + regex: "(\\t)(\\t)?" + }, + { + token: "meta.leading-space", + regex: "(?=[^\\t])", + next: "start" + }, + { + token: "meta.leading-space", + regex: ".", + next: "state_3" + } + ], + "state_4": [ + { + token: ["meta.odd-tab.spaces", "meta.even-tab.spaces"], + regex: "( )( )?" + }, + { + token: "meta.leading-space", + regex: "(?=[^ ])", + next: "start" + }, + { + defaultToken: "meta.leading-space" + } + ], + "comment": [ + { + token: "comment.line.apostrophe.asp", + regex: "$", + next: "start" + }, + { + defaultToken: "comment.line.apostrophe.asp" + } + ], + "string": [ + { + token: "constant.character.escape.apostrophe.asp", + regex: '""' + }, + { + token: "string.quoted.double.asp", + regex: '"', + next: "start" + }, + { + defaultToken: "string.quoted.double.asp" + } + ] + }; +}; +oop.inherits(VBScriptHighlightRules, TextHighlightRules); +exports.VBScriptHighlightRules = VBScriptHighlightRules; + +}); + +ace.define("ace/mode/folding/vbscript",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range","ace/token_iterator"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var BaseFoldMode = require("./fold_mode").FoldMode; +var Range = require("../../range").Range; +var TokenIterator = require("../../token_iterator").TokenIterator; +var FoldMode = exports.FoldMode = function () { }; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.indentKeywords = { + "class": 1, + "function": 1, + "sub": 1, + "if": 1, + "select": 1, + "do": 1, + "for": 1, + "while": 1, + "with": 1, + "property": 1, + "else": 1, + "elseif": 1, + "end": -1, + "loop": -1, + "next": -1, + "wend": -1 + }; + this.foldingStartMarker = /(?:\s|^)(class|function|sub|if|select|do|for|while|with|property|else|elseif)\b/i; + this.foldingStopMarker = /\b(end|loop|next|wend)\b/i; + this.getFoldWidgetRange = function (session, foldStyle, row) { + var line = session.getLine(row); + var isStart = this.foldingStartMarker.test(line); + var isEnd = this.foldingStopMarker.test(line); + if (isStart || isEnd) { + var match = (isEnd) ? this.foldingStopMarker.exec(line) : this.foldingStartMarker.exec(line); + var keyword = match && match[1].toLowerCase(); + if (keyword) { + var type = session.getTokenAt(row, match.index + 2).type; + if (type === "keyword.control.asp" || type === "storage.type.function.asp") + return this.vbsBlock(session, row, match.index + 2); + } + } + }; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + var isStart = this.foldingStartMarker.test(line); + var isEnd = this.foldingStopMarker.test(line); + if (isStart && !isEnd) { + var match = this.foldingStartMarker.exec(line); + var keyword = match && match[1].toLowerCase(); + if (keyword) { + var type = session.getTokenAt(row, match.index + 2).type; + if (type == "keyword.control.asp" || type == "storage.type.function.asp") { + if (keyword == "if" && !/then\s*('|$)/i.test(line)) + return ""; + return "start"; + } + } + } + return ""; + }; + this.vbsBlock = function (session, row, column, tokenRange) { + var stream = new TokenIterator(session, row, column); + var endOpenings = { + "class": 1, + "function": 1, + "sub": 1, + "if": 1, + "select": 1, + "with": 1, + "property": 1, + "else": 1, + "elseif": 1 + }; + var token = stream.getCurrentToken(); + if (!token || (token.type != "keyword.control.asp" && token.type != "storage.type.function.asp")) + return; + var startTokenValue = token.value.toLowerCase(); + var val = token.value.toLowerCase(); + var stack = [val]; + var dir = this.indentKeywords[val]; + if (!dir) + return; + var firstRange = stream.getCurrentTokenRange(); + switch (val) { + case "property": + case "sub": + case "function": + case "if": + case "select": + case "do": + case "for": + case "class": + case "while": + case "with": + var line = session.getLine(row); + var singleLineCondition = /^\s*If\s+.*\s+Then(?!')\s+(?!')\S/i.test(line); + if (singleLineCondition) + return; + var checkToken = new RegExp("(?:^|\\s)" + val, "i"); + var endTest = /^\s*End\s(If|Sub|Select|Function|Class|With|Property)\s*/i.test(line); + if (!checkToken.test(line) && !endTest) { + return; + } + if (endTest) { + var tokenRange = stream.getCurrentTokenRange(); + stream.step = stream.stepBackward; + stream.step(); + stream.step(); + token = stream.getCurrentToken(); + if (token) { + val = token.value.toLowerCase(); + if (val == "end") { + firstRange = stream.getCurrentTokenRange(); + firstRange = new Range(firstRange.start.row, firstRange.start.column, tokenRange.start.row, tokenRange.end.column); + } + } + dir = -1; + } + break; + case "end": + var tokenPos = stream.getCurrentTokenPosition(); + firstRange = stream.getCurrentTokenRange(); + stream.step = stream.stepForward; + stream.step(); + stream.step(); + token = stream.getCurrentToken(); + if (token) { + val = token.value.toLowerCase(); + if (val in endOpenings) { + startTokenValue = val; + var nextTokenPos = stream.getCurrentTokenPosition(); + var endColumn = nextTokenPos.column + val.length; + firstRange = new Range(tokenPos.row, tokenPos.column, nextTokenPos.row, endColumn); + } + } + stream.step = stream.stepBackward; + stream.step(); + stream.step(); + break; + } + var startColumn = dir === -1 ? session.getLine(row - 1).length : session.getLine(row).length; + var startRow = row; + var ranges = []; + ranges.push(firstRange); + stream.step = dir === -1 ? stream.stepBackward : stream.stepForward; + while (token = stream.step()) { + var outputRange = null; + var ignore = false; + if (token.type != "keyword.control.asp" && token.type != "storage.type.function.asp") + continue; + val = token.value.toLowerCase(); + var level = dir * this.indentKeywords[val]; + switch (val) { + case "property": + case "sub": + case "function": + case "if": + case "select": + case "do": + case "for": + case "class": + case "while": + case "with": + var line = session.getLine(stream.getCurrentTokenRow()); + var singleLineCondition = /^\s*If\s+.*\s+Then(?!')\s+(?!')\S/i.test(line); + if (singleLineCondition) { + level = 0; + ignore = true; + } + var checkToken = new RegExp("^\\s* end\\s+" + val, "i"); + if (checkToken.test(line)) { + level = 0; + ignore = true; + } + break; + case "elseif": + case "else": + level = 0; + if (startTokenValue != "elseif") { + ignore = true; + } + break; + } + if (level > 0) { + stack.unshift(val); + } + else if (level <= 0 && ignore === false) { + stack.shift(); + if (!stack.length) { + switch (val) { + case "end": + var tokenPos = stream.getCurrentTokenPosition(); + outputRange = stream.getCurrentTokenRange(); + stream.step(); + stream.step(); + token = stream.getCurrentToken(); + if (token) { + val = token.value.toLowerCase(); + if (val in endOpenings) { + if ((startTokenValue == "else" || startTokenValue == "elseif")) { + if (val !== "if") { + ranges.shift(); + } + } + else { + if (val != startTokenValue) + ranges.shift(); + } + var nextTokenPos = stream.getCurrentTokenPosition(); + var endColumn = nextTokenPos.column + val.length; + outputRange = new Range(tokenPos.row, tokenPos.column, nextTokenPos.row, endColumn); + } + else { + ranges.shift(); + } + } + else { + ranges.shift(); + } + stream.step = stream.stepBackward; + stream.step(); + stream.step(); + token = stream.getCurrentToken(); + val = token.value.toLowerCase(); + break; + case "select": + case "sub": + case "if": + case "function": + case "class": + case "with": + case "property": + if (val != startTokenValue) + ranges.shift(); + break; + case "do": + if (startTokenValue != "loop") + ranges.shift(); + break; + case "loop": + if (startTokenValue != "do") + ranges.shift(); + break; + case "for": + if (startTokenValue != "next") + ranges.shift(); + break; + case "next": + if (startTokenValue != "for") + ranges.shift(); + break; + case "while": + if (startTokenValue != "wend") + ranges.shift(); + break; + case "wend": + if (startTokenValue != "while") + ranges.shift(); + break; + } + break; + } + if (level === 0) { + stack.unshift(val); + } + } + } + if (!token) + return null; + if (tokenRange) { + if (!outputRange) { + ranges.push(stream.getCurrentTokenRange()); + } + else { + ranges.push(outputRange); + } + return ranges; + } + var row = stream.getCurrentTokenRow(); + if (dir === -1) { + var endColumn = session.getLine(row).length; + return new Range(row, endColumn, startRow - 1, startColumn); + } + else + return new Range(startRow, startColumn, row - 1, session.getLine(row - 1).length); + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/vbscript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/vbscript_highlight_rules","ace/mode/folding/vbscript","ace/range"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ +"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var VBScriptHighlightRules = require("./vbscript_highlight_rules").VBScriptHighlightRules; +var FoldMode = require("./folding/vbscript").FoldMode; +var Range = require("../range").Range; +var Mode = function () { + this.HighlightRules = VBScriptHighlightRules; + this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; + this.indentKeywords = this.foldingRules.indentKeywords; +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = ["'", "REM"]; + var outdentKeywords = [ + "else", + "elseif", + "end", + "loop", + "next", + "wend" + ]; + function getNetIndentLevel(tokens, line, indentKeywords) { + var level = 0; + for (var i = 0; i < tokens.length; i++) { + var token = tokens[i]; + if (token.type == "keyword.control.asp" || token.type == "storage.type.function.asp") { + var val = token.value.toLowerCase(); + if (val in indentKeywords) { + switch (val) { + case "property": + case "sub": + case "function": + case "select": + case "do": + case "for": + case "class": + case "while": + case "with": + case "if": + var checkToken = new RegExp("^\\s* end\\s+" + val, "i"); + var singleLineCondition = /^\s*If\s+.*\s+Then(?!')\s+(?!')\S/i.test(line); + if (!singleLineCondition && !checkToken.test(line)) + level += indentKeywords[val]; + break; + default: + level += indentKeywords[val]; + break; + } + } + } + } + if (level < 0) { + return -1; + } + else if (level > 0) { + return 1; + } + else { + return 0; + } + } + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var level = 0; + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + if (state == "start") { + level = getNetIndentLevel(tokens, line, this.indentKeywords); + } + if (level > 0) { + return indent + tab; + } + else if (level < 0 && indent.substr(indent.length - tab.length) == tab) { + if (!this.checkOutdent(state, line, "\n")) { + return indent.substr(0, indent.length - tab.length); + } + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + if (input != "\n" && input != "\r" && input != "\r\n") + return false; + var tokens = this.getTokenizer().getLineTokens(line.trim(), state).tokens; + if (!tokens || !tokens.length) + return false; + var val = tokens[0].value.toLowerCase(); + return ((tokens[0].type == "keyword.control.asp" || tokens[0].type == "storage.type.function.asp") && outdentKeywords.indexOf(val) != -1); + }; + this.getMatching = function (session, row, column, tokenRange) { + if (row == undefined) { + var pos = session.selection.lead; + column = pos.column; + row = pos.row; + } + if (tokenRange == undefined) + tokenRange = true; + var startToken = session.getTokenAt(row, column); + if (startToken) { + var val = startToken.value.toLowerCase(); + if (val in this.indentKeywords) + return this.foldingRules.vbsBlock(session, row, column, tokenRange); + } + }; + this.autoOutdent = function (state, session, row) { + var line = session.getLine(row); + var column = line.match(/^\s*/)[0].length; + if (!column || !row) + return; + var startRange = this.getMatching(session, row, column + 1, false); + if (!startRange || startRange.start.row == row) + return; + var indent = this.$getIndent(session.getLine(startRange.start.row)); + if (indent.length != column) { + session.replace(new Range(row, 0, row, column), indent); + session.outdentRows(new Range(row + 1, 0, row + 1, 0)); + } + }; + this.$id = "ace/mode/vbscript"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/vbscript"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/c2ded7fafb683b89f9fb51f37400cfb5.js.gz b/web/dist/c2ded7fafb683b89f9fb51f37400cfb5.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..e5597458fa76360b5242689229724591e38e0477 GIT binary patch literal 5333 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\nsnippet jstl\n\t<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\" %>\n\t<%@ taglib uri=\"http://java.sun.com/jsp/jstl/functions\" prefix=\"fn\" %>\nsnippet jstl:c\n\t<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\" %>\nsnippet jstl:fn\n\t<%@ taglib uri=\"http://java.sun.com/jsp/jstl/functions\" prefix=\"fn\" %>\nsnippet cpath\n\t${pageContext.request.contextPath}\nsnippet cout\n\t\nsnippet cset\n\t\nsnippet cremove\n\t\nsnippet ccatch\n\t\nsnippet cif\n\t\n\t\t${2}\n\t\nsnippet cchoose\n\t\n\t\t${1}\n\t\nsnippet cwhen\n\t\n\t\t${2}\n\t\nsnippet cother\n\t\n\t\t${1}\n\t\nsnippet cfore\n\t\n\t\t${4:}\n\t\nsnippet cfort\n\t${2:item1,item2,item3}\n\t\n\t\t${5:}\n\t\nsnippet cparam\n\t\nsnippet cparam+\n\t\n\tcparam+${3}\nsnippet cimport\n\t\nsnippet cimport+\n\t\n\t\t\n\t\tcparam+${4}\n\t\nsnippet curl\n\t\n\t${3}\nsnippet curl+\n\t\n\t\t\n\t\tcparam+${6}\n\t\n\t${3}\nsnippet credirect\n\t\nsnippet contains\n\t${fn:contains(${1:string}, ${2:substr})}\nsnippet contains:i\n\t${fn:containsIgnoreCase(${1:string}, ${2:substr})}\nsnippet endswith\n\t${fn:endsWith(${1:string}, ${2:suffix})}\nsnippet escape\n\t${fn:escapeXml(${1:string})}\nsnippet indexof\n\t${fn:indexOf(${1:string}, ${2:substr})}\nsnippet join\n\t${fn:join(${1:collection}, ${2:delims})}\nsnippet length\n\t${fn:length(${1:collection_or_string})}\nsnippet replace\n\t${fn:replace(${1:string}, ${2:substr}, ${3:replace})}\nsnippet split\n\t${fn:split(${1:string}, ${2:delims})}\nsnippet startswith\n\t${fn:startsWith(${1:string}, ${2:prefix})}\nsnippet substr\n\t${fn:substring(${1:string}, ${2:begin}, ${3:end})}\nsnippet substr:a\n\t${fn:substringAfter(${1:string}, ${2:substr})}\nsnippet substr:b\n\t${fn:substringBefore(${1:string}, ${2:substr})}\nsnippet lc\n\t${fn:toLowerCase(${1:string})}\nsnippet uc\n\t${fn:toUpperCase(${1:string})}\nsnippet trim\n\t${fn:trim(${1:string})}\n"; + +}); + +ace.define("ace/snippets/jsp",["require","exports","module","ace/snippets/jsp.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./jsp.snippets"); +exports.scope = "jsp"; + +}); (function() { + ace.require(["ace/snippets/jsp"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/c53921154b1d064db029a19020dd6e6c.js b/web/dist/c53921154b1d064db029a19020dd6e6c.js new file mode 100644 index 00000000..245a25f7 --- /dev/null +++ b/web/dist/c53921154b1d064db029a19020dd6e6c.js @@ -0,0 +1,13954 @@ +ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var DocCommentHighlightRules = function () { + this.$rules = { + "start": [{ + token: "comment.doc.tag", + regex: "@[\\w\\d_]+" // TODO: fix email addresses + }, + DocCommentHighlightRules.getTagRule(), + { + defaultToken: "comment.doc", + caseInsensitive: true + }] + }; +}; +oop.inherits(DocCommentHighlightRules, TextHighlightRules); +DocCommentHighlightRules.getTagRule = function (start) { + return { + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" + }; +}; +DocCommentHighlightRules.getStartRule = function (start) { + return { + token: "comment.doc", + regex: "\\/\\*(?=\\*)", + next: start + }; +}; +DocCommentHighlightRules.getEndRule = function (start) { + return { + token: "comment.doc", + regex: "\\*\\/", + next: start + }; +}; +exports.DocCommentHighlightRules = DocCommentHighlightRules; + +}); + +ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; +var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; +var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; +var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; +var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; +var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; +var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; +var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; +var CssHighlightRules = function () { + var keywordMapper = this.createKeywordMapper({ + "support.function": supportFunction, + "support.constant": supportConstant, + "support.type": supportType, + "support.constant.color": supportConstantColor, + "support.constant.fonts": supportConstantFonts + }, "text", true); + this.$rules = { + "start": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" + }, { + token: "string", + regex: "@(?!viewport)", + next: "media" + }, { + token: "keyword", + regex: "#[a-z0-9-_]+" + }, { + token: "keyword", + regex: "%" + }, { + token: "variable", + regex: "\\.[a-z0-9-_]+" + }, { + token: "string", + regex: ":[a-z0-9-_]+" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant", + regex: "[a-z0-9-_]+" + }, { + caseInsensitive: true + }], + "media": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "start" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + token: "string", + regex: ";", + next: "start" + }, { + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" + }], + "comments": [{ + token: "comment", + regex: "\\/\\*", + push: [{ + token: "comment", + regex: "\\*\\/", + next: "pop" + }, { + defaultToken: "comment" + }] + }], + "ruleset": [{ + regex: "-(webkit|ms|moz|o)-", + token: "text" + }, { + token: "punctuation.operator", + regex: "[:;]" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + include: ["strings", "url", "comments"] + }, { + token: ["constant.numeric", "keyword"], + regex: "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant.numeric", + regex: "#[a-f0-9]{6}" + }, { + token: "constant.numeric", + regex: "#[a-f0-9]{3}" + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"], + regex: pseudoElements + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"], + regex: pseudoClasses + }, { + include: "url" + }, { + token: keywordMapper, + regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" + }, { + caseInsensitive: true + }], + url: [{ + token: "support.function", + regex: "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token: "support.function", + regex: "\\)", + next: "pop" + }, { + defaultToken: "string" + }] + }], + strings: [{ + token: "string.start", + regex: "'", + push: [{ + token: "string.end", + regex: "'|$", + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }, { + token: "string.start", + regex: '"', + push: [{ + token: "string.end", + regex: '"|$', + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], + escapes: [{ + token: "constant.language.escape", + regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ + }] + }; + this.normalizeRules(); +}; +oop.inherits(CssHighlightRules, TextHighlightRules); +exports.CssHighlightRules = CssHighlightRules; + +}); + +ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; +var JavaScriptHighlightRules = function (options) { + var keywordMapper = this.createKeywordMapper({ + "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|" + // Constructors + "Namespace|QName|XML|XMLList|" + // E4X + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors + "SyntaxError|TypeError|URIError|" + + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions + "isNaN|parseFloat|parseInt|" + + "JSON|Math|" + // Other + "this|arguments|prototype|window|document", + "keyword": "const|yield|import|get|set|async|await|" + + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + + "__parent__|__count__|escape|unescape|with|__proto__|" + + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor", + "storage.type": "const|let|var|function", + "constant.language": "null|Infinity|NaN|undefined", + "support.function": "alert", + "constant.language.boolean": "true|false" + }, "identifier"); + var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; + var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex + "u[0-9a-fA-F]{4}|" + // unicode + "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode + "[0-2][0-7]{0,2}|" + // oct + "3[0-7][0-7]?|" + // oct + "[4-7][0-7]?|" + //oct + ".)"; + this.$rules = { + "no_regex": [ + DocCommentHighlightRules.getStartRule("doc-start"), + comments("no_regex"), + { + token: "string", + regex: "'(?=.)", + next: "qstring" + }, { + token: "string", + regex: '"(?=.)', + next: "qqstring" + }, { + token: "constant.numeric", + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + }, { + token: [ + "storage.type", "punctuation.operator", "support.function", + "punctuation.operator", "entity.name.function", "text", "keyword.operator" + ], + regex: "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe + ")(\\s*)(=)", + next: "function_arguments" + }, { + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", "storage.type", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "entity.name.function", "text", "keyword.operator", "text", "storage.type", + "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(function\\*?)(\\s+)(" + identifierRe + ")(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "entity.name.function", "text", "punctuation.operator", + "text", "storage.type", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "text", "text", "storage.type", "text", "paren.lparen" + ], + regex: "(:)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: "keyword", + regex: "from(?=\\s*('|\"))" + }, { + token: "keyword", + regex: "(?:" + kwBeforeRe + ")\\b", + next: "start" + }, { + token: "support.constant", + regex: /that\b/ + }, { + token: ["storage.type", "punctuation.operator", "support.function.firebug"], + regex: /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ + }, { + token: keywordMapper, + regex: identifierRe + }, { + token: "punctuation.operator", + regex: /[.](?![.])/, + next: "property" + }, { + token: "storage.type", + regex: /=>/, + next: "start" + }, { + token: "keyword.operator", + regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next: "start" + }, { + token: "punctuation.operator", + regex: /[?:,;.]/, + next: "start" + }, { + token: "paren.lparen", + regex: /[\[({]/, + next: "start" + }, { + token: "paren.rparen", + regex: /[\])}]/ + }, { + token: "comment", + regex: /^#!.*$/ + } + ], + property: [{ + token: "text", + regex: "\\s+" + }, { + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()", + next: "function_arguments" + }, { + token: "punctuation.operator", + regex: /[.](?![.])/ + }, { + token: "support.function", + regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ + }, { + token: "support.function.dom", + regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ + }, { + token: "support.constant", + regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ + }, { + token: "identifier", + regex: identifierRe + }, { + regex: "", + token: "empty", + next: "no_regex" + } + ], + "start": [ + DocCommentHighlightRules.getStartRule("doc-start"), + comments("start"), + { + token: "string.regexp", + regex: "\\/", + next: "regex" + }, { + token: "text", + regex: "\\s+|^$", + next: "start" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "regex": [ + { + token: "regexp.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "string.regexp", + regex: "/[sxngimy]*", + next: "no_regex" + }, { + token: "invalid", + regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ + }, { + token: "constant.language.escape", + regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ + }, { + token: "constant.language.delimiter", + regex: /\|/ + }, { + token: "constant.language.escape", + regex: /\[\^?/, + next: "regex_character_class" + }, { + token: "empty", + regex: "$", + next: "no_regex" + }, { + defaultToken: "string.regexp" + } + ], + "regex_character_class": [ + { + token: "regexp.charclass.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "constant.language.escape", + regex: "]", + next: "regex" + }, { + token: "constant.language.escape", + regex: "-" + }, { + token: "empty", + regex: "$", + next: "no_regex" + }, { + defaultToken: "string.regexp.charachterclass" + } + ], + "default_parameter": [ + { + token: "string", + regex: "'(?=.)", + push: [ + { + token: "string", + regex: "'|$", + next: "pop" + }, { + include: "qstring" + } + ] + }, { + token: "string", + regex: '"(?=.)', + push: [ + { + token: "string", + regex: '"|$', + next: "pop" + }, { + include: "qqstring" + } + ] + }, { + token: "constant.language", + regex: "null|Infinity|NaN|undefined" + }, { + token: "constant.numeric", + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + }, { + token: "punctuation.operator", + regex: ",", + next: "function_arguments" + }, { + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "function_arguments": [ + comments("function_arguments"), + { + token: "variable.parameter", + regex: identifierRe + }, { + token: "punctuation.operator", + regex: "," + }, { + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: '"|$', + next: "no_regex" + }, { + defaultToken: "string" + } + ], + "qstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: "'|$", + next: "no_regex" + }, { + defaultToken: "string" + } + ] + }; + if (!options || !options.noES6) { + this.$rules.no_regex.unshift({ + regex: "[{}]", onMatch: function (val, state, stack) { + this.next = val == "{" ? this.nextState : ""; + if (val == "{" && stack.length) { + stack.unshift("start", state); + } + else if (val == "}" && stack.length) { + stack.shift(); + this.next = stack.shift(); + if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) + return "paren.quasi.end"; + } + return val == "{" ? "paren.lparen" : "paren.rparen"; + }, + nextState: "start" + }, { + token: "string.quasi.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedRe + }, { + token: "paren.quasi.start", + regex: /\${/, + push: "start" + }, { + token: "string.quasi.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string.quasi" + }] + }, { + token: ["variable.parameter", "text"], + regex: "(" + identifierRe + ")(\\s*)(?=\\=>)" + }, { + token: "paren.lparen", + regex: "(\\()(?=.+\\s*=>)", + next: "function_arguments" + }, { + token: "variable.language", + regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b" + }); + this.$rules["function_arguments"].unshift({ + token: "keyword.operator", + regex: "=", + next: "default_parameter" + }, { + token: "keyword.operator", + regex: "\\.{3}" + }); + this.$rules["property"].unshift({ + token: "support.function", + regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|" + + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()" + }, { + token: "constant.language", + regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b" + }); + if (!options || options.jsx != false) + JSX.call(this); + } + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]); + this.normalizeRules(); +}; +oop.inherits(JavaScriptHighlightRules, TextHighlightRules); +function JSX() { + var tagRegex = identifierRe.replace("\\d", "\\d\\-"); + var jsxTag = { + onMatch: function (val, state, stack) { + var offset = val.charAt(1) == "/" ? 2 : 1; + if (offset == 1) { + if (state != this.nextState) + stack.unshift(this.next, this.nextState, 0); + else + stack.unshift(this.next); + stack[2]++; + } + else if (offset == 2) { + if (state == this.nextState) { + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.shift(); + stack.shift(); + } + } + } + return [{ + type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", + value: val.slice(0, offset) + }, { + type: "meta.tag.tag-name.xml", + value: val.substr(offset) + }]; + }, + regex: "", + onMatch: function (value, currentState, stack) { + if (currentState == stack[0]) + stack.shift(); + if (value.length == 2) { + if (stack[0] == this.nextState) + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.splice(0, 2); + } + } + this.next = stack[0] || "start"; + return [{ type: this.token, value: value }]; + }, + nextState: "jsx" + }, + jsxJsRule, + comments("jsxAttributes"), + { + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + token: "text.tag-whitespace.xml", + regex: "\\s+" + }, { + token: "string.attribute-value.xml", + regex: "'", + stateName: "jsx_attr_q", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + stateName: "jsx_attr_qq", + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, + jsxTag + ]; + this.$rules.reference = [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }]; +} +function comments(next) { + return [ + { + token: "comment", + regex: /\/\*/, + next: [ + DocCommentHighlightRules.getTagRule(), + { token: "comment", regex: "\\*\\/", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } + ] + }, { + token: "comment", + regex: "\\/\\/", + next: [ + DocCommentHighlightRules.getTagRule(), + { token: "comment", regex: "$|^", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } + ] + } + ]; +} +exports.JavaScriptHighlightRules = JavaScriptHighlightRules; + +}); + +ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var XmlHighlightRules = function (normalize) { + var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; + this.$rules = { + start: [ + { token: "string.cdata.xml", regex: "<\\!\\[CDATA\\[", next: "cdata" }, + { + token: ["punctuation.instruction.xml", "keyword.instruction.xml"], + regex: "(<\\?)(" + tagRegex + ")", next: "processing_instruction" + }, + { token: "comment.start.xml", regex: "<\\!--", next: "comment" }, + { + token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], + regex: "(<\\!)(DOCTYPE)(?=[\\s])", next: "doctype", caseInsensitive: true + }, + { include: "tag" }, + { token: "text.end-tag-open.xml", regex: "", + next: "start" + }], + doctype: [ + { include: "whitespace" }, + { include: "string" }, + { token: "xml-pe.doctype.xml", regex: ">", next: "start" }, + { token: "xml-pe.xml", regex: "[-_a-zA-Z0-9:]+" }, + { token: "punctuation.int-subset", regex: "\\[", push: "int_subset" } + ], + int_subset: [{ + token: "text.xml", + regex: "\\s+" + }, { + token: "punctuation.int-subset.xml", + regex: "]", + next: "pop" + }, { + token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], + regex: "(<\\!)(" + tagRegex + ")", + push: [{ + token: "text", + regex: "\\s+" + }, + { + token: "punctuation.markup-decl.xml", + regex: ">", + next: "pop" + }, + { include: "string" }] + }], + cdata: [ + { token: "string.cdata.xml", regex: "\\]\\]>", next: "start" }, + { token: "text.xml", regex: "\\s+" }, + { token: "text.xml", regex: "(?:[^\\]]|\\](?!\\]>))+" } + ], + comment: [ + { token: "comment.end.xml", regex: "-->", next: "start" }, + { defaultToken: "comment.xml" } + ], + reference: [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + attr_reference: [{ + token: "constant.language.escape.reference.attribute-value.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + tag: [{ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], + regex: "(?:(<)|(", next: "start" } + ] + }], + tag_whitespace: [ + { token: "text.tag-whitespace.xml", regex: "\\s+" } + ], + whitespace: [ + { token: "text.whitespace.xml", regex: "\\s+" } + ], + string: [{ + token: "string.xml", + regex: "'", + push: [ + { token: "string.xml", regex: "'", next: "pop" }, + { defaultToken: "string.xml" } + ] + }, { + token: "string.xml", + regex: '"', + push: [ + { token: "string.xml", regex: '"', next: "pop" }, + { defaultToken: "string.xml" } + ] + }], + attributes: [{ + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + include: "tag_whitespace" + }, { + include: "attribute_value" + }], + attribute_value: [{ + token: "string.attribute-value.xml", + regex: "'", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }] + }; + if (this.constructor === XmlHighlightRules) + this.normalizeRules(); +}; +(function () { + this.embedTagRules = function (HighlightRules, prefix, tag) { + this.$rules.tag.unshift({ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(<)(" + tag + "(?=\\s|>|$))", + next: [ + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: prefix + "start" } + ] + }); + this.$rules[tag + "-end"] = [ + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start", + onMatch: function (value, currentState, stack) { + stack.splice(0); + return this.token; + } } + ]; + this.embedRules(HighlightRules, prefix, [{ + token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(|$))", + next: tag + "-end" + }, { + token: "string.cdata.xml", + regex: "<\\!\\[CDATA\\[" + }, { + token: "string.cdata.xml", + regex: "\\]\\]>" + }]); + }; +}).call(TextHighlightRules.prototype); +oop.inherits(XmlHighlightRules, TextHighlightRules); +exports.XmlHighlightRules = XmlHighlightRules; + +}); + +ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; +var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; +var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; +var tagMap = lang.createMap({ + a: 'anchor', + button: 'form', + form: 'form', + img: 'image', + input: 'form', + label: 'form', + option: 'form', + script: 'script', + select: 'form', + textarea: 'form', + style: 'style', + table: 'table', + tbody: 'table', + td: 'table', + tfoot: 'table', + th: 'table', + tr: 'table' +}); +var HtmlHighlightRules = function () { + XmlHighlightRules.call(this); + this.addRules({ + attributes: [{ + include: "tag_whitespace" + }, { + token: "entity.other.attribute-name.xml", + regex: "[-_a-zA-Z0-9:.]+" + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=", + push: [{ + include: "tag_whitespace" + }, { + token: "string.unquoted.attribute-value.html", + regex: "[^<>='\"`\\s]+", + next: "pop" + }, { + token: "empty", + regex: "", + next: "pop" + }] + }, { + include: "attribute_value" + }], + tag: [{ + token: function (start, tag) { + var group = tagMap[tag]; + return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", + "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; + }, + regex: "(", next: "start" } + ] + }); + this.embedTagRules(CssHighlightRules, "css-", "style"); + this.embedTagRules(new JavaScriptHighlightRules({ jsx: false }).getRules(), "js-", "script"); + if (this.constructor === HtmlHighlightRules) + this.normalizeRules(); +}; +oop.inherits(HtmlHighlightRules, XmlHighlightRules); +exports.HtmlHighlightRules = HtmlHighlightRules; + +}); + +ace.define("ace/mode/php_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules","ace/mode/html_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; +var PhpLangHighlightRules = function () { + var docComment = DocCommentHighlightRules; + var builtinFunctions = lang.arrayToMap('abs|acos|acosh|addcslashes|addslashes|aggregate|aggregate_info|aggregate_methods|aggregate_methods_by_list|aggregate_methods_by_regexp|\ +aggregate_properties|aggregate_properties_by_list|aggregate_properties_by_regexp|aggregation_info|amqpconnection|amqpexchange|amqpqueue|\ +apache_child_terminate|apache_get_modules|apache_get_version|apache_getenv|apache_lookup_uri|apache_note|apache_request_headers|\ +apache_reset_timeout|apache_response_headers|apache_setenv|apc_add|apc_bin_dump|apc_bin_dumpfile|apc_bin_load|apc_bin_loadfile|\ +apc_cache_info|apc_cas|apc_clear_cache|apc_compile_file|apc_dec|apc_define_constants|apc_delete|apc_delete_file|apc_exists|apc_fetch|\ +apc_inc|apc_load_constants|apc_sma_info|apc_store|apciterator|apd_breakpoint|apd_callstack|apd_clunk|apd_continue|apd_croak|\ +apd_dump_function_table|apd_dump_persistent_resources|apd_dump_regular_resources|apd_echo|apd_get_active_symbols|apd_set_pprof_trace|\ +apd_set_session|apd_set_session_trace|apd_set_session_trace_socket|appenditerator|array|array_change_key_case|array_chunk|array_combine|\ +array_count_values|array_diff|array_diff_assoc|array_diff_key|array_diff_uassoc|array_diff_ukey|array_fill|array_fill_keys|array_filter|\ +array_flip|array_intersect|array_intersect_assoc|array_intersect_key|array_intersect_uassoc|array_intersect_ukey|array_key_exists|\ +array_keys|array_map|array_merge|array_merge_recursive|array_multisort|array_pad|array_pop|array_product|array_push|array_rand|\ +array_reduce|array_replace|array_replace_recursive|array_reverse|array_search|array_shift|array_slice|array_splice|array_sum|array_udiff|\ +array_udiff_assoc|array_udiff_uassoc|array_uintersect|array_uintersect_assoc|array_uintersect_uassoc|array_unique|array_unshift|\ +array_values|array_walk|array_walk_recursive|arrayaccess|arrayiterator|arrayobject|arsort|asin|asinh|asort|assert|assert_options|atan|\ +atan2|atanh|audioproperties|badfunctioncallexception|badmethodcallexception|base64_decode|base64_encode|base_convert|basename|\ +bbcode_add_element|bbcode_add_smiley|bbcode_create|bbcode_destroy|bbcode_parse|bbcode_set_arg_parser|bbcode_set_flags|bcadd|bccomp|bcdiv|\ +bcmod|bcmul|bcompiler_load|bcompiler_load_exe|bcompiler_parse_class|bcompiler_read|bcompiler_write_class|bcompiler_write_constant|\ +bcompiler_write_exe_footer|bcompiler_write_file|bcompiler_write_footer|bcompiler_write_function|bcompiler_write_functions_from_file|\ +bcompiler_write_header|bcompiler_write_included_filename|bcpow|bcpowmod|bcscale|bcsqrt|bcsub|bin2hex|bind_textdomain_codeset|bindec|\ +bindtextdomain|bson_decode|bson_encode|bumpValue|bzclose|bzcompress|bzdecompress|bzerrno|bzerror|bzerrstr|bzflush|bzopen|bzread|bzwrite|\ +cachingiterator|cairo|cairo_create|cairo_font_face_get_type|cairo_font_face_status|cairo_font_options_create|cairo_font_options_equal|\ +cairo_font_options_get_antialias|cairo_font_options_get_hint_metrics|cairo_font_options_get_hint_style|\ +cairo_font_options_get_subpixel_order|cairo_font_options_hash|cairo_font_options_merge|cairo_font_options_set_antialias|\ +cairo_font_options_set_hint_metrics|cairo_font_options_set_hint_style|cairo_font_options_set_subpixel_order|cairo_font_options_status|\ +cairo_format_stride_for_width|cairo_image_surface_create|cairo_image_surface_create_for_data|cairo_image_surface_create_from_png|\ +cairo_image_surface_get_data|cairo_image_surface_get_format|cairo_image_surface_get_height|cairo_image_surface_get_stride|\ +cairo_image_surface_get_width|cairo_matrix_create_scale|cairo_matrix_create_translate|cairo_matrix_invert|cairo_matrix_multiply|\ +cairo_matrix_rotate|cairo_matrix_transform_distance|cairo_matrix_transform_point|cairo_matrix_translate|cairo_pattern_add_color_stop_rgb|\ +cairo_pattern_add_color_stop_rgba|cairo_pattern_create_for_surface|cairo_pattern_create_linear|cairo_pattern_create_radial|\ +cairo_pattern_create_rgb|cairo_pattern_create_rgba|cairo_pattern_get_color_stop_count|cairo_pattern_get_color_stop_rgba|\ +cairo_pattern_get_extend|cairo_pattern_get_filter|cairo_pattern_get_linear_points|cairo_pattern_get_matrix|\ +cairo_pattern_get_radial_circles|cairo_pattern_get_rgba|cairo_pattern_get_surface|cairo_pattern_get_type|cairo_pattern_set_extend|\ +cairo_pattern_set_filter|cairo_pattern_set_matrix|cairo_pattern_status|cairo_pdf_surface_create|cairo_pdf_surface_set_size|\ +cairo_ps_get_levels|cairo_ps_level_to_string|cairo_ps_surface_create|cairo_ps_surface_dsc_begin_page_setup|\ +cairo_ps_surface_dsc_begin_setup|cairo_ps_surface_dsc_comment|cairo_ps_surface_get_eps|cairo_ps_surface_restrict_to_level|\ +cairo_ps_surface_set_eps|cairo_ps_surface_set_size|cairo_scaled_font_create|cairo_scaled_font_extents|cairo_scaled_font_get_ctm|\ +cairo_scaled_font_get_font_face|cairo_scaled_font_get_font_matrix|cairo_scaled_font_get_font_options|cairo_scaled_font_get_scale_matrix|\ +cairo_scaled_font_get_type|cairo_scaled_font_glyph_extents|cairo_scaled_font_status|cairo_scaled_font_text_extents|\ +cairo_surface_copy_page|cairo_surface_create_similar|cairo_surface_finish|cairo_surface_flush|cairo_surface_get_content|\ +cairo_surface_get_device_offset|cairo_surface_get_font_options|cairo_surface_get_type|cairo_surface_mark_dirty|\ +cairo_surface_mark_dirty_rectangle|cairo_surface_set_device_offset|cairo_surface_set_fallback_resolution|cairo_surface_show_page|\ +cairo_surface_status|cairo_surface_write_to_png|cairo_svg_surface_create|cairo_svg_surface_restrict_to_version|\ +cairo_svg_version_to_string|cairoantialias|cairocontent|cairocontext|cairoexception|cairoextend|cairofillrule|cairofilter|cairofontface|\ +cairofontoptions|cairofontslant|cairofonttype|cairofontweight|cairoformat|cairogradientpattern|cairohintmetrics|cairohintstyle|\ +cairoimagesurface|cairolineargradient|cairolinecap|cairolinejoin|cairomatrix|cairooperator|cairopath|cairopattern|cairopatterntype|\ +cairopdfsurface|cairopslevel|cairopssurface|cairoradialgradient|cairoscaledfont|cairosolidpattern|cairostatus|cairosubpixelorder|\ +cairosurface|cairosurfacepattern|cairosurfacetype|cairosvgsurface|cairosvgversion|cairotoyfontface|cal_days_in_month|cal_from_jd|cal_info|\ +cal_to_jd|calcul_hmac|calculhmac|call_user_func|call_user_func_array|call_user_method|call_user_method_array|callbackfilteriterator|ceil|\ +chdb|chdb_create|chdir|checkdate|checkdnsrr|chgrp|chmod|chop|chown|chr|chroot|chunk_split|class_alias|class_exists|class_implements|\ +class_parents|class_uses|classkit_import|classkit_method_add|classkit_method_copy|classkit_method_redefine|classkit_method_remove|\ +classkit_method_rename|clearstatcache|clone|closedir|closelog|collator|com|com_addref|com_create_guid|com_event_sink|com_get|\ +com_get_active_object|com_invoke|com_isenum|com_load|com_load_typelib|com_message_pump|com_print_typeinfo|com_propget|com_propput|\ +com_propset|com_release|com_set|compact|connection_aborted|connection_status|connection_timeout|constant|construct|construct|construct|\ +convert_cyr_string|convert_uudecode|convert_uuencode|copy|cos|cosh|count|count_chars|countable|counter_bump|counter_bump_value|\ +counter_create|counter_get|counter_get_meta|counter_get_named|counter_get_value|counter_reset|counter_reset_value|crack_check|\ +crack_closedict|crack_getlastmessage|crack_opendict|crc32|create_function|crypt|ctype_alnum|ctype_alpha|ctype_cntrl|ctype_digit|\ +ctype_graph|ctype_lower|ctype_print|ctype_punct|ctype_space|ctype_upper|ctype_xdigit|cubrid_affected_rows|cubrid_bind|\ +cubrid_client_encoding|cubrid_close|cubrid_close_prepare|cubrid_close_request|cubrid_col_get|cubrid_col_size|cubrid_column_names|\ +cubrid_column_types|cubrid_commit|cubrid_connect|cubrid_connect_with_url|cubrid_current_oid|cubrid_data_seek|cubrid_db_name|\ +cubrid_disconnect|cubrid_drop|cubrid_errno|cubrid_error|cubrid_error_code|cubrid_error_code_facility|cubrid_error_msg|cubrid_execute|\ +cubrid_fetch|cubrid_fetch_array|cubrid_fetch_assoc|cubrid_fetch_field|cubrid_fetch_lengths|cubrid_fetch_object|cubrid_fetch_row|\ +cubrid_field_flags|cubrid_field_len|cubrid_field_name|cubrid_field_seek|cubrid_field_table|cubrid_field_type|cubrid_free_result|\ +cubrid_get|cubrid_get_autocommit|cubrid_get_charset|cubrid_get_class_name|cubrid_get_client_info|cubrid_get_db_parameter|\ +cubrid_get_server_info|cubrid_insert_id|cubrid_is_instance|cubrid_list_dbs|cubrid_load_from_glo|cubrid_lob_close|cubrid_lob_export|\ +cubrid_lob_get|cubrid_lob_send|cubrid_lob_size|cubrid_lock_read|cubrid_lock_write|cubrid_move_cursor|cubrid_new_glo|cubrid_next_result|\ +cubrid_num_cols|cubrid_num_fields|cubrid_num_rows|cubrid_ping|cubrid_prepare|cubrid_put|cubrid_query|cubrid_real_escape_string|\ +cubrid_result|cubrid_rollback|cubrid_save_to_glo|cubrid_schema|cubrid_send_glo|cubrid_seq_drop|cubrid_seq_insert|cubrid_seq_put|\ +cubrid_set_add|cubrid_set_autocommit|cubrid_set_db_parameter|cubrid_set_drop|cubrid_unbuffered_query|cubrid_version|curl_close|\ +curl_copy_handle|curl_errno|curl_error|curl_exec|curl_getinfo|curl_init|curl_multi_add_handle|curl_multi_close|curl_multi_exec|\ +curl_multi_getcontent|curl_multi_info_read|curl_multi_init|curl_multi_remove_handle|curl_multi_select|curl_setopt|curl_setopt_array|\ +curl_version|current|cyrus_authenticate|cyrus_bind|cyrus_close|cyrus_connect|cyrus_query|cyrus_unbind|date|date_add|date_create|\ +date_create_from_format|date_date_set|date_default_timezone_get|date_default_timezone_set|date_diff|date_format|date_get_last_errors|\ +date_interval_create_from_date_string|date_interval_format|date_isodate_set|date_modify|date_offset_get|date_parse|date_parse_from_format|\ +date_sub|date_sun_info|date_sunrise|date_sunset|date_time_set|date_timestamp_get|date_timestamp_set|date_timezone_get|date_timezone_set|\ +dateinterval|dateperiod|datetime|datetimezone|db2_autocommit|db2_bind_param|db2_client_info|db2_close|db2_column_privileges|db2_columns|\ +db2_commit|db2_conn_error|db2_conn_errormsg|db2_connect|db2_cursor_type|db2_escape_string|db2_exec|db2_execute|db2_fetch_array|\ +db2_fetch_assoc|db2_fetch_both|db2_fetch_object|db2_fetch_row|db2_field_display_size|db2_field_name|db2_field_num|db2_field_precision|\ +db2_field_scale|db2_field_type|db2_field_width|db2_foreign_keys|db2_free_result|db2_free_stmt|db2_get_option|db2_last_insert_id|\ +db2_lob_read|db2_next_result|db2_num_fields|db2_num_rows|db2_pclose|db2_pconnect|db2_prepare|db2_primary_keys|db2_procedure_columns|\ +db2_procedures|db2_result|db2_rollback|db2_server_info|db2_set_option|db2_special_columns|db2_statistics|db2_stmt_error|db2_stmt_errormsg|\ +db2_table_privileges|db2_tables|dba_close|dba_delete|dba_exists|dba_fetch|dba_firstkey|dba_handlers|dba_insert|dba_key_split|dba_list|\ +dba_nextkey|dba_open|dba_optimize|dba_popen|dba_replace|dba_sync|dbase_add_record|dbase_close|dbase_create|dbase_delete_record|\ +dbase_get_header_info|dbase_get_record|dbase_get_record_with_names|dbase_numfields|dbase_numrecords|dbase_open|dbase_pack|\ +dbase_replace_record|dbplus_add|dbplus_aql|dbplus_chdir|dbplus_close|dbplus_curr|dbplus_errcode|dbplus_errno|dbplus_find|dbplus_first|\ +dbplus_flush|dbplus_freealllocks|dbplus_freelock|dbplus_freerlocks|dbplus_getlock|dbplus_getunique|dbplus_info|dbplus_last|dbplus_lockrel|\ +dbplus_next|dbplus_open|dbplus_prev|dbplus_rchperm|dbplus_rcreate|dbplus_rcrtexact|dbplus_rcrtlike|dbplus_resolve|dbplus_restorepos|\ +dbplus_rkeys|dbplus_ropen|dbplus_rquery|dbplus_rrename|dbplus_rsecindex|dbplus_runlink|dbplus_rzap|dbplus_savepos|dbplus_setindex|\ +dbplus_setindexbynumber|dbplus_sql|dbplus_tcl|dbplus_tremove|dbplus_undo|dbplus_undoprepare|dbplus_unlockrel|dbplus_unselect|\ +dbplus_update|dbplus_xlockrel|dbplus_xunlockrel|dbx_close|dbx_compare|dbx_connect|dbx_error|dbx_escape_string|dbx_fetch_row|dbx_query|\ +dbx_sort|dcgettext|dcngettext|deaggregate|debug_backtrace|debug_print_backtrace|debug_zval_dump|decbin|dechex|decoct|define|\ +define_syslog_variables|defined|deg2rad|delete|dgettext|die|dio_close|dio_fcntl|dio_open|dio_read|dio_seek|dio_stat|dio_tcsetattr|\ +dio_truncate|dio_write|dir|directoryiterator|dirname|disk_free_space|disk_total_space|diskfreespace|dl|dngettext|dns_check_record|\ +dns_get_mx|dns_get_record|dom_import_simplexml|domainexception|domattr|domattribute_name|domattribute_set_value|domattribute_specified|\ +domattribute_value|domcharacterdata|domcomment|domdocument|domdocument_add_root|domdocument_create_attribute|\ +domdocument_create_cdata_section|domdocument_create_comment|domdocument_create_element|domdocument_create_element_ns|\ +domdocument_create_entity_reference|domdocument_create_processing_instruction|domdocument_create_text_node|domdocument_doctype|\ +domdocument_document_element|domdocument_dump_file|domdocument_dump_mem|domdocument_get_element_by_id|domdocument_get_elements_by_tagname|\ +domdocument_html_dump_mem|domdocument_xinclude|domdocumentfragment|domdocumenttype|domdocumenttype_entities|\ +domdocumenttype_internal_subset|domdocumenttype_name|domdocumenttype_notations|domdocumenttype_public_id|domdocumenttype_system_id|\ +domelement|domelement_get_attribute|domelement_get_attribute_node|domelement_get_elements_by_tagname|domelement_has_attribute|\ +domelement_remove_attribute|domelement_set_attribute|domelement_set_attribute_node|domelement_tagname|domentity|domentityreference|\ +domexception|domimplementation|domnamednodemap|domnode|domnode_add_namespace|domnode_append_child|domnode_append_sibling|\ +domnode_attributes|domnode_child_nodes|domnode_clone_node|domnode_dump_node|domnode_first_child|domnode_get_content|\ +domnode_has_attributes|domnode_has_child_nodes|domnode_insert_before|domnode_is_blank_node|domnode_last_child|domnode_next_sibling|\ +domnode_node_name|domnode_node_type|domnode_node_value|domnode_owner_document|domnode_parent_node|domnode_prefix|domnode_previous_sibling|\ +domnode_remove_child|domnode_replace_child|domnode_replace_node|domnode_set_content|domnode_set_name|domnode_set_namespace|\ +domnode_unlink_node|domnodelist|domnotation|domprocessinginstruction|domprocessinginstruction_data|domprocessinginstruction_target|\ +domtext|domxml_new_doc|domxml_open_file|domxml_open_mem|domxml_version|domxml_xmltree|domxml_xslt_stylesheet|domxml_xslt_stylesheet_doc|\ +domxml_xslt_stylesheet_file|domxml_xslt_version|domxpath|domxsltstylesheet_process|domxsltstylesheet_result_dump_file|\ +domxsltstylesheet_result_dump_mem|dotnet|dotnet_load|doubleval|each|easter_date|easter_days|echo|empty|emptyiterator|\ +enchant_broker_describe|enchant_broker_dict_exists|enchant_broker_free|enchant_broker_free_dict|enchant_broker_get_error|\ +enchant_broker_init|enchant_broker_list_dicts|enchant_broker_request_dict|enchant_broker_request_pwl_dict|enchant_broker_set_ordering|\ +enchant_dict_add_to_personal|enchant_dict_add_to_session|enchant_dict_check|enchant_dict_describe|enchant_dict_get_error|\ +enchant_dict_is_in_session|enchant_dict_quick_check|enchant_dict_store_replacement|enchant_dict_suggest|end|ereg|ereg_replace|eregi|\ +eregi_replace|error_get_last|error_log|error_reporting|errorexception|escapeshellarg|escapeshellcmd|eval|event_add|event_base_free|\ +event_base_loop|event_base_loopbreak|event_base_loopexit|event_base_new|event_base_priority_init|event_base_set|event_buffer_base_set|\ +event_buffer_disable|event_buffer_enable|event_buffer_fd_set|event_buffer_free|event_buffer_new|event_buffer_priority_set|\ +event_buffer_read|event_buffer_set_callback|event_buffer_timeout_set|event_buffer_watermark_set|event_buffer_write|event_del|event_free|\ +event_new|event_set|exception|exec|exif_imagetype|exif_read_data|exif_tagname|exif_thumbnail|exit|exp|expect_expectl|expect_popen|explode|\ +expm1|export|export|extension_loaded|extract|ezmlm_hash|fam_cancel_monitor|fam_close|fam_monitor_collection|fam_monitor_directory|\ +fam_monitor_file|fam_next_event|fam_open|fam_pending|fam_resume_monitor|fam_suspend_monitor|fbsql_affected_rows|fbsql_autocommit|\ +fbsql_blob_size|fbsql_change_user|fbsql_clob_size|fbsql_close|fbsql_commit|fbsql_connect|fbsql_create_blob|fbsql_create_clob|\ +fbsql_create_db|fbsql_data_seek|fbsql_database|fbsql_database_password|fbsql_db_query|fbsql_db_status|fbsql_drop_db|fbsql_errno|\ +fbsql_error|fbsql_fetch_array|fbsql_fetch_assoc|fbsql_fetch_field|fbsql_fetch_lengths|fbsql_fetch_object|fbsql_fetch_row|\ +fbsql_field_flags|fbsql_field_len|fbsql_field_name|fbsql_field_seek|fbsql_field_table|fbsql_field_type|fbsql_free_result|\ +fbsql_get_autostart_info|fbsql_hostname|fbsql_insert_id|fbsql_list_dbs|fbsql_list_fields|fbsql_list_tables|fbsql_next_result|\ +fbsql_num_fields|fbsql_num_rows|fbsql_password|fbsql_pconnect|fbsql_query|fbsql_read_blob|fbsql_read_clob|fbsql_result|fbsql_rollback|\ +fbsql_rows_fetched|fbsql_select_db|fbsql_set_characterset|fbsql_set_lob_mode|fbsql_set_password|fbsql_set_transaction|fbsql_start_db|\ +fbsql_stop_db|fbsql_table_name|fbsql_tablename|fbsql_username|fbsql_warnings|fclose|fdf_add_doc_javascript|fdf_add_template|fdf_close|\ +fdf_create|fdf_enum_values|fdf_errno|fdf_error|fdf_get_ap|fdf_get_attachment|fdf_get_encoding|fdf_get_file|fdf_get_flags|fdf_get_opt|\ +fdf_get_status|fdf_get_value|fdf_get_version|fdf_header|fdf_next_field_name|fdf_open|fdf_open_string|fdf_remove_item|fdf_save|\ +fdf_save_string|fdf_set_ap|fdf_set_encoding|fdf_set_file|fdf_set_flags|fdf_set_javascript_action|fdf_set_on_import_javascript|fdf_set_opt|\ +fdf_set_status|fdf_set_submit_form_action|fdf_set_target_frame|fdf_set_value|fdf_set_version|feof|fflush|fgetc|fgetcsv|fgets|fgetss|file|\ +file_exists|file_get_contents|file_put_contents|fileatime|filectime|filegroup|fileinode|filemtime|fileowner|fileperms|filepro|\ +filepro_fieldcount|filepro_fieldname|filepro_fieldtype|filepro_fieldwidth|filepro_retrieve|filepro_rowcount|filesize|filesystemiterator|\ +filetype|filter_has_var|filter_id|filter_input|filter_input_array|filter_list|filter_var|filter_var_array|filteriterator|finfo_buffer|\ +finfo_close|finfo_file|finfo_open|finfo_set_flags|floatval|flock|floor|flush|fmod|fnmatch|fopen|forward_static_call|\ +forward_static_call_array|fpassthru|fprintf|fputcsv|fputs|fread|frenchtojd|fribidi_log2vis|fscanf|fseek|fsockopen|fstat|ftell|ftok|\ +ftp_alloc|ftp_cdup|ftp_chdir|ftp_chmod|ftp_close|ftp_connect|ftp_delete|ftp_exec|ftp_fget|ftp_fput|ftp_get|ftp_get_option|ftp_login|\ +ftp_mdtm|ftp_mkdir|ftp_nb_continue|ftp_nb_fget|ftp_nb_fput|ftp_nb_get|ftp_nb_put|ftp_nlist|ftp_pasv|ftp_put|ftp_pwd|ftp_quit|ftp_raw|\ +ftp_rawlist|ftp_rename|ftp_rmdir|ftp_set_option|ftp_site|ftp_size|ftp_ssl_connect|ftp_systype|ftruncate|func_get_arg|func_get_args|\ +func_num_args|function_exists|fwrite|gc_collect_cycles|gc_disable|gc_enable|gc_enabled|gd_info|gearmanclient|gearmanjob|gearmantask|\ +gearmanworker|geoip_continent_code_by_name|geoip_country_code3_by_name|geoip_country_code_by_name|geoip_country_name_by_name|\ +geoip_database_info|geoip_db_avail|geoip_db_filename|geoip_db_get_all_info|geoip_id_by_name|geoip_isp_by_name|geoip_org_by_name|\ +geoip_record_by_name|geoip_region_by_name|geoip_region_name_by_code|geoip_time_zone_by_country_and_region|getMeta|getNamed|getValue|\ +get_browser|get_called_class|get_cfg_var|get_class|get_class_methods|get_class_vars|get_current_user|get_declared_classes|\ +get_declared_interfaces|get_declared_traits|get_defined_constants|get_defined_functions|get_defined_vars|get_extension_funcs|get_headers|\ +get_html_translation_table|get_include_path|get_included_files|get_loaded_extensions|get_magic_quotes_gpc|get_magic_quotes_runtime|\ +get_meta_tags|get_object_vars|get_parent_class|get_required_files|get_resource_type|getallheaders|getconstant|getconstants|getconstructor|\ +getcwd|getdate|getdefaultproperties|getdoccomment|getendline|getenv|getextension|getextensionname|getfilename|gethostbyaddr|gethostbyname|\ +gethostbynamel|gethostname|getimagesize|getinterfacenames|getinterfaces|getlastmod|getmethod|getmethods|getmodifiers|getmxrr|getmygid|\ +getmyinode|getmypid|getmyuid|getname|getnamespacename|getopt|getparentclass|getproperties|getproperty|getprotobyname|getprotobynumber|\ +getrandmax|getrusage|getservbyname|getservbyport|getshortname|getstartline|getstaticproperties|getstaticpropertyvalue|gettext|\ +gettimeofday|gettype|glob|globiterator|gmagick|gmagickdraw|gmagickpixel|gmdate|gmmktime|gmp_abs|gmp_add|gmp_and|gmp_clrbit|gmp_cmp|\ +gmp_com|gmp_div|gmp_div_q|gmp_div_qr|gmp_div_r|gmp_divexact|gmp_fact|gmp_gcd|gmp_gcdext|gmp_hamdist|gmp_init|gmp_intval|gmp_invert|\ +gmp_jacobi|gmp_legendre|gmp_mod|gmp_mul|gmp_neg|gmp_nextprime|gmp_or|gmp_perfect_square|gmp_popcount|gmp_pow|gmp_powm|gmp_prob_prime|\ +gmp_random|gmp_scan0|gmp_scan1|gmp_setbit|gmp_sign|gmp_sqrt|gmp_sqrtrem|gmp_strval|gmp_sub|gmp_testbit|gmp_xor|gmstrftime|\ +gnupg_adddecryptkey|gnupg_addencryptkey|gnupg_addsignkey|gnupg_cleardecryptkeys|gnupg_clearencryptkeys|gnupg_clearsignkeys|gnupg_decrypt|\ +gnupg_decryptverify|gnupg_encrypt|gnupg_encryptsign|gnupg_export|gnupg_geterror|gnupg_getprotocol|gnupg_import|gnupg_init|gnupg_keyinfo|\ +gnupg_setarmor|gnupg_seterrormode|gnupg_setsignmode|gnupg_sign|gnupg_verify|gopher_parsedir|grapheme_extract|grapheme_stripos|\ +grapheme_stristr|grapheme_strlen|grapheme_strpos|grapheme_strripos|grapheme_strrpos|grapheme_strstr|grapheme_substr|gregoriantojd|\ +gupnp_context_get_host_ip|gupnp_context_get_port|gupnp_context_get_subscription_timeout|gupnp_context_host_path|gupnp_context_new|\ +gupnp_context_set_subscription_timeout|gupnp_context_timeout_add|gupnp_context_unhost_path|gupnp_control_point_browse_start|\ +gupnp_control_point_browse_stop|gupnp_control_point_callback_set|gupnp_control_point_new|gupnp_device_action_callback_set|\ +gupnp_device_info_get|gupnp_device_info_get_service|gupnp_root_device_get_available|gupnp_root_device_get_relative_location|\ +gupnp_root_device_new|gupnp_root_device_set_available|gupnp_root_device_start|gupnp_root_device_stop|gupnp_service_action_get|\ +gupnp_service_action_return|gupnp_service_action_return_error|gupnp_service_action_set|gupnp_service_freeze_notify|gupnp_service_info_get|\ +gupnp_service_info_get_introspection|gupnp_service_introspection_get_state_variable|gupnp_service_notify|gupnp_service_proxy_action_get|\ +gupnp_service_proxy_action_set|gupnp_service_proxy_add_notify|gupnp_service_proxy_callback_set|gupnp_service_proxy_get_subscribed|\ +gupnp_service_proxy_remove_notify|gupnp_service_proxy_set_subscribed|gupnp_service_thaw_notify|gzclose|gzcompress|gzdecode|gzdeflate|\ +gzencode|gzeof|gzfile|gzgetc|gzgets|gzgetss|gzinflate|gzopen|gzpassthru|gzputs|gzread|gzrewind|gzseek|gztell|gzuncompress|gzwrite|\ +halt_compiler|haruannotation|haruannotation_setborderstyle|haruannotation_sethighlightmode|haruannotation_seticon|\ +haruannotation_setopened|harudestination|harudestination_setfit|harudestination_setfitb|harudestination_setfitbh|harudestination_setfitbv|\ +harudestination_setfith|harudestination_setfitr|harudestination_setfitv|harudestination_setxyz|harudoc|harudoc_addpage|\ +harudoc_addpagelabel|harudoc_construct|harudoc_createoutline|harudoc_getcurrentencoder|harudoc_getcurrentpage|harudoc_getencoder|\ +harudoc_getfont|harudoc_getinfoattr|harudoc_getpagelayout|harudoc_getpagemode|harudoc_getstreamsize|harudoc_insertpage|harudoc_loadjpeg|\ +harudoc_loadpng|harudoc_loadraw|harudoc_loadttc|harudoc_loadttf|harudoc_loadtype1|harudoc_output|harudoc_readfromstream|\ +harudoc_reseterror|harudoc_resetstream|harudoc_save|harudoc_savetostream|harudoc_setcompressionmode|harudoc_setcurrentencoder|\ +harudoc_setencryptionmode|harudoc_setinfoattr|harudoc_setinfodateattr|harudoc_setopenaction|harudoc_setpagelayout|harudoc_setpagemode|\ +harudoc_setpagesconfiguration|harudoc_setpassword|harudoc_setpermission|harudoc_usecnsencodings|harudoc_usecnsfonts|\ +harudoc_usecntencodings|harudoc_usecntfonts|harudoc_usejpencodings|harudoc_usejpfonts|harudoc_usekrencodings|harudoc_usekrfonts|\ +haruencoder|haruencoder_getbytetype|haruencoder_gettype|haruencoder_getunicode|haruencoder_getwritingmode|haruexception|harufont|\ +harufont_getascent|harufont_getcapheight|harufont_getdescent|harufont_getencodingname|harufont_getfontname|harufont_gettextwidth|\ +harufont_getunicodewidth|harufont_getxheight|harufont_measuretext|haruimage|haruimage_getbitspercomponent|haruimage_getcolorspace|\ +haruimage_getheight|haruimage_getsize|haruimage_getwidth|haruimage_setcolormask|haruimage_setmaskimage|haruoutline|\ +haruoutline_setdestination|haruoutline_setopened|harupage|harupage_arc|harupage_begintext|harupage_circle|harupage_closepath|\ +harupage_concat|harupage_createdestination|harupage_createlinkannotation|harupage_createtextannotation|harupage_createurlannotation|\ +harupage_curveto|harupage_curveto2|harupage_curveto3|harupage_drawimage|harupage_ellipse|harupage_endpath|harupage_endtext|\ +harupage_eofill|harupage_eofillstroke|harupage_fill|harupage_fillstroke|harupage_getcharspace|harupage_getcmykfill|harupage_getcmykstroke|\ +harupage_getcurrentfont|harupage_getcurrentfontsize|harupage_getcurrentpos|harupage_getcurrenttextpos|harupage_getdash|\ +harupage_getfillingcolorspace|harupage_getflatness|harupage_getgmode|harupage_getgrayfill|harupage_getgraystroke|harupage_getheight|\ +harupage_gethorizontalscaling|harupage_getlinecap|harupage_getlinejoin|harupage_getlinewidth|harupage_getmiterlimit|harupage_getrgbfill|\ +harupage_getrgbstroke|harupage_getstrokingcolorspace|harupage_gettextleading|harupage_gettextmatrix|harupage_gettextrenderingmode|\ +harupage_gettextrise|harupage_gettextwidth|harupage_gettransmatrix|harupage_getwidth|harupage_getwordspace|harupage_lineto|\ +harupage_measuretext|harupage_movetextpos|harupage_moveto|harupage_movetonextline|harupage_rectangle|harupage_setcharspace|\ +harupage_setcmykfill|harupage_setcmykstroke|harupage_setdash|harupage_setflatness|harupage_setfontandsize|harupage_setgrayfill|\ +harupage_setgraystroke|harupage_setheight|harupage_sethorizontalscaling|harupage_setlinecap|harupage_setlinejoin|harupage_setlinewidth|\ +harupage_setmiterlimit|harupage_setrgbfill|harupage_setrgbstroke|harupage_setrotate|harupage_setsize|harupage_setslideshow|\ +harupage_settextleading|harupage_settextmatrix|harupage_settextrenderingmode|harupage_settextrise|harupage_setwidth|harupage_setwordspace|\ +harupage_showtext|harupage_showtextnextline|harupage_stroke|harupage_textout|harupage_textrect|hasconstant|hash|hash_algos|hash_copy|\ +hash_file|hash_final|hash_hmac|hash_hmac_file|hash_init|hash_update|hash_update_file|hash_update_stream|hasmethod|hasproperty|header|\ +header_register_callback|header_remove|headers_list|headers_sent|hebrev|hebrevc|hex2bin|hexdec|highlight_file|highlight_string|\ +html_entity_decode|htmlentities|htmlspecialchars|htmlspecialchars_decode|http_build_cookie|http_build_query|http_build_str|http_build_url|\ +http_cache_etag|http_cache_last_modified|http_chunked_decode|http_date|http_deflate|http_get|http_get_request_body|\ +http_get_request_body_stream|http_get_request_headers|http_head|http_inflate|http_match_etag|http_match_modified|\ +http_match_request_header|http_negotiate_charset|http_negotiate_content_type|http_negotiate_language|http_parse_cookie|http_parse_headers|\ +http_parse_message|http_parse_params|http_persistent_handles_clean|http_persistent_handles_count|http_persistent_handles_ident|\ +http_post_data|http_post_fields|http_put_data|http_put_file|http_put_stream|http_redirect|http_request|http_request_body_encode|\ +http_request_method_exists|http_request_method_name|http_request_method_register|http_request_method_unregister|http_response_code|\ +http_send_content_disposition|http_send_content_type|http_send_data|http_send_file|http_send_last_modified|http_send_status|\ +http_send_stream|http_support|http_throttle|httpdeflatestream|httpdeflatestream_construct|httpdeflatestream_factory|\ +httpdeflatestream_finish|httpdeflatestream_flush|httpdeflatestream_update|httpinflatestream|httpinflatestream_construct|\ +httpinflatestream_factory|httpinflatestream_finish|httpinflatestream_flush|httpinflatestream_update|httpmessage|httpmessage_addheaders|\ +httpmessage_construct|httpmessage_detach|httpmessage_factory|httpmessage_fromenv|httpmessage_fromstring|httpmessage_getbody|\ +httpmessage_getheader|httpmessage_getheaders|httpmessage_gethttpversion|httpmessage_getparentmessage|httpmessage_getrequestmethod|\ +httpmessage_getrequesturl|httpmessage_getresponsecode|httpmessage_getresponsestatus|httpmessage_gettype|httpmessage_guesscontenttype|\ +httpmessage_prepend|httpmessage_reverse|httpmessage_send|httpmessage_setbody|httpmessage_setheaders|httpmessage_sethttpversion|\ +httpmessage_setrequestmethod|httpmessage_setrequesturl|httpmessage_setresponsecode|httpmessage_setresponsestatus|httpmessage_settype|\ +httpmessage_tomessagetypeobject|httpmessage_tostring|httpquerystring|httpquerystring_construct|httpquerystring_get|httpquerystring_mod|\ +httpquerystring_set|httpquerystring_singleton|httpquerystring_toarray|httpquerystring_tostring|httpquerystring_xlate|httprequest|\ +httprequest_addcookies|httprequest_addheaders|httprequest_addpostfields|httprequest_addpostfile|httprequest_addputdata|\ +httprequest_addquerydata|httprequest_addrawpostdata|httprequest_addssloptions|httprequest_clearhistory|httprequest_construct|\ +httprequest_enablecookies|httprequest_getcontenttype|httprequest_getcookies|httprequest_getheaders|httprequest_gethistory|\ +httprequest_getmethod|httprequest_getoptions|httprequest_getpostfields|httprequest_getpostfiles|httprequest_getputdata|\ +httprequest_getputfile|httprequest_getquerydata|httprequest_getrawpostdata|httprequest_getrawrequestmessage|\ +httprequest_getrawresponsemessage|httprequest_getrequestmessage|httprequest_getresponsebody|httprequest_getresponsecode|\ +httprequest_getresponsecookies|httprequest_getresponsedata|httprequest_getresponseheader|httprequest_getresponseinfo|\ +httprequest_getresponsemessage|httprequest_getresponsestatus|httprequest_getssloptions|httprequest_geturl|httprequest_resetcookies|\ +httprequest_send|httprequest_setcontenttype|httprequest_setcookies|httprequest_setheaders|httprequest_setmethod|httprequest_setoptions|\ +httprequest_setpostfields|httprequest_setpostfiles|httprequest_setputdata|httprequest_setputfile|httprequest_setquerydata|\ +httprequest_setrawpostdata|httprequest_setssloptions|httprequest_seturl|httprequestpool|httprequestpool_attach|httprequestpool_construct|\ +httprequestpool_destruct|httprequestpool_detach|httprequestpool_getattachedrequests|httprequestpool_getfinishedrequests|\ +httprequestpool_reset|httprequestpool_send|httprequestpool_socketperform|httprequestpool_socketselect|httpresponse|httpresponse_capture|\ +httpresponse_getbuffersize|httpresponse_getcache|httpresponse_getcachecontrol|httpresponse_getcontentdisposition|\ +httpresponse_getcontenttype|httpresponse_getdata|httpresponse_getetag|httpresponse_getfile|httpresponse_getgzip|httpresponse_getheader|\ +httpresponse_getlastmodified|httpresponse_getrequestbody|httpresponse_getrequestbodystream|httpresponse_getrequestheaders|\ +httpresponse_getstream|httpresponse_getthrottledelay|httpresponse_guesscontenttype|httpresponse_redirect|httpresponse_send|\ +httpresponse_setbuffersize|httpresponse_setcache|httpresponse_setcachecontrol|httpresponse_setcontentdisposition|\ +httpresponse_setcontenttype|httpresponse_setdata|httpresponse_setetag|httpresponse_setfile|httpresponse_setgzip|httpresponse_setheader|\ +httpresponse_setlastmodified|httpresponse_setstream|httpresponse_setthrottledelay|httpresponse_status|hw_array2objrec|hw_changeobject|\ +hw_children|hw_childrenobj|hw_close|hw_connect|hw_connection_info|hw_cp|hw_deleteobject|hw_docbyanchor|hw_docbyanchorobj|\ +hw_document_attributes|hw_document_bodytag|hw_document_content|hw_document_setcontent|hw_document_size|hw_dummy|hw_edittext|hw_error|\ +hw_errormsg|hw_free_document|hw_getanchors|hw_getanchorsobj|hw_getandlock|hw_getchildcoll|hw_getchildcollobj|hw_getchilddoccoll|\ +hw_getchilddoccollobj|hw_getobject|hw_getobjectbyquery|hw_getobjectbyquerycoll|hw_getobjectbyquerycollobj|hw_getobjectbyqueryobj|\ +hw_getparents|hw_getparentsobj|hw_getrellink|hw_getremote|hw_getremotechildren|hw_getsrcbydestobj|hw_gettext|hw_getusername|hw_identify|\ +hw_incollections|hw_info|hw_inscoll|hw_insdoc|hw_insertanchors|hw_insertdocument|hw_insertobject|hw_mapid|hw_modifyobject|hw_mv|\ +hw_new_document|hw_objrec2array|hw_output_document|hw_pconnect|hw_pipedocument|hw_root|hw_setlinkroot|hw_stat|hw_unlock|hw_who|\ +hwapi_attribute|hwapi_attribute_key|hwapi_attribute_langdepvalue|hwapi_attribute_value|hwapi_attribute_values|hwapi_checkin|\ +hwapi_checkout|hwapi_children|hwapi_content|hwapi_content_mimetype|hwapi_content_read|hwapi_copy|hwapi_dbstat|hwapi_dcstat|\ +hwapi_dstanchors|hwapi_dstofsrcanchor|hwapi_error_count|hwapi_error_reason|hwapi_find|hwapi_ftstat|hwapi_hgcsp|hwapi_hwstat|\ +hwapi_identify|hwapi_info|hwapi_insert|hwapi_insertanchor|hwapi_insertcollection|hwapi_insertdocument|hwapi_link|hwapi_lock|hwapi_move|\ +hwapi_new_content|hwapi_object|hwapi_object_assign|hwapi_object_attreditable|hwapi_object_count|hwapi_object_insert|hwapi_object_new|\ +hwapi_object_remove|hwapi_object_title|hwapi_object_value|hwapi_objectbyanchor|hwapi_parents|hwapi_reason_description|hwapi_reason_type|\ +hwapi_remove|hwapi_replace|hwapi_setcommittedversion|hwapi_srcanchors|hwapi_srcsofdst|hwapi_unlock|hwapi_user|hwapi_userlist|hypot|\ +ibase_add_user|ibase_affected_rows|ibase_backup|ibase_blob_add|ibase_blob_cancel|ibase_blob_close|ibase_blob_create|ibase_blob_echo|\ +ibase_blob_get|ibase_blob_import|ibase_blob_info|ibase_blob_open|ibase_close|ibase_commit|ibase_commit_ret|ibase_connect|ibase_db_info|\ +ibase_delete_user|ibase_drop_db|ibase_errcode|ibase_errmsg|ibase_execute|ibase_fetch_assoc|ibase_fetch_object|ibase_fetch_row|\ +ibase_field_info|ibase_free_event_handler|ibase_free_query|ibase_free_result|ibase_gen_id|ibase_maintain_db|ibase_modify_user|\ +ibase_name_result|ibase_num_fields|ibase_num_params|ibase_param_info|ibase_pconnect|ibase_prepare|ibase_query|ibase_restore|\ +ibase_rollback|ibase_rollback_ret|ibase_server_info|ibase_service_attach|ibase_service_detach|ibase_set_event_handler|ibase_timefmt|\ +ibase_trans|ibase_wait_event|iconv|iconv_get_encoding|iconv_mime_decode|iconv_mime_decode_headers|iconv_mime_encode|iconv_set_encoding|\ +iconv_strlen|iconv_strpos|iconv_strrpos|iconv_substr|id3_get_frame_long_name|id3_get_frame_short_name|id3_get_genre_id|id3_get_genre_list|\ +id3_get_genre_name|id3_get_tag|id3_get_version|id3_remove_tag|id3_set_tag|id3v2attachedpictureframe|id3v2frame|id3v2tag|idate|\ +idn_to_ascii|idn_to_unicode|idn_to_utf8|ifx_affected_rows|ifx_blobinfile_mode|ifx_byteasvarchar|ifx_close|ifx_connect|ifx_copy_blob|\ +ifx_create_blob|ifx_create_char|ifx_do|ifx_error|ifx_errormsg|ifx_fetch_row|ifx_fieldproperties|ifx_fieldtypes|ifx_free_blob|\ +ifx_free_char|ifx_free_result|ifx_get_blob|ifx_get_char|ifx_getsqlca|ifx_htmltbl_result|ifx_nullformat|ifx_num_fields|ifx_num_rows|\ +ifx_pconnect|ifx_prepare|ifx_query|ifx_textasvarchar|ifx_update_blob|ifx_update_char|ifxus_close_slob|ifxus_create_slob|ifxus_free_slob|\ +ifxus_open_slob|ifxus_read_slob|ifxus_seek_slob|ifxus_tell_slob|ifxus_write_slob|ignore_user_abort|iis_add_server|iis_get_dir_security|\ +iis_get_script_map|iis_get_server_by_comment|iis_get_server_by_path|iis_get_server_rights|iis_get_service_state|iis_remove_server|\ +iis_set_app_settings|iis_set_dir_security|iis_set_script_map|iis_set_server_rights|iis_start_server|iis_start_service|iis_stop_server|\ +iis_stop_service|image2wbmp|image_type_to_extension|image_type_to_mime_type|imagealphablending|imageantialias|imagearc|imagechar|\ +imagecharup|imagecolorallocate|imagecolorallocatealpha|imagecolorat|imagecolorclosest|imagecolorclosestalpha|imagecolorclosesthwb|\ +imagecolordeallocate|imagecolorexact|imagecolorexactalpha|imagecolormatch|imagecolorresolve|imagecolorresolvealpha|imagecolorset|\ +imagecolorsforindex|imagecolorstotal|imagecolortransparent|imageconvolution|imagecopy|imagecopymerge|imagecopymergegray|\ +imagecopyresampled|imagecopyresized|imagecreate|imagecreatefromgd|imagecreatefromgd2|imagecreatefromgd2part|imagecreatefromgif|\ +imagecreatefromjpeg|imagecreatefrompng|imagecreatefromstring|imagecreatefromwbmp|imagecreatefromxbm|imagecreatefromxpm|\ +imagecreatetruecolor|imagedashedline|imagedestroy|imageellipse|imagefill|imagefilledarc|imagefilledellipse|imagefilledpolygon|\ +imagefilledrectangle|imagefilltoborder|imagefilter|imagefontheight|imagefontwidth|imageftbbox|imagefttext|imagegammacorrect|imagegd|\ +imagegd2|imagegif|imagegrabscreen|imagegrabwindow|imageinterlace|imageistruecolor|imagejpeg|imagelayereffect|imageline|imageloadfont|\ +imagepalettecopy|imagepng|imagepolygon|imagepsbbox|imagepsencodefont|imagepsextendfont|imagepsfreefont|imagepsloadfont|imagepsslantfont|\ +imagepstext|imagerectangle|imagerotate|imagesavealpha|imagesetbrush|imagesetpixel|imagesetstyle|imagesetthickness|imagesettile|\ +imagestring|imagestringup|imagesx|imagesy|imagetruecolortopalette|imagettfbbox|imagettftext|imagetypes|imagewbmp|imagexbm|imagick|\ +imagick_adaptiveblurimage|imagick_adaptiveresizeimage|imagick_adaptivesharpenimage|imagick_adaptivethresholdimage|imagick_addimage|\ +imagick_addnoiseimage|imagick_affinetransformimage|imagick_animateimages|imagick_annotateimage|imagick_appendimages|imagick_averageimages|\ +imagick_blackthresholdimage|imagick_blurimage|imagick_borderimage|imagick_charcoalimage|imagick_chopimage|imagick_clear|imagick_clipimage|\ +imagick_clippathimage|imagick_clone|imagick_clutimage|imagick_coalesceimages|imagick_colorfloodfillimage|imagick_colorizeimage|\ +imagick_combineimages|imagick_commentimage|imagick_compareimagechannels|imagick_compareimagelayers|imagick_compareimages|\ +imagick_compositeimage|imagick_construct|imagick_contrastimage|imagick_contraststretchimage|imagick_convolveimage|imagick_cropimage|\ +imagick_cropthumbnailimage|imagick_current|imagick_cyclecolormapimage|imagick_decipherimage|imagick_deconstructimages|\ +imagick_deleteimageartifact|imagick_despeckleimage|imagick_destroy|imagick_displayimage|imagick_displayimages|imagick_distortimage|\ +imagick_drawimage|imagick_edgeimage|imagick_embossimage|imagick_encipherimage|imagick_enhanceimage|imagick_equalizeimage|\ +imagick_evaluateimage|imagick_extentimage|imagick_flattenimages|imagick_flipimage|imagick_floodfillpaintimage|imagick_flopimage|\ +imagick_frameimage|imagick_fximage|imagick_gammaimage|imagick_gaussianblurimage|imagick_getcolorspace|imagick_getcompression|\ +imagick_getcompressionquality|imagick_getcopyright|imagick_getfilename|imagick_getfont|imagick_getformat|imagick_getgravity|\ +imagick_gethomeurl|imagick_getimage|imagick_getimagealphachannel|imagick_getimageartifact|imagick_getimagebackgroundcolor|\ +imagick_getimageblob|imagick_getimageblueprimary|imagick_getimagebordercolor|imagick_getimagechanneldepth|\ +imagick_getimagechanneldistortion|imagick_getimagechanneldistortions|imagick_getimagechannelextrema|imagick_getimagechannelmean|\ +imagick_getimagechannelrange|imagick_getimagechannelstatistics|imagick_getimageclipmask|imagick_getimagecolormapcolor|\ +imagick_getimagecolors|imagick_getimagecolorspace|imagick_getimagecompose|imagick_getimagecompression|imagick_getimagecompressionquality|\ +imagick_getimagedelay|imagick_getimagedepth|imagick_getimagedispose|imagick_getimagedistortion|imagick_getimageextrema|\ +imagick_getimagefilename|imagick_getimageformat|imagick_getimagegamma|imagick_getimagegeometry|imagick_getimagegravity|\ +imagick_getimagegreenprimary|imagick_getimageheight|imagick_getimagehistogram|imagick_getimageindex|imagick_getimageinterlacescheme|\ +imagick_getimageinterpolatemethod|imagick_getimageiterations|imagick_getimagelength|imagick_getimagemagicklicense|imagick_getimagematte|\ +imagick_getimagemattecolor|imagick_getimageorientation|imagick_getimagepage|imagick_getimagepixelcolor|imagick_getimageprofile|\ +imagick_getimageprofiles|imagick_getimageproperties|imagick_getimageproperty|imagick_getimageredprimary|imagick_getimageregion|\ +imagick_getimagerenderingintent|imagick_getimageresolution|imagick_getimagesblob|imagick_getimagescene|imagick_getimagesignature|\ +imagick_getimagesize|imagick_getimagetickspersecond|imagick_getimagetotalinkdensity|imagick_getimagetype|imagick_getimageunits|\ +imagick_getimagevirtualpixelmethod|imagick_getimagewhitepoint|imagick_getimagewidth|imagick_getinterlacescheme|imagick_getiteratorindex|\ +imagick_getnumberimages|imagick_getoption|imagick_getpackagename|imagick_getpage|imagick_getpixeliterator|imagick_getpixelregioniterator|\ +imagick_getpointsize|imagick_getquantumdepth|imagick_getquantumrange|imagick_getreleasedate|imagick_getresource|imagick_getresourcelimit|\ +imagick_getsamplingfactors|imagick_getsize|imagick_getsizeoffset|imagick_getversion|imagick_hasnextimage|imagick_haspreviousimage|\ +imagick_identifyimage|imagick_implodeimage|imagick_labelimage|imagick_levelimage|imagick_linearstretchimage|imagick_liquidrescaleimage|\ +imagick_magnifyimage|imagick_mapimage|imagick_mattefloodfillimage|imagick_medianfilterimage|imagick_mergeimagelayers|imagick_minifyimage|\ +imagick_modulateimage|imagick_montageimage|imagick_morphimages|imagick_mosaicimages|imagick_motionblurimage|imagick_negateimage|\ +imagick_newimage|imagick_newpseudoimage|imagick_nextimage|imagick_normalizeimage|imagick_oilpaintimage|imagick_opaquepaintimage|\ +imagick_optimizeimagelayers|imagick_orderedposterizeimage|imagick_paintfloodfillimage|imagick_paintopaqueimage|\ +imagick_painttransparentimage|imagick_pingimage|imagick_pingimageblob|imagick_pingimagefile|imagick_polaroidimage|imagick_posterizeimage|\ +imagick_previewimages|imagick_previousimage|imagick_profileimage|imagick_quantizeimage|imagick_quantizeimages|imagick_queryfontmetrics|\ +imagick_queryfonts|imagick_queryformats|imagick_radialblurimage|imagick_raiseimage|imagick_randomthresholdimage|imagick_readimage|\ +imagick_readimageblob|imagick_readimagefile|imagick_recolorimage|imagick_reducenoiseimage|imagick_removeimage|imagick_removeimageprofile|\ +imagick_render|imagick_resampleimage|imagick_resetimagepage|imagick_resizeimage|imagick_rollimage|imagick_rotateimage|\ +imagick_roundcorners|imagick_sampleimage|imagick_scaleimage|imagick_separateimagechannel|imagick_sepiatoneimage|\ +imagick_setbackgroundcolor|imagick_setcolorspace|imagick_setcompression|imagick_setcompressionquality|imagick_setfilename|\ +imagick_setfirstiterator|imagick_setfont|imagick_setformat|imagick_setgravity|imagick_setimage|imagick_setimagealphachannel|\ +imagick_setimageartifact|imagick_setimagebackgroundcolor|imagick_setimagebias|imagick_setimageblueprimary|imagick_setimagebordercolor|\ +imagick_setimagechanneldepth|imagick_setimageclipmask|imagick_setimagecolormapcolor|imagick_setimagecolorspace|imagick_setimagecompose|\ +imagick_setimagecompression|imagick_setimagecompressionquality|imagick_setimagedelay|imagick_setimagedepth|imagick_setimagedispose|\ +imagick_setimageextent|imagick_setimagefilename|imagick_setimageformat|imagick_setimagegamma|imagick_setimagegravity|\ +imagick_setimagegreenprimary|imagick_setimageindex|imagick_setimageinterlacescheme|imagick_setimageinterpolatemethod|\ +imagick_setimageiterations|imagick_setimagematte|imagick_setimagemattecolor|imagick_setimageopacity|imagick_setimageorientation|\ +imagick_setimagepage|imagick_setimageprofile|imagick_setimageproperty|imagick_setimageredprimary|imagick_setimagerenderingintent|\ +imagick_setimageresolution|imagick_setimagescene|imagick_setimagetickspersecond|imagick_setimagetype|imagick_setimageunits|\ +imagick_setimagevirtualpixelmethod|imagick_setimagewhitepoint|imagick_setinterlacescheme|imagick_setiteratorindex|imagick_setlastiterator|\ +imagick_setoption|imagick_setpage|imagick_setpointsize|imagick_setresolution|imagick_setresourcelimit|imagick_setsamplingfactors|\ +imagick_setsize|imagick_setsizeoffset|imagick_settype|imagick_shadeimage|imagick_shadowimage|imagick_sharpenimage|imagick_shaveimage|\ +imagick_shearimage|imagick_sigmoidalcontrastimage|imagick_sketchimage|imagick_solarizeimage|imagick_spliceimage|imagick_spreadimage|\ +imagick_steganoimage|imagick_stereoimage|imagick_stripimage|imagick_swirlimage|imagick_textureimage|imagick_thresholdimage|\ +imagick_thumbnailimage|imagick_tintimage|imagick_transformimage|imagick_transparentpaintimage|imagick_transposeimage|\ +imagick_transverseimage|imagick_trimimage|imagick_uniqueimagecolors|imagick_unsharpmaskimage|imagick_valid|imagick_vignetteimage|\ +imagick_waveimage|imagick_whitethresholdimage|imagick_writeimage|imagick_writeimagefile|imagick_writeimages|imagick_writeimagesfile|\ +imagickdraw|imagickdraw_affine|imagickdraw_annotation|imagickdraw_arc|imagickdraw_bezier|imagickdraw_circle|imagickdraw_clear|\ +imagickdraw_clone|imagickdraw_color|imagickdraw_comment|imagickdraw_composite|imagickdraw_construct|imagickdraw_destroy|\ +imagickdraw_ellipse|imagickdraw_getclippath|imagickdraw_getcliprule|imagickdraw_getclipunits|imagickdraw_getfillcolor|\ +imagickdraw_getfillopacity|imagickdraw_getfillrule|imagickdraw_getfont|imagickdraw_getfontfamily|imagickdraw_getfontsize|\ +imagickdraw_getfontstyle|imagickdraw_getfontweight|imagickdraw_getgravity|imagickdraw_getstrokeantialias|imagickdraw_getstrokecolor|\ +imagickdraw_getstrokedasharray|imagickdraw_getstrokedashoffset|imagickdraw_getstrokelinecap|imagickdraw_getstrokelinejoin|\ +imagickdraw_getstrokemiterlimit|imagickdraw_getstrokeopacity|imagickdraw_getstrokewidth|imagickdraw_gettextalignment|\ +imagickdraw_gettextantialias|imagickdraw_gettextdecoration|imagickdraw_gettextencoding|imagickdraw_gettextundercolor|\ +imagickdraw_getvectorgraphics|imagickdraw_line|imagickdraw_matte|imagickdraw_pathclose|imagickdraw_pathcurvetoabsolute|\ +imagickdraw_pathcurvetoquadraticbezierabsolute|imagickdraw_pathcurvetoquadraticbezierrelative|\ +imagickdraw_pathcurvetoquadraticbeziersmoothabsolute|imagickdraw_pathcurvetoquadraticbeziersmoothrelative|imagickdraw_pathcurvetorelative|\ +imagickdraw_pathcurvetosmoothabsolute|imagickdraw_pathcurvetosmoothrelative|imagickdraw_pathellipticarcabsolute|\ +imagickdraw_pathellipticarcrelative|imagickdraw_pathfinish|imagickdraw_pathlinetoabsolute|imagickdraw_pathlinetohorizontalabsolute|\ +imagickdraw_pathlinetohorizontalrelative|imagickdraw_pathlinetorelative|imagickdraw_pathlinetoverticalabsolute|\ +imagickdraw_pathlinetoverticalrelative|imagickdraw_pathmovetoabsolute|imagickdraw_pathmovetorelative|imagickdraw_pathstart|\ +imagickdraw_point|imagickdraw_polygon|imagickdraw_polyline|imagickdraw_pop|imagickdraw_popclippath|imagickdraw_popdefs|\ +imagickdraw_poppattern|imagickdraw_push|imagickdraw_pushclippath|imagickdraw_pushdefs|imagickdraw_pushpattern|imagickdraw_rectangle|\ +imagickdraw_render|imagickdraw_rotate|imagickdraw_roundrectangle|imagickdraw_scale|imagickdraw_setclippath|imagickdraw_setcliprule|\ +imagickdraw_setclipunits|imagickdraw_setfillalpha|imagickdraw_setfillcolor|imagickdraw_setfillopacity|imagickdraw_setfillpatternurl|\ +imagickdraw_setfillrule|imagickdraw_setfont|imagickdraw_setfontfamily|imagickdraw_setfontsize|imagickdraw_setfontstretch|\ +imagickdraw_setfontstyle|imagickdraw_setfontweight|imagickdraw_setgravity|imagickdraw_setstrokealpha|imagickdraw_setstrokeantialias|\ +imagickdraw_setstrokecolor|imagickdraw_setstrokedasharray|imagickdraw_setstrokedashoffset|imagickdraw_setstrokelinecap|\ +imagickdraw_setstrokelinejoin|imagickdraw_setstrokemiterlimit|imagickdraw_setstrokeopacity|imagickdraw_setstrokepatternurl|\ +imagickdraw_setstrokewidth|imagickdraw_settextalignment|imagickdraw_settextantialias|imagickdraw_settextdecoration|\ +imagickdraw_settextencoding|imagickdraw_settextundercolor|imagickdraw_setvectorgraphics|imagickdraw_setviewbox|imagickdraw_skewx|\ +imagickdraw_skewy|imagickdraw_translate|imagickpixel|imagickpixel_clear|imagickpixel_construct|imagickpixel_destroy|imagickpixel_getcolor|\ +imagickpixel_getcolorasstring|imagickpixel_getcolorcount|imagickpixel_getcolorvalue|imagickpixel_gethsl|imagickpixel_issimilar|\ +imagickpixel_setcolor|imagickpixel_setcolorvalue|imagickpixel_sethsl|imagickpixeliterator|imagickpixeliterator_clear|\ +imagickpixeliterator_construct|imagickpixeliterator_destroy|imagickpixeliterator_getcurrentiteratorrow|\ +imagickpixeliterator_getiteratorrow|imagickpixeliterator_getnextiteratorrow|imagickpixeliterator_getpreviousiteratorrow|\ +imagickpixeliterator_newpixeliterator|imagickpixeliterator_newpixelregioniterator|imagickpixeliterator_resetiterator|\ +imagickpixeliterator_setiteratorfirstrow|imagickpixeliterator_setiteratorlastrow|imagickpixeliterator_setiteratorrow|\ +imagickpixeliterator_synciterator|imap_8bit|imap_alerts|imap_append|imap_base64|imap_binary|imap_body|imap_bodystruct|imap_check|\ +imap_clearflag_full|imap_close|imap_create|imap_createmailbox|imap_delete|imap_deletemailbox|imap_errors|imap_expunge|imap_fetch_overview|\ +imap_fetchbody|imap_fetchheader|imap_fetchmime|imap_fetchstructure|imap_fetchtext|imap_gc|imap_get_quota|imap_get_quotaroot|imap_getacl|\ +imap_getmailboxes|imap_getsubscribed|imap_header|imap_headerinfo|imap_headers|imap_last_error|imap_list|imap_listmailbox|imap_listscan|\ +imap_listsubscribed|imap_lsub|imap_mail|imap_mail_compose|imap_mail_copy|imap_mail_move|imap_mailboxmsginfo|imap_mime_header_decode|\ +imap_msgno|imap_num_msg|imap_num_recent|imap_open|imap_ping|imap_qprint|imap_rename|imap_renamemailbox|imap_reopen|\ +imap_rfc822_parse_adrlist|imap_rfc822_parse_headers|imap_rfc822_write_address|imap_savebody|imap_scan|imap_scanmailbox|imap_search|\ +imap_set_quota|imap_setacl|imap_setflag_full|imap_sort|imap_status|imap_subscribe|imap_thread|imap_timeout|imap_uid|imap_undelete|\ +imap_unsubscribe|imap_utf7_decode|imap_utf7_encode|imap_utf8|implementsinterface|implode|import_request_variables|in_array|include|\ +include_once|inclued_get_data|inet_ntop|inet_pton|infiniteiterator|ingres_autocommit|ingres_autocommit_state|ingres_charset|ingres_close|\ +ingres_commit|ingres_connect|ingres_cursor|ingres_errno|ingres_error|ingres_errsqlstate|ingres_escape_string|ingres_execute|\ +ingres_fetch_array|ingres_fetch_assoc|ingres_fetch_object|ingres_fetch_proc_return|ingres_fetch_row|ingres_field_length|ingres_field_name|\ +ingres_field_nullable|ingres_field_precision|ingres_field_scale|ingres_field_type|ingres_free_result|ingres_next_error|ingres_num_fields|\ +ingres_num_rows|ingres_pconnect|ingres_prepare|ingres_query|ingres_result_seek|ingres_rollback|ingres_set_environment|\ +ingres_unbuffered_query|ini_alter|ini_get|ini_get_all|ini_restore|ini_set|innamespace|inotify_add_watch|inotify_init|inotify_queue_len|\ +inotify_read|inotify_rm_watch|interface_exists|intl_error_name|intl_get_error_code|intl_get_error_message|intl_is_failure|\ +intldateformatter|intval|invalidargumentexception|invoke|invokeargs|ip2long|iptcembed|iptcparse|is_a|is_array|is_bool|is_callable|is_dir|\ +is_double|is_executable|is_file|is_finite|is_float|is_infinite|is_int|is_integer|is_link|is_long|is_nan|is_null|is_numeric|is_object|\ +is_readable|is_real|is_resource|is_scalar|is_soap_fault|is_string|is_subclass_of|is_uploaded_file|is_writable|is_writeable|isabstract|\ +iscloneable|isdisabled|isfinal|isinstance|isinstantiable|isinterface|isinternal|isiterateable|isset|issubclassof|isuserdefined|iterator|\ +iterator_apply|iterator_count|iterator_to_array|iteratoraggregate|iteratoriterator|java_last_exception_clear|java_last_exception_get|\ +jddayofweek|jdmonthname|jdtofrench|jdtogregorian|jdtojewish|jdtojulian|jdtounix|jewishtojd|join|jpeg2wbmp|json_decode|json_encode|\ +json_last_error|jsonserializable|judy|judy_type|judy_version|juliantojd|kadm5_chpass_principal|kadm5_create_principal|\ +kadm5_delete_principal|kadm5_destroy|kadm5_flush|kadm5_get_policies|kadm5_get_principal|kadm5_get_principals|kadm5_init_with_password|\ +kadm5_modify_principal|key|krsort|ksort|lcfirst|lcg_value|lchgrp|lchown|ldap_8859_to_t61|ldap_add|ldap_bind|ldap_close|ldap_compare|\ +ldap_connect|ldap_count_entries|ldap_delete|ldap_dn2ufn|ldap_err2str|ldap_errno|ldap_error|ldap_explode_dn|ldap_first_attribute|\ +ldap_first_entry|ldap_first_reference|ldap_free_result|ldap_get_attributes|ldap_get_dn|ldap_get_entries|ldap_get_option|ldap_get_values|\ +ldap_get_values_len|ldap_list|ldap_mod_add|ldap_mod_del|ldap_mod_replace|ldap_modify|ldap_next_attribute|ldap_next_entry|\ +ldap_next_reference|ldap_parse_reference|ldap_parse_result|ldap_read|ldap_rename|ldap_sasl_bind|ldap_search|ldap_set_option|\ +ldap_set_rebind_proc|ldap_sort|ldap_start_tls|ldap_t61_to_8859|ldap_unbind|lengthexception|levenshtein|libxml_clear_errors|\ +libxml_disable_entity_loader|libxml_get_errors|libxml_get_last_error|libxml_set_streams_context|libxml_use_internal_errors|libxmlerror|\ +limititerator|link|linkinfo|list|locale|localeconv|localtime|log|log10|log1p|logicexception|long2ip|lstat|ltrim|lzf_compress|\ +lzf_decompress|lzf_optimized_for|m_checkstatus|m_completeauthorizations|m_connect|m_connectionerror|m_deletetrans|m_destroyconn|\ +m_destroyengine|m_getcell|m_getcellbynum|m_getcommadelimited|m_getheader|m_initconn|m_initengine|m_iscommadelimited|m_maxconntimeout|\ +m_monitor|m_numcolumns|m_numrows|m_parsecommadelimited|m_responsekeys|m_responseparam|m_returnstatus|m_setblocking|m_setdropfile|m_setip|\ +m_setssl|m_setssl_cafile|m_setssl_files|m_settimeout|m_sslcert_gen_hash|m_transactionssent|m_transinqueue|m_transkeyval|m_transnew|\ +m_transsend|m_uwait|m_validateidentifier|m_verifyconnection|m_verifysslcert|magic_quotes_runtime|mail|\ +mailparse_determine_best_xfer_encoding|mailparse_msg_create|mailparse_msg_extract_part|mailparse_msg_extract_part_file|\ +mailparse_msg_extract_whole_part_file|mailparse_msg_free|mailparse_msg_get_part|mailparse_msg_get_part_data|mailparse_msg_get_structure|\ +mailparse_msg_parse|mailparse_msg_parse_file|mailparse_rfc822_parse_addresses|mailparse_stream_encode|mailparse_uudecode_all|main|max|\ +maxdb_affected_rows|maxdb_autocommit|maxdb_bind_param|maxdb_bind_result|maxdb_change_user|maxdb_character_set_name|maxdb_client_encoding|\ +maxdb_close|maxdb_close_long_data|maxdb_commit|maxdb_connect|maxdb_connect_errno|maxdb_connect_error|maxdb_data_seek|maxdb_debug|\ +maxdb_disable_reads_from_master|maxdb_disable_rpl_parse|maxdb_dump_debug_info|maxdb_embedded_connect|maxdb_enable_reads_from_master|\ +maxdb_enable_rpl_parse|maxdb_errno|maxdb_error|maxdb_escape_string|maxdb_execute|maxdb_fetch|maxdb_fetch_array|maxdb_fetch_assoc|\ +maxdb_fetch_field|maxdb_fetch_field_direct|maxdb_fetch_fields|maxdb_fetch_lengths|maxdb_fetch_object|maxdb_fetch_row|maxdb_field_count|\ +maxdb_field_seek|maxdb_field_tell|maxdb_free_result|maxdb_get_client_info|maxdb_get_client_version|maxdb_get_host_info|maxdb_get_metadata|\ +maxdb_get_proto_info|maxdb_get_server_info|maxdb_get_server_version|maxdb_info|maxdb_init|maxdb_insert_id|maxdb_kill|maxdb_master_query|\ +maxdb_more_results|maxdb_multi_query|maxdb_next_result|maxdb_num_fields|maxdb_num_rows|maxdb_options|maxdb_param_count|maxdb_ping|\ +maxdb_prepare|maxdb_query|maxdb_real_connect|maxdb_real_escape_string|maxdb_real_query|maxdb_report|maxdb_rollback|\ +maxdb_rpl_parse_enabled|maxdb_rpl_probe|maxdb_rpl_query_type|maxdb_select_db|maxdb_send_long_data|maxdb_send_query|maxdb_server_end|\ +maxdb_server_init|maxdb_set_opt|maxdb_sqlstate|maxdb_ssl_set|maxdb_stat|maxdb_stmt_affected_rows|maxdb_stmt_bind_param|\ +maxdb_stmt_bind_result|maxdb_stmt_close|maxdb_stmt_close_long_data|maxdb_stmt_data_seek|maxdb_stmt_errno|maxdb_stmt_error|\ +maxdb_stmt_execute|maxdb_stmt_fetch|maxdb_stmt_free_result|maxdb_stmt_init|maxdb_stmt_num_rows|maxdb_stmt_param_count|maxdb_stmt_prepare|\ +maxdb_stmt_reset|maxdb_stmt_result_metadata|maxdb_stmt_send_long_data|maxdb_stmt_sqlstate|maxdb_stmt_store_result|maxdb_store_result|\ +maxdb_thread_id|maxdb_thread_safe|maxdb_use_result|maxdb_warning_count|mb_check_encoding|mb_convert_case|mb_convert_encoding|\ +mb_convert_kana|mb_convert_variables|mb_decode_mimeheader|mb_decode_numericentity|mb_detect_encoding|mb_detect_order|mb_encode_mimeheader|\ +mb_encode_numericentity|mb_encoding_aliases|mb_ereg|mb_ereg_match|mb_ereg_replace|mb_ereg_search|mb_ereg_search_getpos|\ +mb_ereg_search_getregs|mb_ereg_search_init|mb_ereg_search_pos|mb_ereg_search_regs|mb_ereg_search_setpos|mb_eregi|mb_eregi_replace|\ +mb_get_info|mb_http_input|mb_http_output|mb_internal_encoding|mb_language|mb_list_encodings|mb_output_handler|mb_parse_str|\ +mb_preferred_mime_name|mb_regex_encoding|mb_regex_set_options|mb_send_mail|mb_split|mb_strcut|mb_strimwidth|mb_stripos|mb_stristr|\ +mb_strlen|mb_strpos|mb_strrchr|mb_strrichr|mb_strripos|mb_strrpos|mb_strstr|mb_strtolower|mb_strtoupper|mb_strwidth|\ +mb_substitute_character|mb_substr|mb_substr_count|mcrypt_cbc|mcrypt_cfb|mcrypt_create_iv|mcrypt_decrypt|mcrypt_ecb|\ +mcrypt_enc_get_algorithms_name|mcrypt_enc_get_block_size|mcrypt_enc_get_iv_size|mcrypt_enc_get_key_size|mcrypt_enc_get_modes_name|\ +mcrypt_enc_get_supported_key_sizes|mcrypt_enc_is_block_algorithm|mcrypt_enc_is_block_algorithm_mode|mcrypt_enc_is_block_mode|\ +mcrypt_enc_self_test|mcrypt_encrypt|mcrypt_generic|mcrypt_generic_deinit|mcrypt_generic_end|mcrypt_generic_init|mcrypt_get_block_size|\ +mcrypt_get_cipher_name|mcrypt_get_iv_size|mcrypt_get_key_size|mcrypt_list_algorithms|mcrypt_list_modes|mcrypt_module_close|\ +mcrypt_module_get_algo_block_size|mcrypt_module_get_algo_key_size|mcrypt_module_get_supported_key_sizes|mcrypt_module_is_block_algorithm|\ +mcrypt_module_is_block_algorithm_mode|mcrypt_module_is_block_mode|mcrypt_module_open|mcrypt_module_self_test|mcrypt_ofb|md5|md5_file|\ +mdecrypt_generic|memcache|memcache_debug|memcached|memory_get_peak_usage|memory_get_usage|messageformatter|metaphone|method_exists|mhash|\ +mhash_count|mhash_get_block_size|mhash_get_hash_name|mhash_keygen_s2k|microtime|mime_content_type|min|ming_keypress|\ +ming_setcubicthreshold|ming_setscale|ming_setswfcompression|ming_useconstants|ming_useswfversion|mkdir|mktime|money_format|mongo|\ +mongobindata|mongocode|mongocollection|mongoconnectionexception|mongocursor|mongocursorexception|mongocursortimeoutexception|mongodate|\ +mongodb|mongodbref|mongoexception|mongogridfs|mongogridfscursor|mongogridfsexception|mongogridfsfile|mongoid|mongoint32|mongoint64|\ +mongomaxkey|mongominkey|mongoregex|mongotimestamp|move_uploaded_file|mpegfile|mqseries_back|mqseries_begin|mqseries_close|mqseries_cmit|\ +mqseries_conn|mqseries_connx|mqseries_disc|mqseries_get|mqseries_inq|mqseries_open|mqseries_put|mqseries_put1|mqseries_set|\ +mqseries_strerror|msession_connect|msession_count|msession_create|msession_destroy|msession_disconnect|msession_find|msession_get|\ +msession_get_array|msession_get_data|msession_inc|msession_list|msession_listvar|msession_lock|msession_plugin|msession_randstr|\ +msession_set|msession_set_array|msession_set_data|msession_timeout|msession_uniq|msession_unlock|msg_get_queue|msg_queue_exists|\ +msg_receive|msg_remove_queue|msg_send|msg_set_queue|msg_stat_queue|msql|msql_affected_rows|msql_close|msql_connect|msql_create_db|\ +msql_createdb|msql_data_seek|msql_db_query|msql_dbname|msql_drop_db|msql_error|msql_fetch_array|msql_fetch_field|msql_fetch_object|\ +msql_fetch_row|msql_field_flags|msql_field_len|msql_field_name|msql_field_seek|msql_field_table|msql_field_type|msql_fieldflags|\ +msql_fieldlen|msql_fieldname|msql_fieldtable|msql_fieldtype|msql_free_result|msql_list_dbs|msql_list_fields|msql_list_tables|\ +msql_num_fields|msql_num_rows|msql_numfields|msql_numrows|msql_pconnect|msql_query|msql_regcase|msql_result|msql_select_db|msql_tablename|\ +mssql_bind|mssql_close|mssql_connect|mssql_data_seek|mssql_execute|mssql_fetch_array|mssql_fetch_assoc|mssql_fetch_batch|\ +mssql_fetch_field|mssql_fetch_object|mssql_fetch_row|mssql_field_length|mssql_field_name|mssql_field_seek|mssql_field_type|\ +mssql_free_result|mssql_free_statement|mssql_get_last_message|mssql_guid_string|mssql_init|mssql_min_error_severity|\ +mssql_min_message_severity|mssql_next_result|mssql_num_fields|mssql_num_rows|mssql_pconnect|mssql_query|mssql_result|mssql_rows_affected|\ +mssql_select_db|mt_getrandmax|mt_rand|mt_srand|multipleiterator|mysql_affected_rows|mysql_client_encoding|mysql_close|mysql_connect|\ +mysql_create_db|mysql_data_seek|mysql_db_name|mysql_db_query|mysql_drop_db|mysql_errno|mysql_error|mysql_escape_string|mysql_fetch_array|\ +mysql_fetch_assoc|mysql_fetch_field|mysql_fetch_lengths|mysql_fetch_object|mysql_fetch_row|mysql_field_flags|mysql_field_len|\ +mysql_field_name|mysql_field_seek|mysql_field_table|mysql_field_type|mysql_free_result|mysql_get_client_info|mysql_get_host_info|\ +mysql_get_proto_info|mysql_get_server_info|mysql_info|mysql_insert_id|mysql_list_dbs|mysql_list_fields|mysql_list_processes|\ +mysql_list_tables|mysql_num_fields|mysql_num_rows|mysql_pconnect|mysql_ping|mysql_query|mysql_real_escape_string|mysql_result|\ +mysql_select_db|mysql_set_charset|mysql_stat|mysql_tablename|mysql_thread_id|mysql_unbuffered_query|mysqli|mysqli_affected_rows|\ +mysqli_autocommit|mysqli_bind_param|mysqli_bind_result|mysqli_cache_stats|mysqli_change_user|mysqli_character_set_name|\ +mysqli_client_encoding|mysqli_close|mysqli_commit|mysqli_connect|mysqli_connect_errno|mysqli_connect_error|mysqli_data_seek|\ +mysqli_debug|mysqli_disable_reads_from_master|mysqli_disable_rpl_parse|mysqli_driver|mysqli_dump_debug_info|mysqli_embedded_server_end|\ +mysqli_embedded_server_start|mysqli_enable_reads_from_master|mysqli_enable_rpl_parse|mysqli_errno|mysqli_error|mysqli_escape_string|\ +mysqli_execute|mysqli_fetch|mysqli_fetch_all|mysqli_fetch_array|mysqli_fetch_assoc|mysqli_fetch_field|mysqli_fetch_field_direct|\ +mysqli_fetch_fields|mysqli_fetch_lengths|mysqli_fetch_object|mysqli_fetch_row|mysqli_field_count|mysqli_field_seek|mysqli_field_tell|\ +mysqli_free_result|mysqli_get_charset|mysqli_get_client_info|mysqli_get_client_stats|mysqli_get_client_version|mysqli_get_connection_stats|\ +mysqli_get_host_info|mysqli_get_metadata|mysqli_get_proto_info|mysqli_get_server_info|mysqli_get_server_version|mysqli_get_warnings|\ +mysqli_info|mysqli_init|mysqli_insert_id|mysqli_kill|mysqli_link_construct|mysqli_master_query|mysqli_more_results|mysqli_multi_query|\ +mysqli_next_result|mysqli_num_fields|mysqli_num_rows|mysqli_options|mysqli_param_count|mysqli_ping|mysqli_poll|mysqli_prepare|\ +mysqli_query|mysqli_real_connect|mysqli_real_escape_string|mysqli_real_query|mysqli_reap_async_query|mysqli_refresh|mysqli_report|\ +mysqli_result|mysqli_rollback|mysqli_rpl_parse_enabled|mysqli_rpl_probe|mysqli_rpl_query_type|mysqli_select_db|mysqli_send_long_data|\ +mysqli_send_query|mysqli_set_charset|mysqli_set_local_infile_default|mysqli_set_local_infile_handler|mysqli_set_opt|mysqli_slave_query|\ +mysqli_sqlstate|mysqli_ssl_set|mysqli_stat|mysqli_stmt|mysqli_stmt_affected_rows|mysqli_stmt_attr_get|mysqli_stmt_attr_set|\ +mysqli_stmt_bind_param|mysqli_stmt_bind_result|mysqli_stmt_close|mysqli_stmt_data_seek|mysqli_stmt_errno|mysqli_stmt_error|\ +mysqli_stmt_execute|mysqli_stmt_fetch|mysqli_stmt_field_count|mysqli_stmt_free_result|mysqli_stmt_get_result|mysqli_stmt_get_warnings|\ +mysqli_stmt_init|mysqli_stmt_insert_id|mysqli_stmt_next_result|mysqli_stmt_num_rows|mysqli_stmt_param_count|mysqli_stmt_prepare|\ +mysqli_stmt_reset|mysqli_stmt_result_metadata|mysqli_stmt_send_long_data|mysqli_stmt_sqlstate|mysqli_stmt_store_result|mysqli_store_result|\ +mysqli_thread_id|mysqli_thread_safe|mysqli_use_result|mysqli_warning|mysqli_warning_count|mysqlnd_ms_get_stats|\ +mysqlnd_ms_query_is_select|mysqlnd_ms_set_user_pick_server|mysqlnd_qc_change_handler|mysqlnd_qc_clear_cache|mysqlnd_qc_get_cache_info|\ +mysqlnd_qc_get_core_stats|mysqlnd_qc_get_handler|mysqlnd_qc_get_query_trace_log|mysqlnd_qc_set_user_handlers|natcasesort|natsort|\ +ncurses_addch|ncurses_addchnstr|ncurses_addchstr|ncurses_addnstr|ncurses_addstr|ncurses_assume_default_colors|ncurses_attroff|\ +ncurses_attron|ncurses_attrset|ncurses_baudrate|ncurses_beep|ncurses_bkgd|ncurses_bkgdset|ncurses_border|ncurses_bottom_panel|\ +ncurses_can_change_color|ncurses_cbreak|ncurses_clear|ncurses_clrtobot|ncurses_clrtoeol|ncurses_color_content|ncurses_color_set|\ +ncurses_curs_set|ncurses_def_prog_mode|ncurses_def_shell_mode|ncurses_define_key|ncurses_del_panel|ncurses_delay_output|ncurses_delch|\ +ncurses_deleteln|ncurses_delwin|ncurses_doupdate|ncurses_echo|ncurses_echochar|ncurses_end|ncurses_erase|ncurses_erasechar|ncurses_filter|\ +ncurses_flash|ncurses_flushinp|ncurses_getch|ncurses_getmaxyx|ncurses_getmouse|ncurses_getyx|ncurses_halfdelay|ncurses_has_colors|\ +ncurses_has_ic|ncurses_has_il|ncurses_has_key|ncurses_hide_panel|ncurses_hline|ncurses_inch|ncurses_init|ncurses_init_color|\ +ncurses_init_pair|ncurses_insch|ncurses_insdelln|ncurses_insertln|ncurses_insstr|ncurses_instr|ncurses_isendwin|ncurses_keyok|\ +ncurses_keypad|ncurses_killchar|ncurses_longname|ncurses_meta|ncurses_mouse_trafo|ncurses_mouseinterval|ncurses_mousemask|ncurses_move|\ +ncurses_move_panel|ncurses_mvaddch|ncurses_mvaddchnstr|ncurses_mvaddchstr|ncurses_mvaddnstr|ncurses_mvaddstr|ncurses_mvcur|\ +ncurses_mvdelch|ncurses_mvgetch|ncurses_mvhline|ncurses_mvinch|ncurses_mvvline|ncurses_mvwaddstr|ncurses_napms|ncurses_new_panel|\ +ncurses_newpad|ncurses_newwin|ncurses_nl|ncurses_nocbreak|ncurses_noecho|ncurses_nonl|ncurses_noqiflush|ncurses_noraw|\ +ncurses_pair_content|ncurses_panel_above|ncurses_panel_below|ncurses_panel_window|ncurses_pnoutrefresh|ncurses_prefresh|ncurses_putp|\ +ncurses_qiflush|ncurses_raw|ncurses_refresh|ncurses_replace_panel|ncurses_reset_prog_mode|ncurses_reset_shell_mode|ncurses_resetty|\ +ncurses_savetty|ncurses_scr_dump|ncurses_scr_init|ncurses_scr_restore|ncurses_scr_set|ncurses_scrl|ncurses_show_panel|ncurses_slk_attr|\ +ncurses_slk_attroff|ncurses_slk_attron|ncurses_slk_attrset|ncurses_slk_clear|ncurses_slk_color|ncurses_slk_init|ncurses_slk_noutrefresh|\ +ncurses_slk_refresh|ncurses_slk_restore|ncurses_slk_set|ncurses_slk_touch|ncurses_standend|ncurses_standout|ncurses_start_color|\ +ncurses_termattrs|ncurses_termname|ncurses_timeout|ncurses_top_panel|ncurses_typeahead|ncurses_ungetch|ncurses_ungetmouse|\ +ncurses_update_panels|ncurses_use_default_colors|ncurses_use_env|ncurses_use_extended_names|ncurses_vidattr|ncurses_vline|ncurses_waddch|\ +ncurses_waddstr|ncurses_wattroff|ncurses_wattron|ncurses_wattrset|ncurses_wborder|ncurses_wclear|ncurses_wcolor_set|ncurses_werase|\ +ncurses_wgetch|ncurses_whline|ncurses_wmouse_trafo|ncurses_wmove|ncurses_wnoutrefresh|ncurses_wrefresh|ncurses_wstandend|\ +ncurses_wstandout|ncurses_wvline|newinstance|newinstanceargs|newt_bell|newt_button|newt_button_bar|newt_centered_window|newt_checkbox|\ +newt_checkbox_get_value|newt_checkbox_set_flags|newt_checkbox_set_value|newt_checkbox_tree|newt_checkbox_tree_add_item|\ +newt_checkbox_tree_find_item|newt_checkbox_tree_get_current|newt_checkbox_tree_get_entry_value|newt_checkbox_tree_get_multi_selection|\ +newt_checkbox_tree_get_selection|newt_checkbox_tree_multi|newt_checkbox_tree_set_current|newt_checkbox_tree_set_entry|\ +newt_checkbox_tree_set_entry_value|newt_checkbox_tree_set_width|newt_clear_key_buffer|newt_cls|newt_compact_button|\ +newt_component_add_callback|newt_component_takes_focus|newt_create_grid|newt_cursor_off|newt_cursor_on|newt_delay|newt_draw_form|\ +newt_draw_root_text|newt_entry|newt_entry_get_value|newt_entry_set|newt_entry_set_filter|newt_entry_set_flags|newt_finished|newt_form|\ +newt_form_add_component|newt_form_add_components|newt_form_add_hot_key|newt_form_destroy|newt_form_get_current|newt_form_run|\ +newt_form_set_background|newt_form_set_height|newt_form_set_size|newt_form_set_timer|newt_form_set_width|newt_form_watch_fd|\ +newt_get_screen_size|newt_grid_add_components_to_form|newt_grid_basic_window|newt_grid_free|newt_grid_get_size|newt_grid_h_close_stacked|\ +newt_grid_h_stacked|newt_grid_place|newt_grid_set_field|newt_grid_simple_window|newt_grid_v_close_stacked|newt_grid_v_stacked|\ +newt_grid_wrapped_window|newt_grid_wrapped_window_at|newt_init|newt_label|newt_label_set_text|newt_listbox|newt_listbox_append_entry|\ +newt_listbox_clear|newt_listbox_clear_selection|newt_listbox_delete_entry|newt_listbox_get_current|newt_listbox_get_selection|\ +newt_listbox_insert_entry|newt_listbox_item_count|newt_listbox_select_item|newt_listbox_set_current|newt_listbox_set_current_by_key|\ +newt_listbox_set_data|newt_listbox_set_entry|newt_listbox_set_width|newt_listitem|newt_listitem_get_data|newt_listitem_set|\ +newt_open_window|newt_pop_help_line|newt_pop_window|newt_push_help_line|newt_radio_get_current|newt_radiobutton|newt_redraw_help_line|\ +newt_reflow_text|newt_refresh|newt_resize_screen|newt_resume|newt_run_form|newt_scale|newt_scale_set|newt_scrollbar_set|\ +newt_set_help_callback|newt_set_suspend_callback|newt_suspend|newt_textbox|newt_textbox_get_num_lines|newt_textbox_reflowed|\ +newt_textbox_set_height|newt_textbox_set_text|newt_vertical_scrollbar|newt_wait_for_key|newt_win_choice|newt_win_entries|newt_win_menu|\ +newt_win_message|newt_win_messagev|newt_win_ternary|next|ngettext|nl2br|nl_langinfo|norewinditerator|normalizer|notes_body|notes_copy_db|\ +notes_create_db|notes_create_note|notes_drop_db|notes_find_note|notes_header_info|notes_list_msgs|notes_mark_read|notes_mark_unread|\ +notes_nav_create|notes_search|notes_unread|notes_version|nsapi_request_headers|nsapi_response_headers|nsapi_virtual|nthmac|number_format|\ +numberformatter|oauth|oauth_get_sbs|oauth_urlencode|oauthexception|oauthprovider|ob_clean|ob_deflatehandler|ob_end_clean|ob_end_flush|\ +ob_etaghandler|ob_flush|ob_get_clean|ob_get_contents|ob_get_flush|ob_get_length|ob_get_level|ob_get_status|ob_gzhandler|ob_iconv_handler|\ +ob_implicit_flush|ob_inflatehandler|ob_list_handlers|ob_start|ob_tidyhandler|oci_bind_array_by_name|oci_bind_by_name|oci_cancel|\ +oci_client_version|oci_close|oci_collection_append|oci_collection_assign|oci_collection_element_assign|oci_collection_element_get|\ +oci_collection_free|oci_collection_max|oci_collection_size|oci_collection_trim|oci_commit|oci_connect|oci_define_by_name|oci_error|\ +oci_execute|oci_fetch|oci_fetch_all|oci_fetch_array|oci_fetch_assoc|oci_fetch_object|oci_fetch_row|oci_field_is_null|oci_field_name|\ +oci_field_precision|oci_field_scale|oci_field_size|oci_field_type|oci_field_type_raw|oci_free_statement|oci_internal_debug|oci_lob_append|\ +oci_lob_close|oci_lob_copy|oci_lob_eof|oci_lob_erase|oci_lob_export|oci_lob_flush|oci_lob_free|oci_lob_getbuffering|oci_lob_import|\ +oci_lob_is_equal|oci_lob_load|oci_lob_read|oci_lob_rewind|oci_lob_save|oci_lob_savefile|oci_lob_seek|oci_lob_setbuffering|oci_lob_size|\ +oci_lob_tell|oci_lob_truncate|oci_lob_write|oci_lob_writetemporary|oci_lob_writetofile|oci_new_collection|oci_new_connect|oci_new_cursor|\ +oci_new_descriptor|oci_num_fields|oci_num_rows|oci_parse|oci_password_change|oci_pconnect|oci_result|oci_rollback|oci_server_version|\ +oci_set_action|oci_set_client_identifier|oci_set_client_info|oci_set_edition|oci_set_module_name|oci_set_prefetch|oci_statement_type|\ +ocibindbyname|ocicancel|ocicloselob|ocicollappend|ocicollassign|ocicollassignelem|ocicollgetelem|ocicollmax|ocicollsize|ocicolltrim|\ +ocicolumnisnull|ocicolumnname|ocicolumnprecision|ocicolumnscale|ocicolumnsize|ocicolumntype|ocicolumntyperaw|ocicommit|ocidefinebyname|\ +ocierror|ociexecute|ocifetch|ocifetchinto|ocifetchstatement|ocifreecollection|ocifreecursor|ocifreedesc|ocifreestatement|ociinternaldebug|\ +ociloadlob|ocilogoff|ocilogon|ocinewcollection|ocinewcursor|ocinewdescriptor|ocinlogon|ocinumcols|ociparse|ociplogon|ociresult|\ +ocirollback|ocirowcount|ocisavelob|ocisavelobfile|ociserverversion|ocisetprefetch|ocistatementtype|ociwritelobtofile|ociwritetemporarylob|\ +octdec|odbc_autocommit|odbc_binmode|odbc_close|odbc_close_all|odbc_columnprivileges|odbc_columns|odbc_commit|odbc_connect|odbc_cursor|\ +odbc_data_source|odbc_do|odbc_error|odbc_errormsg|odbc_exec|odbc_execute|odbc_fetch_array|odbc_fetch_into|odbc_fetch_object|\ +odbc_fetch_row|odbc_field_len|odbc_field_name|odbc_field_num|odbc_field_precision|odbc_field_scale|odbc_field_type|odbc_foreignkeys|\ +odbc_free_result|odbc_gettypeinfo|odbc_longreadlen|odbc_next_result|odbc_num_fields|odbc_num_rows|odbc_pconnect|odbc_prepare|\ +odbc_primarykeys|odbc_procedurecolumns|odbc_procedures|odbc_result|odbc_result_all|odbc_rollback|odbc_setoption|odbc_specialcolumns|\ +odbc_statistics|odbc_tableprivileges|odbc_tables|openal_buffer_create|openal_buffer_data|openal_buffer_destroy|openal_buffer_get|\ +openal_buffer_loadwav|openal_context_create|openal_context_current|openal_context_destroy|openal_context_process|openal_context_suspend|\ +openal_device_close|openal_device_open|openal_listener_get|openal_listener_set|openal_source_create|openal_source_destroy|\ +openal_source_get|openal_source_pause|openal_source_play|openal_source_rewind|openal_source_set|openal_source_stop|openal_stream|opendir|\ +openlog|openssl_cipher_iv_length|openssl_csr_export|openssl_csr_export_to_file|openssl_csr_get_public_key|openssl_csr_get_subject|\ +openssl_csr_new|openssl_csr_sign|openssl_decrypt|openssl_dh_compute_key|openssl_digest|openssl_encrypt|openssl_error_string|\ +openssl_free_key|openssl_get_cipher_methods|openssl_get_md_methods|openssl_get_privatekey|openssl_get_publickey|openssl_open|\ +openssl_pkcs12_export|openssl_pkcs12_export_to_file|openssl_pkcs12_read|openssl_pkcs7_decrypt|openssl_pkcs7_encrypt|openssl_pkcs7_sign|\ +openssl_pkcs7_verify|openssl_pkey_export|openssl_pkey_export_to_file|openssl_pkey_free|openssl_pkey_get_details|openssl_pkey_get_private|\ +openssl_pkey_get_public|openssl_pkey_new|openssl_private_decrypt|openssl_private_encrypt|openssl_public_decrypt|openssl_public_encrypt|\ +openssl_random_pseudo_bytes|openssl_seal|openssl_sign|openssl_verify|openssl_x509_check_private_key|openssl_x509_checkpurpose|\ +openssl_x509_export|openssl_x509_export_to_file|openssl_x509_free|openssl_x509_parse|openssl_x509_read|ord|outeriterator|\ +outofboundsexception|outofrangeexception|output_add_rewrite_var|output_reset_rewrite_vars|overflowexception|overload|override_function|\ +ovrimos_close|ovrimos_commit|ovrimos_connect|ovrimos_cursor|ovrimos_exec|ovrimos_execute|ovrimos_fetch_into|ovrimos_fetch_row|\ +ovrimos_field_len|ovrimos_field_name|ovrimos_field_num|ovrimos_field_type|ovrimos_free_result|ovrimos_longreadlen|ovrimos_num_fields|\ +ovrimos_num_rows|ovrimos_prepare|ovrimos_result|ovrimos_result_all|ovrimos_rollback|pack|parentiterator|parse_ini_file|parse_ini_string|\ +parse_str|parse_url|parsekit_compile_file|parsekit_compile_string|parsekit_func_arginfo|passthru|pathinfo|pclose|pcntl_alarm|pcntl_exec|\ +pcntl_fork|pcntl_getpriority|pcntl_setpriority|pcntl_signal|pcntl_signal_dispatch|pcntl_sigprocmask|pcntl_sigtimedwait|pcntl_sigwaitinfo|\ +pcntl_wait|pcntl_waitpid|pcntl_wexitstatus|pcntl_wifexited|pcntl_wifsignaled|pcntl_wifstopped|pcntl_wstopsig|pcntl_wtermsig|\ +pdf_activate_item|pdf_add_annotation|pdf_add_bookmark|pdf_add_launchlink|pdf_add_locallink|pdf_add_nameddest|pdf_add_note|pdf_add_outline|\ +pdf_add_pdflink|pdf_add_table_cell|pdf_add_textflow|pdf_add_thumbnail|pdf_add_weblink|pdf_arc|pdf_arcn|pdf_attach_file|pdf_begin_document|\ +pdf_begin_font|pdf_begin_glyph|pdf_begin_item|pdf_begin_layer|pdf_begin_page|pdf_begin_page_ext|pdf_begin_pattern|pdf_begin_template|\ +pdf_begin_template_ext|pdf_circle|pdf_clip|pdf_close|pdf_close_image|pdf_close_pdi|pdf_close_pdi_page|pdf_closepath|\ +pdf_closepath_fill_stroke|pdf_closepath_stroke|pdf_concat|pdf_continue_text|pdf_create_3dview|pdf_create_action|pdf_create_annotation|\ +pdf_create_bookmark|pdf_create_field|pdf_create_fieldgroup|pdf_create_gstate|pdf_create_pvf|pdf_create_textflow|pdf_curveto|\ +pdf_define_layer|pdf_delete|pdf_delete_pvf|pdf_delete_table|pdf_delete_textflow|pdf_encoding_set_char|pdf_end_document|pdf_end_font|\ +pdf_end_glyph|pdf_end_item|pdf_end_layer|pdf_end_page|pdf_end_page_ext|pdf_end_pattern|pdf_end_template|pdf_endpath|pdf_fill|\ +pdf_fill_imageblock|pdf_fill_pdfblock|pdf_fill_stroke|pdf_fill_textblock|pdf_findfont|pdf_fit_image|pdf_fit_pdi_page|pdf_fit_table|\ +pdf_fit_textflow|pdf_fit_textline|pdf_get_apiname|pdf_get_buffer|pdf_get_errmsg|pdf_get_errnum|pdf_get_font|pdf_get_fontname|\ +pdf_get_fontsize|pdf_get_image_height|pdf_get_image_width|pdf_get_majorversion|pdf_get_minorversion|pdf_get_parameter|\ +pdf_get_pdi_parameter|pdf_get_pdi_value|pdf_get_value|pdf_info_font|pdf_info_matchbox|pdf_info_table|pdf_info_textflow|pdf_info_textline|\ +pdf_initgraphics|pdf_lineto|pdf_load_3ddata|pdf_load_font|pdf_load_iccprofile|pdf_load_image|pdf_makespotcolor|pdf_moveto|pdf_new|\ +pdf_open_ccitt|pdf_open_file|pdf_open_gif|pdf_open_image|pdf_open_image_file|pdf_open_jpeg|pdf_open_memory_image|pdf_open_pdi|\ +pdf_open_pdi_document|pdf_open_pdi_page|pdf_open_tiff|pdf_pcos_get_number|pdf_pcos_get_stream|pdf_pcos_get_string|pdf_place_image|\ +pdf_place_pdi_page|pdf_process_pdi|pdf_rect|pdf_restore|pdf_resume_page|pdf_rotate|pdf_save|pdf_scale|pdf_set_border_color|\ +pdf_set_border_dash|pdf_set_border_style|pdf_set_char_spacing|pdf_set_duration|pdf_set_gstate|pdf_set_horiz_scaling|pdf_set_info|\ +pdf_set_info_author|pdf_set_info_creator|pdf_set_info_keywords|pdf_set_info_subject|pdf_set_info_title|pdf_set_layer_dependency|\ +pdf_set_leading|pdf_set_parameter|pdf_set_text_matrix|pdf_set_text_pos|pdf_set_text_rendering|pdf_set_text_rise|pdf_set_value|\ +pdf_set_word_spacing|pdf_setcolor|pdf_setdash|pdf_setdashpattern|pdf_setflat|pdf_setfont|pdf_setgray|pdf_setgray_fill|pdf_setgray_stroke|\ +pdf_setlinecap|pdf_setlinejoin|pdf_setlinewidth|pdf_setmatrix|pdf_setmiterlimit|pdf_setpolydash|pdf_setrgbcolor|pdf_setrgbcolor_fill|\ +pdf_setrgbcolor_stroke|pdf_shading|pdf_shading_pattern|pdf_shfill|pdf_show|pdf_show_boxed|pdf_show_xy|pdf_skew|pdf_stringwidth|pdf_stroke|\ +pdf_suspend_page|pdf_translate|pdf_utf16_to_utf8|pdf_utf32_to_utf16|pdf_utf8_to_utf16|pdo|pdo_cubrid_schema|pdo_pgsqllobcreate|\ +pdo_pgsqllobopen|pdo_pgsqllobunlink|pdo_sqlitecreateaggregate|pdo_sqlitecreatefunction|pdoexception|pdostatement|pfsockopen|\ +pg_affected_rows|pg_cancel_query|pg_client_encoding|pg_close|pg_connect|pg_connection_busy|pg_connection_reset|pg_connection_status|\ +pg_convert|pg_copy_from|pg_copy_to|pg_dbname|pg_delete|pg_end_copy|pg_escape_bytea|pg_escape_string|pg_execute|pg_fetch_all|\ +pg_fetch_all_columns|pg_fetch_array|pg_fetch_assoc|pg_fetch_object|pg_fetch_result|pg_fetch_row|pg_field_is_null|pg_field_name|\ +pg_field_num|pg_field_prtlen|pg_field_size|pg_field_table|pg_field_type|pg_field_type_oid|pg_free_result|pg_get_notify|pg_get_pid|\ +pg_get_result|pg_host|pg_insert|pg_last_error|pg_last_notice|pg_last_oid|pg_lo_close|pg_lo_create|pg_lo_export|pg_lo_import|pg_lo_open|\ +pg_lo_read|pg_lo_read_all|pg_lo_seek|pg_lo_tell|pg_lo_unlink|pg_lo_write|pg_meta_data|pg_num_fields|pg_num_rows|pg_options|\ +pg_parameter_status|pg_pconnect|pg_ping|pg_port|pg_prepare|pg_put_line|pg_query|pg_query_params|pg_result_error|pg_result_error_field|\ +pg_result_seek|pg_result_status|pg_select|pg_send_execute|pg_send_prepare|pg_send_query|pg_send_query_params|pg_set_client_encoding|\ +pg_set_error_verbosity|pg_trace|pg_transaction_status|pg_tty|pg_unescape_bytea|pg_untrace|pg_update|pg_version|php_check_syntax|\ +php_ini_loaded_file|php_ini_scanned_files|php_logo_guid|php_sapi_name|php_strip_whitespace|php_uname|phpcredits|phpinfo|phpversion|pi|\ +png2wbmp|popen|pos|posix_access|posix_ctermid|posix_errno|posix_get_last_error|posix_getcwd|posix_getegid|posix_geteuid|posix_getgid|\ +posix_getgrgid|posix_getgrnam|posix_getgroups|posix_getlogin|posix_getpgid|posix_getpgrp|posix_getpid|posix_getppid|posix_getpwnam|\ +posix_getpwuid|posix_getrlimit|posix_getsid|posix_getuid|posix_initgroups|posix_isatty|posix_kill|posix_mkfifo|posix_mknod|posix_setegid|\ +posix_seteuid|posix_setgid|posix_setpgid|posix_setsid|posix_setuid|posix_strerror|posix_times|posix_ttyname|posix_uname|pow|preg_filter|\ +preg_grep|preg_last_error|preg_match|preg_match_all|preg_quote|preg_replace|preg_replace_callback|preg_split|prev|print|print_r|\ +printer_abort|printer_close|printer_create_brush|printer_create_dc|printer_create_font|printer_create_pen|printer_delete_brush|\ +printer_delete_dc|printer_delete_font|printer_delete_pen|printer_draw_bmp|printer_draw_chord|printer_draw_elipse|printer_draw_line|\ +printer_draw_pie|printer_draw_rectangle|printer_draw_roundrect|printer_draw_text|printer_end_doc|printer_end_page|printer_get_option|\ +printer_list|printer_logical_fontheight|printer_open|printer_select_brush|printer_select_font|printer_select_pen|printer_set_option|\ +printer_start_doc|printer_start_page|printer_write|printf|proc_close|proc_get_status|proc_nice|proc_open|proc_terminate|property_exists|\ +ps_add_bookmark|ps_add_launchlink|ps_add_locallink|ps_add_note|ps_add_pdflink|ps_add_weblink|ps_arc|ps_arcn|ps_begin_page|\ +ps_begin_pattern|ps_begin_template|ps_circle|ps_clip|ps_close|ps_close_image|ps_closepath|ps_closepath_stroke|ps_continue_text|ps_curveto|\ +ps_delete|ps_end_page|ps_end_pattern|ps_end_template|ps_fill|ps_fill_stroke|ps_findfont|ps_get_buffer|ps_get_parameter|ps_get_value|\ +ps_hyphenate|ps_include_file|ps_lineto|ps_makespotcolor|ps_moveto|ps_new|ps_open_file|ps_open_image|ps_open_image_file|\ +ps_open_memory_image|ps_place_image|ps_rect|ps_restore|ps_rotate|ps_save|ps_scale|ps_set_border_color|ps_set_border_dash|\ +ps_set_border_style|ps_set_info|ps_set_parameter|ps_set_text_pos|ps_set_value|ps_setcolor|ps_setdash|ps_setflat|ps_setfont|ps_setgray|\ +ps_setlinecap|ps_setlinejoin|ps_setlinewidth|ps_setmiterlimit|ps_setoverprintmode|ps_setpolydash|ps_shading|ps_shading_pattern|ps_shfill|\ +ps_show|ps_show2|ps_show_boxed|ps_show_xy|ps_show_xy2|ps_string_geometry|ps_stringwidth|ps_stroke|ps_symbol|ps_symbol_name|\ +ps_symbol_width|ps_translate|pspell_add_to_personal|pspell_add_to_session|pspell_check|pspell_clear_session|pspell_config_create|\ +pspell_config_data_dir|pspell_config_dict_dir|pspell_config_ignore|pspell_config_mode|pspell_config_personal|pspell_config_repl|\ +pspell_config_runtogether|pspell_config_save_repl|pspell_new|pspell_new_config|pspell_new_personal|pspell_save_wordlist|\ +pspell_store_replacement|pspell_suggest|putenv|px_close|px_create_fp|px_date2string|px_delete|px_delete_record|px_get_field|px_get_info|\ +px_get_parameter|px_get_record|px_get_schema|px_get_value|px_insert_record|px_new|px_numfields|px_numrecords|px_open_fp|px_put_record|\ +px_retrieve_record|px_set_blob_file|px_set_parameter|px_set_tablename|px_set_targetencoding|px_set_value|px_timestamp2string|\ +px_update_record|qdom_error|qdom_tree|quoted_printable_decode|quoted_printable_encode|quotemeta|rad2deg|radius_acct_open|\ +radius_add_server|radius_auth_open|radius_close|radius_config|radius_create_request|radius_cvt_addr|radius_cvt_int|radius_cvt_string|\ +radius_demangle|radius_demangle_mppe_key|radius_get_attr|radius_get_vendor_attr|radius_put_addr|radius_put_attr|radius_put_int|\ +radius_put_string|radius_put_vendor_addr|radius_put_vendor_attr|radius_put_vendor_int|radius_put_vendor_string|\ +radius_request_authenticator|radius_send_request|radius_server_secret|radius_strerror|rand|range|rangeexception|rar_wrapper_cache_stats|\ +rararchive|rarentry|rarexception|rawurldecode|rawurlencode|read_exif_data|readdir|readfile|readgzfile|readline|readline_add_history|\ +readline_callback_handler_install|readline_callback_handler_remove|readline_callback_read_char|readline_clear_history|\ +readline_completion_function|readline_info|readline_list_history|readline_on_new_line|readline_read_history|readline_redisplay|\ +readline_write_history|readlink|realpath|realpath_cache_get|realpath_cache_size|recode|recode_file|recode_string|recursivearrayiterator|\ +recursivecachingiterator|recursivecallbackfilteriterator|recursivedirectoryiterator|recursivefilteriterator|recursiveiterator|\ +recursiveiteratoriterator|recursiveregexiterator|recursivetreeiterator|reflection|reflectionclass|reflectionexception|reflectionextension|\ +reflectionfunction|reflectionfunctionabstract|reflectionmethod|reflectionobject|reflectionparameter|reflectionproperty|reflector|\ +regexiterator|register_shutdown_function|register_tick_function|rename|rename_function|require|require_once|reset|resetValue|\ +resourcebundle|restore_error_handler|restore_exception_handler|restore_include_path|return|rewind|rewinddir|rmdir|round|rpm_close|\ +rpm_get_tag|rpm_is_valid|rpm_open|rpm_version|rrd_create|rrd_error|rrd_fetch|rrd_first|rrd_graph|rrd_info|rrd_last|rrd_lastupdate|\ +rrd_restore|rrd_tune|rrd_update|rrd_xport|rrdcreator|rrdgraph|rrdupdater|rsort|rtrim|runkit_class_adopt|runkit_class_emancipate|\ +runkit_constant_add|runkit_constant_redefine|runkit_constant_remove|runkit_function_add|runkit_function_copy|runkit_function_redefine|\ +runkit_function_remove|runkit_function_rename|runkit_import|runkit_lint|runkit_lint_file|runkit_method_add|runkit_method_copy|\ +runkit_method_redefine|runkit_method_remove|runkit_method_rename|runkit_return_value_used|runkit_sandbox_output_handler|\ +runkit_superglobals|runtimeexception|samconnection_commit|samconnection_connect|samconnection_constructor|samconnection_disconnect|\ +samconnection_errno|samconnection_error|samconnection_isconnected|samconnection_peek|samconnection_peekall|samconnection_receive|\ +samconnection_remove|samconnection_rollback|samconnection_send|samconnection_setDebug|samconnection_subscribe|samconnection_unsubscribe|\ +sammessage_body|sammessage_constructor|sammessage_header|sca_createdataobject|sca_getservice|sca_localproxy_createdataobject|\ +sca_soapproxy_createdataobject|scandir|sdo_das_changesummary_beginlogging|sdo_das_changesummary_endlogging|\ +sdo_das_changesummary_getchangeddataobjects|sdo_das_changesummary_getchangetype|sdo_das_changesummary_getoldcontainer|\ +sdo_das_changesummary_getoldvalues|sdo_das_changesummary_islogging|sdo_das_datafactory_addpropertytotype|sdo_das_datafactory_addtype|\ +sdo_das_datafactory_getdatafactory|sdo_das_dataobject_getchangesummary|sdo_das_relational_applychanges|sdo_das_relational_construct|\ +sdo_das_relational_createrootdataobject|sdo_das_relational_executepreparedquery|sdo_das_relational_executequery|\ +sdo_das_setting_getlistindex|sdo_das_setting_getpropertyindex|sdo_das_setting_getpropertyname|sdo_das_setting_getvalue|\ +sdo_das_setting_isset|sdo_das_xml_addtypes|sdo_das_xml_create|sdo_das_xml_createdataobject|sdo_das_xml_createdocument|\ +sdo_das_xml_document_getrootdataobject|sdo_das_xml_document_getrootelementname|sdo_das_xml_document_getrootelementuri|\ +sdo_das_xml_document_setencoding|sdo_das_xml_document_setxmldeclaration|sdo_das_xml_document_setxmlversion|sdo_das_xml_loadfile|\ +sdo_das_xml_loadstring|sdo_das_xml_savefile|sdo_das_xml_savestring|sdo_datafactory_create|sdo_dataobject_clear|\ +sdo_dataobject_createdataobject|sdo_dataobject_getcontainer|sdo_dataobject_getsequence|sdo_dataobject_gettypename|\ +sdo_dataobject_gettypenamespaceuri|sdo_exception_getcause|sdo_list_insert|sdo_model_property_getcontainingtype|\ +sdo_model_property_getdefault|sdo_model_property_getname|sdo_model_property_gettype|sdo_model_property_iscontainment|\ +sdo_model_property_ismany|sdo_model_reflectiondataobject_construct|sdo_model_reflectiondataobject_export|\ +sdo_model_reflectiondataobject_getcontainmentproperty|sdo_model_reflectiondataobject_getinstanceproperties|\ +sdo_model_reflectiondataobject_gettype|sdo_model_type_getbasetype|sdo_model_type_getname|sdo_model_type_getnamespaceuri|\ +sdo_model_type_getproperties|sdo_model_type_getproperty|sdo_model_type_isabstracttype|sdo_model_type_isdatatype|sdo_model_type_isinstance|\ +sdo_model_type_isopentype|sdo_model_type_issequencedtype|sdo_sequence_getproperty|sdo_sequence_insert|sdo_sequence_move|seekableiterator|\ +sem_acquire|sem_get|sem_release|sem_remove|serializable|serialize|session_cache_expire|session_cache_limiter|session_commit|\ +session_decode|session_destroy|session_encode|session_get_cookie_params|session_id|session_is_registered|session_module_name|session_name|\ +session_pgsql_add_error|session_pgsql_get_error|session_pgsql_get_field|session_pgsql_reset|session_pgsql_set_field|session_pgsql_status|\ +session_regenerate_id|session_register|session_save_path|session_set_cookie_params|session_set_save_handler|session_start|\ +session_unregister|session_unset|session_write_close|setCounterClass|set_error_handler|set_exception_handler|set_file_buffer|\ +set_include_path|set_magic_quotes_runtime|set_socket_blocking|set_time_limit|setcookie|setlocale|setproctitle|setrawcookie|\ +setstaticpropertyvalue|setthreadtitle|settype|sha1|sha1_file|shell_exec|shm_attach|shm_detach|shm_get_var|shm_has_var|shm_put_var|\ +shm_remove|shm_remove_var|shmop_close|shmop_delete|shmop_open|shmop_read|shmop_size|shmop_write|show_source|shuffle|signeurlpaiement|\ +similar_text|simplexml_import_dom|simplexml_load_file|simplexml_load_string|simplexmlelement|simplexmliterator|sin|sinh|sizeof|sleep|snmp|\ +snmp2_get|snmp2_getnext|snmp2_real_walk|snmp2_set|snmp2_walk|snmp3_get|snmp3_getnext|snmp3_real_walk|snmp3_set|snmp3_walk|\ +snmp_get_quick_print|snmp_get_valueretrieval|snmp_read_mib|snmp_set_enum_print|snmp_set_oid_numeric_print|snmp_set_oid_output_format|\ +snmp_set_quick_print|snmp_set_valueretrieval|snmpget|snmpgetnext|snmprealwalk|snmpset|snmpwalk|snmpwalkoid|soapclient|soapfault|\ +soapheader|soapparam|soapserver|soapvar|socket_accept|socket_bind|socket_clear_error|socket_close|socket_connect|socket_create|\ +socket_create_listen|socket_create_pair|socket_get_option|socket_get_status|socket_getpeername|socket_getsockname|socket_last_error|\ +socket_listen|socket_read|socket_recv|socket_recvfrom|socket_select|socket_send|socket_sendto|socket_set_block|socket_set_blocking|\ +socket_set_nonblock|socket_set_option|socket_set_timeout|socket_shutdown|socket_strerror|socket_write|solr_get_version|solrclient|\ +solrclientexception|solrdocument|solrdocumentfield|solrexception|solrgenericresponse|solrillegalargumentexception|\ +solrillegaloperationexception|solrinputdocument|solrmodifiableparams|solrobject|solrparams|solrpingresponse|solrquery|solrqueryresponse|\ +solrresponse|solrupdateresponse|solrutils|sort|soundex|sphinxclient|spl_autoload|spl_autoload_call|spl_autoload_extensions|\ +spl_autoload_functions|spl_autoload_register|spl_autoload_unregister|spl_classes|spl_object_hash|splbool|spldoublylinkedlist|splenum|\ +splfileinfo|splfileobject|splfixedarray|splfloat|splheap|splint|split|spliti|splmaxheap|splminheap|splobjectstorage|splobserver|\ +splpriorityqueue|splqueue|splstack|splstring|splsubject|spltempfileobject|spoofchecker|sprintf|sql_regcase|sqlite3|sqlite3result|\ +sqlite3stmt|sqlite_array_query|sqlite_busy_timeout|sqlite_changes|sqlite_close|sqlite_column|sqlite_create_aggregate|\ +sqlite_create_function|sqlite_current|sqlite_error_string|sqlite_escape_string|sqlite_exec|sqlite_factory|sqlite_fetch_all|\ +sqlite_fetch_array|sqlite_fetch_column_types|sqlite_fetch_object|sqlite_fetch_single|sqlite_fetch_string|sqlite_field_name|\ +sqlite_has_more|sqlite_has_prev|sqlite_key|sqlite_last_error|sqlite_last_insert_rowid|sqlite_libencoding|sqlite_libversion|sqlite_next|\ +sqlite_num_fields|sqlite_num_rows|sqlite_open|sqlite_popen|sqlite_prev|sqlite_query|sqlite_rewind|sqlite_seek|sqlite_single_query|\ +sqlite_udf_decode_binary|sqlite_udf_encode_binary|sqlite_unbuffered_query|sqlite_valid|sqrt|srand|sscanf|ssdeep_fuzzy_compare|\ +ssdeep_fuzzy_hash|ssdeep_fuzzy_hash_filename|ssh2_auth_hostbased_file|ssh2_auth_none|ssh2_auth_password|ssh2_auth_pubkey_file|\ +ssh2_connect|ssh2_exec|ssh2_fetch_stream|ssh2_fingerprint|ssh2_methods_negotiated|ssh2_publickey_add|ssh2_publickey_init|\ +ssh2_publickey_list|ssh2_publickey_remove|ssh2_scp_recv|ssh2_scp_send|ssh2_sftp|ssh2_sftp_lstat|ssh2_sftp_mkdir|ssh2_sftp_readlink|\ +ssh2_sftp_realpath|ssh2_sftp_rename|ssh2_sftp_rmdir|ssh2_sftp_stat|ssh2_sftp_symlink|ssh2_sftp_unlink|ssh2_shell|ssh2_tunnel|stat|\ +stats_absolute_deviation|stats_cdf_beta|stats_cdf_binomial|stats_cdf_cauchy|stats_cdf_chisquare|stats_cdf_exponential|stats_cdf_f|\ +stats_cdf_gamma|stats_cdf_laplace|stats_cdf_logistic|stats_cdf_negative_binomial|stats_cdf_noncentral_chisquare|stats_cdf_noncentral_f|\ +stats_cdf_poisson|stats_cdf_t|stats_cdf_uniform|stats_cdf_weibull|stats_covariance|stats_den_uniform|stats_dens_beta|stats_dens_cauchy|\ +stats_dens_chisquare|stats_dens_exponential|stats_dens_f|stats_dens_gamma|stats_dens_laplace|stats_dens_logistic|\ +stats_dens_negative_binomial|stats_dens_normal|stats_dens_pmf_binomial|stats_dens_pmf_hypergeometric|stats_dens_pmf_poisson|stats_dens_t|\ +stats_dens_weibull|stats_harmonic_mean|stats_kurtosis|stats_rand_gen_beta|stats_rand_gen_chisquare|stats_rand_gen_exponential|\ +stats_rand_gen_f|stats_rand_gen_funiform|stats_rand_gen_gamma|stats_rand_gen_ibinomial|stats_rand_gen_ibinomial_negative|\ +stats_rand_gen_int|stats_rand_gen_ipoisson|stats_rand_gen_iuniform|stats_rand_gen_noncenral_chisquare|stats_rand_gen_noncentral_f|\ +stats_rand_gen_noncentral_t|stats_rand_gen_normal|stats_rand_gen_t|stats_rand_get_seeds|stats_rand_phrase_to_seeds|stats_rand_ranf|\ +stats_rand_setall|stats_skew|stats_standard_deviation|stats_stat_binomial_coef|stats_stat_correlation|stats_stat_gennch|\ +stats_stat_independent_t|stats_stat_innerproduct|stats_stat_noncentral_t|stats_stat_paired_t|stats_stat_percentile|stats_stat_powersum|\ +stats_variance|stomp|stomp_connect_error|stomp_version|stompexception|stompframe|str_getcsv|str_ireplace|str_pad|str_repeat|str_replace|\ +str_rot13|str_shuffle|str_split|str_word_count|strcasecmp|strchr|strcmp|strcoll|strcspn|stream_bucket_append|stream_bucket_make_writeable|\ +stream_bucket_new|stream_bucket_prepend|stream_context_create|stream_context_get_default|stream_context_get_options|\ +stream_context_get_params|stream_context_set_default|stream_context_set_option|stream_context_set_params|stream_copy_to_stream|\ +stream_encoding|stream_filter_append|stream_filter_prepend|stream_filter_register|stream_filter_remove|stream_get_contents|\ +stream_get_filters|stream_get_line|stream_get_meta_data|stream_get_transports|stream_get_wrappers|stream_is_local|\ +stream_notification_callback|stream_register_wrapper|stream_resolve_include_path|stream_select|stream_set_blocking|stream_set_read_buffer|\ +stream_set_timeout|stream_set_write_buffer|stream_socket_accept|stream_socket_client|stream_socket_enable_crypto|stream_socket_get_name|\ +stream_socket_pair|stream_socket_recvfrom|stream_socket_sendto|stream_socket_server|stream_socket_shutdown|stream_supports_lock|\ +stream_wrapper_register|stream_wrapper_restore|stream_wrapper_unregister|streamwrapper|strftime|strip_tags|stripcslashes|stripos|\ +stripslashes|stristr|strlen|strnatcasecmp|strnatcmp|strncasecmp|strncmp|strpbrk|strpos|strptime|strrchr|strrev|strripos|strrpos|strspn|\ +strstr|strtok|strtolower|strtotime|strtoupper|strtr|strval|substr|substr_compare|substr_count|substr_replace|svm|svmmodel|svn_add|\ +svn_auth_get_parameter|svn_auth_set_parameter|svn_blame|svn_cat|svn_checkout|svn_cleanup|svn_client_version|svn_commit|svn_delete|\ +svn_diff|svn_export|svn_fs_abort_txn|svn_fs_apply_text|svn_fs_begin_txn2|svn_fs_change_node_prop|svn_fs_check_path|\ +svn_fs_contents_changed|svn_fs_copy|svn_fs_delete|svn_fs_dir_entries|svn_fs_file_contents|svn_fs_file_length|svn_fs_is_dir|svn_fs_is_file|\ +svn_fs_make_dir|svn_fs_make_file|svn_fs_node_created_rev|svn_fs_node_prop|svn_fs_props_changed|svn_fs_revision_prop|svn_fs_revision_root|\ +svn_fs_txn_root|svn_fs_youngest_rev|svn_import|svn_log|svn_ls|svn_mkdir|svn_repos_create|svn_repos_fs|svn_repos_fs_begin_txn_for_commit|\ +svn_repos_fs_commit_txn|svn_repos_hotcopy|svn_repos_open|svn_repos_recover|svn_revert|svn_status|svn_update|swf_actiongeturl|\ +swf_actiongotoframe|swf_actiongotolabel|swf_actionnextframe|swf_actionplay|swf_actionprevframe|swf_actionsettarget|swf_actionstop|\ +swf_actiontogglequality|swf_actionwaitforframe|swf_addbuttonrecord|swf_addcolor|swf_closefile|swf_definebitmap|swf_definefont|\ +swf_defineline|swf_definepoly|swf_definerect|swf_definetext|swf_endbutton|swf_enddoaction|swf_endshape|swf_endsymbol|swf_fontsize|\ +swf_fontslant|swf_fonttracking|swf_getbitmapinfo|swf_getfontinfo|swf_getframe|swf_labelframe|swf_lookat|swf_modifyobject|swf_mulcolor|\ +swf_nextid|swf_oncondition|swf_openfile|swf_ortho|swf_ortho2|swf_perspective|swf_placeobject|swf_polarview|swf_popmatrix|swf_posround|\ +swf_pushmatrix|swf_removeobject|swf_rotate|swf_scale|swf_setfont|swf_setframe|swf_shapearc|swf_shapecurveto|swf_shapecurveto3|\ +swf_shapefillbitmapclip|swf_shapefillbitmaptile|swf_shapefilloff|swf_shapefillsolid|swf_shapelinesolid|swf_shapelineto|swf_shapemoveto|\ +swf_showframe|swf_startbutton|swf_startdoaction|swf_startshape|swf_startsymbol|swf_textwidth|swf_translate|swf_viewport|swfaction|\ +swfbitmap|swfbutton|swfdisplayitem|swffill|swffont|swffontchar|swfgradient|swfmorph|swfmovie|swfprebuiltclip|swfshape|swfsound|\ +swfsoundinstance|swfsprite|swftext|swftextfield|swfvideostream|swish_construct|swish_getmetalist|swish_getpropertylist|swish_prepare|\ +swish_query|swishresult_getmetalist|swishresult_stem|swishresults_getparsedwords|swishresults_getremovedstopwords|swishresults_nextresult|\ +swishresults_seekresult|swishsearch_execute|swishsearch_resetlimit|swishsearch_setlimit|swishsearch_setphrasedelimiter|\ +swishsearch_setsort|swishsearch_setstructure|sybase_affected_rows|sybase_close|sybase_connect|sybase_data_seek|\ +sybase_deadlock_retry_count|sybase_fetch_array|sybase_fetch_assoc|sybase_fetch_field|sybase_fetch_object|sybase_fetch_row|\ +sybase_field_seek|sybase_free_result|sybase_get_last_message|sybase_min_client_severity|sybase_min_error_severity|\ +sybase_min_message_severity|sybase_min_server_severity|sybase_num_fields|sybase_num_rows|sybase_pconnect|sybase_query|sybase_result|\ +sybase_select_db|sybase_set_message_handler|sybase_unbuffered_query|symlink|sys_get_temp_dir|sys_getloadavg|syslog|system|tag|tan|tanh|\ +tcpwrap_check|tempnam|textdomain|tidy|tidy_access_count|tidy_config_count|tidy_diagnose|tidy_error_count|tidy_get_error_buffer|\ +tidy_get_output|tidy_load_config|tidy_reset_config|tidy_save_config|tidy_set_encoding|tidy_setopt|tidy_warning_count|tidynode|time|\ +time_nanosleep|time_sleep_until|timezone_abbreviations_list|timezone_identifiers_list|timezone_location_get|timezone_name_from_abbr|\ +timezone_name_get|timezone_offset_get|timezone_open|timezone_transitions_get|timezone_version_get|tmpfile|token_get_all|token_name|\ +tokyotyrant|tokyotyrantquery|tokyotyranttable|tostring|tostring|touch|trait_exists|transliterator|traversable|trigger_error|trim|uasort|ucfirst|\ +ucwords|udm_add_search_limit|udm_alloc_agent|udm_alloc_agent_array|udm_api_version|udm_cat_list|udm_cat_path|udm_check_charset|\ +udm_check_stored|udm_clear_search_limits|udm_close_stored|udm_crc32|udm_errno|udm_error|udm_find|udm_free_agent|udm_free_ispell_data|\ +udm_free_res|udm_get_doc_count|udm_get_res_field|udm_get_res_param|udm_hash32|udm_load_ispell_data|udm_open_stored|udm_set_agent_param|\ +uksort|umask|underflowexception|unexpectedvalueexception|uniqid|unixtojd|unlink|unpack|unregister_tick_function|unserialize|unset|\ +urldecode|urlencode|use_soap_error_handler|user_error|usleep|usort|utf8_decode|utf8_encode|v8js|v8jsexception|var_dump|var_export|variant|\ +variant_abs|variant_add|variant_and|variant_cast|variant_cat|variant_cmp|variant_date_from_timestamp|variant_date_to_timestamp|\ +variant_div|variant_eqv|variant_fix|variant_get_type|variant_idiv|variant_imp|variant_int|variant_mod|variant_mul|variant_neg|variant_not|\ +variant_or|variant_pow|variant_round|variant_set|variant_set_type|variant_sub|variant_xor|version_compare|vfprintf|virtual|\ +vpopmail_add_alias_domain|vpopmail_add_alias_domain_ex|vpopmail_add_domain|vpopmail_add_domain_ex|vpopmail_add_user|vpopmail_alias_add|\ +vpopmail_alias_del|vpopmail_alias_del_domain|vpopmail_alias_get|vpopmail_alias_get_all|vpopmail_auth_user|vpopmail_del_domain|\ +vpopmail_del_domain_ex|vpopmail_del_user|vpopmail_error|vpopmail_passwd|vpopmail_set_user_quota|vprintf|vsprintf|w32api_deftype|\ +w32api_init_dtype|w32api_invoke_function|w32api_register_function|w32api_set_call_method|wddx_add_vars|wddx_deserialize|wddx_packet_end|\ +wddx_packet_start|wddx_serialize_value|wddx_serialize_vars|win32_continue_service|win32_create_service|win32_delete_service|\ +win32_get_last_control_message|win32_pause_service|win32_ps_list_procs|win32_ps_stat_mem|win32_ps_stat_proc|win32_query_service_status|\ +win32_set_service_status|win32_start_service|win32_start_service_ctrl_dispatcher|win32_stop_service|wincache_fcache_fileinfo|\ +wincache_fcache_meminfo|wincache_lock|wincache_ocache_fileinfo|wincache_ocache_meminfo|wincache_refresh_if_changed|\ +wincache_rplist_fileinfo|wincache_rplist_meminfo|wincache_scache_info|wincache_scache_meminfo|wincache_ucache_add|wincache_ucache_cas|\ +wincache_ucache_clear|wincache_ucache_dec|wincache_ucache_delete|wincache_ucache_exists|wincache_ucache_get|wincache_ucache_inc|\ +wincache_ucache_info|wincache_ucache_meminfo|wincache_ucache_set|wincache_unlock|wordwrap|xattr_get|xattr_list|xattr_remove|xattr_set|\ +xattr_supported|xdiff_file_bdiff|xdiff_file_bdiff_size|xdiff_file_bpatch|xdiff_file_diff|xdiff_file_diff_binary|xdiff_file_merge3|\ +xdiff_file_patch|xdiff_file_patch_binary|xdiff_file_rabdiff|xdiff_string_bdiff|xdiff_string_bdiff_size|xdiff_string_bpatch|\ +xdiff_string_diff|xdiff_string_diff_binary|xdiff_string_merge3|xdiff_string_patch|xdiff_string_patch_binary|xdiff_string_rabdiff|\ +xhprof_disable|xhprof_enable|xhprof_sample_disable|xhprof_sample_enable|xml_error_string|xml_get_current_byte_index|\ +xml_get_current_column_number|xml_get_current_line_number|xml_get_error_code|xml_parse|xml_parse_into_struct|xml_parser_create|\ +xml_parser_create_ns|xml_parser_free|xml_parser_get_option|xml_parser_set_option|xml_set_character_data_handler|xml_set_default_handler|\ +xml_set_element_handler|xml_set_end_namespace_decl_handler|xml_set_external_entity_ref_handler|xml_set_notation_decl_handler|\ +xml_set_object|xml_set_processing_instruction_handler|xml_set_start_namespace_decl_handler|xml_set_unparsed_entity_decl_handler|xmlreader|\ +xmlrpc_decode|xmlrpc_decode_request|xmlrpc_encode|xmlrpc_encode_request|xmlrpc_get_type|xmlrpc_is_fault|xmlrpc_parse_method_descriptions|\ +xmlrpc_server_add_introspection_data|xmlrpc_server_call_method|xmlrpc_server_create|xmlrpc_server_destroy|\ +xmlrpc_server_register_introspection_callback|xmlrpc_server_register_method|xmlrpc_set_type|xmlwriter_end_attribute|xmlwriter_end_cdata|\ +xmlwriter_end_comment|xmlwriter_end_document|xmlwriter_end_dtd|xmlwriter_end_dtd_attlist|xmlwriter_end_dtd_element|\ +xmlwriter_end_dtd_entity|xmlwriter_end_element|xmlwriter_end_pi|xmlwriter_flush|xmlwriter_full_end_element|xmlwriter_open_memory|\ +xmlwriter_open_uri|xmlwriter_output_memory|xmlwriter_set_indent|xmlwriter_set_indent_string|xmlwriter_start_attribute|\ +xmlwriter_start_attribute_ns|xmlwriter_start_cdata|xmlwriter_start_comment|xmlwriter_start_document|xmlwriter_start_dtd|\ +xmlwriter_start_dtd_attlist|xmlwriter_start_dtd_element|xmlwriter_start_dtd_entity|xmlwriter_start_element|xmlwriter_start_element_ns|\ +xmlwriter_start_pi|xmlwriter_text|xmlwriter_write_attribute|xmlwriter_write_attribute_ns|xmlwriter_write_cdata|xmlwriter_write_comment|\ +xmlwriter_write_dtd|xmlwriter_write_dtd_attlist|xmlwriter_write_dtd_element|xmlwriter_write_dtd_entity|xmlwriter_write_element|\ +xmlwriter_write_element_ns|xmlwriter_write_pi|xmlwriter_write_raw|xpath_eval|xpath_eval_expression|xpath_new_context|xpath_register_ns|\ +xpath_register_ns_auto|xptr_eval|xptr_new_context|xslt_backend_info|xslt_backend_name|xslt_backend_version|xslt_create|xslt_errno|\ +xslt_error|xslt_free|xslt_getopt|xslt_process|xslt_set_base|xslt_set_encoding|xslt_set_error_handler|xslt_set_log|xslt_set_object|\ +xslt_set_sax_handler|xslt_set_sax_handlers|xslt_set_scheme_handler|xslt_set_scheme_handlers|xslt_setopt|xsltprocessor|yaml_emit|\ +yaml_emit_file|yaml_parse|yaml_parse_file|yaml_parse_url|yaz_addinfo|yaz_ccl_conf|yaz_ccl_parse|yaz_close|yaz_connect|yaz_database|\ +yaz_element|yaz_errno|yaz_error|yaz_es|yaz_es_result|yaz_get_option|yaz_hits|yaz_itemorder|yaz_present|yaz_range|yaz_record|yaz_scan|\ +yaz_scan_result|yaz_schema|yaz_search|yaz_set_option|yaz_sort|yaz_syntax|yaz_wait|yp_all|yp_cat|yp_err_string|yp_errno|yp_first|\ +yp_get_default_domain|yp_master|yp_match|yp_next|yp_order|zend_logo_guid|zend_thread_id|zend_version|zip_close|zip_entry_close|\ +zip_entry_compressedsize|zip_entry_compressionmethod|zip_entry_filesize|zip_entry_name|zip_entry_open|zip_entry_read|zip_open|zip_read|\ +ziparchive|ziparchive_addemptydir|ziparchive_addfile|ziparchive_addfromstring|ziparchive_close|ziparchive_deleteindex|\ +ziparchive_deletename|ziparchive_extractto|ziparchive_getarchivecomment|ziparchive_getcommentindex|ziparchive_getcommentname|\ +ziparchive_getfromindex|ziparchive_getfromname|ziparchive_getnameindex|ziparchive_getstatusstring|ziparchive_getstream|\ +ziparchive_locatename|ziparchive_open|ziparchive_renameindex|ziparchive_renamename|ziparchive_setCommentName|ziparchive_setarchivecomment|\ +ziparchive_setcommentindex|ziparchive_statindex|ziparchive_statname|ziparchive_unchangeall|ziparchive_unchangearchive|\ +ziparchive_unchangeindex|ziparchive_unchangename|zlib_get_coding_type'.split('|')); + var keywords = lang.arrayToMap('abstract|and|array|as|break|callable|case|catch|class|clone|const|continue|declare|default|do|else|elseif|enddeclare|endfor|endforeach|\ +endif|endswitch|endwhile|extends|final|finally|for|foreach|function|global|goto|if|implements|instanceof|insteadof|interface|namespace|new|or|private|protected|\ +public|static|switch|throw|trait|try|use|var|while|xor|yield'.split('|')); + var languageConstructs = lang.arrayToMap(('__halt_compiler|die|echo|empty|exit|eval|include|include_once|isset|list|require|require_once|return|print|unset').split('|')); + var builtinConstants = lang.arrayToMap(('true|TRUE|false|FALSE|null|NULL|__CLASS__|__DIR__|__FILE__|__LINE__|__METHOD__|__FUNCTION__|__NAMESPACE__|__TRAIT__').split('|')); + var builtinVariables = lang.arrayToMap('$GLOBALS|$_SERVER|$_GET|$_POST|$_FILES|$_REQUEST|$_SESSION|$_ENV|$_COOKIE|$php_errormsg|$HTTP_RAW_POST_DATA|\ +$http_response_header|$argc|$argv'.split('|')); + var builtinFunctionsDeprecated = lang.arrayToMap('key_exists|cairo_matrix_create_scale|cairo_matrix_create_translate|call_user_method|call_user_method_array|com_addref|com_get|\ +com_invoke|com_isenum|com_load|com_release|com_set|connection_timeout|cubrid_load_from_glo|cubrid_new_glo|cubrid_save_to_glo|\ +cubrid_send_glo|define_syslog_variables|dl|ereg|ereg_replace|eregi|eregi_replace|hw_documentattributes|hw_documentbodytag|\ +hw_documentsize|hw_outputdocument|imagedashedline|maxdb_bind_param|maxdb_bind_result|maxdb_client_encoding|maxdb_close_long_data|\ +maxdb_execute|maxdb_fetch|maxdb_get_metadata|maxdb_param_count|maxdb_send_long_data|mcrypt_ecb|mcrypt_generic_end|mime_content_type|\ +mysql_createdb|mysql_dbname|mysql_db_query|mysql_drop_db|mysql_dropdb|mysql_escape_string|mysql_fieldflags|mysql_fieldflags|\ +mysql_fieldname|mysql_fieldtable|mysql_fieldtype|mysql_freeresult|mysql_listdbs|mysql_list_fields|mysql_listfields|mysql_list_tables|\ +mysql_listtables|mysql_numfields|mysql_numrows|mysql_selectdb|mysql_tablename|mysqli_bind_param|mysqli_bind_result|\ +mysqli_disable_reads_from_master|mysqli_disable_rpl_parse|mysqli_enable_reads_from_master|mysqli_enable_rpl_parse|mysqli_execute|\ +mysqli_fetch|mysqli_get_metadata|mysqli_master_query|mysqli_param_count|mysqli_rpl_parse_enabled|mysqli_rpl_probe|mysqli_rpl_query_type|\ +mysqli_send_long_data|mysqli_send_query|mysqli_slave_query|ocibindbyname|ocicancel|ocicloselob|ocicollappend|ocicollassign|\ +ocicollassignelem|ocicollgetelem|ocicollmax|ocicollsize|ocicolltrim|ocicolumnisnull|ocicolumnname|ocicolumnprecision|ocicolumnscale|\ +ocicolumnsize|ocicolumntype|ocicolumntyperaw|ocicommit|ocidefinebyname|ocierror|ociexecute|ocifetch|ocifetchinto|ocifetchstatement|\ +ocifreecollection|ocifreecursor|ocifreedesc|ocifreestatement|ociinternaldebug|ociloadlob|ocilogoff|ocilogon|ocinewcollection|\ +ocinewcursor|ocinewdescriptor|ocinlogon|ocinumcols|ociparse|ociplogon|ociresult|ocirollback|ocirowcount|ocisavelob|ocisavelobfile|\ +ociserverversion|ocisetprefetch|ocistatementtype|ociwritelobtofile|ociwritetemporarylob|PDF_add_annotation|PDF_add_bookmark|\ +PDF_add_launchlink|PDF_add_locallink|PDF_add_note|PDF_add_outline|PDF_add_pdflink|PDF_add_weblink|PDF_attach_file|PDF_begin_page|\ +PDF_begin_template|PDF_close_pdi|PDF_close|PDF_findfont|PDF_get_font|PDF_get_fontname|PDF_get_fontsize|PDF_get_image_height|\ +PDF_get_image_width|PDF_get_majorversion|PDF_get_minorversion|PDF_get_pdi_parameter|PDF_get_pdi_value|PDF_open_ccitt|PDF_open_file|\ +PDF_open_gif|PDF_open_image_file|PDF_open_image|PDF_open_jpeg|PDF_open_pdi|PDF_open_tiff|PDF_place_image|PDF_place_pdi_page|\ +PDF_set_border_color|PDF_set_border_dash|PDF_set_border_style|PDF_set_char_spacing|PDF_set_duration|PDF_set_horiz_scaling|\ +PDF_set_info_author|PDF_set_info_creator|PDF_set_info_keywords|PDF_set_info_subject|PDF_set_info_title|PDF_set_leading|\ +PDF_set_text_matrix|PDF_set_text_rendering|PDF_set_text_rise|PDF_set_word_spacing|PDF_setgray_fill|PDF_setgray_stroke|PDF_setgray|\ +PDF_setpolydash|PDF_setrgbcolor_fill|PDF_setrgbcolor_stroke|PDF_setrgbcolor|PDF_show_boxed|php_check_syntax|px_set_tablename|\ +px_set_targetencoding|runkit_sandbox_output_handler|session_is_registered|session_register|session_unregister\ +set_magic_quotes_runtime|magic_quotes_runtime|set_socket_blocking|socket_set_blocking|set_socket_timeout|socket_set_timeout|split|spliti|\ +sql_regcase'.split('|')); + var keywordsDeprecated = lang.arrayToMap(('cfunction|old_function').split('|')); + var futureReserved = lang.arrayToMap([]); + this.$rules = { + "start": [ + { + token: "comment", + regex: /(?:#|\/\/)(?:[^?]|\?[^>])*/ + }, + docComment.getStartRule("doc-start"), + { + token: "comment", + regex: "\\/\\*", + next: "comment" + }, { + token: "string.regexp", + regex: "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/][gimy]*\\s*(?=[).,;]|$)" + }, { + token: "string", + regex: '"', + next: "qqstring" + }, { + token: "string", + regex: "'", + next: "qstring" + }, { + token: "constant.numeric", + regex: "0[xX][0-9a-fA-F]+\\b" + }, { + token: "constant.numeric", + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token: "constant.language", + regex: "\\b(?:DEFAULT_INCLUDE_PATH|E_(?:ALL|CO(?:MPILE_(?:ERROR|WARNING)|RE_(?:ERROR|WARNING))|" + + "ERROR|NOTICE|PARSE|STRICT|USER_(?:ERROR|NOTICE|WARNING)|WARNING)|P(?:EAR_(?:EXTENSION_DIR|INSTALL_DIR)|" + + "HP_(?:BINDIR|CONFIG_FILE_(?:PATH|SCAN_DIR)|DATADIR|E(?:OL|XTENSION_DIR)|INT_(?:MAX|SIZE)|" + + "L(?:IBDIR|OCALSTATEDIR)|O(?:S|UTPUT_HANDLER_(?:CONT|END|START))|PREFIX|S(?:API|HLIB_SUFFIX|YSCONFDIR)|" + + "VERSION))|__COMPILER_HALT_OFFSET__)\\b" + }, { + token: ["keyword", "text", "support.class"], + regex: "\\b(new)(\\s+)(\\w+)" + }, { + token: ["support.class", "keyword.operator"], + regex: "\\b(\\w+)(::)" + }, { + token: "constant.language", + regex: "\\b(?:A(?:B(?:DAY_(?:1|2|3|4|5|6|7)|MON_(?:1(?:0|1|2|)|2|3|4|5|6|7|8|9))|LT_DIGITS|M_STR|" + + "SSERT_(?:ACTIVE|BAIL|CALLBACK|QUIET_EVAL|WARNING))|C(?:ASE_(?:LOWER|UPPER)|HAR_MAX|" + + "O(?:DESET|NNECTION_(?:ABORTED|NORMAL|TIMEOUT)|UNT_(?:NORMAL|RECURSIVE))|" + + "R(?:EDITS_(?:ALL|DOCS|FULLPAGE|G(?:ENERAL|ROUP)|MODULES|QA|SAPI)|NCYSTR|" + + "YPT_(?:BLOWFISH|EXT_DES|MD5|S(?:ALT_LENGTH|TD_DES)))|URRENCY_SYMBOL)|D(?:AY_(?:1|2|3|4|5|6|7)|" + + "ECIMAL_POINT|IRECTORY_SEPARATOR|_(?:FMT|T_FMT))|E(?:NT_(?:COMPAT|NOQUOTES|QUOTES)|RA(?:_(?:D_(?:FMT|T_FMT)|" + + "T_FMT|YEAR)|)|XTR_(?:IF_EXISTS|OVERWRITE|PREFIX_(?:ALL|I(?:F_EXISTS|NVALID)|SAME)|SKIP))|FRAC_DIGITS|GROUPING|" + + "HTML_(?:ENTITIES|SPECIALCHARS)|IN(?:FO_(?:ALL|C(?:ONFIGURATION|REDITS)|ENVIRONMENT|GENERAL|LICENSE|MODULES|VARIABLES)|" + + "I_(?:ALL|PERDIR|SYSTEM|USER)|T_(?:CURR_SYMBOL|FRAC_DIGITS))|L(?:C_(?:ALL|C(?:OLLATE|TYPE)|M(?:ESSAGES|ONETARY)|NUMERIC|TIME)|" + + "O(?:CK_(?:EX|NB|SH|UN)|G_(?:A(?:LERT|UTH(?:PRIV|))|C(?:ONS|R(?:IT|ON))|D(?:AEMON|EBUG)|E(?:MERG|RR)|INFO|KERN|" + + "L(?:OCAL(?:0|1|2|3|4|5|6|7)|PR)|MAIL|N(?:DELAY|EWS|O(?:TICE|WAIT))|ODELAY|P(?:ERROR|ID)|SYSLOG|U(?:SER|UCP)|WARNING)))|" + + "M(?:ON_(?:1(?:0|1|2|)|2|3|4|5|6|7|8|9|DECIMAL_POINT|GROUPING|THOUSANDS_SEP)|_(?:1_PI|2_(?:PI|SQRTPI)|E|L(?:N(?:10|2)|" + + "OG(?:10E|2E))|PI(?:_(?:2|4)|)|SQRT(?:1_2|2)))|N(?:EGATIVE_SIGN|O(?:EXPR|STR)|_(?:CS_PRECEDES|S(?:EP_BY_SPACE|IGN_POSN)))|" + + "P(?:ATH(?:INFO_(?:BASENAME|DIRNAME|EXTENSION)|_SEPARATOR)|M_STR|OSITIVE_SIGN|_(?:CS_PRECEDES|S(?:EP_BY_SPACE|IGN_POSN)))|" + + "RADIXCHAR|S(?:EEK_(?:CUR|END|SET)|ORT_(?:ASC|DESC|NUMERIC|REGULAR|STRING)|TR_PAD_(?:BOTH|LEFT|RIGHT))|" + + "T(?:HOUS(?:ANDS_SEP|EP)|_FMT(?:_AMPM|))|YES(?:EXPR|STR)|STD(?:IN|OUT|ERR))\\b" + }, { + token: function (value) { + if (keywords.hasOwnProperty(value)) + return "keyword"; + else if (builtinConstants.hasOwnProperty(value)) + return "constant.language"; + else if (builtinVariables.hasOwnProperty(value)) + return "variable.language"; + else if (futureReserved.hasOwnProperty(value)) + return "invalid.illegal"; + else if (builtinFunctions.hasOwnProperty(value)) + return "support.function"; + else if (value == "debugger") + return "invalid.deprecated"; + else if (value.match(/^(\$[a-zA-Z_\x7f-\uffff][a-zA-Z0-9_\x7f-\uffff]*|self|parent)$/)) + return "variable"; + return "identifier"; + }, + regex: /[a-zA-Z_$\x7f-\uffff][a-zA-Z0-9_\x7f-\uffff]*/ + }, { + onMatch: function (value, currentSate, state) { + value = value.substr(3); + if (value[0] == "'" || value[0] == '"') + value = value.slice(1, -1); + state.unshift(this.next, value); + return "markup.list"; + }, + regex: /<<<(?:\w+|'\w+'|"\w+")$/, + next: "heredoc" + }, { + token: "keyword.operator", + regex: "::|!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|!=|!==|<=|>=|=>|<<=|>>=|>>>=|<>|<|>|\\.=|=|!|&&|\\|\\||\\?\\:|\\*=|/=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" + }, { + token: "punctuation.operator", + regex: /[,;]/ + }, { + token: "paren.lparen", + regex: "[[({]" + }, { + token: "paren.rparen", + regex: "[\\])}]" + }, { + token: "text", + regex: "\\s+" + } + ], + "heredoc": [ + { + onMatch: function (value, currentState, stack) { + if (stack[1] != value) { + this.next = ""; + return "string"; + } + stack.shift(); + stack.shift(); + this.next = this.nextState; + return "markup.list"; + }, + regex: "^\\w+(?=;?$)", + nextState: "start" + }, { + token: "string", + regex: ".*" + } + ], + "comment": [ + { + token: "comment", + regex: "\\*\\/", + next: "start" + }, { + defaultToken: "comment" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: '\\\\(?:[nrtvef\\\\"$]|[0-7]{1,3}|x[0-9A-Fa-f]{1,2})' + }, { + token: "variable", + regex: /\$[\w]+(?:\[[\w\]+]|[=\-]>\w+)?/ + }, { + token: "variable", + regex: /\$\{[^"\}]+\}?/ // this is wrong but ok for now + }, + { token: "string", regex: '"', next: "start" }, + { defaultToken: "string" } + ], + "qstring": [ + { token: "constant.language.escape", regex: /\\['\\]/ }, + { token: "string", regex: "'", next: "start" }, + { defaultToken: "string" } + ] + }; + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("start")]); +}; +oop.inherits(PhpLangHighlightRules, TextHighlightRules); +var PhpHighlightRules = function () { + HtmlHighlightRules.call(this); + var startRules = [ + { + token: "support.php_tag", + regex: "<\\?(?:php|=)?", + push: "php-start" + } + ]; + var endRules = [ + { + token: "support.php_tag", + regex: "\\?>", + next: "pop" + } + ]; + for (var key in this.$rules) + this.$rules[key].unshift.apply(this.$rules[key], startRules); + this.embedRules(PhpLangHighlightRules, "php-", endRules, ["start"]); + this.normalizeRules(); +}; +oop.inherits(PhpHighlightRules, HtmlHighlightRules); +exports.PhpHighlightRules = PhpHighlightRules; +exports.PhpLangHighlightRules = PhpLangHighlightRules; + +}); + +ace.define("ace/mode/php_laravel_blade_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/php_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var PhpHighlightRules = require("./php_highlight_rules").PhpHighlightRules; +var PHPLaravelBladeHighlightRules = function () { + PhpHighlightRules.call(this); + var bladeRules = { + start: [{ + include: "bladeComments" + }, { + include: "directives" + }, { + include: "parenthesis" + }], + comments: [{ + include: "bladeComments" + }, { + token: "punctuation.definition.comment.blade", + regex: "(\\/\\/(.)*)|(\\#(.)*)" + }, { + token: "punctuation.definition.comment.begin.php", + regex: "(?:\\/\\*)", + push: [{ + token: "punctuation.definition.comment.end.php", + regex: "(?:\\*\\/)", + next: "pop" + }, { + defaultToken: "comment.block.blade" + }] + }], + bladeComments: [{ + token: "punctuation.definition.comment.begin.blade", + regex: "(?:\\{\\{\\-\\-)", + push: [{ + token: "punctuation.definition.comment.end.blade", + regex: "(?:\\-\\-\\}\\})", + next: "pop" + }, { + defaultToken: "comment.block.blade" + }] + }], + parenthesis: [{ + token: "parenthesis.begin.blade", + regex: "\\(", + push: [{ + token: "parenthesis.end.blade", + regex: "\\)", + next: "pop" + }, { + include: "strings" + }, { + include: "variables" + }, { + include: "lang" + }, { + include: "parenthesis" + }, { + include: "comments" + }, { + defaultToken: "source.blade" + }] + }], + directives: [{ + token: ["directive.declaration.blade", "keyword.directives.blade"], + regex: "(@)(endunless|endisset|endempty|endauth|endguest|endcomponent|endslot|endalert|endverbatim|endsection|show|php|endphp|endpush|endprepend|endenv|endforelse|isset|empty|component|slot|alert|json|verbatim|section|auth|guest|hasSection|forelse|includeIf|includeWhen|includeFirst|each|push|stack|prepend|inject|env|elseenv|unless|yield|extends|parent|include|acfrepeater|block|can|cannot|choice|debug|elsecan|elsecannot|embed|hipchat|lang|layout|macro|macrodef|minify|partial|render|servers|set|slack|story|task|unset|wpposts|acfend|after|append|breakpoint|endafter|endcan|endcannot|endembed|endmacro|endmarkdown|endminify|endpartial|endsetup|endstory|endtask|endunless|markdown|overwrite|setup|stop|wpempty|wpend|wpquery)" + }, { + token: ["directive.declaration.blade", "keyword.control.blade"], + regex: "(@)(if|else|elseif|endif|foreach|endforeach|switch|case|break|default|endswitch|for|endfor|while|endwhile|continue)" + }, { + token: ["directive.ignore.blade", "injections.begin.blade"], + regex: "(@?)(\\{\\{)", + push: [{ + token: "injections.end.blade", + regex: "\\}\\}", + next: "pop" + }, { + include: "strings" + }, { + include: "variables" + }, { + include: "comments" + }, { + defaultToken: "source.blade" + }] + }, { + token: "injections.unescaped.begin.blade", + regex: "\\{\\!\\!", + push: [{ + token: "injections.unescaped.end.blade", + regex: "\\!\\!\\}", + next: "pop" + }, { + include: "strings" + }, { + include: "variables" + }, { + defaultToken: "source.blade" + }] + } + ], + lang: [{ + token: "keyword.operator.blade", + regex: "(?:!=|!|<=|>=|<|>|===|==|=|\\+\\+|\\;|\\,|%|&&|\\|\\|)|\\b(?:and|or|eq|neq|ne|gte|gt|ge|lte|lt|le|not|mod|as)\\b" + }, { + token: "constant.language.blade", + regex: "\\b(?:TRUE|FALSE|true|false)\\b" + }], + strings: [{ + token: "punctuation.definition.string.begin.blade", + regex: "\"", + push: [{ + token: "punctuation.definition.string.end.blade", + regex: "\"", + next: "pop" + }, { + token: "string.character.escape.blade", + regex: "\\\\." + }, { + defaultToken: "string.quoted.single.blade" + }] + }, { + token: "punctuation.definition.string.begin.blade", + regex: "'", + push: [{ + token: "punctuation.definition.string.end.blade", + regex: "'", + next: "pop" + }, { + token: "string.character.escape.blade", + regex: "\\\\." + }, { + defaultToken: "string.quoted.double.blade" + }] + }], + variables: [{ + token: "variable.blade", + regex: "\\$([a-zA-Z_][a-zA-Z0-9_]*)\\b" + }, { + token: ["keyword.operator.blade", "constant.other.property.blade"], + regex: "(->)([a-zA-Z_][a-zA-Z0-9_]*)\\b" + }, { + token: ["keyword.operator.blade", + "meta.function-call.object.blade", + "punctuation.definition.variable.blade", + "variable.blade", + "punctuation.definition.variable.blade" + ], + regex: "(->)([a-zA-Z_][a-zA-Z0-9_]*)(\\()(.*?)(\\))" + }] + }; + var bladeStart = bladeRules.start; + for (var rule in this.$rules) { + this.$rules[rule].unshift.apply(this.$rules[rule], bladeStart); + } + Object.keys(bladeRules).forEach(function (x) { + if (!this.$rules[x]) + this.$rules[x] = bladeRules[x]; + }, this); + this.normalizeRules(); +}; +oop.inherits(PHPLaravelBladeHighlightRules, PhpHighlightRules); +exports.PHPLaravelBladeHighlightRules = PHPLaravelBladeHighlightRules; + +}); + +ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) + return false; + return /^\s*\}/.test(input); + }; + this.autoOutdent = function (doc, row) { + var line = doc.getLine(row); + var match = line.match(/^(\s*\})/); + if (!match) + return 0; + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; + var indent = this.$getIndent(doc.getLine(openBracePos.row)); + doc.replace(new Range(row, 0, row, column - 1), indent); + }; + this.$getIndent = function (line) { + return line.match(/^\s*/)[0]; + }; +}).call(MatchingBraceOutdent.prototype); +exports.MatchingBraceOutdent = MatchingBraceOutdent; + +}); + +ace.define("ace/mode/php_completions",["require","exports","module"], function(require, exports, module){/** + * ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** + */ +"use strict"; +var functionMap = { + "abs": [ + "int abs(int number)", + "Return the absolute value of the number" + ], + "acos": [ + "float acos(float number)", + "Return the arc cosine of the number in radians" + ], + "acosh": [ + "float acosh(float number)", + "Returns the inverse hyperbolic cosine of the number, i.e. the value whose hyperbolic cosine is number" + ], + "addGlob": [ + "bool addGlob(string pattern[,int flags [, array options]])", + "Add files matching the glob pattern. See php's glob for the pattern syntax." + ], + "addPattern": [ + "bool addPattern(string pattern[, string path [, array options]])", + "Add files matching the pcre pattern. See php's pcre for the pattern syntax." + ], + "addcslashes": [ + "string addcslashes(string str, string charlist)", + "Escapes all chars mentioned in charlist with backslash. It creates octal representations if asked to backslash characters with 8th bit set or with ASCII<32 (except '\\n', '\\r', '\\t' etc...)" + ], + "addslashes": [ + "string addslashes(string str)", + "Escapes single quote, double quotes and backslash characters in a string with backslashes" + ], + "apache_child_terminate": [ + "bool apache_child_terminate()", + "Terminate apache process after this request" + ], + "apache_get_modules": [ + "array apache_get_modules()", + "Get a list of loaded Apache modules" + ], + "apache_get_version": [ + "string apache_get_version()", + "Fetch Apache version" + ], + "apache_getenv": [ + "bool apache_getenv(string variable [, bool walk_to_top])", + "Get an Apache subprocess_env variable" + ], + "apache_lookup_uri": [ + "object apache_lookup_uri(string URI)", + "Perform a partial request of the given URI to obtain information about it" + ], + "apache_note": [ + "string apache_note(string note_name [, string note_value])", + "Get and set Apache request notes" + ], + "apache_request_auth_name": [ + "string apache_request_auth_name()", + "" + ], + "apache_request_auth_type": [ + "string apache_request_auth_type()", + "" + ], + "apache_request_discard_request_body": [ + "long apache_request_discard_request_body()", + "" + ], + "apache_request_err_headers_out": [ + "array apache_request_err_headers_out([{string name|array list} [, string value [, bool replace = false]]])", + "* fetch all headers that go out in case of an error or a subrequest" + ], + "apache_request_headers": [ + "array apache_request_headers()", + "Fetch all HTTP request headers" + ], + "apache_request_headers_in": [ + "array apache_request_headers_in()", + "* fetch all incoming request headers" + ], + "apache_request_headers_out": [ + "array apache_request_headers_out([{string name|array list} [, string value [, bool replace = false]]])", + "* fetch all outgoing request headers" + ], + "apache_request_is_initial_req": [ + "bool apache_request_is_initial_req()", + "" + ], + "apache_request_log_error": [ + "bool apache_request_log_error(string message, [long facility])", + "" + ], + "apache_request_meets_conditions": [ + "long apache_request_meets_conditions()", + "" + ], + "apache_request_remote_host": [ + "int apache_request_remote_host([int type])", + "" + ], + "apache_request_run": [ + "long apache_request_run()", + "This is a wrapper for ap_sub_run_req and ap_destory_sub_req. It takes sub_request, runs it, destroys it, and returns it's status." + ], + "apache_request_satisfies": [ + "long apache_request_satisfies()", + "" + ], + "apache_request_server_port": [ + "int apache_request_server_port()", + "" + ], + "apache_request_set_etag": [ + "void apache_request_set_etag()", + "" + ], + "apache_request_set_last_modified": [ + "void apache_request_set_last_modified()", + "" + ], + "apache_request_some_auth_required": [ + "bool apache_request_some_auth_required()", + "" + ], + "apache_request_sub_req_lookup_file": [ + "object apache_request_sub_req_lookup_file(string file)", + "Returns sub-request for the specified file. You would need to run it yourself with run()." + ], + "apache_request_sub_req_lookup_uri": [ + "object apache_request_sub_req_lookup_uri(string uri)", + "Returns sub-request for the specified uri. You would need to run it yourself with run()" + ], + "apache_request_sub_req_method_uri": [ + "object apache_request_sub_req_method_uri(string method, string uri)", + "Returns sub-request for the specified file. You would need to run it yourself with run()." + ], + "apache_request_update_mtime": [ + "long apache_request_update_mtime([int dependency_mtime])", + "" + ], + "apache_reset_timeout": [ + "bool apache_reset_timeout()", + "Reset the Apache write timer" + ], + "apache_response_headers": [ + "array apache_response_headers()", + "Fetch all HTTP response headers" + ], + "apache_setenv": [ + "bool apache_setenv(string variable, string value [, bool walk_to_top])", + "Set an Apache subprocess_env variable" + ], + "array_change_key_case": [ + "array array_change_key_case(array input [, int case=CASE_LOWER])", + "Retuns an array with all string keys lowercased [or uppercased]" + ], + "array_chunk": [ + "array array_chunk(array input, int size [, bool preserve_keys])", + "Split array into chunks" + ], + "array_combine": [ + "array array_combine(array keys, array values)", + "Creates an array by using the elements of the first parameter as keys and the elements of the second as the corresponding values" + ], + "array_count_values": [ + "array array_count_values(array input)", + "Return the value as key and the frequency of that value in input as value" + ], + "array_diff": [ + "array array_diff(array arr1, array arr2 [, array ...])", + "Returns the entries of arr1 that have values which are not present in any of the others arguments." + ], + "array_diff_assoc": [ + "array array_diff_assoc(array arr1, array arr2 [, array ...])", + "Returns the entries of arr1 that have values which are not present in any of the others arguments but do additional checks whether the keys are equal" + ], + "array_diff_key": [ + "array array_diff_key(array arr1, array arr2 [, array ...])", + "Returns the entries of arr1 that have keys which are not present in any of the others arguments. This function is like array_diff() but works on the keys instead of the values. The associativity is preserved." + ], + "array_diff_uassoc": [ + "array array_diff_uassoc(array arr1, array arr2 [, array ...], callback data_comp_func)", + "Returns the entries of arr1 that have values which are not present in any of the others arguments but do additional checks whether the keys are equal. Elements are compared by user supplied function." + ], + "array_diff_ukey": [ + "array array_diff_ukey(array arr1, array arr2 [, array ...], callback key_comp_func)", + "Returns the entries of arr1 that have keys which are not present in any of the others arguments. User supplied function is used for comparing the keys. This function is like array_udiff() but works on the keys instead of the values. The associativity is preserved." + ], + "array_fill": [ + "array array_fill(int start_key, int num, mixed val)", + "Create an array containing num elements starting with index start_key each initialized to val" + ], + "array_fill_keys": [ + "array array_fill_keys(array keys, mixed val)", + "Create an array using the elements of the first parameter as keys each initialized to val" + ], + "array_filter": [ + "array array_filter(array input [, mixed callback])", + "Filters elements from the array via the callback." + ], + "array_flip": [ + "array array_flip(array input)", + "Return array with key <-> value flipped" + ], + "array_intersect": [ + "array array_intersect(array arr1, array arr2 [, array ...])", + "Returns the entries of arr1 that have values which are present in all the other arguments" + ], + "array_intersect_assoc": [ + "array array_intersect_assoc(array arr1, array arr2 [, array ...])", + "Returns the entries of arr1 that have values which are present in all the other arguments. Keys are used to do more restrictive check" + ], + "array_intersect_key": [ + "array array_intersect_key(array arr1, array arr2 [, array ...])", + "Returns the entries of arr1 that have keys which are present in all the other arguments. Kind of equivalent to array_diff(array_keys($arr1), array_keys($arr2)[,array_keys(...)]). Equivalent of array_intersect_assoc() but does not do compare of the data." + ], + "array_intersect_uassoc": [ + "array array_intersect_uassoc(array arr1, array arr2 [, array ...], callback key_compare_func)", + "Returns the entries of arr1 that have values which are present in all the other arguments. Keys are used to do more restrictive check and they are compared by using an user-supplied callback." + ], + "array_intersect_ukey": [ + "array array_intersect_ukey(array arr1, array arr2 [, array ...], callback key_compare_func)", + "Returns the entries of arr1 that have keys which are present in all the other arguments. Kind of equivalent to array_diff(array_keys($arr1), array_keys($arr2)[,array_keys(...)]). The comparison of the keys is performed by a user supplied function. Equivalent of array_intersect_uassoc() but does not do compare of the data." + ], + "array_key_exists": [ + "bool array_key_exists(mixed key, array search)", + "Checks if the given key or index exists in the array" + ], + "array_keys": [ + "array array_keys(array input [, mixed search_value[, bool strict]])", + "Return just the keys from the input array, optionally only for the specified search_value" + ], + "array_key_first": [ + "mixed array_key_first(array arr)", + "Returns the first key of arr if the array is not empty; NULL otherwise" + ], + "array_key_last": [ + "mixed array_key_last(array arr)", + "Returns the last key of arr if the array is not empty; NULL otherwise" + ], + "array_map": [ + "array array_map(mixed callback, array input1 [, array input2 ,...])", + "Applies the callback to the elements in given arrays." + ], + "array_merge": [ + "array array_merge(array arr1, array arr2 [, array ...])", + "Merges elements from passed arrays into one array" + ], + "array_merge_recursive": [ + "array array_merge_recursive(array arr1, array arr2 [, array ...])", + "Recursively merges elements from passed arrays into one array" + ], + "array_multisort": [ + "bool array_multisort(array ar1 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING]] [, array ar2 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING]], ...])", + "Sort multiple arrays at once similar to how ORDER BY clause works in SQL" + ], + "array_pad": [ + "array array_pad(array input, int pad_size, mixed pad_value)", + "Returns a copy of input array padded with pad_value to size pad_size" + ], + "array_pop": [ + "mixed array_pop(array stack)", + "Pops an element off the end of the array" + ], + "array_product": [ + "mixed array_product(array input)", + "Returns the product of the array entries" + ], + "array_push": [ + "int array_push(array stack, mixed var [, mixed ...])", + "Pushes elements onto the end of the array" + ], + "array_rand": [ + "mixed array_rand(array input [, int num_req])", + "Return key/keys for random entry/entries in the array" + ], + "array_reduce": [ + "mixed array_reduce(array input, mixed callback [, mixed initial])", + "Iteratively reduce the array to a single value via the callback." + ], + "array_replace": [ + "array array_replace(array arr1, array arr2 [, array ...])", + "Replaces elements from passed arrays into one array" + ], + "array_replace_recursive": [ + "array array_replace_recursive(array arr1, array arr2 [, array ...])", + "Recursively replaces elements from passed arrays into one array" + ], + "array_reverse": [ + "array array_reverse(array input [, bool preserve keys])", + "Return input as a new array with the order of the entries reversed" + ], + "array_search": [ + "mixed array_search(mixed needle, array haystack [, bool strict])", + "Searches the array for a given value and returns the corresponding key if successful" + ], + "array_shift": [ + "mixed array_shift(array stack)", + "Pops an element off the beginning of the array" + ], + "array_slice": [ + "array array_slice(array input, int offset [, int length [, bool preserve_keys]])", + "Returns elements specified by offset and length" + ], + "array_splice": [ + "array array_splice(array input, int offset [, int length [, array replacement]])", + "Removes the elements designated by offset and length and replace them with supplied array" + ], + "array_sum": [ + "mixed array_sum(array input)", + "Returns the sum of the array entries" + ], + "array_udiff": [ + "array array_udiff(array arr1, array arr2 [, array ...], callback data_comp_func)", + "Returns the entries of arr1 that have values which are not present in any of the others arguments. Elements are compared by user supplied function." + ], + "array_udiff_assoc": [ + "array array_udiff_assoc(array arr1, array arr2 [, array ...], callback key_comp_func)", + "Returns the entries of arr1 that have values which are not present in any of the others arguments but do additional checks whether the keys are equal. Keys are compared by user supplied function." + ], + "array_udiff_uassoc": [ + "array array_udiff_uassoc(array arr1, array arr2 [, array ...], callback data_comp_func, callback key_comp_func)", + "Returns the entries of arr1 that have values which are not present in any of the others arguments but do additional checks whether the keys are equal. Keys and elements are compared by user supplied functions." + ], + "array_uintersect": [ + "array array_uintersect(array arr1, array arr2 [, array ...], callback data_compare_func)", + "Returns the entries of arr1 that have values which are present in all the other arguments. Data is compared by using an user-supplied callback." + ], + "array_uintersect_assoc": [ + "array array_uintersect_assoc(array arr1, array arr2 [, array ...], callback data_compare_func)", + "Returns the entries of arr1 that have values which are present in all the other arguments. Keys are used to do more restrictive check. Data is compared by using an user-supplied callback." + ], + "array_uintersect_uassoc": [ + "array array_uintersect_uassoc(array arr1, array arr2 [, array ...], callback data_compare_func, callback key_compare_func)", + "Returns the entries of arr1 that have values which are present in all the other arguments. Keys are used to do more restrictive check. Both data and keys are compared by using user-supplied callbacks." + ], + "array_unique": [ + "array array_unique(array input [, int sort_flags])", + "Removes duplicate values from array" + ], + "array_unshift": [ + "int array_unshift(array stack, mixed var [, mixed ...])", + "Pushes elements onto the beginning of the array" + ], + "array_values": [ + "array array_values(array input)", + "Return just the values from the input array" + ], + "array_walk": [ + "bool array_walk(array input, string funcname [, mixed userdata])", + "Apply a user function to every member of an array" + ], + "array_walk_recursive": [ + "bool array_walk_recursive(array input, string funcname [, mixed userdata])", + "Apply a user function recursively to every member of an array" + ], + "arsort": [ + "bool arsort(array &array_arg [, int sort_flags])", + "Sort an array in reverse order and maintain index association" + ], + "asin": [ + "float asin(float number)", + "Returns the arc sine of the number in radians" + ], + "asinh": [ + "float asinh(float number)", + "Returns the inverse hyperbolic sine of the number, i.e. the value whose hyperbolic sine is number" + ], + "asort": [ + "bool asort(array &array_arg [, int sort_flags])", + "Sort an array and maintain index association" + ], + "assert": [ + "int assert(string|bool assertion)", + "Checks if assertion is false" + ], + "assert_options": [ + "mixed assert_options(int what [, mixed value])", + "Set/get the various assert flags" + ], + "atan": [ + "float atan(float number)", + "Returns the arc tangent of the number in radians" + ], + "atan2": [ + "float atan2(float y, float x)", + "Returns the arc tangent of y/x, with the resulting quadrant determined by the signs of y and x" + ], + "atanh": [ + "float atanh(float number)", + "Returns the inverse hyperbolic tangent of the number, i.e. the value whose hyperbolic tangent is number" + ], + "attachIterator": [ + "void attachIterator(Iterator iterator[, mixed info])", + "Attach a new iterator" + ], + "base64_decode": [ + "string base64_decode(string str[, bool strict])", + "Decodes string using MIME base64 algorithm" + ], + "base64_encode": [ + "string base64_encode(string str)", + "Encodes string using MIME base64 algorithm" + ], + "base_convert": [ + "string base_convert(string number, int frombase, int tobase)", + "Converts a number in a string from any base <= 36 to any base <= 36" + ], + "basename": [ + "string basename(string path [, string suffix])", + "Returns the filename component of the path" + ], + "bcadd": [ + "string bcadd(string left_operand, string right_operand [, int scale])", + "Returns the sum of two arbitrary precision numbers" + ], + "bccomp": [ + "int bccomp(string left_operand, string right_operand [, int scale])", + "Compares two arbitrary precision numbers" + ], + "bcdiv": [ + "string bcdiv(string left_operand, string right_operand [, int scale])", + "Returns the quotient of two arbitrary precision numbers (division)" + ], + "bcmod": [ + "string bcmod(string left_operand, string right_operand)", + "Returns the modulus of the two arbitrary precision operands" + ], + "bcmul": [ + "string bcmul(string left_operand, string right_operand [, int scale])", + "Returns the multiplication of two arbitrary precision numbers" + ], + "bcpow": [ + "string bcpow(string x, string y [, int scale])", + "Returns the value of an arbitrary precision number raised to the power of another" + ], + "bcpowmod": [ + "string bcpowmod(string x, string y, string mod [, int scale])", + "Returns the value of an arbitrary precision number raised to the power of another reduced by a modulous" + ], + "bcscale": [ + "bool bcscale(int scale)", + "Sets default scale parameter for all bc math functions" + ], + "bcsqrt": [ + "string bcsqrt(string operand [, int scale])", + "Returns the square root of an arbitray precision number" + ], + "bcsub": [ + "string bcsub(string left_operand, string right_operand [, int scale])", + "Returns the difference between two arbitrary precision numbers" + ], + "bin2hex": [ + "string bin2hex(string data)", + "Converts the binary representation of data to hex" + ], + "bind_textdomain_codeset": [ + "string bind_textdomain_codeset (string domain, string codeset)", + "Specify the character encoding in which the messages from the DOMAIN message catalog will be returned." + ], + "bindec": [ + "int bindec(string binary_number)", + "Returns the decimal equivalent of the binary number" + ], + "bindtextdomain": [ + "string bindtextdomain(string domain_name, string dir)", + "Bind to the text domain domain_name, looking for translations in dir. Returns the current domain" + ], + "birdstep_autocommit": [ + "bool birdstep_autocommit(int index)", + "" + ], + "birdstep_close": [ + "bool birdstep_close(int id)", + "" + ], + "birdstep_commit": [ + "bool birdstep_commit(int index)", + "" + ], + "birdstep_connect": [ + "int birdstep_connect(string server, string user, string pass)", + "" + ], + "birdstep_exec": [ + "int birdstep_exec(int index, string exec_str)", + "" + ], + "birdstep_fetch": [ + "bool birdstep_fetch(int index)", + "" + ], + "birdstep_fieldname": [ + "string birdstep_fieldname(int index, int col)", + "" + ], + "birdstep_fieldnum": [ + "int birdstep_fieldnum(int index)", + "" + ], + "birdstep_freeresult": [ + "bool birdstep_freeresult(int index)", + "" + ], + "birdstep_off_autocommit": [ + "bool birdstep_off_autocommit(int index)", + "" + ], + "birdstep_result": [ + "mixed birdstep_result(int index, mixed col)", + "" + ], + "birdstep_rollback": [ + "bool birdstep_rollback(int index)", + "" + ], + "bzcompress": [ + "string bzcompress(string source [, int blocksize100k [, int workfactor]])", + "Compresses a string into BZip2 encoded data" + ], + "bzdecompress": [ + "string bzdecompress(string source [, int small])", + "Decompresses BZip2 compressed data" + ], + "bzerrno": [ + "int bzerrno(resource bz)", + "Returns the error number" + ], + "bzerror": [ + "array bzerror(resource bz)", + "Returns the error number and error string in an associative array" + ], + "bzerrstr": [ + "string bzerrstr(resource bz)", + "Returns the error string" + ], + "bzopen": [ + "resource bzopen(string|int file|fp, string mode)", + "Opens a new BZip2 stream" + ], + "bzread": [ + "string bzread(resource bz[, int length])", + "Reads up to length bytes from a BZip2 stream, or 1024 bytes if length is not specified" + ], + "cal_days_in_month": [ + "int cal_days_in_month(int calendar, int month, int year)", + "Returns the number of days in a month for a given year and calendar" + ], + "cal_from_jd": [ + "array cal_from_jd(int jd, int calendar)", + "Converts from Julian Day Count to a supported calendar and return extended information" + ], + "cal_info": [ + "array cal_info([int calendar])", + "Returns information about a particular calendar" + ], + "cal_to_jd": [ + "int cal_to_jd(int calendar, int month, int day, int year)", + "Converts from a supported calendar to Julian Day Count" + ], + "call_user_func": [ + "mixed call_user_func(mixed function_name [, mixed parmeter] [, mixed ...])", + "Call a user function which is the first parameter" + ], + "call_user_func_array": [ + "mixed call_user_func_array(string function_name, array parameters)", + "Call a user function which is the first parameter with the arguments contained in array" + ], + "call_user_method": [ + "mixed call_user_method(string method_name, mixed object [, mixed parameter] [, mixed ...])", + "Call a user method on a specific object or class" + ], + "call_user_method_array": [ + "mixed call_user_method_array(string method_name, mixed object, array params)", + "Call a user method on a specific object or class using a parameter array" + ], + "ceil": [ + "float ceil(float number)", + "Returns the next highest integer value of the number" + ], + "chdir": [ + "bool chdir(string directory)", + "Change the current directory" + ], + "checkdate": [ + "bool checkdate(int month, int day, int year)", + "Returns true(1) if it is a valid date in gregorian calendar" + ], + "chgrp": [ + "bool chgrp(string filename, mixed group)", + "Change file group" + ], + "chmod": [ + "bool chmod(string filename, int mode)", + "Change file mode" + ], + "chown": [ + "bool chown(string filename, mixed user)", + "Change file owner" + ], + "chr": [ + "string chr(int ascii)", + "Converts ASCII code to a character" + ], + "chroot": [ + "bool chroot(string directory)", + "Change root directory" + ], + "chunk_split": [ + "string chunk_split(string str [, int chunklen [, string ending]])", + "Returns split line" + ], + "class_alias": [ + "bool class_alias(string user_class_name , string alias_name [, bool autoload])", + "Creates an alias for user defined class" + ], + "class_exists": [ + "bool class_exists(string classname [, bool autoload])", + "Checks if the class exists" + ], + "class_implements": [ + "array class_implements(mixed what [, bool autoload ])", + "Return all classes and interfaces implemented by SPL" + ], + "class_parents": [ + "array class_parents(object instance [, bool autoload = true])", + "Return an array containing the names of all parent classes" + ], + "clearstatcache": [ + "void clearstatcache([bool clear_realpath_cache[, string filename]])", + "Clear file stat cache" + ], + "closedir": [ + "void closedir([resource dir_handle])", + "Close directory connection identified by the dir_handle" + ], + "closelog": [ + "bool closelog()", + "Close connection to system logger" + ], + "collator_asort": [ + "bool collator_asort( Collator $coll, array(string) $arr )", + "* Sort array using specified collator, maintaining index association." + ], + "collator_compare": [ + "int collator_compare( Collator $coll, string $str1, string $str2 )", + "* Compare two strings." + ], + "collator_create": [ + "Collator collator_create( string $locale )", + "* Create collator." + ], + "collator_get_attribute": [ + "int collator_get_attribute( Collator $coll, int $attr )", + "* Get collation attribute value." + ], + "collator_get_error_code": [ + "int collator_get_error_code( Collator $coll )", + "* Get collator's last error code." + ], + "collator_get_error_message": [ + "string collator_get_error_message( Collator $coll )", + "* Get text description for collator's last error code." + ], + "collator_get_locale": [ + "string collator_get_locale( Collator $coll, int $type )", + "* Gets the locale name of the collator." + ], + "collator_get_sort_key": [ + "bool collator_get_sort_key( Collator $coll, string $str )", + "* Get a sort key for a string from a Collator. }}}" + ], + "collator_get_strength": [ + "int collator_get_strength(Collator coll)", + "* Returns the current collation strength." + ], + "collator_set_attribute": [ + "bool collator_set_attribute( Collator $coll, int $attr, int $val )", + "* Set collation attribute." + ], + "collator_set_strength": [ + "bool collator_set_strength(Collator coll, int strength)", + "* Set the collation strength." + ], + "collator_sort": [ + "bool collator_sort( Collator $coll, array(string) $arr [, int $sort_flags] )", + "* Sort array using specified collator." + ], + "collator_sort_with_sort_keys": [ + "bool collator_sort_with_sort_keys( Collator $coll, array(string) $arr )", + "* Equivalent to standard PHP sort using Collator. * Uses ICU ucol_getSortKey for performance." + ], + "com_create_guid": [ + "string com_create_guid()", + "Generate a globally unique identifier (GUID)" + ], + "com_event_sink": [ + "bool com_event_sink(object comobject, object sinkobject [, mixed sinkinterface])", + "Connect events from a COM object to a PHP object" + ], + "com_get_active_object": [ + "object com_get_active_object(string progid [, int code_page ])", + "Returns a handle to an already running instance of a COM object" + ], + "com_load_typelib": [ + "bool com_load_typelib(string typelib_name [, int case_insensitive])", + "Loads a Typelibrary and registers its constants" + ], + "com_message_pump": [ + "bool com_message_pump([int timeoutms])", + "Process COM messages, sleeping for up to timeoutms milliseconds" + ], + "com_print_typeinfo": [ + "bool com_print_typeinfo(object comobject | string typelib, string dispinterface, bool wantsink)", + "Print out a PHP class definition for a dispatchable interface" + ], + "compact": [ + "array compact(mixed var_names [, mixed ...])", + "Creates a hash containing variables and their values" + ], + "compose_locale": [ + "static string compose_locale($array)", + "* Creates a locale by combining the parts of locale-ID passed * }}}" + ], + "confirm_extname_compiled": [ + "string confirm_extname_compiled(string arg)", + "Return a string to confirm that the module is compiled in" + ], + "connection_aborted": [ + "int connection_aborted()", + "Returns true if client disconnected" + ], + "connection_status": [ + "int connection_status()", + "Returns the connection status bitfield" + ], + "constant": [ + "mixed constant(string const_name)", + "Given the name of a constant this function will return the constant's associated value" + ], + "convert_cyr_string": [ + "string convert_cyr_string(string str, string from, string to)", + "Convert from one Cyrillic character set to another" + ], + "convert_uudecode": [ + "string convert_uudecode(string data)", + "decode a uuencoded string" + ], + "convert_uuencode": [ + "string convert_uuencode(string data)", + "uuencode a string" + ], + "copy": [ + "bool copy(string source_file, string destination_file [, resource context])", + "Copy a file" + ], + "cos": [ + "float cos(float number)", + "Returns the cosine of the number in radians" + ], + "cosh": [ + "float cosh(float number)", + "Returns the hyperbolic cosine of the number, defined as (exp(number) + exp(-number))/2" + ], + "count": [ + "int count(mixed var [, int mode])", + "Count the number of elements in a variable (usually an array)" + ], + "count_chars": [ + "mixed count_chars(string input [, int mode])", + "Returns info about what characters are used in input" + ], + "crc32": [ + "string crc32(string str)", + "Calculate the crc32 polynomial of a string" + ], + "create_function": [ + "string create_function(string args, string code)", + "Creates an anonymous function, and returns its name" + ], + "crypt": [ + "string crypt(string str [, string salt])", + "Hash a string" + ], + "ctype_alnum": [ + "bool ctype_alnum(mixed c)", + "Checks for alphanumeric character(s)" + ], + "ctype_alpha": [ + "bool ctype_alpha(mixed c)", + "Checks for alphabetic character(s)" + ], + "ctype_cntrl": [ + "bool ctype_cntrl(mixed c)", + "Checks for control character(s)" + ], + "ctype_digit": [ + "bool ctype_digit(mixed c)", + "Checks for numeric character(s)" + ], + "ctype_graph": [ + "bool ctype_graph(mixed c)", + "Checks for any printable character(s) except space" + ], + "ctype_lower": [ + "bool ctype_lower(mixed c)", + "Checks for lowercase character(s)" + ], + "ctype_print": [ + "bool ctype_print(mixed c)", + "Checks for printable character(s)" + ], + "ctype_punct": [ + "bool ctype_punct(mixed c)", + "Checks for any printable character which is not whitespace or an alphanumeric character" + ], + "ctype_space": [ + "bool ctype_space(mixed c)", + "Checks for whitespace character(s)" + ], + "ctype_upper": [ + "bool ctype_upper(mixed c)", + "Checks for uppercase character(s)" + ], + "ctype_xdigit": [ + "bool ctype_xdigit(mixed c)", + "Checks for character(s) representing a hexadecimal digit" + ], + "curl_close": [ + "void curl_close(resource ch)", + "Close a cURL session" + ], + "curl_copy_handle": [ + "resource curl_copy_handle(resource ch)", + "Copy a cURL handle along with all of it's preferences" + ], + "curl_errno": [ + "int curl_errno(resource ch)", + "Return an integer containing the last error number" + ], + "curl_error": [ + "string curl_error(resource ch)", + "Return a string contain the last error for the current session" + ], + "curl_exec": [ + "bool curl_exec(resource ch)", + "Perform a cURL session" + ], + "curl_getinfo": [ + "mixed curl_getinfo(resource ch [, int option])", + "Get information regarding a specific transfer" + ], + "curl_init": [ + "resource curl_init([string url])", + "Initialize a cURL session" + ], + "curl_multi_add_handle": [ + "int curl_multi_add_handle(resource mh, resource ch)", + "Add a normal cURL handle to a cURL multi handle" + ], + "curl_multi_close": [ + "void curl_multi_close(resource mh)", + "Close a set of cURL handles" + ], + "curl_multi_exec": [ + "int curl_multi_exec(resource mh, int &still_running)", + "Run the sub-connections of the current cURL handle" + ], + "curl_multi_getcontent": [ + "string curl_multi_getcontent(resource ch)", + "Return the content of a cURL handle if CURLOPT_RETURNTRANSFER is set" + ], + "curl_multi_info_read": [ + "array curl_multi_info_read(resource mh [, long msgs_in_queue])", + "Get information about the current transfers" + ], + "curl_multi_init": [ + "resource curl_multi_init()", + "Returns a new cURL multi handle" + ], + "curl_multi_remove_handle": [ + "int curl_multi_remove_handle(resource mh, resource ch)", + "Remove a multi handle from a set of cURL handles" + ], + "curl_multi_select": [ + "int curl_multi_select(resource mh[, double timeout])", + "Get all the sockets associated with the cURL extension, which can then be \"selected\"" + ], + "curl_setopt": [ + "bool curl_setopt(resource ch, int option, mixed value)", + "Set an option for a cURL transfer" + ], + "curl_setopt_array": [ + "bool curl_setopt_array(resource ch, array options)", + "Set an array of option for a cURL transfer" + ], + "curl_version": [ + "array curl_version([int version])", + "Return cURL version information." + ], + "current": [ + "mixed current(array array_arg)", + "Return the element currently pointed to by the internal array pointer" + ], + "date": [ + "string date(string format [, long timestamp])", + "Format a local date/time" + ], + "date_add": [ + "DateTime date_add(DateTime object, DateInterval interval)", + "Adds an interval to the current date in object." + ], + "date_create": [ + "DateTime date_create([string time[, DateTimeZone object]])", + "Returns new DateTime object" + ], + "date_create_from_format": [ + "DateTime date_create_from_format(string format, string time[, DateTimeZone object])", + "Returns new DateTime object formatted according to the specified format" + ], + "date_date_set": [ + "DateTime date_date_set(DateTime object, long year, long month, long day)", + "Sets the date." + ], + "date_default_timezone_get": [ + "string date_default_timezone_get()", + "Gets the default timezone used by all date/time functions in a script" + ], + "date_default_timezone_set": [ + "bool date_default_timezone_set(string timezone_identifier)", + "Sets the default timezone used by all date/time functions in a script" + ], + "date_diff": [ + "DateInterval date_diff(DateTime object [, bool absolute])", + "Returns the difference between two DateTime objects." + ], + "date_format": [ + "string date_format(DateTime object, string format)", + "Returns date formatted according to given format" + ], + "date_get_last_errors": [ + "array date_get_last_errors()", + "Returns the warnings and errors found while parsing a date/time string." + ], + "date_interval_create_from_date_string": [ + "DateInterval date_interval_create_from_date_string(string time)", + "Uses the normal date parsers and sets up a DateInterval from the relative parts of the parsed string" + ], + "date_interval_format": [ + "string date_interval_format(DateInterval object, string format)", + "Formats the interval." + ], + "date_isodate_set": [ + "DateTime date_isodate_set(DateTime object, long year, long week[, long day])", + "Sets the ISO date." + ], + "date_modify": [ + "DateTime date_modify(DateTime object, string modify)", + "Alters the timestamp." + ], + "date_offset_get": [ + "long date_offset_get(DateTime object)", + "Returns the DST offset." + ], + "date_parse": [ + "array date_parse(string date)", + "Returns associative array with detailed info about given date" + ], + "date_parse_from_format": [ + "array date_parse_from_format(string format, string date)", + "Returns associative array with detailed info about given date" + ], + "date_sub": [ + "DateTime date_sub(DateTime object, DateInterval interval)", + "Subtracts an interval to the current date in object." + ], + "date_sun_info": [ + "array date_sun_info(long time, float latitude, float longitude)", + "Returns an array with information about sun set/rise and twilight begin/end" + ], + "date_sunrise": [ + "mixed date_sunrise(mixed time [, int format [, float latitude [, float longitude [, float zenith [, float gmt_offset]]]]])", + "Returns time of sunrise for a given day and location" + ], + "date_sunset": [ + "mixed date_sunset(mixed time [, int format [, float latitude [, float longitude [, float zenith [, float gmt_offset]]]]])", + "Returns time of sunset for a given day and location" + ], + "date_time_set": [ + "DateTime date_time_set(DateTime object, long hour, long minute[, long second])", + "Sets the time." + ], + "date_timestamp_get": [ + "long date_timestamp_get(DateTime object)", + "Gets the Unix timestamp." + ], + "date_timestamp_set": [ + "DateTime date_timestamp_set(DateTime object, long unixTimestamp)", + "Sets the date and time based on an Unix timestamp." + ], + "date_timezone_get": [ + "DateTimeZone date_timezone_get(DateTime object)", + "Return new DateTimeZone object relative to give DateTime" + ], + "date_timezone_set": [ + "DateTime date_timezone_set(DateTime object, DateTimeZone object)", + "Sets the timezone for the DateTime object." + ], + "datefmt_create": [ + "IntlDateFormatter datefmt_create(string $locale, long date_type, long time_type[, string $timezone_str, long $calendar, string $pattern] )", + "* Create formatter." + ], + "datefmt_format": [ + "string datefmt_format( [mixed]int $args or array $args )", + "* Format the time value as a string. }}}" + ], + "datefmt_get_calendar": [ + "string datefmt_get_calendar( IntlDateFormatter $mf )", + "* Get formatter calendar." + ], + "datefmt_get_datetype": [ + "string datefmt_get_datetype( IntlDateFormatter $mf )", + "* Get formatter datetype." + ], + "datefmt_get_error_code": [ + "int datefmt_get_error_code( IntlDateFormatter $nf )", + "* Get formatter's last error code." + ], + "datefmt_get_error_message": [ + "string datefmt_get_error_message( IntlDateFormatter $coll )", + "* Get text description for formatter's last error code." + ], + "datefmt_get_locale": [ + "string datefmt_get_locale(IntlDateFormatter $mf)", + "* Get formatter locale." + ], + "datefmt_get_pattern": [ + "string datefmt_get_pattern( IntlDateFormatter $mf )", + "* Get formatter pattern." + ], + "datefmt_get_timetype": [ + "string datefmt_get_timetype( IntlDateFormatter $mf )", + "* Get formatter timetype." + ], + "datefmt_get_timezone_id": [ + "string datefmt_get_timezone_id( IntlDateFormatter $mf )", + "* Get formatter timezone_id." + ], + "datefmt_isLenient": [ + "string datefmt_isLenient(IntlDateFormatter $mf)", + "* Get formatter locale." + ], + "datefmt_localtime": [ + "integer datefmt_localtime( IntlDateFormatter $fmt, string $text_to_parse[, int $parse_pos ])", + "* Parse the string $value to a localtime array }}}" + ], + "datefmt_parse": [ + "integer datefmt_parse( IntlDateFormatter $fmt, string $text_to_parse [, int $parse_pos] )", + "* Parse the string $value starting at parse_pos to a Unix timestamp -int }}}" + ], + "datefmt_setLenient": [ + "string datefmt_setLenient(IntlDateFormatter $mf)", + "* Set formatter lenient." + ], + "datefmt_set_calendar": [ + "bool datefmt_set_calendar( IntlDateFormatter $mf, int $calendar )", + "* Set formatter calendar." + ], + "datefmt_set_pattern": [ + "bool datefmt_set_pattern( IntlDateFormatter $mf, string $pattern )", + "* Set formatter pattern." + ], + "datefmt_set_timezone_id": [ + "bool datefmt_set_timezone_id( IntlDateFormatter $mf,$timezone_id)", + "* Set formatter timezone_id." + ], + "dba_close": [ + "void dba_close(resource handle)", + "Closes database" + ], + "dba_delete": [ + "bool dba_delete(string key, resource handle)", + "Deletes the entry associated with key If inifile: remove all other key lines" + ], + "dba_exists": [ + "bool dba_exists(string key, resource handle)", + "Checks, if the specified key exists" + ], + "dba_fetch": [ + "string dba_fetch(string key, [int skip ,] resource handle)", + "Fetches the data associated with key" + ], + "dba_firstkey": [ + "string dba_firstkey(resource handle)", + "Resets the internal key pointer and returns the first key" + ], + "dba_handlers": [ + "array dba_handlers([bool full_info])", + "List configured database handlers" + ], + "dba_insert": [ + "bool dba_insert(string key, string value, resource handle)", + "If not inifile: Insert value as key, return false, if key exists already If inifile: Add vakue as key (next instance of key)" + ], + "dba_key_split": [ + "array|false dba_key_split(string key)", + "Splits an inifile key into an array of the form array(0=>group,1=>value_name) but returns false if input is false or null" + ], + "dba_list": [ + "array dba_list()", + "List opened databases" + ], + "dba_nextkey": [ + "string dba_nextkey(resource handle)", + "Returns the next key" + ], + "dba_open": [ + "resource dba_open(string path, string mode [, string handlername, string ...])", + "Opens path using the specified handler in mode" + ], + "dba_optimize": [ + "bool dba_optimize(resource handle)", + "Optimizes (e.g. clean up, vacuum) database" + ], + "dba_popen": [ + "resource dba_popen(string path, string mode [, string handlername, string ...])", + "Opens path using the specified handler in mode persistently" + ], + "dba_replace": [ + "bool dba_replace(string key, string value, resource handle)", + "Inserts value as key, replaces key, if key exists already If inifile: remove all other key lines" + ], + "dba_sync": [ + "bool dba_sync(resource handle)", + "Synchronizes database" + ], + "dcgettext": [ + "string dcgettext(string domain_name, string msgid, long category)", + "Return the translation of msgid for domain_name and category, or msgid unaltered if a translation does not exist" + ], + "dcngettext": [ + "string dcngettext(string domain, string msgid1, string msgid2, int n, int category)", + "Plural version of dcgettext()" + ], + "debug_backtrace": [ + "array debug_backtrace([bool provide_object])", + "Return backtrace as array" + ], + "debug_print_backtrace": [ + "void debug_print_backtrace()", + "Prints a PHP backtrace" + ], + "debug_zval_dump": [ + "void debug_zval_dump(mixed var)", + "Dumps a string representation of an internal Zend value to output" + ], + "decbin": [ + "string decbin(int decimal_number)", + "Returns a string containing a binary representation of the number" + ], + "dechex": [ + "string dechex(int decimal_number)", + "Returns a string containing a hexadecimal representation of the given number" + ], + "decoct": [ + "string decoct(int decimal_number)", + "Returns a string containing an octal representation of the given number" + ], + "define": [ + "bool define(string constant_name, mixed value, bool case_insensitive=false)", + "Define a new constant" + ], + "define_syslog_variables": [ + "void define_syslog_variables()", + "Initializes all syslog-related variables" + ], + "defined": [ + "bool defined(string constant_name)", + "Check whether a constant exists" + ], + "deg2rad": [ + "float deg2rad(float number)", + "Converts the number in degrees to the radian equivalent" + ], + "dgettext": [ + "string dgettext(string domain_name, string msgid)", + "Return the translation of msgid for domain_name, or msgid unaltered if a translation does not exist" + ], + "die": [ + "void die([mixed status])", + "Output a message and terminate the current script" + ], + "dir": [ + "object dir(string directory[, resource context])", + "Directory class with properties, handle and class and methods read, rewind and close" + ], + "dirname": [ + "string dirname(string path)", + "Returns the directory name component of the path" + ], + "disk_free_space": [ + "float disk_free_space(string path)", + "Get free disk space for filesystem that path is on" + ], + "disk_total_space": [ + "float disk_total_space(string path)", + "Get total disk space for filesystem that path is on" + ], + "display_disabled_function": [ + "void display_disabled_function()", + "Dummy function which displays an error when a disabled function is called." + ], + "dl": [ + "int dl(string extension_filename)", + "Load a PHP extension at runtime" + ], + "dngettext": [ + "string dngettext(string domain, string msgid1, string msgid2, int count)", + "Plural version of dgettext()" + ], + "dns_check_record": [ + "bool dns_check_record(string host [, string type])", + "Check DNS records corresponding to a given Internet host name or IP address" + ], + "dns_get_mx": [ + "bool dns_get_mx(string hostname, array mxhosts [, array weight])", + "Get MX records corresponding to a given Internet host name" + ], + "dns_get_record": [ + "array|false dns_get_record(string hostname [, int type[, array authns, array addtl]])", + "Get any Resource Record corresponding to a given Internet host name" + ], + "dom_attr_is_id": [ + "bool dom_attr_is_id()", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Attr-isId Since: DOM Level 3" + ], + "dom_characterdata_append_data": [ + "void dom_characterdata_append_data(string arg)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-32791A2F Since:" + ], + "dom_characterdata_delete_data": [ + "void dom_characterdata_delete_data(int offset, int count)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-7C603781 Since:" + ], + "dom_characterdata_insert_data": [ + "void dom_characterdata_insert_data(int offset, string arg)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-3EDB695F Since:" + ], + "dom_characterdata_replace_data": [ + "void dom_characterdata_replace_data(int offset, int count, string arg)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-E5CBA7FB Since:" + ], + "dom_characterdata_substring_data": [ + "string dom_characterdata_substring_data(int offset, int count)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-6531BCCF Since:" + ], + "dom_document_adopt_node": [ + "DOMNode dom_document_adopt_node(DOMNode source)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Document3-adoptNode Since: DOM Level 3" + ], + "dom_document_create_attribute": [ + "DOMAttr dom_document_create_attribute(string name)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1084891198 Since:" + ], + "dom_document_create_attribute_ns": [ + "DOMAttr dom_document_create_attribute_ns(string namespaceURI, string qualifiedName)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-DocCrAttrNS Since: DOM Level 2" + ], + "dom_document_create_cdatasection": [ + "DOMCdataSection dom_document_create_cdatasection(string data)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-D26C0AF8 Since:" + ], + "dom_document_create_comment": [ + "DOMComment dom_document_create_comment(string data)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1334481328 Since:" + ], + "dom_document_create_document_fragment": [ + "DOMDocumentFragment dom_document_create_document_fragment()", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-35CB04B5 Since:" + ], + "dom_document_create_element": [ + "DOMElement dom_document_create_element(string tagName [, string value])", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-2141741547 Since:" + ], + "dom_document_create_element_ns": [ + "DOMElement dom_document_create_element_ns(string namespaceURI, string qualifiedName [,string value])", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-DocCrElNS Since: DOM Level 2" + ], + "dom_document_create_entity_reference": [ + "DOMEntityReference dom_document_create_entity_reference(string name)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-392B75AE Since:" + ], + "dom_document_create_processing_instruction": [ + "DOMProcessingInstruction dom_document_create_processing_instruction(string target, string data)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-135944439 Since:" + ], + "dom_document_create_text_node": [ + "DOMText dom_document_create_text_node(string data)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1975348127 Since:" + ], + "dom_document_get_element_by_id": [ + "DOMElement dom_document_get_element_by_id(string elementId)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-getElBId Since: DOM Level 2" + ], + "dom_document_get_elements_by_tag_name": [ + "DOMNodeList dom_document_get_elements_by_tag_name(string tagname)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-A6C9094 Since:" + ], + "dom_document_get_elements_by_tag_name_ns": [ + "DOMNodeList dom_document_get_elements_by_tag_name_ns(string namespaceURI, string localName)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-getElBTNNS Since: DOM Level 2" + ], + "dom_document_import_node": [ + "DOMNode dom_document_import_node(DOMNode importedNode, bool deep)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Core-Document-importNode Since: DOM Level 2" + ], + "dom_document_load": [ + "DOMNode dom_document_load(string source [, int options])", + "URL: http://www.w3.org/TR/DOM-Level-3-LS/load-save.html#LS-DocumentLS-load Since: DOM Level 3" + ], + "dom_document_load_html": [ + "DOMNode dom_document_load_html(string source)", + "Since: DOM extended" + ], + "dom_document_load_html_file": [ + "DOMNode dom_document_load_html_file(string source)", + "Since: DOM extended" + ], + "dom_document_loadxml": [ + "DOMNode dom_document_loadxml(string source [, int options])", + "URL: http://www.w3.org/TR/DOM-Level-3-LS/load-save.html#LS-DocumentLS-loadXML Since: DOM Level 3" + ], + "dom_document_normalize_document": [ + "void dom_document_normalize_document()", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Document3-normalizeDocument Since: DOM Level 3" + ], + "dom_document_relaxNG_validate_file": [ + "bool dom_document_relaxNG_validate_file(string filename); */", + "PHP_FUNCTION(dom_document_relaxNG_validate_file) { _dom_document_relaxNG_validate(INTERNAL_FUNCTION_PARAM_PASSTHRU, DOM_LOAD_FILE); } /* }}} end dom_document_relaxNG_validate_file" + ], + "dom_document_relaxNG_validate_xml": [ + "bool dom_document_relaxNG_validate_xml(string source); */", + "PHP_FUNCTION(dom_document_relaxNG_validate_xml) { _dom_document_relaxNG_validate(INTERNAL_FUNCTION_PARAM_PASSTHRU, DOM_LOAD_STRING); } /* }}} end dom_document_relaxNG_validate_xml" + ], + "dom_document_rename_node": [ + "DOMNode dom_document_rename_node(node n, string namespaceURI, string qualifiedName)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Document3-renameNode Since: DOM Level 3" + ], + "dom_document_save": [ + "int dom_document_save(string file)", + "Convenience method to save to file" + ], + "dom_document_save_html": [ + "string dom_document_save_html()", + "Convenience method to output as html" + ], + "dom_document_save_html_file": [ + "int dom_document_save_html_file(string file)", + "Convenience method to save to file as html" + ], + "dom_document_savexml": [ + "string dom_document_savexml([node n])", + "URL: http://www.w3.org/TR/DOM-Level-3-LS/load-save.html#LS-DocumentLS-saveXML Since: DOM Level 3" + ], + "dom_document_schema_validate": [ + "bool dom_document_schema_validate(string source); */", + "PHP_FUNCTION(dom_document_schema_validate_xml) { _dom_document_schema_validate(INTERNAL_FUNCTION_PARAM_PASSTHRU, DOM_LOAD_STRING); } /* }}} end dom_document_schema_validate" + ], + "dom_document_schema_validate_file": [ + "bool dom_document_schema_validate_file(string filename); */", + "PHP_FUNCTION(dom_document_schema_validate_file) { _dom_document_schema_validate(INTERNAL_FUNCTION_PARAM_PASSTHRU, DOM_LOAD_FILE); } /* }}} end dom_document_schema_validate_file" + ], + "dom_document_validate": [ + "bool dom_document_validate()", + "Since: DOM extended" + ], + "dom_document_xinclude": [ + "int dom_document_xinclude([int options])", + "Substitutues xincludes in a DomDocument" + ], + "dom_domconfiguration_can_set_parameter": [ + "bool dom_domconfiguration_can_set_parameter(string name, domuserdata value)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMConfiguration-canSetParameter Since:" + ], + "dom_domconfiguration_get_parameter": [ + "domdomuserdata dom_domconfiguration_get_parameter(string name)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMConfiguration-getParameter Since:" + ], + "dom_domconfiguration_set_parameter": [ + "dom_void dom_domconfiguration_set_parameter(string name, domuserdata value)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMConfiguration-property Since:" + ], + "dom_domerrorhandler_handle_error": [ + "dom_bool dom_domerrorhandler_handle_error(domerror error)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-ERRORS-DOMErrorHandler-handleError Since:" + ], + "dom_domimplementation_create_document": [ + "DOMDocument dom_domimplementation_create_document(string namespaceURI, string qualifiedName, DOMDocumentType doctype)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Level-2-Core-DOM-createDocument Since: DOM Level 2" + ], + "dom_domimplementation_create_document_type": [ + "DOMDocumentType dom_domimplementation_create_document_type(string qualifiedName, string publicId, string systemId)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Level-2-Core-DOM-createDocType Since: DOM Level 2" + ], + "dom_domimplementation_get_feature": [ + "DOMNode dom_domimplementation_get_feature(string feature, string version)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMImplementation3-getFeature Since: DOM Level 3" + ], + "dom_domimplementation_has_feature": [ + "bool dom_domimplementation_has_feature(string feature, string version)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-5CED94D7 Since:" + ], + "dom_domimplementationlist_item": [ + "domdomimplementation dom_domimplementationlist_item(int index)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMImplementationList-item Since:" + ], + "dom_domimplementationsource_get_domimplementation": [ + "domdomimplementation dom_domimplementationsource_get_domimplementation(string features)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-getDOMImpl Since:" + ], + "dom_domimplementationsource_get_domimplementations": [ + "domimplementationlist dom_domimplementationsource_get_domimplementations(string features)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-getDOMImpls Since:" + ], + "dom_domstringlist_item": [ + "domstring dom_domstringlist_item(int index)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMStringList-item Since:" + ], + "dom_element_get_attribute": [ + "string dom_element_get_attribute(string name)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-666EE0F9 Since:" + ], + "dom_element_get_attribute_node": [ + "DOMAttr dom_element_get_attribute_node(string name)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-217A91B8 Since:" + ], + "dom_element_get_attribute_node_ns": [ + "DOMAttr dom_element_get_attribute_node_ns(string namespaceURI, string localName)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElGetAtNodeNS Since: DOM Level 2" + ], + "dom_element_get_attribute_ns": [ + "string dom_element_get_attribute_ns(string namespaceURI, string localName)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElGetAttrNS Since: DOM Level 2" + ], + "dom_element_get_elements_by_tag_name": [ + "DOMNodeList dom_element_get_elements_by_tag_name(string name)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1938918D Since:" + ], + "dom_element_get_elements_by_tag_name_ns": [ + "DOMNodeList dom_element_get_elements_by_tag_name_ns(string namespaceURI, string localName)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-A6C90942 Since: DOM Level 2" + ], + "dom_element_has_attribute": [ + "bool dom_element_has_attribute(string name)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElHasAttr Since: DOM Level 2" + ], + "dom_element_has_attribute_ns": [ + "bool dom_element_has_attribute_ns(string namespaceURI, string localName)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElHasAttrNS Since: DOM Level 2" + ], + "dom_element_remove_attribute": [ + "void dom_element_remove_attribute(string name)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-6D6AC0F9 Since:" + ], + "dom_element_remove_attribute_node": [ + "DOMAttr dom_element_remove_attribute_node(DOMAttr oldAttr)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-D589198 Since:" + ], + "dom_element_remove_attribute_ns": [ + "void dom_element_remove_attribute_ns(string namespaceURI, string localName)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElRemAtNS Since: DOM Level 2" + ], + "dom_element_set_attribute": [ + "void dom_element_set_attribute(string name, string value)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-F68F082 Since:" + ], + "dom_element_set_attribute_node": [ + "DOMAttr dom_element_set_attribute_node(DOMAttr newAttr)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-887236154 Since:" + ], + "dom_element_set_attribute_node_ns": [ + "DOMAttr dom_element_set_attribute_node_ns(DOMAttr newAttr)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetAtNodeNS Since: DOM Level 2" + ], + "dom_element_set_attribute_ns": [ + "void dom_element_set_attribute_ns(string namespaceURI, string qualifiedName, string value)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetAttrNS Since: DOM Level 2" + ], + "dom_element_set_id_attribute": [ + "void dom_element_set_id_attribute(string name, bool isId)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetIdAttr Since: DOM Level 3" + ], + "dom_element_set_id_attribute_node": [ + "void dom_element_set_id_attribute_node(attr idAttr, bool isId)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetIdAttrNode Since: DOM Level 3" + ], + "dom_element_set_id_attribute_ns": [ + "void dom_element_set_id_attribute_ns(string namespaceURI, string localName, bool isId)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetIdAttrNS Since: DOM Level 3" + ], + "dom_import_simplexml": [ + "somNode dom_import_simplexml(sxeobject node)", + "Get a simplexml_element object from dom to allow for processing" + ], + "dom_namednodemap_get_named_item": [ + "DOMNode dom_namednodemap_get_named_item(string name)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1074577549 Since:" + ], + "dom_namednodemap_get_named_item_ns": [ + "DOMNode dom_namednodemap_get_named_item_ns(string namespaceURI, string localName)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-getNamedItemNS Since: DOM Level 2" + ], + "dom_namednodemap_item": [ + "DOMNode dom_namednodemap_item(int index)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-349467F9 Since:" + ], + "dom_namednodemap_remove_named_item": [ + "DOMNode dom_namednodemap_remove_named_item(string name)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-D58B193 Since:" + ], + "dom_namednodemap_remove_named_item_ns": [ + "DOMNode dom_namednodemap_remove_named_item_ns(string namespaceURI, string localName)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-removeNamedItemNS Since: DOM Level 2" + ], + "dom_namednodemap_set_named_item": [ + "DOMNode dom_namednodemap_set_named_item(DOMNode arg)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1025163788 Since:" + ], + "dom_namednodemap_set_named_item_ns": [ + "DOMNode dom_namednodemap_set_named_item_ns(DOMNode arg)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-setNamedItemNS Since: DOM Level 2" + ], + "dom_namelist_get_name": [ + "string dom_namelist_get_name(int index)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#NameList-getName Since:" + ], + "dom_namelist_get_namespace_uri": [ + "string dom_namelist_get_namespace_uri(int index)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#NameList-getNamespaceURI Since:" + ], + "dom_node_append_child": [ + "DomNode dom_node_append_child(DomNode newChild)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-184E7107 Since:" + ], + "dom_node_clone_node": [ + "DomNode dom_node_clone_node(bool deep)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-3A0ED0A4 Since:" + ], + "dom_node_compare_document_position": [ + "short dom_node_compare_document_position(DomNode other)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-compareDocumentPosition Since: DOM Level 3" + ], + "dom_node_get_feature": [ + "DomNode dom_node_get_feature(string feature, string version)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-getFeature Since: DOM Level 3" + ], + "dom_node_get_user_data": [ + "mixed dom_node_get_user_data(string key)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-getUserData Since: DOM Level 3" + ], + "dom_node_has_attributes": [ + "bool dom_node_has_attributes()", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-NodeHasAttrs Since: DOM Level 2" + ], + "dom_node_has_child_nodes": [ + "bool dom_node_has_child_nodes()", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-810594187 Since:" + ], + "dom_node_insert_before": [ + "domnode dom_node_insert_before(DomNode newChild, DomNode refChild)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-952280727 Since:" + ], + "dom_node_is_default_namespace": [ + "bool dom_node_is_default_namespace(string namespaceURI)", + "URL: http://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-isDefaultNamespace Since: DOM Level 3" + ], + "dom_node_is_equal_node": [ + "bool dom_node_is_equal_node(DomNode arg)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-isEqualNode Since: DOM Level 3" + ], + "dom_node_is_same_node": [ + "bool dom_node_is_same_node(DomNode other)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-isSameNode Since: DOM Level 3" + ], + "dom_node_is_supported": [ + "bool dom_node_is_supported(string feature, string version)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Level-2-Core-Node-supports Since: DOM Level 2" + ], + "dom_node_lookup_namespace_uri": [ + "string dom_node_lookup_namespace_uri(string prefix)", + "URL: http://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-lookupNamespaceURI Since: DOM Level 3" + ], + "dom_node_lookup_prefix": [ + "string dom_node_lookup_prefix(string namespaceURI)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-lookupNamespacePrefix Since: DOM Level 3" + ], + "dom_node_normalize": [ + "void dom_node_normalize()", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-normalize Since:" + ], + "dom_node_remove_child": [ + "DomNode dom_node_remove_child(DomNode oldChild)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1734834066 Since:" + ], + "dom_node_replace_child": [ + "DomNode dom_node_replace_child(DomNode newChild, DomNode oldChild)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-785887307 Since:" + ], + "dom_node_set_user_data": [ + "mixed dom_node_set_user_data(string key, mixed data, userdatahandler handler)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-setUserData Since: DOM Level 3" + ], + "dom_nodelist_item": [ + "DOMNode dom_nodelist_item(int index)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-844377136 Since:" + ], + "dom_string_extend_find_offset16": [ + "int dom_string_extend_find_offset16(int offset32)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#i18n-methods-StringExtend-findOffset16 Since:" + ], + "dom_string_extend_find_offset32": [ + "int dom_string_extend_find_offset32(int offset16)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#i18n-methods-StringExtend-findOffset32 Since:" + ], + "dom_text_is_whitespace_in_element_content": [ + "bool dom_text_is_whitespace_in_element_content()", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Text3-isWhitespaceInElementContent Since: DOM Level 3" + ], + "dom_text_replace_whole_text": [ + "DOMText dom_text_replace_whole_text(string content)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Text3-replaceWholeText Since: DOM Level 3" + ], + "dom_text_split_text": [ + "DOMText dom_text_split_text(int offset)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-38853C1D Since:" + ], + "dom_userdatahandler_handle": [ + "dom_void dom_userdatahandler_handle(short operation, string key, domobject data, node src, node dst)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-handleUserDataEvent Since:" + ], + "dom_xpath_evaluate": [ + "mixed dom_xpath_evaluate(string expr [,DOMNode context])", + "" + ], + "dom_xpath_query": [ + "DOMNodeList dom_xpath_query(string expr [,DOMNode context])", + "" + ], + "dom_xpath_register_ns": [ + "bool dom_xpath_register_ns(string prefix, string uri)", + "" + ], + "dom_xpath_register_php_functions": [ + "void dom_xpath_register_php_functions()", + "" + ], + "each": [ + "array each(array arr)", + "Return the currently pointed key..value pair in the passed array, and advance the pointer to the next element" + ], + "easter_date": [ + "int easter_date([int year])", + "Return the timestamp of midnight on Easter of a given year (defaults to current year)" + ], + "easter_days": [ + "int easter_days([int year, [int method]])", + "Return the number of days after March 21 that Easter falls on for a given year (defaults to current year)" + ], + "echo": [ + "void echo(string arg1 [, string ...])", + "Output one or more strings" + ], + "empty": [ + "bool empty(mixed var)", + "Determine whether a variable is empty" + ], + "enchant_broker_describe": [ + "array enchant_broker_describe(resource broker)", + "Enumerates the Enchant providers and tells you some rudimentary information about them. The same info is provided through phpinfo()" + ], + "enchant_broker_dict_exists": [ + "bool enchant_broker_dict_exists(resource broker, string tag)", + "Whether a dictionary exists or not. Using non-empty tag" + ], + "enchant_broker_free": [ + "bool enchant_broker_free(resource broker)", + "Destroys the broker object and its dictionnaries" + ], + "enchant_broker_free_dict": [ + "resource enchant_broker_free_dict(resource dict)", + "Free the dictionary resource" + ], + "enchant_broker_get_dict_path": [ + "string enchant_broker_get_dict_path(resource broker, int dict_type)", + "Get the directory path for a given backend, works with ispell and myspell" + ], + "enchant_broker_get_error": [ + "string enchant_broker_get_error(resource broker)", + "Returns the last error of the broker" + ], + "enchant_broker_init": [ + "resource enchant_broker_init()", + "create a new broker object capable of requesting" + ], + "enchant_broker_list_dicts": [ + "string enchant_broker_list_dicts(resource broker)", + "Lists the dictionaries available for the given broker" + ], + "enchant_broker_request_dict": [ + "resource enchant_broker_request_dict(resource broker, string tag)", + "create a new dictionary using tag, the non-empty language tag you wish to request a dictionary for (\"en_US\", \"de_DE\", ...)" + ], + "enchant_broker_request_pwl_dict": [ + "resource enchant_broker_request_pwl_dict(resource broker, string filename)", + "creates a dictionary using a PWL file. A PWL file is personal word file one word per line. It must exist before the call." + ], + "enchant_broker_set_dict_path": [ + "bool enchant_broker_set_dict_path(resource broker, int dict_type, string value)", + "Set the directory path for a given backend, works with ispell and myspell" + ], + "enchant_broker_set_ordering": [ + "bool enchant_broker_set_ordering(resource broker, string tag, string ordering)", + "Declares a preference of dictionaries to use for the language described/referred to by 'tag'. The ordering is a comma delimited list of provider names. As a special exception, the \"*\" tag can be used as a language tag to declare a default ordering for any language that does not explictly declare an ordering." + ], + "enchant_dict_add_to_personal": [ + "void enchant_dict_add_to_personal(resource dict, string word)", + "add 'word' to personal word list" + ], + "enchant_dict_add_to_session": [ + "void enchant_dict_add_to_session(resource dict, string word)", + "add 'word' to this spell-checking session" + ], + "enchant_dict_check": [ + "bool enchant_dict_check(resource dict, string word)", + "If the word is correctly spelled return true, otherwise return false" + ], + "enchant_dict_describe": [ + "array enchant_dict_describe(resource dict)", + "Describes an individual dictionary 'dict'" + ], + "enchant_dict_get_error": [ + "string enchant_dict_get_error(resource dict)", + "Returns the last error of the current spelling-session" + ], + "enchant_dict_is_in_session": [ + "bool enchant_dict_is_in_session(resource dict, string word)", + "whether or not 'word' exists in this spelling-session" + ], + "enchant_dict_quick_check": [ + "bool enchant_dict_quick_check(resource dict, string word [, array &suggestions])", + "If the word is correctly spelled return true, otherwise return false, if suggestions variable is provided, fill it with spelling alternatives." + ], + "enchant_dict_store_replacement": [ + "void enchant_dict_store_replacement(resource dict, string mis, string cor)", + "add a correction for 'mis' using 'cor'. Notes that you replaced @mis with @cor, so it's possibly more likely that future occurrences of @mis will be replaced with @cor. So it might bump @cor up in the suggestion list." + ], + "enchant_dict_suggest": [ + "array enchant_dict_suggest(resource dict, string word)", + "Will return a list of values if any of those pre-conditions are not met." + ], + "end": [ + "mixed end(array array_arg)", + "Advances array argument's internal pointer to the last element and return it" + ], + "ereg": [ + "int ereg(string pattern, string string [, array registers])", + "Regular expression match" + ], + "ereg_replace": [ + "string ereg_replace(string pattern, string replacement, string string)", + "Replace regular expression" + ], + "eregi": [ + "int eregi(string pattern, string string [, array registers])", + "Case-insensitive regular expression match" + ], + "eregi_replace": [ + "string eregi_replace(string pattern, string replacement, string string)", + "Case insensitive replace regular expression" + ], + "error_get_last": [ + "array error_get_last()", + "Get the last occurred error as associative array. Returns NULL if there hasn't been an error yet." + ], + "error_log": [ + "bool error_log(string message [, int message_type [, string destination [, string extra_headers]]])", + "Send an error message somewhere" + ], + "error_reporting": [ + "int error_reporting([int new_error_level])", + "Return the current error_reporting level, and if an argument was passed - change to the new level" + ], + "escapeshellarg": [ + "string escapeshellarg(string arg)", + "Quote and escape an argument for use in a shell command" + ], + "escapeshellcmd": [ + "string escapeshellcmd(string command)", + "Escape shell metacharacters" + ], + "exec": [ + "string exec(string command [, array &output [, int &return_value]])", + "Execute an external program" + ], + "exif_imagetype": [ + "int exif_imagetype(string imagefile)", + "Get the type of an image" + ], + "exif_read_data": [ + "array exif_read_data(string filename [, sections_needed [, sub_arrays[, read_thumbnail]]])", + "Reads header data from the JPEG/TIFF image filename and optionally reads the internal thumbnails" + ], + "exif_tagname": [ + "string exif_tagname(index)", + "Get headername for index or false if not defined" + ], + "exif_thumbnail": [ + "string exif_thumbnail(string filename [, &width, &height [, &imagetype]])", + "Reads the embedded thumbnail" + ], + "exit": [ + "void exit([mixed status])", + "Output a message and terminate the current script" + ], + "exp": [ + "float exp(float number)", + "Returns e raised to the power of the number" + ], + "explode": [ + "array explode(string separator, string str [, int limit])", + "Splits a string on string separator and return array of components. If limit is positive only limit number of components is returned. If limit is negative all components except the last abs(limit) are returned." + ], + "expm1": [ + "float expm1(float number)", + "Returns exp(number) - 1, computed in a way that accurate even when the value of number is close to zero" + ], + "extension_loaded": [ + "bool extension_loaded(string extension_name)", + "Returns true if the named extension is loaded" + ], + "extract": [ + "int extract(array var_array [, int extract_type [, string prefix]])", + "Imports variables into symbol table from an array" + ], + "ezmlm_hash": [ + "int ezmlm_hash(string addr)", + "Calculate EZMLM list hash value." + ], + "fclose": [ + "bool fclose(resource fp)", + "Close an open file pointer" + ], + "feof": [ + "bool feof(resource fp)", + "Test for end-of-file on a file pointer" + ], + "fflush": [ + "bool fflush(resource fp)", + "Flushes output" + ], + "fgetc": [ + "string fgetc(resource fp)", + "Get a character from file pointer" + ], + "fgetcsv": [ + "array fgetcsv(resource fp [,int length [, string delimiter [, string enclosure [, string escape]]]])", + "Get line from file pointer and parse for CSV fields" + ], + "fgets": [ + "string fgets(resource fp[, int length])", + "Get a line from file pointer" + ], + "fgetss": [ + "string fgetss(resource fp [, int length [, string allowable_tags]])", + "Get a line from file pointer and strip HTML tags" + ], + "file": [ + "array file(string filename [, int flags[, resource context]])", + "Read entire file into an array" + ], + "file_exists": [ + "bool file_exists(string filename)", + "Returns true if filename exists" + ], + "file_get_contents": [ + "string file_get_contents(string filename [, bool use_include_path [, resource context [, long offset [, long maxlen]]]])", + "Read the entire file into a string" + ], + "file_put_contents": [ + "int file_put_contents(string file, mixed data [, int flags [, resource context]])", + "Write/Create a file with contents data and return the number of bytes written" + ], + "fileatime": [ + "int fileatime(string filename)", + "Get last access time of file" + ], + "filectime": [ + "int filectime(string filename)", + "Get inode modification time of file" + ], + "filegroup": [ + "int filegroup(string filename)", + "Get file group" + ], + "fileinode": [ + "int fileinode(string filename)", + "Get file inode" + ], + "filemtime": [ + "int filemtime(string filename)", + "Get last modification time of file" + ], + "fileowner": [ + "int fileowner(string filename)", + "Get file owner" + ], + "fileperms": [ + "int fileperms(string filename)", + "Get file permissions" + ], + "filesize": [ + "int filesize(string filename)", + "Get file size" + ], + "filetype": [ + "string filetype(string filename)", + "Get file type" + ], + "filter_has_var": [ + "mixed filter_has_var(constant type, string variable_name)", + "* Returns true if the variable with the name 'name' exists in source." + ], + "filter_input": [ + "mixed filter_input(constant type, string variable_name [, long filter [, mixed options]])", + "* Returns the filtered variable 'name'* from source `type`." + ], + "filter_input_array": [ + "mixed filter_input_array(constant type, [, mixed options]])", + "* Returns an array with all arguments defined in 'definition'." + ], + "filter_var": [ + "mixed filter_var(mixed variable [, long filter [, mixed options]])", + "* Returns the filtered version of the vriable." + ], + "filter_var_array": [ + "mixed filter_var_array(array data, [, mixed options]])", + "* Returns an array with all arguments defined in 'definition'." + ], + "finfo_buffer": [ + "string finfo_buffer(resource finfo, char *string [, int options [, resource context]])", + "Return infromation about a string buffer." + ], + "finfo_close": [ + "resource finfo_close(resource finfo)", + "Close fileinfo resource." + ], + "finfo_file": [ + "string finfo_file(resource finfo, char *file_name [, int options [, resource context]])", + "Return information about a file." + ], + "finfo_open": [ + "resource finfo_open([int options [, string arg]])", + "Create a new fileinfo resource." + ], + "finfo_set_flags": [ + "bool finfo_set_flags(resource finfo, int options)", + "Set libmagic configuration options." + ], + "floatval": [ + "float floatval(mixed var)", + "Get the float value of a variable" + ], + "flock": [ + "bool flock(resource fp, int operation [, int &wouldblock])", + "Portable file locking" + ], + "floor": [ + "float floor(float number)", + "Returns the next lowest integer value from the number" + ], + "flush": [ + "void flush()", + "Flush the output buffer" + ], + "fmod": [ + "float fmod(float x, float y)", + "Returns the remainder of dividing x by y as a float" + ], + "fnmatch": [ + "bool fnmatch(string pattern, string filename [, int flags])", + "Match filename against pattern" + ], + "fopen": [ + "resource fopen(string filename, string mode [, bool use_include_path [, resource context]])", + "Open a file or a URL and return a file pointer" + ], + "forward_static_call": [ + "mixed forward_static_call(mixed function_name [, mixed parmeter] [, mixed ...])", + "Call a user function which is the first parameter" + ], + "fpassthru": [ + "int fpassthru(resource fp)", + "Output all remaining data from a file pointer" + ], + "fprintf": [ + "int fprintf(resource stream, string format [, mixed arg1 [, mixed ...]])", + "Output a formatted string into a stream" + ], + "fputcsv": [ + "int fputcsv(resource fp, array fields [, string delimiter [, string enclosure]])", + "Format line as CSV and write to file pointer" + ], + "fread": [ + "string fread(resource fp, int length)", + "Binary-safe file read" + ], + "frenchtojd": [ + "int frenchtojd(int month, int day, int year)", + "Converts a french republic calendar date to julian day count" + ], + "fscanf": [ + "mixed fscanf(resource stream, string format [, string ...])", + "Implements a mostly ANSI compatible fscanf()" + ], + "fseek": [ + "int fseek(resource fp, int offset [, int whence])", + "Seek on a file pointer" + ], + "fsockopen": [ + "resource fsockopen(string hostname, int port [, int errno [, string errstr [, float timeout]]])", + "Open Internet or Unix domain socket connection" + ], + "fstat": [ + "array fstat(resource fp)", + "Stat() on a filehandle" + ], + "ftell": [ + "int ftell(resource fp)", + "Get file pointer's read/write position" + ], + "ftok": [ + "int ftok(string pathname, string proj)", + "Convert a pathname and a project identifier to a System V IPC key" + ], + "ftp_alloc": [ + "bool ftp_alloc(resource stream, int size[, &response])", + "Attempt to allocate space on the remote FTP server" + ], + "ftp_cdup": [ + "bool ftp_cdup(resource stream)", + "Changes to the parent directory" + ], + "ftp_chdir": [ + "bool ftp_chdir(resource stream, string directory)", + "Changes directories" + ], + "ftp_chmod": [ + "int ftp_chmod(resource stream, int mode, string filename)", + "Sets permissions on a file" + ], + "ftp_close": [ + "bool ftp_close(resource stream)", + "Closes the FTP stream" + ], + "ftp_connect": [ + "resource ftp_connect(string host [, int port [, int timeout]])", + "Opens a FTP stream" + ], + "ftp_delete": [ + "bool ftp_delete(resource stream, string file)", + "Deletes a file" + ], + "ftp_exec": [ + "bool ftp_exec(resource stream, string command)", + "Requests execution of a program on the FTP server" + ], + "ftp_fget": [ + "bool ftp_fget(resource stream, resource fp, string remote_file, int mode[, int resumepos])", + "Retrieves a file from the FTP server and writes it to an open file" + ], + "ftp_fput": [ + "bool ftp_fput(resource stream, string remote_file, resource fp, int mode[, int startpos])", + "Stores a file from an open file to the FTP server" + ], + "ftp_get": [ + "bool ftp_get(resource stream, string local_file, string remote_file, int mode[, int resume_pos])", + "Retrieves a file from the FTP server and writes it to a local file" + ], + "ftp_get_option": [ + "mixed ftp_get_option(resource stream, int option)", + "Gets an FTP option" + ], + "ftp_login": [ + "bool ftp_login(resource stream, string username, string password)", + "Logs into the FTP server" + ], + "ftp_mdtm": [ + "int ftp_mdtm(resource stream, string filename)", + "Returns the last modification time of the file, or -1 on error" + ], + "ftp_mkdir": [ + "string ftp_mkdir(resource stream, string directory)", + "Creates a directory and returns the absolute path for the new directory or false on error" + ], + "ftp_nb_continue": [ + "int ftp_nb_continue(resource stream)", + "Continues retrieving/sending a file nbronously" + ], + "ftp_nb_fget": [ + "int ftp_nb_fget(resource stream, resource fp, string remote_file, int mode[, int resumepos])", + "Retrieves a file from the FTP server asynchronly and writes it to an open file" + ], + "ftp_nb_fput": [ + "int ftp_nb_fput(resource stream, string remote_file, resource fp, int mode[, int startpos])", + "Stores a file from an open file to the FTP server nbronly" + ], + "ftp_nb_get": [ + "int ftp_nb_get(resource stream, string local_file, string remote_file, int mode[, int resume_pos])", + "Retrieves a file from the FTP server nbhronly and writes it to a local file" + ], + "ftp_nb_put": [ + "int ftp_nb_put(resource stream, string remote_file, string local_file, int mode[, int startpos])", + "Stores a file on the FTP server" + ], + "ftp_nlist": [ + "array ftp_nlist(resource stream, string directory)", + "Returns an array of filenames in the given directory" + ], + "ftp_pasv": [ + "bool ftp_pasv(resource stream, bool pasv)", + "Turns passive mode on or off" + ], + "ftp_put": [ + "bool ftp_put(resource stream, string remote_file, string local_file, int mode[, int startpos])", + "Stores a file on the FTP server" + ], + "ftp_pwd": [ + "string ftp_pwd(resource stream)", + "Returns the present working directory" + ], + "ftp_raw": [ + "array ftp_raw(resource stream, string command)", + "Sends a literal command to the FTP server" + ], + "ftp_rawlist": [ + "array ftp_rawlist(resource stream, string directory [, bool recursive])", + "Returns a detailed listing of a directory as an array of output lines" + ], + "ftp_rename": [ + "bool ftp_rename(resource stream, string src, string dest)", + "Renames the given file to a new path" + ], + "ftp_rmdir": [ + "bool ftp_rmdir(resource stream, string directory)", + "Removes a directory" + ], + "ftp_set_option": [ + "bool ftp_set_option(resource stream, int option, mixed value)", + "Sets an FTP option" + ], + "ftp_site": [ + "bool ftp_site(resource stream, string cmd)", + "Sends a SITE command to the server" + ], + "ftp_size": [ + "int ftp_size(resource stream, string filename)", + "Returns the size of the file, or -1 on error" + ], + "ftp_ssl_connect": [ + "resource ftp_ssl_connect(string host [, int port [, int timeout]])", + "Opens a FTP-SSL stream" + ], + "ftp_systype": [ + "string ftp_systype(resource stream)", + "Returns the system type identifier" + ], + "ftruncate": [ + "bool ftruncate(resource fp, int size)", + "Truncate file to 'size' length" + ], + "func_get_arg": [ + "mixed func_get_arg(int arg_num)", + "Get the $arg_num'th argument that was passed to the function" + ], + "func_get_args": [ + "array func_get_args()", + "Get an array of the arguments that were passed to the function" + ], + "func_num_args": [ + "int func_num_args()", + "Get the number of arguments that were passed to the function" + ], + "function ": ["", ""], + "foreach ": ["", ""], + "function_exists": [ + "bool function_exists(string function_name)", + "Checks if the function exists" + ], + "fwrite": [ + "int fwrite(resource fp, string str [, int length])", + "Binary-safe file write" + ], + "gc_collect_cycles": [ + "int gc_collect_cycles()", + "Forces collection of any existing garbage cycles. Returns number of freed zvals" + ], + "gc_disable": [ + "void gc_disable()", + "Deactivates the circular reference collector" + ], + "gc_enable": [ + "void gc_enable()", + "Activates the circular reference collector" + ], + "gc_enabled": [ + "void gc_enabled()", + "Returns status of the circular reference collector" + ], + "gd_info": [ + "array gd_info()", + "" + ], + "getKeywords": [ + "static array getKeywords(string $locale) {", + "* return an associative array containing keyword-value * pairs for this locale. The keys are keys to the array * }}}" + ], + "get_browser": [ + "mixed get_browser([string browser_name [, bool return_array]])", + "Get information about the capabilities of a browser. If browser_name is omitted or null, HTTP_USER_AGENT is used. Returns an object by default; if return_array is true, returns an array." + ], + "get_called_class": [ + "string get_called_class()", + "Retrieves the \"Late Static Binding\" class name" + ], + "get_cfg_var": [ + "mixed get_cfg_var(string option_name)", + "Get the value of a PHP configuration option" + ], + "get_class": [ + "string get_class([object object])", + "Retrieves the class name" + ], + "get_class_methods": [ + "array get_class_methods(mixed class)", + "Returns an array of method names for class or class instance." + ], + "get_class_vars": [ + "array get_class_vars(string class_name)", + "Returns an array of default properties of the class." + ], + "get_current_user": [ + "string get_current_user()", + "Get the name of the owner of the current PHP script" + ], + "get_declared_classes": [ + "array get_declared_classes()", + "Returns an array of all declared classes." + ], + "get_declared_interfaces": [ + "array get_declared_interfaces()", + "Returns an array of all declared interfaces." + ], + "get_defined_constants": [ + "array get_defined_constants([bool categorize])", + "Return an array containing the names and values of all defined constants" + ], + "get_defined_functions": [ + "array get_defined_functions()", + "Returns an array of all defined functions" + ], + "get_defined_vars": [ + "array get_defined_vars()", + "Returns an associative array of names and values of all currently defined variable names (variables in the current scope)" + ], + "get_display_language": [ + "static string get_display_language($locale[, $in_locale = null])", + "* gets the language for the $locale in $in_locale or default_locale" + ], + "get_display_name": [ + "static string get_display_name($locale[, $in_locale = null])", + "* gets the name for the $locale in $in_locale or default_locale" + ], + "get_display_region": [ + "static string get_display_region($locale, $in_locale = null)", + "* gets the region for the $locale in $in_locale or default_locale" + ], + "get_display_script": [ + "static string get_display_script($locale, $in_locale = null)", + "* gets the script for the $locale in $in_locale or default_locale" + ], + "get_extension_funcs": [ + "array get_extension_funcs(string extension_name)", + "Returns an array with the names of functions belonging to the named extension" + ], + "get_headers": [ + "array get_headers(string url[, int format])", + "fetches all the headers sent by the server in response to a HTTP request" + ], + "get_html_translation_table": [ + "array get_html_translation_table([int table [, int quote_style]])", + "Returns the internal translation table used by htmlspecialchars and htmlentities" + ], + "get_include_path": [ + "string get_include_path()", + "Get the current include_path configuration option" + ], + "get_included_files": [ + "array get_included_files()", + "Returns an array with the file names that were include_once()'d" + ], + "get_loaded_extensions": [ + "array get_loaded_extensions([bool zend_extensions])", + "Return an array containing names of loaded extensions" + ], + "get_magic_quotes_gpc": [ + "int get_magic_quotes_gpc()", + "Get the current active configuration setting of magic_quotes_gpc" + ], + "get_magic_quotes_runtime": [ + "int get_magic_quotes_runtime()", + "Get the current active configuration setting of magic_quotes_runtime" + ], + "get_meta_tags": [ + "array get_meta_tags(string filename [, bool use_include_path])", + "Extracts all meta tag content attributes from a file and returns an array" + ], + "get_object_vars": [ + "array get_object_vars(object obj)", + "Returns an array of object properties" + ], + "get_parent_class": [ + "string get_parent_class([mixed object])", + "Retrieves the parent class name for object or class or current scope." + ], + "get_resource_type": [ + "string get_resource_type(resource res)", + "Get the resource type name for a given resource" + ], + "getallheaders": [ + "array getallheaders()", + "" + ], + "getcwd": [ + "mixed getcwd()", + "Gets the current directory" + ], + "getdate": [ + "array getdate([int timestamp])", + "Get date/time information" + ], + "getenv": [ + "string getenv(string varname)", + "Get the value of an environment variable" + ], + "gethostbyaddr": [ + "string gethostbyaddr(string ip_address)", + "Get the Internet host name corresponding to a given IP address" + ], + "gethostbyname": [ + "string gethostbyname(string hostname)", + "Get the IP address corresponding to a given Internet host name" + ], + "gethostbynamel": [ + "array gethostbynamel(string hostname)", + "Return a list of IP addresses that a given hostname resolves to." + ], + "gethostname": [ + "string gethostname()", + "Get the host name of the current machine" + ], + "getimagesize": [ + "array getimagesize(string imagefile [, array info])", + "Get the size of an image as 4-element array" + ], + "getlastmod": [ + "int getlastmod()", + "Get time of last page modification" + ], + "getmygid": [ + "int getmygid()", + "Get PHP script owner's GID" + ], + "getmyinode": [ + "int getmyinode()", + "Get the inode of the current script being parsed" + ], + "getmypid": [ + "int getmypid()", + "Get current process ID" + ], + "getmyuid": [ + "int getmyuid()", + "Get PHP script owner's UID" + ], + "getopt": [ + "array getopt(string options [, array longopts])", + "Get options from the command line argument list" + ], + "getprotobyname": [ + "int getprotobyname(string name)", + "Returns protocol number associated with name as per /etc/protocols" + ], + "getprotobynumber": [ + "string getprotobynumber(int proto)", + "Returns protocol name associated with protocol number proto" + ], + "getrandmax": [ + "int getrandmax()", + "Returns the maximum value a random number can have" + ], + "getrusage": [ + "array getrusage([int who])", + "Returns an array of usage statistics" + ], + "getservbyname": [ + "int getservbyname(string service, string protocol)", + "Returns port associated with service. Protocol must be \"tcp\" or \"udp\"" + ], + "getservbyport": [ + "string getservbyport(int port, string protocol)", + "Returns service name associated with port. Protocol must be \"tcp\" or \"udp\"" + ], + "gettext": [ + "string gettext(string msgid)", + "Return the translation of msgid for the current domain, or msgid unaltered if a translation does not exist" + ], + "gettimeofday": [ + "array gettimeofday([bool get_as_float])", + "Returns the current time as array" + ], + "gettype": [ + "string gettype(mixed var)", + "Returns the type of the variable" + ], + "glob": [ + "array glob(string pattern [, int flags])", + "Find pathnames matching a pattern" + ], + "gmdate": [ + "string gmdate(string format [, long timestamp])", + "Format a GMT date/time" + ], + "gmmktime": [ + "int gmmktime([int hour [, int min [, int sec [, int mon [, int day [, int year]]]]]])", + "Get UNIX timestamp for a GMT date" + ], + "gmp_abs": [ + "resource gmp_abs(resource a)", + "Calculates absolute value" + ], + "gmp_add": [ + "resource gmp_add(resource a, resource b)", + "Add a and b" + ], + "gmp_and": [ + "resource gmp_and(resource a, resource b)", + "Calculates logical AND of a and b" + ], + "gmp_clrbit": [ + "void gmp_clrbit(resource &a, int index)", + "Clears bit in a" + ], + "gmp_cmp": [ + "int gmp_cmp(resource a, resource b)", + "Compares two numbers" + ], + "gmp_com": [ + "resource gmp_com(resource a)", + "Calculates one's complement of a" + ], + "gmp_div_q": [ + "resource gmp_div_q(resource a, resource b [, int round])", + "Divide a by b, returns quotient only" + ], + "gmp_div_qr": [ + "array gmp_div_qr(resource a, resource b [, int round])", + "Divide a by b, returns quotient and reminder" + ], + "gmp_div_r": [ + "resource gmp_div_r(resource a, resource b [, int round])", + "Divide a by b, returns reminder only" + ], + "gmp_divexact": [ + "resource gmp_divexact(resource a, resource b)", + "Divide a by b using exact division algorithm" + ], + "gmp_fact": [ + "resource gmp_fact(int a)", + "Calculates factorial function" + ], + "gmp_gcd": [ + "resource gmp_gcd(resource a, resource b)", + "Computes greatest common denominator (gcd) of a and b" + ], + "gmp_gcdext": [ + "array gmp_gcdext(resource a, resource b)", + "Computes G, S, and T, such that AS + BT = G = `gcd' (A, B)" + ], + "gmp_hamdist": [ + "int gmp_hamdist(resource a, resource b)", + "Calculates hamming distance between a and b" + ], + "gmp_init": [ + "resource gmp_init(mixed number [, int base])", + "Initializes GMP number" + ], + "gmp_intval": [ + "int gmp_intval(resource gmpnumber)", + "Gets signed long value of GMP number" + ], + "gmp_invert": [ + "resource gmp_invert(resource a, resource b)", + "Computes the inverse of a modulo b" + ], + "gmp_jacobi": [ + "int gmp_jacobi(resource a, resource b)", + "Computes Jacobi symbol" + ], + "gmp_legendre": [ + "int gmp_legendre(resource a, resource b)", + "Computes Legendre symbol" + ], + "gmp_mod": [ + "resource gmp_mod(resource a, resource b)", + "Computes a modulo b" + ], + "gmp_mul": [ + "resource gmp_mul(resource a, resource b)", + "Multiply a and b" + ], + "gmp_neg": [ + "resource gmp_neg(resource a)", + "Negates a number" + ], + "gmp_nextprime": [ + "resource gmp_nextprime(resource a)", + "Finds next prime of a" + ], + "gmp_or": [ + "resource gmp_or(resource a, resource b)", + "Calculates logical OR of a and b" + ], + "gmp_perfect_square": [ + "bool gmp_perfect_square(resource a)", + "Checks if a is an exact square" + ], + "gmp_popcount": [ + "int gmp_popcount(resource a)", + "Calculates the population count of a" + ], + "gmp_pow": [ + "resource gmp_pow(resource base, int exp)", + "Raise base to power exp" + ], + "gmp_powm": [ + "resource gmp_powm(resource base, resource exp, resource mod)", + "Raise base to power exp and take result modulo mod" + ], + "gmp_prob_prime": [ + "int gmp_prob_prime(resource a[, int reps])", + "Checks if a is \"probably prime\"" + ], + "gmp_random": [ + "resource gmp_random([int limiter])", + "Gets random number" + ], + "gmp_scan0": [ + "int gmp_scan0(resource a, int start)", + "Finds first zero bit" + ], + "gmp_scan1": [ + "int gmp_scan1(resource a, int start)", + "Finds first non-zero bit" + ], + "gmp_setbit": [ + "void gmp_setbit(resource &a, int index[, bool set_clear])", + "Sets or clear bit in a" + ], + "gmp_sign": [ + "int gmp_sign(resource a)", + "Gets the sign of the number" + ], + "gmp_sqrt": [ + "resource gmp_sqrt(resource a)", + "Takes integer part of square root of a" + ], + "gmp_sqrtrem": [ + "array gmp_sqrtrem(resource a)", + "Square root with remainder" + ], + "gmp_strval": [ + "string gmp_strval(resource gmpnumber [, int base])", + "Gets string representation of GMP number" + ], + "gmp_sub": [ + "resource gmp_sub(resource a, resource b)", + "Subtract b from a" + ], + "gmp_testbit": [ + "bool gmp_testbit(resource a, int index)", + "Tests if bit is set in a" + ], + "gmp_xor": [ + "resource gmp_xor(resource a, resource b)", + "Calculates logical exclusive OR of a and b" + ], + "gmstrftime": [ + "string gmstrftime(string format [, int timestamp])", + "Format a GMT/UCT time/date according to locale settings" + ], + "grapheme_extract": [ + "string grapheme_extract(string str, int size[, int extract_type[, int start[, int next]]])", + "Function to extract a sequence of default grapheme clusters" + ], + "grapheme_stripos": [ + "int grapheme_stripos(string haystack, string needle [, int offset ])", + "Find position of first occurrence of a string within another, ignoring case differences" + ], + "grapheme_stristr": [ + "string grapheme_stristr(string haystack, string needle[, bool part])", + "Finds first occurrence of a string within another" + ], + "grapheme_strlen": [ + "int grapheme_strlen(string str)", + "Get number of graphemes in a string" + ], + "grapheme_strpos": [ + "int grapheme_strpos(string haystack, string needle [, int offset ])", + "Find position of first occurrence of a string within another" + ], + "grapheme_strripos": [ + "int grapheme_strripos(string haystack, string needle [, int offset])", + "Find position of last occurrence of a string within another, ignoring case" + ], + "grapheme_strrpos": [ + "int grapheme_strrpos(string haystack, string needle [, int offset])", + "Find position of last occurrence of a string within another" + ], + "grapheme_strstr": [ + "string grapheme_strstr(string haystack, string needle[, bool part])", + "Finds first occurrence of a string within another" + ], + "grapheme_substr": [ + "string grapheme_substr(string str, int start [, int length])", + "Returns part of a string" + ], + "gregoriantojd": [ + "int gregoriantojd(int month, int day, int year)", + "Converts a gregorian calendar date to julian day count" + ], + "gzcompress": [ + "string gzcompress(string data [, int level])", + "Gzip-compress a string" + ], + "gzdeflate": [ + "string gzdeflate(string data [, int level])", + "Gzip-compress a string" + ], + "gzencode": [ + "string gzencode(string data [, int level [, int encoding_mode]])", + "GZ encode a string" + ], + "gzfile": [ + "array gzfile(string filename [, int use_include_path])", + "Read und uncompress entire .gz-file into an array" + ], + "gzinflate": [ + "string gzinflate(string data [, int length])", + "Unzip a gzip-compressed string" + ], + "gzopen": [ + "resource gzopen(string filename, string mode [, int use_include_path])", + "Open a .gz-file and return a .gz-file pointer" + ], + "gzuncompress": [ + "string gzuncompress(string data [, int length])", + "Unzip a gzip-compressed string" + ], + "hash": [ + "string hash(string algo, string data[, bool raw_output = false])", + "Generate a hash of a given input string Returns lowercase hexits by default" + ], + "hash_algos": [ + "array hash_algos()", + "Return a list of registered hashing algorithms" + ], + "hash_copy": [ + "resource hash_copy(resource context)", + "Copy hash resource" + ], + "hash_file": [ + "string hash_file(string algo, string filename[, bool raw_output = false])", + "Generate a hash of a given file Returns lowercase hexits by default" + ], + "hash_final": [ + "string hash_final(resource context[, bool raw_output=false])", + "Output resulting digest" + ], + "hash_hmac": [ + "string hash_hmac(string algo, string data, string key[, bool raw_output = false])", + "Generate a hash of a given input string with a key using HMAC Returns lowercase hexits by default" + ], + "hash_hmac_file": [ + "string hash_hmac_file(string algo, string filename, string key[, bool raw_output = false])", + "Generate a hash of a given file with a key using HMAC Returns lowercase hexits by default" + ], + "hash_init": [ + "resource hash_init(string algo[, int options, string key])", + "Initialize a hashing context" + ], + "hash_update": [ + "bool hash_update(resource context, string data)", + "Pump data into the hashing algorithm" + ], + "hash_update_file": [ + "bool hash_update_file(resource context, string filename[, resource context])", + "Pump data into the hashing algorithm from a file" + ], + "hash_update_stream": [ + "int hash_update_stream(resource context, resource handle[, integer length])", + "Pump data into the hashing algorithm from an open stream" + ], + "header": [ + "void header(string header [, bool replace, [int http_response_code]])", + "Sends a raw HTTP header" + ], + "header_remove": [ + "void header_remove([string name])", + "Removes an HTTP header previously set using header()" + ], + "headers_list": [ + "array headers_list()", + "Return list of headers to be sent / already sent" + ], + "headers_sent": [ + "bool headers_sent([string &$file [, int &$line]])", + "Returns true if headers have already been sent, false otherwise" + ], + "hebrev": [ + "string hebrev(string str [, int max_chars_per_line])", + "Converts logical Hebrew text to visual text" + ], + "hebrevc": [ + "string hebrevc(string str [, int max_chars_per_line])", + "Converts logical Hebrew text to visual text with newline conversion" + ], + "hexdec": [ + "int hexdec(string hexadecimal_number)", + "Returns the decimal equivalent of the hexadecimal number" + ], + "highlight_file": [ + "bool highlight_file(string file_name [, bool return] )", + "Syntax highlight a source file" + ], + "highlight_string": [ + "bool highlight_string(string string [, bool return] )", + "Syntax highlight a string or optionally return it" + ], + "html_entity_decode": [ + "string html_entity_decode(string string [, int quote_style][, string charset])", + "Convert all HTML entities to their applicable characters" + ], + "htmlentities": [ + "string htmlentities(string string [, int quote_style[, string charset[, bool double_encode]]])", + "Convert all applicable characters to HTML entities" + ], + "htmlspecialchars": [ + "string htmlspecialchars(string string [, int quote_style[, string charset[, bool double_encode]]])", + "Convert special characters to HTML entities" + ], + "htmlspecialchars_decode": [ + "string htmlspecialchars_decode(string string [, int quote_style])", + "Convert special HTML entities back to characters" + ], + "http_build_query": [ + "string http_build_query(mixed formdata [, string prefix [, string arg_separator]])", + "Generates a form-encoded query string from an associative array or object." + ], + "hypot": [ + "float hypot(float num1, float num2)", + "Returns sqrt(num1*num1 + num2*num2)" + ], + "ibase_add_user": [ + "bool ibase_add_user(resource service_handle, string user_name, string password [, string first_name [, string middle_name [, string last_name]]])", + "Add a user to security database" + ], + "ibase_affected_rows": [ + "int ibase_affected_rows( [ resource link_identifier ] )", + "Returns the number of rows affected by the previous INSERT, UPDATE or DELETE statement" + ], + "ibase_backup": [ + "mixed ibase_backup(resource service_handle, string source_db, string dest_file [, int options [, bool verbose]])", + "Initiates a backup task in the service manager and returns immediately" + ], + "ibase_blob_add": [ + "bool ibase_blob_add(resource blob_handle, string data)", + "Add data into created blob" + ], + "ibase_blob_cancel": [ + "bool ibase_blob_cancel(resource blob_handle)", + "Cancel creating blob" + ], + "ibase_blob_close": [ + "string ibase_blob_close(resource blob_handle)", + "Close blob" + ], + "ibase_blob_create": [ + "resource ibase_blob_create([resource link_identifier])", + "Create blob for adding data" + ], + "ibase_blob_echo": [ + "bool ibase_blob_echo([ resource link_identifier, ] string blob_id)", + "Output blob contents to browser" + ], + "ibase_blob_get": [ + "string ibase_blob_get(resource blob_handle, int len)", + "Get len bytes data from open blob" + ], + "ibase_blob_import": [ + "string ibase_blob_import([ resource link_identifier, ] resource file)", + "Create blob, copy file in it, and close it" + ], + "ibase_blob_info": [ + "array ibase_blob_info([ resource link_identifier, ] string blob_id)", + "Return blob length and other useful info" + ], + "ibase_blob_open": [ + "resource ibase_blob_open([ resource link_identifier, ] string blob_id)", + "Open blob for retrieving data parts" + ], + "ibase_close": [ + "bool ibase_close([resource link_identifier])", + "Close an InterBase connection" + ], + "ibase_commit": [ + "bool ibase_commit( resource link_identifier )", + "Commit transaction" + ], + "ibase_commit_ret": [ + "bool ibase_commit_ret( resource link_identifier )", + "Commit transaction and retain the transaction context" + ], + "ibase_connect": [ + "resource ibase_connect(string database [, string username [, string password [, string charset [, int buffers [, int dialect [, string role]]]]]])", + "Open a connection to an InterBase database" + ], + "ibase_db_info": [ + "string ibase_db_info(resource service_handle, string db, int action [, int argument])", + "Request statistics about a database" + ], + "ibase_delete_user": [ + "bool ibase_delete_user(resource service_handle, string user_name, string password [, string first_name [, string middle_name [, string last_name]]])", + "Delete a user from security database" + ], + "ibase_drop_db": [ + "bool ibase_drop_db([resource link_identifier])", + "Drop an InterBase database" + ], + "ibase_errcode": [ + "int ibase_errcode()", + "Return error code" + ], + "ibase_errmsg": [ + "string ibase_errmsg()", + "Return error message" + ], + "ibase_execute": [ + "mixed ibase_execute(resource query [, mixed bind_arg [, mixed bind_arg [, ...]]])", + "Execute a previously prepared query" + ], + "ibase_fetch_assoc": [ + "array ibase_fetch_assoc(resource result [, int fetch_flags])", + "Fetch a row from the results of a query" + ], + "ibase_fetch_object": [ + "object ibase_fetch_object(resource result [, int fetch_flags])", + "Fetch a object from the results of a query" + ], + "ibase_fetch_row": [ + "array ibase_fetch_row(resource result [, int fetch_flags])", + "Fetch a row from the results of a query" + ], + "ibase_field_info": [ + "array ibase_field_info(resource query_result, int field_number)", + "Get information about a field" + ], + "ibase_free_event_handler": [ + "bool ibase_free_event_handler(resource event)", + "Frees the event handler set by ibase_set_event_handler()" + ], + "ibase_free_query": [ + "bool ibase_free_query(resource query)", + "Free memory used by a query" + ], + "ibase_free_result": [ + "bool ibase_free_result(resource result)", + "Free the memory used by a result" + ], + "ibase_gen_id": [ + "int ibase_gen_id(string generator [, int increment [, resource link_identifier ]])", + "Increments the named generator and returns its new value" + ], + "ibase_maintain_db": [ + "bool ibase_maintain_db(resource service_handle, string db, int action [, int argument])", + "Execute a maintenance command on the database server" + ], + "ibase_modify_user": [ + "bool ibase_modify_user(resource service_handle, string user_name, string password [, string first_name [, string middle_name [, string last_name]]])", + "Modify a user in security database" + ], + "ibase_name_result": [ + "bool ibase_name_result(resource result, string name)", + "Assign a name to a result for use with ... WHERE CURRENT OF statements" + ], + "ibase_num_fields": [ + "int ibase_num_fields(resource query_result)", + "Get the number of fields in result" + ], + "ibase_num_params": [ + "int ibase_num_params(resource query)", + "Get the number of params in a prepared query" + ], + "ibase_num_rows": [ + "int ibase_num_rows( resource result_identifier )", + "Return the number of rows that are available in a result" + ], + "ibase_param_info": [ + "array ibase_param_info(resource query, int field_number)", + "Get information about a parameter" + ], + "ibase_pconnect": [ + "resource ibase_pconnect(string database [, string username [, string password [, string charset [, int buffers [, int dialect [, string role]]]]]])", + "Open a persistent connection to an InterBase database" + ], + "ibase_prepare": [ + "resource ibase_prepare(resource link_identifier[, string query [, resource trans_identifier ]])", + "Prepare a query for later execution" + ], + "ibase_query": [ + "mixed ibase_query([resource link_identifier, [ resource link_identifier, ]] string query [, mixed bind_arg [, mixed bind_arg [, ...]]])", + "Execute a query" + ], + "ibase_restore": [ + "mixed ibase_restore(resource service_handle, string source_file, string dest_db [, int options [, bool verbose]])", + "Initiates a restore task in the service manager and returns immediately" + ], + "ibase_rollback": [ + "bool ibase_rollback( resource link_identifier )", + "Rollback transaction" + ], + "ibase_rollback_ret": [ + "bool ibase_rollback_ret( resource link_identifier )", + "Rollback transaction and retain the transaction context" + ], + "ibase_server_info": [ + "string ibase_server_info(resource service_handle, int action)", + "Request information about a database server" + ], + "ibase_service_attach": [ + "resource ibase_service_attach(string host, string dba_username, string dba_password)", + "Connect to the service manager" + ], + "ibase_service_detach": [ + "bool ibase_service_detach(resource service_handle)", + "Disconnect from the service manager" + ], + "ibase_set_event_handler": [ + "resource ibase_set_event_handler([resource link_identifier,] callback handler, string event [, string event [, ...]])", + "Register the callback for handling each of the named events" + ], + "ibase_trans": [ + "resource ibase_trans([int trans_args [, resource link_identifier [, ... ], int trans_args [, resource link_identifier [, ... ]] [, ...]]])", + "Start a transaction over one or several databases" + ], + "ibase_wait_event": [ + "string ibase_wait_event([resource link_identifier,] string event [, string event [, ...]])", + "Waits for any one of the passed Interbase events to be posted by the database, and returns its name" + ], + "iconv": [ + "string iconv(string in_charset, string out_charset, string str)", + "Returns str converted to the out_charset character set" + ], + "iconv_get_encoding": [ + "mixed iconv_get_encoding([string type])", + "Get internal encoding and output encoding for ob_iconv_handler()" + ], + "iconv_mime_decode": [ + "string iconv_mime_decode(string encoded_string [, int mode, string charset])", + "Decodes a mime header field" + ], + "iconv_mime_decode_headers": [ + "array iconv_mime_decode_headers(string headers [, int mode, string charset])", + "Decodes multiple mime header fields" + ], + "iconv_mime_encode": [ + "string iconv_mime_encode(string field_name, string field_value [, array preference])", + "Composes a mime header field with field_name and field_value in a specified scheme" + ], + "iconv_set_encoding": [ + "bool iconv_set_encoding(string type, string charset)", + "Sets internal encoding and output encoding for ob_iconv_handler()" + ], + "iconv_strlen": [ + "int iconv_strlen(string str [, string charset])", + "Returns the character count of str" + ], + "iconv_strpos": [ + "int iconv_strpos(string haystack, string needle [, int offset [, string charset]])", + "Finds position of first occurrence of needle within part of haystack beginning with offset" + ], + "iconv_strrpos": [ + "int iconv_strrpos(string haystack, string needle [, string charset])", + "Finds position of last occurrence of needle within part of haystack beginning with offset" + ], + "iconv_substr": [ + "string iconv_substr(string str, int offset, [int length, string charset])", + "Returns specified part of a string" + ], + "idate": [ + "int idate(string format [, int timestamp])", + "Format a local time/date as integer" + ], + "idn_to_ascii": [ + "int idn_to_ascii(string domain[, int options])", + "Converts an Unicode domain to ASCII representation, as defined in the IDNA RFC" + ], + "idn_to_utf8": [ + "int idn_to_utf8(string domain[, int options])", + "Converts an ASCII representation of the domain to Unicode (UTF-8), as defined in the IDNA RFC" + ], + "ignore_user_abort": [ + "int ignore_user_abort([string value])", + "Set whether we want to ignore a user abort event or not" + ], + "image2wbmp": [ + "bool image2wbmp(resource im [, string filename [, int threshold]])", + "Output WBMP image to browser or file" + ], + "image_type_to_extension": [ + "string image_type_to_extension(int imagetype [, bool include_dot])", + "Get file extension for image-type returned by getimagesize, exif_read_data, exif_thumbnail, exif_imagetype" + ], + "image_type_to_mime_type": [ + "string image_type_to_mime_type(int imagetype)", + "Get Mime-Type for image-type returned by getimagesize, exif_read_data, exif_thumbnail, exif_imagetype" + ], + "imagealphablending": [ + "bool imagealphablending(resource im, bool on)", + "Turn alpha blending mode on or off for the given image" + ], + "imageantialias": [ + "bool imageantialias(resource im, bool on)", + "Should antialiased functions used or not" + ], + "imagearc": [ + "bool imagearc(resource im, int cx, int cy, int w, int h, int s, int e, int col)", + "Draw a partial ellipse" + ], + "imagechar": [ + "bool imagechar(resource im, int font, int x, int y, string c, int col)", + "Draw a character" + ], + "imagecharup": [ + "bool imagecharup(resource im, int font, int x, int y, string c, int col)", + "Draw a character rotated 90 degrees counter-clockwise" + ], + "imagecolorallocate": [ + "int imagecolorallocate(resource im, int red, int green, int blue)", + "Allocate a color for an image" + ], + "imagecolorallocatealpha": [ + "int imagecolorallocatealpha(resource im, int red, int green, int blue, int alpha)", + "Allocate a color with an alpha level. Works for true color and palette based images" + ], + "imagecolorat": [ + "int imagecolorat(resource im, int x, int y)", + "Get the index of the color of a pixel" + ], + "imagecolorclosest": [ + "int imagecolorclosest(resource im, int red, int green, int blue)", + "Get the index of the closest color to the specified color" + ], + "imagecolorclosestalpha": [ + "int imagecolorclosestalpha(resource im, int red, int green, int blue, int alpha)", + "Find the closest matching colour with alpha transparency" + ], + "imagecolorclosesthwb": [ + "int imagecolorclosesthwb(resource im, int red, int green, int blue)", + "Get the index of the color which has the hue, white and blackness nearest to the given color" + ], + "imagecolordeallocate": [ + "bool imagecolordeallocate(resource im, int index)", + "De-allocate a color for an image" + ], + "imagecolorexact": [ + "int imagecolorexact(resource im, int red, int green, int blue)", + "Get the index of the specified color" + ], + "imagecolorexactalpha": [ + "int imagecolorexactalpha(resource im, int red, int green, int blue, int alpha)", + "Find exact match for colour with transparency" + ], + "imagecolormatch": [ + "bool imagecolormatch(resource im1, resource im2)", + "Makes the colors of the palette version of an image more closely match the true color version" + ], + "imagecolorresolve": [ + "int imagecolorresolve(resource im, int red, int green, int blue)", + "Get the index of the specified color or its closest possible alternative" + ], + "imagecolorresolvealpha": [ + "int imagecolorresolvealpha(resource im, int red, int green, int blue, int alpha)", + "Resolve/Allocate a colour with an alpha level. Works for true colour and palette based images" + ], + "imagecolorset": [ + "void imagecolorset(resource im, int col, int red, int green, int blue)", + "Set the color for the specified palette index" + ], + "imagecolorsforindex": [ + "array imagecolorsforindex(resource im, int col)", + "Get the colors for an index" + ], + "imagecolorstotal": [ + "int imagecolorstotal(resource im)", + "Find out the number of colors in an image's palette" + ], + "imagecolortransparent": [ + "int imagecolortransparent(resource im [, int col])", + "Define a color as transparent" + ], + "imageconvolution": [ + "resource imageconvolution(resource src_im, array matrix3x3, double div, double offset)", + "Apply a 3x3 convolution matrix, using coefficient div and offset" + ], + "imagecopy": [ + "bool imagecopy(resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h)", + "Copy part of an image" + ], + "imagecopymerge": [ + "bool imagecopymerge(resource src_im, resource dst_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h, int pct)", + "Merge one part of an image with another" + ], + "imagecopymergegray": [ + "bool imagecopymergegray(resource src_im, resource dst_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h, int pct)", + "Merge one part of an image with another" + ], + "imagecopyresampled": [ + "bool imagecopyresampled(resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int dst_w, int dst_h, int src_w, int src_h)", + "Copy and resize part of an image using resampling to help ensure clarity" + ], + "imagecopyresized": [ + "bool imagecopyresized(resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int dst_w, int dst_h, int src_w, int src_h)", + "Copy and resize part of an image" + ], + "imagecreate": [ + "resource imagecreate(int x_size, int y_size)", + "Create a new image" + ], + "imagecreatefromgd": [ + "resource imagecreatefromgd(string filename)", + "Create a new image from GD file or URL" + ], + "imagecreatefromgd2": [ + "resource imagecreatefromgd2(string filename)", + "Create a new image from GD2 file or URL" + ], + "imagecreatefromgd2part": [ + "resource imagecreatefromgd2part(string filename, int srcX, int srcY, int width, int height)", + "Create a new image from a given part of GD2 file or URL" + ], + "imagecreatefromgif": [ + "resource imagecreatefromgif(string filename)", + "Create a new image from GIF file or URL" + ], + "imagecreatefromjpeg": [ + "resource imagecreatefromjpeg(string filename)", + "Create a new image from JPEG file or URL" + ], + "imagecreatefrompng": [ + "resource imagecreatefrompng(string filename)", + "Create a new image from PNG file or URL" + ], + "imagecreatefromstring": [ + "resource imagecreatefromstring(string image)", + "Create a new image from the image stream in the string" + ], + "imagecreatefromwbmp": [ + "resource imagecreatefromwbmp(string filename)", + "Create a new image from WBMP file or URL" + ], + "imagecreatefromxbm": [ + "resource imagecreatefromxbm(string filename)", + "Create a new image from XBM file or URL" + ], + "imagecreatefromxpm": [ + "resource imagecreatefromxpm(string filename)", + "Create a new image from XPM file or URL" + ], + "imagecreatetruecolor": [ + "resource imagecreatetruecolor(int x_size, int y_size)", + "Create a new true color image" + ], + "imagedashedline": [ + "bool imagedashedline(resource im, int x1, int y1, int x2, int y2, int col)", + "Draw a dashed line" + ], + "imagedestroy": [ + "bool imagedestroy(resource im)", + "Destroy an image" + ], + "imageellipse": [ + "bool imageellipse(resource im, int cx, int cy, int w, int h, int color)", + "Draw an ellipse" + ], + "imagefill": [ + "bool imagefill(resource im, int x, int y, int col)", + "Flood fill" + ], + "imagefilledarc": [ + "bool imagefilledarc(resource im, int cx, int cy, int w, int h, int s, int e, int col, int style)", + "Draw a filled partial ellipse" + ], + "imagefilledellipse": [ + "bool imagefilledellipse(resource im, int cx, int cy, int w, int h, int color)", + "Draw an ellipse" + ], + "imagefilledpolygon": [ + "bool imagefilledpolygon(resource im, array point, int num_points, int col)", + "Draw a filled polygon" + ], + "imagefilledrectangle": [ + "bool imagefilledrectangle(resource im, int x1, int y1, int x2, int y2, int col)", + "Draw a filled rectangle" + ], + "imagefilltoborder": [ + "bool imagefilltoborder(resource im, int x, int y, int border, int col)", + "Flood fill to specific color" + ], + "imagefilter": [ + "bool imagefilter(resource src_im, int filtertype, [args] )", + "Applies Filter an image using a custom angle" + ], + "imagefontheight": [ + "int imagefontheight(int font)", + "Get font height" + ], + "imagefontwidth": [ + "int imagefontwidth(int font)", + "Get font width" + ], + "imageftbbox": [ + "array imageftbbox(float size, float angle, string font_file, string text [, array extrainfo])", + "Give the bounding box of a text using fonts via freetype2" + ], + "imagefttext": [ + "array imagefttext(resource im, float size, float angle, int x, int y, int col, string font_file, string text [, array extrainfo])", + "Write text to the image using fonts via freetype2" + ], + "imagegammacorrect": [ + "bool imagegammacorrect(resource im, float inputgamma, float outputgamma)", + "Apply a gamma correction to a GD image" + ], + "imagegd": [ + "bool imagegd(resource im [, string filename])", + "Output GD image to browser or file" + ], + "imagegd2": [ + "bool imagegd2(resource im [, string filename, [, int chunk_size, [, int type]]])", + "Output GD2 image to browser or file" + ], + "imagegif": [ + "bool imagegif(resource im [, string filename])", + "Output GIF image to browser or file" + ], + "imagegrabscreen": [ + "resource imagegrabscreen()", + "Grab a screenshot" + ], + "imagegrabwindow": [ + "resource imagegrabwindow(int window_handle [, int client_area])", + "Grab a window or its client area using a windows handle (HWND property in COM instance)" + ], + "imageinterlace": [ + "int imageinterlace(resource im [, int interlace])", + "Enable or disable interlace" + ], + "imageistruecolor": [ + "bool imageistruecolor(resource im)", + "return true if the image uses truecolor" + ], + "imagejpeg": [ + "bool imagejpeg(resource im [, string filename [, int quality]])", + "Output JPEG image to browser or file" + ], + "imagelayereffect": [ + "bool imagelayereffect(resource im, int effect)", + "Set the alpha blending flag to use the bundled libgd layering effects" + ], + "imageline": [ + "bool imageline(resource im, int x1, int y1, int x2, int y2, int col)", + "Draw a line" + ], + "imageloadfont": [ + "int imageloadfont(string filename)", + "Load a new font" + ], + "imagepalettecopy": [ + "void imagepalettecopy(resource dst, resource src)", + "Copy the palette from the src image onto the dst image" + ], + "imagepng": [ + "bool imagepng(resource im [, string filename])", + "Output PNG image to browser or file" + ], + "imagepolygon": [ + "bool imagepolygon(resource im, array point, int num_points, int col)", + "Draw a polygon" + ], + "imagepsbbox": [ + "array imagepsbbox(string text, resource font, int size [, int space, int tightness, float angle])", + "Return the bounding box needed by a string if rasterized" + ], + "imagepscopyfont": [ + "int imagepscopyfont(int font_index)", + "Make a copy of a font for purposes like extending or reenconding" + ], + "imagepsencodefont": [ + "bool imagepsencodefont(resource font_index, string filename)", + "To change a fonts character encoding vector" + ], + "imagepsextendfont": [ + "bool imagepsextendfont(resource font_index, float extend)", + "Extend or or condense if (extend < 1) a font" + ], + "imagepsfreefont": [ + "bool imagepsfreefont(resource font_index)", + "Free memory used by a font" + ], + "imagepsloadfont": [ + "resource imagepsloadfont(string pathname)", + "Load a new font from specified file" + ], + "imagepsslantfont": [ + "bool imagepsslantfont(resource font_index, float slant)", + "Slant a font" + ], + "imagepstext": [ + "array imagepstext(resource image, string text, resource font, int size, int foreground, int background, int xcoord, int ycoord [, int space [, int tightness [, float angle [, int antialias])", + "Rasterize a string over an image" + ], + "imagerectangle": [ + "bool imagerectangle(resource im, int x1, int y1, int x2, int y2, int col)", + "Draw a rectangle" + ], + "imagerotate": [ + "resource imagerotate(resource src_im, float angle, int bgdcolor [, int ignoretransparent])", + "Rotate an image using a custom angle" + ], + "imagesavealpha": [ + "bool imagesavealpha(resource im, bool on)", + "Include alpha channel to a saved image" + ], + "imagesetbrush": [ + "bool imagesetbrush(resource image, resource brush)", + "Set the brush image to $brush when filling $image with the \"IMG_COLOR_BRUSHED\" color" + ], + "imagesetpixel": [ + "bool imagesetpixel(resource im, int x, int y, int col)", + "Set a single pixel" + ], + "imagesetstyle": [ + "bool imagesetstyle(resource im, array styles)", + "Set the line drawing styles for use with imageline and IMG_COLOR_STYLED." + ], + "imagesetthickness": [ + "bool imagesetthickness(resource im, int thickness)", + "Set line thickness for drawing lines, ellipses, rectangles, polygons etc." + ], + "imagesettile": [ + "bool imagesettile(resource image, resource tile)", + "Set the tile image to $tile when filling $image with the \"IMG_COLOR_TILED\" color" + ], + "imagestring": [ + "bool imagestring(resource im, int font, int x, int y, string str, int col)", + "Draw a string horizontally" + ], + "imagestringup": [ + "bool imagestringup(resource im, int font, int x, int y, string str, int col)", + "Draw a string vertically - rotated 90 degrees counter-clockwise" + ], + "imagesx": [ + "int imagesx(resource im)", + "Get image width" + ], + "imagesy": [ + "int imagesy(resource im)", + "Get image height" + ], + "imagetruecolortopalette": [ + "void imagetruecolortopalette(resource im, bool ditherFlag, int colorsWanted)", + "Convert a true colour image to a palette based image with a number of colours, optionally using dithering." + ], + "imagettfbbox": [ + "array imagettfbbox(float size, float angle, string font_file, string text)", + "Give the bounding box of a text using TrueType fonts" + ], + "imagettftext": [ + "array imagettftext(resource im, float size, float angle, int x, int y, int col, string font_file, string text)", + "Write text to the image using a TrueType font" + ], + "imagetypes": [ + "int imagetypes()", + "Return the types of images supported in a bitfield - 1=GIF, 2=JPEG, 4=PNG, 8=WBMP, 16=XPM" + ], + "imagewbmp": [ + "bool imagewbmp(resource im [, string filename, [, int foreground]])", + "Output WBMP image to browser or file" + ], + "imagexbm": [ + "int imagexbm(int im, string filename [, int foreground])", + "Output XBM image to browser or file" + ], + "imap_8bit": [ + "string imap_8bit(string text)", + "Convert an 8-bit string to a quoted-printable string" + ], + "imap_alerts": [ + "array imap_alerts()", + "Returns an array of all IMAP alerts that have been generated since the last page load or since the last imap_alerts() call, whichever came last. The alert stack is cleared after imap_alerts() is called." + ], + "imap_append": [ + "bool imap_append(resource stream_id, string folder, string message [, string options [, string internal_date]])", + "Append a new message to a specified mailbox" + ], + "imap_base64": [ + "string imap_base64(string text)", + "Decode BASE64 encoded text" + ], + "imap_binary": [ + "string imap_binary(string text)", + "Convert an 8bit string to a base64 string" + ], + "imap_body": [ + "string imap_body(resource stream_id, int msg_no [, int options])", + "Read the message body" + ], + "imap_bodystruct": [ + "object imap_bodystruct(resource stream_id, int msg_no, string section)", + "Read the structure of a specified body section of a specific message" + ], + "imap_check": [ + "object imap_check(resource stream_id)", + "Get mailbox properties" + ], + "imap_clearflag_full": [ + "bool imap_clearflag_full(resource stream_id, string sequence, string flag [, int options])", + "Clears flags on messages" + ], + "imap_close": [ + "bool imap_close(resource stream_id [, int options])", + "Close an IMAP stream" + ], + "imap_createmailbox": [ + "bool imap_createmailbox(resource stream_id, string mailbox)", + "Create a new mailbox" + ], + "imap_delete": [ + "bool imap_delete(resource stream_id, int msg_no [, int options])", + "Mark a message for deletion" + ], + "imap_deletemailbox": [ + "bool imap_deletemailbox(resource stream_id, string mailbox)", + "Delete a mailbox" + ], + "imap_errors": [ + "array imap_errors()", + "Returns an array of all IMAP errors generated since the last page load, or since the last imap_errors() call, whichever came last. The error stack is cleared after imap_errors() is called." + ], + "imap_expunge": [ + "bool imap_expunge(resource stream_id)", + "Permanently delete all messages marked for deletion" + ], + "imap_fetch_overview": [ + "array imap_fetch_overview(resource stream_id, string sequence [, int options])", + "Read an overview of the information in the headers of the given message sequence" + ], + "imap_fetchbody": [ + "string imap_fetchbody(resource stream_id, int msg_no, string section [, int options])", + "Get a specific body section" + ], + "imap_fetchheader": [ + "string imap_fetchheader(resource stream_id, int msg_no [, int options])", + "Get the full unfiltered header for a message" + ], + "imap_fetchstructure": [ + "object imap_fetchstructure(resource stream_id, int msg_no [, int options])", + "Read the full structure of a message" + ], + "imap_gc": [ + "bool imap_gc(resource stream_id, int flags)", + "This function garbage collects (purges) the cache of entries of a specific type." + ], + "imap_get_quota": [ + "array imap_get_quota(resource stream_id, string qroot)", + "Returns the quota set to the mailbox account qroot" + ], + "imap_get_quotaroot": [ + "array imap_get_quotaroot(resource stream_id, string mbox)", + "Returns the quota set to the mailbox account mbox" + ], + "imap_getacl": [ + "array imap_getacl(resource stream_id, string mailbox)", + "Gets the ACL for a given mailbox" + ], + "imap_getmailboxes": [ + "array imap_getmailboxes(resource stream_id, string ref, string pattern)", + "Reads the list of mailboxes and returns a full array of objects containing name, attributes, and delimiter" + ], + "imap_getsubscribed": [ + "array imap_getsubscribed(resource stream_id, string ref, string pattern)", + "Return a list of subscribed mailboxes, in the same format as imap_getmailboxes()" + ], + "imap_headerinfo": [ + "object imap_headerinfo(resource stream_id, int msg_no [, int from_length [, int subject_length [, string default_host]]])", + "Read the headers of the message" + ], + "imap_headers": [ + "array imap_headers(resource stream_id)", + "Returns headers for all messages in a mailbox" + ], + "imap_last_error": [ + "string imap_last_error()", + "Returns the last error that was generated by an IMAP function. The error stack is NOT cleared after this call." + ], + "imap_list": [ + "array imap_list(resource stream_id, string ref, string pattern)", + "Read the list of mailboxes" + ], + "imap_listscan": [ + "array imap_listscan(resource stream_id, string ref, string pattern, string content)", + "Read list of mailboxes containing a certain string" + ], + "imap_lsub": [ + "array imap_lsub(resource stream_id, string ref, string pattern)", + "Return a list of subscribed mailboxes" + ], + "imap_mail": [ + "bool imap_mail(string to, string subject, string message [, string additional_headers [, string cc [, string bcc [, string rpath]]]])", + "Send an email message" + ], + "imap_mail_compose": [ + "string imap_mail_compose(array envelope, array body)", + "Create a MIME message based on given envelope and body sections" + ], + "imap_mail_copy": [ + "bool imap_mail_copy(resource stream_id, string msglist, string mailbox [, int options])", + "Copy specified message to a mailbox" + ], + "imap_mail_move": [ + "bool imap_mail_move(resource stream_id, string sequence, string mailbox [, int options])", + "Move specified message to a mailbox" + ], + "imap_mailboxmsginfo": [ + "object imap_mailboxmsginfo(resource stream_id)", + "Returns info about the current mailbox" + ], + "imap_mime_header_decode": [ + "array imap_mime_header_decode(string str)", + "Decode mime header element in accordance with RFC 2047 and return array of objects containing 'charset' encoding and decoded 'text'" + ], + "imap_msgno": [ + "int imap_msgno(resource stream_id, int unique_msg_id)", + "Get the sequence number associated with a UID" + ], + "imap_mutf7_to_utf8": [ + "string imap_mutf7_to_utf8(string in)", + "Decode a modified UTF-7 string to UTF-8" + ], + "imap_num_msg": [ + "int imap_num_msg(resource stream_id)", + "Gives the number of messages in the current mailbox" + ], + "imap_num_recent": [ + "int imap_num_recent(resource stream_id)", + "Gives the number of recent messages in current mailbox" + ], + "imap_open": [ + "resource imap_open(string mailbox, string user, string password [, int options [, int n_retries]])", + "Open an IMAP stream to a mailbox" + ], + "imap_ping": [ + "bool imap_ping(resource stream_id)", + "Check if the IMAP stream is still active" + ], + "imap_qprint": [ + "string imap_qprint(string text)", + "Convert a quoted-printable string to an 8-bit string" + ], + "imap_renamemailbox": [ + "bool imap_renamemailbox(resource stream_id, string old_name, string new_name)", + "Rename a mailbox" + ], + "imap_reopen": [ + "bool imap_reopen(resource stream_id, string mailbox [, int options [, int n_retries]])", + "Reopen an IMAP stream to a new mailbox" + ], + "imap_rfc822_parse_adrlist": [ + "array imap_rfc822_parse_adrlist(string address_string, string default_host)", + "Parses an address string" + ], + "imap_rfc822_parse_headers": [ + "object imap_rfc822_parse_headers(string headers [, string default_host])", + "Parse a set of mail headers contained in a string, and return an object similar to imap_headerinfo()" + ], + "imap_rfc822_write_address": [ + "string imap_rfc822_write_address(string mailbox, string host, string personal)", + "Returns a properly formatted email address given the mailbox, host, and personal info" + ], + "imap_savebody": [ + "bool imap_savebody(resource stream_id, string|resource file, int msg_no[, string section = \"\"[, int options = 0]])", + "Save a specific body section to a file" + ], + "imap_search": [ + "array imap_search(resource stream_id, string criteria [, int options [, string charset]])", + "Return a list of messages matching the given criteria" + ], + "imap_set_quota": [ + "bool imap_set_quota(resource stream_id, string qroot, int mailbox_size)", + "Will set the quota for qroot mailbox" + ], + "imap_setacl": [ + "bool imap_setacl(resource stream_id, string mailbox, string id, string rights)", + "Sets the ACL for a given mailbox" + ], + "imap_setflag_full": [ + "bool imap_setflag_full(resource stream_id, string sequence, string flag [, int options])", + "Sets flags on messages" + ], + "imap_sort": [ + "array imap_sort(resource stream_id, int criteria, int reverse [, int options [, string search_criteria [, string charset]]])", + "Sort an array of message headers, optionally including only messages that meet specified criteria." + ], + "imap_status": [ + "object imap_status(resource stream_id, string mailbox, int options)", + "Get status info from a mailbox" + ], + "imap_subscribe": [ + "bool imap_subscribe(resource stream_id, string mailbox)", + "Subscribe to a mailbox" + ], + "imap_thread": [ + "array imap_thread(resource stream_id [, int options])", + "Return threaded by REFERENCES tree" + ], + "imap_timeout": [ + "mixed imap_timeout(int timeout_type [, int timeout])", + "Set or fetch imap timeout" + ], + "imap_uid": [ + "int imap_uid(resource stream_id, int msg_no)", + "Get the unique message id associated with a standard sequential message number" + ], + "imap_undelete": [ + "bool imap_undelete(resource stream_id, int msg_no [, int flags])", + "Remove the delete flag from a message" + ], + "imap_unsubscribe": [ + "bool imap_unsubscribe(resource stream_id, string mailbox)", + "Unsubscribe from a mailbox" + ], + "imap_utf7_decode": [ + "string imap_utf7_decode(string buf)", + "Decode a modified UTF-7 string" + ], + "imap_utf7_encode": [ + "string imap_utf7_encode(string buf)", + "Encode a string in modified UTF-7" + ], + "imap_utf8": [ + "string imap_utf8(string mime_encoded_text)", + "Convert a mime-encoded text to UTF-8" + ], + "imap_utf8_to_mutf7": [ + "string imap_utf8_to_mutf7(string in)", + "Encode a UTF-8 string to modified UTF-7" + ], + "implode": [ + "string implode([string glue,] array pieces)", + "Joins array elements placing glue string between items and return one string" + ], + "import_request_variables": [ + "bool import_request_variables(string types [, string prefix])", + "Import GET/POST/Cookie variables into the global scope" + ], + "in_array": [ + "bool in_array(mixed needle, array haystack [, bool strict])", + "Checks if the given value exists in the array" + ], + "include": [ + "bool include(string path)", + "Includes and evaluates the specified file" + ], + "include_once": [ + "bool include_once(string path)", + "Includes and evaluates the specified file" + ], + "inet_ntop": [ + "string inet_ntop(string in_addr)", + "Converts a packed inet address to a human readable IP address string" + ], + "inet_pton": [ + "string inet_pton(string ip_address)", + "Converts a human readable IP address to a packed binary string" + ], + "ini_get": [ + "string ini_get(string varname)", + "Get a configuration option" + ], + "ini_get_all": [ + "array ini_get_all([string extension[, bool details = true]])", + "Get all configuration options" + ], + "ini_restore": [ + "void ini_restore(string varname)", + "Restore the value of a configuration option specified by varname" + ], + "ini_set": [ + "string ini_set(string varname, string newvalue)", + "Set a configuration option, returns false on error and the old value of the configuration option on success" + ], + "interface_exists": [ + "bool interface_exists(string classname [, bool autoload])", + "Checks if the class exists" + ], + "intl_error_name": [ + "string intl_error_name()", + "* Return a string for a given error code. * The string will be the same as the name of the error code constant." + ], + "intl_get_error_code": [ + "int intl_get_error_code()", + "* Get code of the last occured error." + ], + "intl_get_error_message": [ + "string intl_get_error_message()", + "* Get text description of the last occured error." + ], + "intl_is_failure": [ + "bool intl_is_failure()", + "* Check whether the given error code indicates a failure. * Returns true if it does, and false if the code * indicates success or a warning." + ], + "intval": [ + "int intval(mixed var [, int base])", + "Get the integer value of a variable using the optional base for the conversion" + ], + "ip2long": [ + "int ip2long(string ip_address)", + "Converts a string containing an (IPv4) Internet Protocol dotted address into a proper address" + ], + "iptcembed": [ + "array iptcembed(string iptcdata, string jpeg_file_name [, int spool])", + "Embed binary IPTC data into a JPEG image." + ], + "iptcparse": [ + "array iptcparse(string iptcdata)", + "Parse binary IPTC-data into associative array" + ], + "is_a": [ + "bool is_a(object object, string class_name)", + "Returns true if the object is of this class or has this class as one of its parents" + ], + "is_array": [ + "bool is_array(mixed var)", + "Returns true if variable is an array" + ], + "is_bool": [ + "bool is_bool(mixed var)", + "Returns true if variable is a boolean" + ], + "is_callable": [ + "bool is_callable(mixed var [, bool syntax_only [, string callable_name]])", + "Returns true if var is callable." + ], + "is_countable": [ + "bool is_countable(mixed var)", + "Returns true if var is countable, false otherwise" + ], + "is_dir": [ + "bool is_dir(string filename)", + "Returns true if file is directory" + ], + "is_executable": [ + "bool is_executable(string filename)", + "Returns true if file is executable" + ], + "is_file": [ + "bool is_file(string filename)", + "Returns true if file is a regular file" + ], + "is_finite": [ + "bool is_finite(float val)", + "Returns whether argument is finite" + ], + "is_float": [ + "bool is_float(mixed var)", + "Returns true if variable is float point" + ], + "is_infinite": [ + "bool is_infinite(float val)", + "Returns whether argument is infinite" + ], + "is_link": [ + "bool is_link(string filename)", + "Returns true if file is symbolic link" + ], + "is_long": [ + "bool is_long(mixed var)", + "Returns true if variable is a long (integer)" + ], + "is_nan": [ + "bool is_nan(float val)", + "Returns whether argument is not a number" + ], + "is_null": [ + "bool is_null(mixed var)", + "Returns true if variable is null" + ], + "is_numeric": [ + "bool is_numeric(mixed value)", + "Returns true if value is a number or a numeric string" + ], + "is_object": [ + "bool is_object(mixed var)", + "Returns true if variable is an object" + ], + "is_readable": [ + "bool is_readable(string filename)", + "Returns true if file can be read" + ], + "is_resource": [ + "bool is_resource(mixed var)", + "Returns true if variable is a resource" + ], + "is_scalar": [ + "bool is_scalar(mixed value)", + "Returns true if value is a scalar" + ], + "is_string": [ + "bool is_string(mixed var)", + "Returns true if variable is a string" + ], + "is_subclass_of": [ + "bool is_subclass_of(object object, string class_name)", + "Returns true if the object has this class as one of its parents" + ], + "is_uploaded_file": [ + "bool is_uploaded_file(string path)", + "Check if file was created by rfc1867 upload" + ], + "is_writable": [ + "bool is_writable(string filename)", + "Returns true if file can be written" + ], + "isset": [ + "bool isset(mixed var [, mixed var])", + "Determine whether a variable is set" + ], + "iterator_apply": [ + "int iterator_apply(Traversable iterator, callable function [, array args = null)", + "Calls a function for every element in an iterator" + ], + "iterator_count": [ + "int iterator_count(Traversable iterator)", + "Count the elements in an iterator" + ], + "iterator_to_array": [ + "array iterator_to_array(Traversable iterator [, bool use_keys = true])", + "Copy the iterator into an array" + ], + "jddayofweek": [ + "mixed jddayofweek(int juliandaycount [, int mode])", + "Returns name or number of day of week from julian day count" + ], + "jdmonthname": [ + "string jdmonthname(int juliandaycount, int mode)", + "Returns name of month for julian day count" + ], + "jdtofrench": [ + "string jdtofrench(int juliandaycount)", + "Converts a julian day count to a french republic calendar date" + ], + "jdtogregorian": [ + "string jdtogregorian(int juliandaycount)", + "Converts a julian day count to a gregorian calendar date" + ], + "jdtojewish": [ + "string jdtojewish(int juliandaycount [, bool hebrew [, int fl]])", + "Converts a julian day count to a jewish calendar date" + ], + "jdtojulian": [ + "string jdtojulian(int juliandaycount)", + "Convert a julian day count to a julian calendar date" + ], + "jdtounix": [ + "int jdtounix(int jday)", + "Convert Julian Day to UNIX timestamp" + ], + "jewishtojd": [ + "int jewishtojd(int month, int day, int year)", + "Converts a jewish calendar date to a julian day count" + ], + "join": [ + "string join([string glue,] array pieces)", + "Returns a string containing a string representation of all the arrayelements in the same order, with the glue string between each element" + ], + "jpeg2wbmp": [ + "bool jpeg2wbmp(string f_org, string f_dest, int d_height, int d_width, int threshold)", + "Convert JPEG image to WBMP image" + ], + "json_decode": [ + "mixed json_decode(string json [, bool assoc [, long depth]])", + "Decodes the JSON representation into a PHP value" + ], + "json_encode": [ + "string json_encode(mixed data [, int options])", + "Returns the JSON representation of a value" + ], + "json_last_error": [ + "int json_last_error()", + "Returns the error code of the last json_decode()." + ], + "juliantojd": [ + "int juliantojd(int month, int day, int year)", + "Converts a julian calendar date to julian day count" + ], + "key": [ + "mixed key(array array_arg)", + "Return the key of the element currently pointed to by the internal array pointer" + ], + "krsort": [ + "bool krsort(array &array_arg [, int sort_flags])", + "Sort an array by key value in reverse order" + ], + "ksort": [ + "bool ksort(array &array_arg [, int sort_flags])", + "Sort an array by key" + ], + "lcfirst": [ + "string lcfirst(string str)", + "Make a string's first character lowercase" + ], + "lcg_value": [ + "float lcg_value()", + "Returns a value from the combined linear congruential generator" + ], + "lchgrp": [ + "bool lchgrp(string filename, mixed group)", + "Change symlink group" + ], + "ldap_8859_to_t61": [ + "string ldap_8859_to_t61(string value)", + "Translate 8859 characters to t61 characters" + ], + "ldap_add": [ + "bool ldap_add(resource link, string dn, array entry)", + "Add entries to LDAP directory" + ], + "ldap_bind": [ + "bool ldap_bind(resource link [, string dn [, string password]])", + "Bind to LDAP directory" + ], + "ldap_compare": [ + "bool ldap_compare(resource link, string dn, string attr, string value)", + "Determine if an entry has a specific value for one of its attributes" + ], + "ldap_connect": [ + "resource ldap_connect([string host [, int port [, string wallet [, string wallet_passwd [, int authmode]]]]])", + "Connect to an LDAP server" + ], + "ldap_count_entries": [ + "int ldap_count_entries(resource link, resource result)", + "Count the number of entries in a search result" + ], + "ldap_delete": [ + "bool ldap_delete(resource link, string dn)", + "Delete an entry from a directory" + ], + "ldap_dn2ufn": [ + "string ldap_dn2ufn(string dn)", + "Convert DN to User Friendly Naming format" + ], + "ldap_err2str": [ + "string ldap_err2str(int errno)", + "Convert error number to error string" + ], + "ldap_errno": [ + "int ldap_errno(resource link)", + "Get the current ldap error number" + ], + "ldap_error": [ + "string ldap_error(resource link)", + "Get the current ldap error string" + ], + "ldap_explode_dn": [ + "array ldap_explode_dn(string dn, int with_attrib)", + "Splits DN into its component parts" + ], + "ldap_first_attribute": [ + "string ldap_first_attribute(resource link, resource result_entry)", + "Return first attribute" + ], + "ldap_first_entry": [ + "resource ldap_first_entry(resource link, resource result)", + "Return first result id" + ], + "ldap_first_reference": [ + "resource ldap_first_reference(resource link, resource result)", + "Return first reference" + ], + "ldap_free_result": [ + "bool ldap_free_result(resource result)", + "Free result memory" + ], + "ldap_get_attributes": [ + "array ldap_get_attributes(resource link, resource result_entry)", + "Get attributes from a search result entry" + ], + "ldap_get_dn": [ + "string ldap_get_dn(resource link, resource result_entry)", + "Get the DN of a result entry" + ], + "ldap_get_entries": [ + "array ldap_get_entries(resource link, resource result)", + "Get all result entries" + ], + "ldap_get_option": [ + "bool ldap_get_option(resource link, int option, mixed retval)", + "Get the current value of various session-wide parameters" + ], + "ldap_get_values_len": [ + "array ldap_get_values_len(resource link, resource result_entry, string attribute)", + "Get all values with lengths from a result entry" + ], + "ldap_list": [ + "resource ldap_list(resource|array link, string base_dn, string filter [, array attrs [, int attrsonly [, int sizelimit [, int timelimit [, int deref]]]]])", + "Single-level search" + ], + "ldap_mod_add": [ + "bool ldap_mod_add(resource link, string dn, array entry)", + "Add attribute values to current" + ], + "ldap_mod_del": [ + "bool ldap_mod_del(resource link, string dn, array entry)", + "Delete attribute values" + ], + "ldap_mod_replace": [ + "bool ldap_mod_replace(resource link, string dn, array entry)", + "Replace attribute values with new ones" + ], + "ldap_next_attribute": [ + "string ldap_next_attribute(resource link, resource result_entry)", + "Get the next attribute in result" + ], + "ldap_next_entry": [ + "resource ldap_next_entry(resource link, resource result_entry)", + "Get next result entry" + ], + "ldap_next_reference": [ + "resource ldap_next_reference(resource link, resource reference_entry)", + "Get next reference" + ], + "ldap_parse_reference": [ + "bool ldap_parse_reference(resource link, resource reference_entry, array referrals)", + "Extract information from reference entry" + ], + "ldap_parse_result": [ + "bool ldap_parse_result(resource link, resource result, int errcode, string matcheddn, string errmsg, array referrals)", + "Extract information from result" + ], + "ldap_read": [ + "resource ldap_read(resource|array link, string base_dn, string filter [, array attrs [, int attrsonly [, int sizelimit [, int timelimit [, int deref]]]]])", + "Read an entry" + ], + "ldap_rename": [ + "bool ldap_rename(resource link, string dn, string newrdn, string newparent, bool deleteoldrdn)", + "Modify the name of an entry" + ], + "ldap_sasl_bind": [ + "bool ldap_sasl_bind(resource link [, string binddn [, string password [, string sasl_mech [, string sasl_realm [, string sasl_authc_id [, string sasl_authz_id [, string props]]]]]]])", + "Bind to LDAP directory using SASL" + ], + "ldap_search": [ + "resource ldap_search(resource|array link, string base_dn, string filter [, array attrs [, int attrsonly [, int sizelimit [, int timelimit [, int deref]]]]])", + "Search LDAP tree under base_dn" + ], + "ldap_set_option": [ + "bool ldap_set_option(resource link, int option, mixed newval)", + "Set the value of various session-wide parameters" + ], + "ldap_set_rebind_proc": [ + "bool ldap_set_rebind_proc(resource link, string callback)", + "Set a callback function to do re-binds on referral chasing." + ], + "ldap_sort": [ + "bool ldap_sort(resource link, resource result, string sortfilter)", + "Sort LDAP result entries" + ], + "ldap_start_tls": [ + "bool ldap_start_tls(resource link)", + "Start TLS" + ], + "ldap_t61_to_8859": [ + "string ldap_t61_to_8859(string value)", + "Translate t61 characters to 8859 characters" + ], + "ldap_unbind": [ + "bool ldap_unbind(resource link)", + "Unbind from LDAP directory" + ], + "leak": [ + "void leak(int num_bytes=3)", + "Cause an intentional memory leak, for testing/debugging purposes" + ], + "levenshtein": [ + "int levenshtein(string str1, string str2[, int cost_ins, int cost_rep, int cost_del])", + "Calculate Levenshtein distance between two strings" + ], + "libxml_clear_errors": [ + "void libxml_clear_errors()", + "Clear last error from libxml" + ], + "libxml_disable_entity_loader": [ + "bool libxml_disable_entity_loader([bool disable])", + "Disable/Enable ability to load external entities" + ], + "libxml_get_errors": [ + "object libxml_get_errors()", + "Retrieve array of errors" + ], + "libxml_get_last_error": [ + "object libxml_get_last_error()", + "Retrieve last error from libxml" + ], + "libxml_set_streams_context": [ + "void libxml_set_streams_context(resource streams_context)", + "Set the streams context for the next libxml document load or write" + ], + "libxml_use_internal_errors": [ + "bool libxml_use_internal_errors([bool use_errors])", + "Disable libxml errors and allow user to fetch error information as needed" + ], + "link": [ + "int link(string target, string link)", + "Create a hard link" + ], + "linkinfo": [ + "int linkinfo(string filename)", + "Returns the st_dev field of the UNIX C stat structure describing the link" + ], + "litespeed_request_headers": [ + "array litespeed_request_headers()", + "Fetch all HTTP request headers" + ], + "litespeed_response_headers": [ + "array litespeed_response_headers()", + "Fetch all HTTP response headers" + ], + "locale_accept_from_http": [ + "string locale_accept_from_http(string $http_accept)", + null + ], + "locale_canonicalize": [ + "static string locale_canonicalize(Locale $loc, string $locale)", + "* @param string $locale The locale string to canonicalize" + ], + "locale_filter_matches": [ + "bool locale_filter_matches(string $langtag, string $locale[, bool $canonicalize])", + "* Checks if a $langtag filter matches with $locale according to RFC 4647's basic filtering algorithm" + ], + "locale_get_all_variants": [ + "static array locale_get_all_variants($locale)", + "* gets an array containing the list of variants, or null" + ], + "locale_get_default": [ + "static string locale_get_default( )", + "Get default locale" + ], + "locale_get_keywords": [ + "static array locale_get_keywords(string $locale) {", + "* return an associative array containing keyword-value * pairs for this locale. The keys are keys to the array" + ], + "locale_get_primary_language": [ + "static string locale_get_primary_language($locale)", + "* gets the primary language for the $locale" + ], + "locale_get_region": [ + "static string locale_get_region($locale)", + "* gets the region for the $locale" + ], + "locale_get_script": [ + "static string locale_get_script($locale)", + "* gets the script for the $locale" + ], + "locale_lookup": [ + "string locale_lookup(array $langtag, string $locale[, bool $canonicalize[, string $default = null]])", + "* Searchs the items in $langtag for the best match to the language * range" + ], + "locale_set_default": [ + "static string locale_set_default( string $locale )", + "Set default locale" + ], + "localeconv": [ + "array localeconv()", + "Returns numeric formatting information based on the current locale" + ], + "localtime": [ + "array localtime([int timestamp [, bool associative_array]])", + "Returns the results of the C system call localtime as an associative array if the associative_array argument is set to 1 other wise it is a regular array" + ], + "log": [ + "float log(float number, [float base])", + "Returns the natural logarithm of the number, or the base log if base is specified" + ], + "log10": [ + "float log10(float number)", + "Returns the base-10 logarithm of the number" + ], + "log1p": [ + "float log1p(float number)", + "Returns log(1 + number), computed in a way that accurate even when the value of number is close to zero" + ], + "long2ip": [ + "string long2ip(int proper_address)", + "Converts an (IPv4) Internet network address into a string in Internet standard dotted format" + ], + "lstat": [ + "array lstat(string filename)", + "Give information about a file or symbolic link" + ], + "ltrim": [ + "string ltrim(string str [, string character_mask])", + "Strips whitespace from the beginning of a string" + ], + "mail": [ + "int mail(string to, string subject, string message [, string additional_headers [, string additional_parameters]])", + "Send an email message" + ], + "max": [ + "mixed max(mixed arg1 [, mixed arg2 [, mixed ...]])", + "Return the highest value in an array or a series of arguments" + ], + "mb_check_encoding": [ + "bool mb_check_encoding([string var[, string encoding]])", + "Check if the string is valid for the specified encoding" + ], + "mb_convert_case": [ + "string mb_convert_case(string sourcestring, int mode [, string encoding])", + "Returns a case-folded version of sourcestring" + ], + "mb_convert_encoding": [ + "string mb_convert_encoding(string str, string to-encoding [, mixed from-encoding])", + "Returns converted string in desired encoding" + ], + "mb_convert_kana": [ + "string mb_convert_kana(string str [, string option] [, string encoding])", + "Conversion between full-width character and half-width character (Japanese)" + ], + "mb_convert_variables": [ + "string mb_convert_variables(string to-encoding, mixed from-encoding, mixed vars [, ...])", + "Converts the string resource in variables to desired encoding" + ], + "mb_decode_mimeheader": [ + "string mb_decode_mimeheader(string string)", + "Decodes the MIME \"encoded-word\" in the string" + ], + "mb_decode_numericentity": [ + "string mb_decode_numericentity(string string, array convmap [, string encoding])", + "Converts HTML numeric entities to character code" + ], + "mb_detect_encoding": [ + "string mb_detect_encoding(string str [, mixed encoding_list [, bool strict]])", + "Encodings of the given string is returned (as a string)" + ], + "mb_detect_order": [ + "bool|array mb_detect_order([mixed encoding-list])", + "Sets the current detect_order or Return the current detect_order as a array" + ], + "mb_encode_mimeheader": [ + "string mb_encode_mimeheader(string str [, string charset [, string transfer-encoding [, string linefeed [, int indent]]]])", + "Converts the string to MIME \"encoded-word\" in the format of =?charset?(B|Q)?encoded_string?=" + ], + "mb_encode_numericentity": [ + "string mb_encode_numericentity(string string, array convmap [, string encoding])", + "Converts specified characters to HTML numeric entities" + ], + "mb_encoding_aliases": [ + "array mb_encoding_aliases(string encoding)", + "Returns an array of the aliases of a given encoding name" + ], + "mb_ereg": [ + "int mb_ereg(string pattern, string string [, array registers])", + "Regular expression match for multibyte string" + ], + "mb_ereg_match": [ + "bool mb_ereg_match(string pattern, string string [,string option])", + "Regular expression match for multibyte string" + ], + "mb_ereg_replace": [ + "string mb_ereg_replace(string pattern, string replacement, string string [, string option])", + "Replace regular expression for multibyte string" + ], + "mb_ereg_search": [ + "bool mb_ereg_search([string pattern[, string option]])", + "Regular expression search for multibyte string" + ], + "mb_ereg_search_getpos": [ + "int mb_ereg_search_getpos()", + "Get search start position" + ], + "mb_ereg_search_getregs": [ + "array mb_ereg_search_getregs()", + "Get matched substring of the last time" + ], + "mb_ereg_search_init": [ + "bool mb_ereg_search_init(string string [, string pattern[, string option]])", + "Initialize string and regular expression for search." + ], + "mb_ereg_search_pos": [ + "array mb_ereg_search_pos([string pattern[, string option]])", + "Regular expression search for multibyte string" + ], + "mb_ereg_search_regs": [ + "array mb_ereg_search_regs([string pattern[, string option]])", + "Regular expression search for multibyte string" + ], + "mb_ereg_search_setpos": [ + "bool mb_ereg_search_setpos(int position)", + "Set search start position" + ], + "mb_eregi": [ + "int mb_eregi(string pattern, string string [, array registers])", + "Case-insensitive regular expression match for multibyte string" + ], + "mb_eregi_replace": [ + "string mb_eregi_replace(string pattern, string replacement, string string)", + "Case insensitive replace regular expression for multibyte string" + ], + "mb_get_info": [ + "mixed mb_get_info([string type])", + "Returns the current settings of mbstring" + ], + "mb_http_input": [ + "mixed mb_http_input([string type])", + "Returns the input encoding" + ], + "mb_http_output": [ + "string mb_http_output([string encoding])", + "Sets the current output_encoding or returns the current output_encoding as a string" + ], + "mb_internal_encoding": [ + "string mb_internal_encoding([string encoding])", + "Sets the current internal encoding or Returns the current internal encoding as a string" + ], + "mb_language": [ + "string mb_language([string language])", + "Sets the current language or Returns the current language as a string" + ], + "mb_list_encodings": [ + "mixed mb_list_encodings()", + "Returns an array of all supported entity encodings" + ], + "mb_output_handler": [ + "string mb_output_handler(string contents, int status)", + "Returns string in output buffer converted to the http_output encoding" + ], + "mb_parse_str": [ + "bool mb_parse_str(string encoded_string [, array result])", + "Parses GET/POST/COOKIE data and sets global variables" + ], + "mb_preferred_mime_name": [ + "string mb_preferred_mime_name(string encoding)", + "Return the preferred MIME name (charset) as a string" + ], + "mb_regex_encoding": [ + "string mb_regex_encoding([string encoding])", + "Returns the current encoding for regex as a string." + ], + "mb_regex_set_options": [ + "string mb_regex_set_options([string options])", + "Set or get the default options for mbregex functions" + ], + "mb_send_mail": [ + "int mb_send_mail(string to, string subject, string message [, string additional_headers [, string additional_parameters]])", + "* Sends an email message with MIME scheme" + ], + "mb_split": [ + "array mb_split(string pattern, string string [, int limit])", + "split multibyte string into array by regular expression" + ], + "mb_strcut": [ + "string mb_strcut(string str, int start [, int length [, string encoding]])", + "Returns part of a string" + ], + "mb_strimwidth": [ + "string mb_strimwidth(string str, int start, int width [, string trimmarker [, string encoding]])", + "Trim the string in terminal width" + ], + "mb_stripos": [ + "int mb_stripos(string haystack, string needle [, int offset [, string encoding]])", + "Finds position of first occurrence of a string within another, case insensitive" + ], + "mb_stristr": [ + "string mb_stristr(string haystack, string needle[, bool part[, string encoding]])", + "Finds first occurrence of a string within another, case insensitive" + ], + "mb_strlen": [ + "int mb_strlen(string str [, string encoding])", + "Get character numbers of a string" + ], + "mb_strpos": [ + "int mb_strpos(string haystack, string needle [, int offset [, string encoding]])", + "Find position of first occurrence of a string within another" + ], + "mb_strrchr": [ + "string mb_strrchr(string haystack, string needle[, bool part[, string encoding]])", + "Finds the last occurrence of a character in a string within another" + ], + "mb_strrichr": [ + "string mb_strrichr(string haystack, string needle[, bool part[, string encoding]])", + "Finds the last occurrence of a character in a string within another, case insensitive" + ], + "mb_strripos": [ + "int mb_strripos(string haystack, string needle [, int offset [, string encoding]])", + "Finds position of last occurrence of a string within another, case insensitive" + ], + "mb_strrpos": [ + "int mb_strrpos(string haystack, string needle [, int offset [, string encoding]])", + "Find position of last occurrence of a string within another" + ], + "mb_strstr": [ + "string mb_strstr(string haystack, string needle[, bool part[, string encoding]])", + "Finds first occurrence of a string within another" + ], + "mb_strtolower": [ + "string mb_strtolower(string sourcestring [, string encoding])", + "* Returns a lowercased version of sourcestring" + ], + "mb_strtoupper": [ + "string mb_strtoupper(string sourcestring [, string encoding])", + "* Returns a uppercased version of sourcestring" + ], + "mb_strwidth": [ + "int mb_strwidth(string str [, string encoding])", + "Gets terminal width of a string" + ], + "mb_substitute_character": [ + "mixed mb_substitute_character([mixed substchar])", + "Sets the current substitute_character or returns the current substitute_character" + ], + "mb_substr": [ + "string mb_substr(string str, int start [, int length [, string encoding]])", + "Returns part of a string" + ], + "mb_substr_count": [ + "int mb_substr_count(string haystack, string needle [, string encoding])", + "Count the number of substring occurrences" + ], + "mcrypt_cbc": [ + "string mcrypt_cbc(int cipher, string key, string data, int mode, string iv)", + "CBC crypt/decrypt data using key key with cipher cipher starting with iv" + ], + "mcrypt_cfb": [ + "string mcrypt_cfb(int cipher, string key, string data, int mode, string iv)", + "CFB crypt/decrypt data using key key with cipher cipher starting with iv" + ], + "mcrypt_create_iv": [ + "string mcrypt_create_iv(int size, int source)", + "Create an initialization vector (IV)" + ], + "mcrypt_decrypt": [ + "string mcrypt_decrypt(string cipher, string key, string data, string mode, string iv)", + "OFB crypt/decrypt data using key key with cipher cipher starting with iv" + ], + "mcrypt_ecb": [ + "string mcrypt_ecb(int cipher, string key, string data, int mode, string iv)", + "ECB crypt/decrypt data using key key with cipher cipher starting with iv" + ], + "mcrypt_enc_get_algorithms_name": [ + "string mcrypt_enc_get_algorithms_name(resource td)", + "Returns the name of the algorithm specified by the descriptor td" + ], + "mcrypt_enc_get_block_size": [ + "int mcrypt_enc_get_block_size(resource td)", + "Returns the block size of the cipher specified by the descriptor td" + ], + "mcrypt_enc_get_iv_size": [ + "int mcrypt_enc_get_iv_size(resource td)", + "Returns the size of the IV in bytes of the algorithm specified by the descriptor td" + ], + "mcrypt_enc_get_key_size": [ + "int mcrypt_enc_get_key_size(resource td)", + "Returns the maximum supported key size in bytes of the algorithm specified by the descriptor td" + ], + "mcrypt_enc_get_modes_name": [ + "string mcrypt_enc_get_modes_name(resource td)", + "Returns the name of the mode specified by the descriptor td" + ], + "mcrypt_enc_get_supported_key_sizes": [ + "array mcrypt_enc_get_supported_key_sizes(resource td)", + "This function decrypts the crypttext" + ], + "mcrypt_enc_is_block_algorithm": [ + "bool mcrypt_enc_is_block_algorithm(resource td)", + "Returns TRUE if the alrogithm is a block algorithms" + ], + "mcrypt_enc_is_block_algorithm_mode": [ + "bool mcrypt_enc_is_block_algorithm_mode(resource td)", + "Returns TRUE if the mode is for use with block algorithms" + ], + "mcrypt_enc_is_block_mode": [ + "bool mcrypt_enc_is_block_mode(resource td)", + "Returns TRUE if the mode outputs blocks" + ], + "mcrypt_enc_self_test": [ + "int mcrypt_enc_self_test(resource td)", + "This function runs the self test on the algorithm specified by the descriptor td" + ], + "mcrypt_encrypt": [ + "string mcrypt_encrypt(string cipher, string key, string data, string mode, string iv)", + "OFB crypt/decrypt data using key key with cipher cipher starting with iv" + ], + "mcrypt_generic": [ + "string mcrypt_generic(resource td, string data)", + "This function encrypts the plaintext" + ], + "mcrypt_generic_deinit": [ + "bool mcrypt_generic_deinit(resource td)", + "This function terminates encrypt specified by the descriptor td" + ], + "mcrypt_generic_init": [ + "int mcrypt_generic_init(resource td, string key, string iv)", + "This function initializes all buffers for the specific module" + ], + "mcrypt_get_block_size": [ + "int mcrypt_get_block_size(string cipher, string module)", + "Get the key size of cipher" + ], + "mcrypt_get_cipher_name": [ + "string mcrypt_get_cipher_name(string cipher)", + "Get the key size of cipher" + ], + "mcrypt_get_iv_size": [ + "int mcrypt_get_iv_size(string cipher, string module)", + "Get the IV size of cipher (Usually the same as the blocksize)" + ], + "mcrypt_get_key_size": [ + "int mcrypt_get_key_size(string cipher, string module)", + "Get the key size of cipher" + ], + "mcrypt_list_algorithms": [ + "array mcrypt_list_algorithms([string lib_dir])", + "List all algorithms in \"module_dir\"" + ], + "mcrypt_list_modes": [ + "array mcrypt_list_modes([string lib_dir])", + "List all modes \"module_dir\"" + ], + "mcrypt_module_close": [ + "bool mcrypt_module_close(resource td)", + "Free the descriptor td" + ], + "mcrypt_module_get_algo_block_size": [ + "int mcrypt_module_get_algo_block_size(string algorithm [, string lib_dir])", + "Returns the block size of the algorithm" + ], + "mcrypt_module_get_algo_key_size": [ + "int mcrypt_module_get_algo_key_size(string algorithm [, string lib_dir])", + "Returns the maximum supported key size of the algorithm" + ], + "mcrypt_module_get_supported_key_sizes": [ + "array mcrypt_module_get_supported_key_sizes(string algorithm [, string lib_dir])", + "This function decrypts the crypttext" + ], + "mcrypt_module_is_block_algorithm": [ + "bool mcrypt_module_is_block_algorithm(string algorithm [, string lib_dir])", + "Returns TRUE if the algorithm is a block algorithm" + ], + "mcrypt_module_is_block_algorithm_mode": [ + "bool mcrypt_module_is_block_algorithm_mode(string mode [, string lib_dir])", + "Returns TRUE if the mode is for use with block algorithms" + ], + "mcrypt_module_is_block_mode": [ + "bool mcrypt_module_is_block_mode(string mode [, string lib_dir])", + "Returns TRUE if the mode outputs blocks of bytes" + ], + "mcrypt_module_open": [ + "resource mcrypt_module_open(string cipher, string cipher_directory, string mode, string mode_directory)", + "Opens the module of the algorithm and the mode to be used" + ], + "mcrypt_module_self_test": [ + "bool mcrypt_module_self_test(string algorithm [, string lib_dir])", + "Does a self test of the module \"module\"" + ], + "mcrypt_ofb": [ + "string mcrypt_ofb(int cipher, string key, string data, int mode, string iv)", + "OFB crypt/decrypt data using key key with cipher cipher starting with iv" + ], + "md5": [ + "string md5(string str, [ bool raw_output])", + "Calculate the md5 hash of a string" + ], + "md5_file": [ + "string md5_file(string filename [, bool raw_output])", + "Calculate the md5 hash of given filename" + ], + "mdecrypt_generic": [ + "string mdecrypt_generic(resource td, string data)", + "This function decrypts the plaintext" + ], + "memory_get_peak_usage": [ + "int memory_get_peak_usage([real_usage])", + "Returns the peak allocated by PHP memory" + ], + "memory_get_usage": [ + "int memory_get_usage([real_usage])", + "Returns the allocated by PHP memory" + ], + "metaphone": [ + "string metaphone(string text[, int phones])", + "Break english phrases down into their phonemes" + ], + "method_exists": [ + "bool method_exists(object object, string method)", + "Checks if the class method exists" + ], + "mhash": [ + "string mhash(int hash, string data [, string key])", + "Hash data with hash" + ], + "mhash_count": [ + "int mhash_count()", + "Gets the number of available hashes" + ], + "mhash_get_block_size": [ + "int mhash_get_block_size(int hash)", + "Gets the block size of hash" + ], + "mhash_get_hash_name": [ + "string mhash_get_hash_name(int hash)", + "Gets the name of hash" + ], + "mhash_keygen_s2k": [ + "string mhash_keygen_s2k(int hash, string input_password, string salt, int bytes)", + "Generates a key using hash functions" + ], + "microtime": [ + "mixed microtime([bool get_as_float])", + "Returns either a string or a float containing the current time in seconds and microseconds" + ], + "mime_content_type": [ + "string mime_content_type(string filename|resource stream)", + "Return content-type for file" + ], + "min": [ + "mixed min(mixed arg1 [, mixed arg2 [, mixed ...]])", + "Return the lowest value in an array or a series of arguments" + ], + "mkdir": [ + "bool mkdir(string pathname [, int mode [, bool recursive [, resource context]]])", + "Create a directory" + ], + "mktime": [ + "int mktime([int hour [, int min [, int sec [, int mon [, int day [, int year]]]]]])", + "Get UNIX timestamp for a date" + ], + "money_format": [ + "string money_format(string format , float value)", + "Convert monetary value(s) to string" + ], + "move_uploaded_file": [ + "bool move_uploaded_file(string path, string new_path)", + "Move a file if and only if it was created by an upload" + ], + "msg_get_queue": [ + "resource msg_get_queue(int key [, int perms])", + "Attach to a message queue" + ], + "msg_queue_exists": [ + "bool msg_queue_exists(int key)", + "Check whether a message queue exists" + ], + "msg_receive": [ + "mixed msg_receive(resource queue, int desiredmsgtype, int &msgtype, int maxsize, mixed message [, bool unserialize=true [, int flags=0 [, int errorcode]]])", + "Send a message of type msgtype (must be > 0) to a message queue" + ], + "msg_remove_queue": [ + "bool msg_remove_queue(resource queue)", + "Destroy the queue" + ], + "msg_send": [ + "bool msg_send(resource queue, int msgtype, mixed message [, bool serialize=true [, bool blocking=true [, int errorcode]]])", + "Send a message of type msgtype (must be > 0) to a message queue" + ], + "msg_set_queue": [ + "bool msg_set_queue(resource queue, array data)", + "Set information for a message queue" + ], + "msg_stat_queue": [ + "array msg_stat_queue(resource queue)", + "Returns information about a message queue" + ], + "msgfmt_create": [ + "MessageFormatter msgfmt_create( string $locale, string $pattern )", + "* Create formatter." + ], + "msgfmt_format": [ + "mixed msgfmt_format( MessageFormatter $nf, array $args )", + "* Format a message." + ], + "msgfmt_format_message": [ + "mixed msgfmt_format_message( string $locale, string $pattern, array $args )", + "* Format a message." + ], + "msgfmt_get_error_code": [ + "int msgfmt_get_error_code( MessageFormatter $nf )", + "* Get formatter's last error code." + ], + "msgfmt_get_error_message": [ + "string msgfmt_get_error_message( MessageFormatter $coll )", + "* Get text description for formatter's last error code." + ], + "msgfmt_get_locale": [ + "string msgfmt_get_locale(MessageFormatter $mf)", + "* Get formatter locale." + ], + "msgfmt_get_pattern": [ + "string msgfmt_get_pattern( MessageFormatter $mf )", + "* Get formatter pattern." + ], + "msgfmt_parse": [ + "array msgfmt_parse( MessageFormatter $nf, string $source )", + "* Parse a message." + ], + "msgfmt_set_pattern": [ + "bool msgfmt_set_pattern( MessageFormatter $mf, string $pattern )", + "* Set formatter pattern." + ], + "mssql_bind": [ + "bool mssql_bind(resource stmt, string param_name, mixed var, int type [, bool is_output [, bool is_null [, int maxlen]]])", + "Adds a parameter to a stored procedure or a remote stored procedure" + ], + "mssql_close": [ + "bool mssql_close([resource conn_id])", + "Closes a connection to a MS-SQL server" + ], + "mssql_connect": [ + "int mssql_connect([string servername [, string username [, string password [, bool new_link]]]])", + "Establishes a connection to a MS-SQL server" + ], + "mssql_data_seek": [ + "bool mssql_data_seek(resource result_id, int offset)", + "Moves the internal row pointer of the MS-SQL result associated with the specified result identifier to pointer to the specified row number" + ], + "mssql_execute": [ + "mixed mssql_execute(resource stmt [, bool skip_results = false])", + "Executes a stored procedure on a MS-SQL server database" + ], + "mssql_fetch_array": [ + "array mssql_fetch_array(resource result_id [, int result_type])", + "Returns an associative array of the current row in the result set specified by result_id" + ], + "mssql_fetch_assoc": [ + "array mssql_fetch_assoc(resource result_id)", + "Returns an associative array of the current row in the result set specified by result_id" + ], + "mssql_fetch_batch": [ + "int mssql_fetch_batch(resource result_index)", + "Returns the next batch of records" + ], + "mssql_fetch_field": [ + "object mssql_fetch_field(resource result_id [, int offset])", + "Gets information about certain fields in a query result" + ], + "mssql_fetch_object": [ + "object mssql_fetch_object(resource result_id)", + "Returns a pseudo-object of the current row in the result set specified by result_id" + ], + "mssql_fetch_row": [ + "array mssql_fetch_row(resource result_id)", + "Returns an array of the current row in the result set specified by result_id" + ], + "mssql_field_length": [ + "int mssql_field_length(resource result_id [, int offset])", + "Get the length of a MS-SQL field" + ], + "mssql_field_name": [ + "string mssql_field_name(resource result_id [, int offset])", + "Returns the name of the field given by offset in the result set given by result_id" + ], + "mssql_field_seek": [ + "bool mssql_field_seek(resource result_id, int offset)", + "Seeks to the specified field offset" + ], + "mssql_field_type": [ + "string mssql_field_type(resource result_id [, int offset])", + "Returns the type of a field" + ], + "mssql_free_result": [ + "bool mssql_free_result(resource result_index)", + "Free a MS-SQL result index" + ], + "mssql_free_statement": [ + "bool mssql_free_statement(resource result_index)", + "Free a MS-SQL statement index" + ], + "mssql_get_last_message": [ + "string mssql_get_last_message()", + "Gets the last message from the MS-SQL server" + ], + "mssql_guid_string": [ + "string mssql_guid_string(string binary [,bool short_format])", + "Converts a 16 byte binary GUID to a string" + ], + "mssql_init": [ + "int mssql_init(string sp_name [, resource conn_id])", + "Initializes a stored procedure or a remote stored procedure" + ], + "mssql_min_error_severity": [ + "void mssql_min_error_severity(int severity)", + "Sets the lower error severity" + ], + "mssql_min_message_severity": [ + "void mssql_min_message_severity(int severity)", + "Sets the lower message severity" + ], + "mssql_next_result": [ + "bool mssql_next_result(resource result_id)", + "Move the internal result pointer to the next result" + ], + "mssql_num_fields": [ + "int mssql_num_fields(resource mssql_result_index)", + "Returns the number of fields fetched in from the result id specified" + ], + "mssql_num_rows": [ + "int mssql_num_rows(resource mssql_result_index)", + "Returns the number of rows fetched in from the result id specified" + ], + "mssql_pconnect": [ + "int mssql_pconnect([string servername [, string username [, string password [, bool new_link]]]])", + "Establishes a persistent connection to a MS-SQL server" + ], + "mssql_query": [ + "resource mssql_query(string query [, resource conn_id [, int batch_size]])", + "Perform an SQL query on a MS-SQL server database" + ], + "mssql_result": [ + "string mssql_result(resource result_id, int row, mixed field)", + "Returns the contents of one cell from a MS-SQL result set" + ], + "mssql_rows_affected": [ + "int mssql_rows_affected(resource conn_id)", + "Returns the number of records affected by the query" + ], + "mssql_select_db": [ + "bool mssql_select_db(string database_name [, resource conn_id])", + "Select a MS-SQL database" + ], + "mt_getrandmax": [ + "int mt_getrandmax()", + "Returns the maximum value a random number from Mersenne Twister can have" + ], + "mt_rand": [ + "int mt_rand([int min, int max])", + "Returns a random number from Mersenne Twister" + ], + "mt_srand": [ + "void mt_srand([int seed])", + "Seeds Mersenne Twister random number generator" + ], + "mysql_affected_rows": [ + "int mysql_affected_rows([int link_identifier])", + "Gets number of affected rows in previous MySQL operation" + ], + "mysql_client_encoding": [ + "string mysql_client_encoding([int link_identifier])", + "Returns the default character set for the current connection" + ], + "mysql_close": [ + "bool mysql_close([int link_identifier])", + "Close a MySQL connection" + ], + "mysql_connect": [ + "resource mysql_connect([string hostname[:port][:/path/to/socket] [, string username [, string password [, bool new [, int flags]]]]])", + "Opens a connection to a MySQL Server" + ], + "mysql_create_db": [ + "bool mysql_create_db(string database_name [, int link_identifier])", + "Create a MySQL database" + ], + "mysql_data_seek": [ + "bool mysql_data_seek(resource result, int row_number)", + "Move internal result pointer" + ], + "mysql_db_query": [ + "resource mysql_db_query(string database_name, string query [, int link_identifier])", + "Sends an SQL query to MySQL" + ], + "mysql_drop_db": [ + "bool mysql_drop_db(string database_name [, int link_identifier])", + "Drops (delete) a MySQL database" + ], + "mysql_errno": [ + "int mysql_errno([int link_identifier])", + "Returns the number of the error message from previous MySQL operation" + ], + "mysql_error": [ + "string mysql_error([int link_identifier])", + "Returns the text of the error message from previous MySQL operation" + ], + "mysql_escape_string": [ + "string mysql_escape_string(string to_be_escaped)", + "Escape string for mysql query" + ], + "mysql_fetch_array": [ + "array mysql_fetch_array(resource result [, int result_type])", + "Fetch a result row as an array (associative, numeric or both)" + ], + "mysql_fetch_assoc": [ + "array mysql_fetch_assoc(resource result)", + "Fetch a result row as an associative array" + ], + "mysql_fetch_field": [ + "object mysql_fetch_field(resource result [, int field_offset])", + "Gets column information from a result and return as an object" + ], + "mysql_fetch_lengths": [ + "array mysql_fetch_lengths(resource result)", + "Gets max data size of each column in a result" + ], + "mysql_fetch_object": [ + "object mysql_fetch_object(resource result [, string class_name [, NULL|array ctor_params]])", + "Fetch a result row as an object" + ], + "mysql_fetch_row": [ + "array mysql_fetch_row(resource result)", + "Gets a result row as an enumerated array" + ], + "mysql_field_flags": [ + "string mysql_field_flags(resource result, int field_offset)", + "Gets the flags associated with the specified field in a result" + ], + "mysql_field_len": [ + "int mysql_field_len(resource result, int field_offset)", + "Returns the length of the specified field" + ], + "mysql_field_name": [ + "string mysql_field_name(resource result, int field_index)", + "Gets the name of the specified field in a result" + ], + "mysql_field_seek": [ + "bool mysql_field_seek(resource result, int field_offset)", + "Sets result pointer to a specific field offset" + ], + "mysql_field_table": [ + "string mysql_field_table(resource result, int field_offset)", + "Gets name of the table the specified field is in" + ], + "mysql_field_type": [ + "string mysql_field_type(resource result, int field_offset)", + "Gets the type of the specified field in a result" + ], + "mysql_free_result": [ + "bool mysql_free_result(resource result)", + "Free result memory" + ], + "mysql_get_client_info": [ + "string mysql_get_client_info()", + "Returns a string that represents the client library version" + ], + "mysql_get_host_info": [ + "string mysql_get_host_info([int link_identifier])", + "Returns a string describing the type of connection in use, including the server host name" + ], + "mysql_get_proto_info": [ + "int mysql_get_proto_info([int link_identifier])", + "Returns the protocol version used by current connection" + ], + "mysql_get_server_info": [ + "string mysql_get_server_info([int link_identifier])", + "Returns a string that represents the server version number" + ], + "mysql_info": [ + "string mysql_info([int link_identifier])", + "Returns a string containing information about the most recent query" + ], + "mysql_insert_id": [ + "int mysql_insert_id([int link_identifier])", + "Gets the ID generated from the previous INSERT operation" + ], + "mysql_list_dbs": [ + "resource mysql_list_dbs([int link_identifier])", + "List databases available on a MySQL server" + ], + "mysql_list_fields": [ + "resource mysql_list_fields(string database_name, string table_name [, int link_identifier])", + "List MySQL result fields" + ], + "mysql_list_processes": [ + "resource mysql_list_processes([int link_identifier])", + "Returns a result set describing the current server threads" + ], + "mysql_list_tables": [ + "resource mysql_list_tables(string database_name [, int link_identifier])", + "List tables in a MySQL database" + ], + "mysql_num_fields": [ + "int mysql_num_fields(resource result)", + "Gets number of fields in a result" + ], + "mysql_num_rows": [ + "int mysql_num_rows(resource result)", + "Gets number of rows in a result" + ], + "mysql_pconnect": [ + "resource mysql_pconnect([string hostname[:port][:/path/to/socket] [, string username [, string password [, int flags]]]])", + "Opens a persistent connection to a MySQL Server" + ], + "mysql_ping": [ + "bool mysql_ping([int link_identifier])", + "Ping a server connection. If no connection then reconnect." + ], + "mysql_query": [ + "resource mysql_query(string query [, int link_identifier])", + "Sends an SQL query to MySQL" + ], + "mysql_real_escape_string": [ + "string mysql_real_escape_string(string to_be_escaped [, int link_identifier])", + "Escape special characters in a string for use in a SQL statement, taking into account the current charset of the connection" + ], + "mysql_result": [ + "mixed mysql_result(resource result, int row [, mixed field])", + "Gets result data" + ], + "mysql_select_db": [ + "bool mysql_select_db(string database_name [, int link_identifier])", + "Selects a MySQL database" + ], + "mysql_set_charset": [ + "bool mysql_set_charset(string csname [, int link_identifier])", + "sets client character set" + ], + "mysql_stat": [ + "string mysql_stat([int link_identifier])", + "Returns a string containing status information" + ], + "mysql_thread_id": [ + "int mysql_thread_id([int link_identifier])", + "Returns the thread id of current connection" + ], + "mysql_unbuffered_query": [ + "resource mysql_unbuffered_query(string query [, int link_identifier])", + "Sends an SQL query to MySQL, without fetching and buffering the result rows" + ], + "mysqli_affected_rows": [ + "mixed mysqli_affected_rows(object link)", + "Get number of affected rows in previous MySQL operation" + ], + "mysqli_autocommit": [ + "bool mysqli_autocommit(object link, bool mode)", + "Turn auto commit on or of" + ], + "mysqli_cache_stats": [ + "array mysqli_cache_stats()", + "Returns statistics about the zval cache" + ], + "mysqli_change_user": [ + "bool mysqli_change_user(object link, string user, string password, string database)", + "Change logged-in user of the active connection" + ], + "mysqli_character_set_name": [ + "string mysqli_character_set_name(object link)", + "Returns the name of the character set used for this connection" + ], + "mysqli_close": [ + "bool mysqli_close(object link)", + "Close connection" + ], + "mysqli_commit": [ + "bool mysqli_commit(object link)", + "Commit outstanding actions and close transaction" + ], + "mysqli_connect": [ + "object mysqli_connect([string hostname [,string username [,string passwd [,string dbname [,int port [,string socket]]]]]])", + "Open a connection to a mysql server" + ], + "mysqli_connect_errno": [ + "int mysqli_connect_errno()", + "Returns the numerical value of the error message from last connect command" + ], + "mysqli_connect_error": [ + "string mysqli_connect_error()", + "Returns the text of the error message from previous MySQL operation" + ], + "mysqli_data_seek": [ + "bool mysqli_data_seek(object result, int offset)", + "Move internal result pointer" + ], + "mysqli_debug": [ + "void mysqli_debug(string debug)", + "" + ], + "mysqli_dump_debug_info": [ + "bool mysqli_dump_debug_info(object link)", + "" + ], + "mysqli_embedded_server_end": [ + "void mysqli_embedded_server_end()", + "" + ], + "mysqli_embedded_server_start": [ + "bool mysqli_embedded_server_start(bool start, array arguments, array groups)", + "initialize and start embedded server" + ], + "mysqli_errno": [ + "int mysqli_errno(object link)", + "Returns the numerical value of the error message from previous MySQL operation" + ], + "mysqli_error": [ + "string mysqli_error(object link)", + "Returns the text of the error message from previous MySQL operation" + ], + "mysqli_fetch_all": [ + "mixed mysqli_fetch_all(object result [,int resulttype])", + "Fetches all result rows as an associative array, a numeric array, or both" + ], + "mysqli_fetch_array": [ + "mixed mysqli_fetch_array(object result [,int resulttype])", + "Fetch a result row as an associative array, a numeric array, or both" + ], + "mysqli_fetch_assoc": [ + "mixed mysqli_fetch_assoc(object result)", + "Fetch a result row as an associative array" + ], + "mysqli_fetch_field": [ + "mixed mysqli_fetch_field(object result)", + "Get column information from a result and return as an object" + ], + "mysqli_fetch_field_direct": [ + "mixed mysqli_fetch_field_direct(object result, int offset)", + "Fetch meta-data for a single field" + ], + "mysqli_fetch_fields": [ + "mixed mysqli_fetch_fields(object result)", + "Return array of objects containing field meta-data" + ], + "mysqli_fetch_lengths": [ + "mixed mysqli_fetch_lengths(object result)", + "Get the length of each output in a result" + ], + "mysqli_fetch_object": [ + "mixed mysqli_fetch_object(object result [, string class_name [, NULL|array ctor_params]])", + "Fetch a result row as an object" + ], + "mysqli_fetch_row": [ + "array mysqli_fetch_row(object result)", + "Get a result row as an enumerated array" + ], + "mysqli_field_count": [ + "int mysqli_field_count(object link)", + "Fetch the number of fields returned by the last query for the given link" + ], + "mysqli_field_seek": [ + "int mysqli_field_seek(object result, int fieldnr)", + "Set result pointer to a specified field offset" + ], + "mysqli_field_tell": [ + "int mysqli_field_tell(object result)", + "Get current field offset of result pointer" + ], + "mysqli_free_result": [ + "void mysqli_free_result(object result)", + "Free query result memory for the given result handle" + ], + "mysqli_get_charset": [ + "object mysqli_get_charset(object link)", + "returns a character set object" + ], + "mysqli_get_client_info": [ + "string mysqli_get_client_info()", + "Get MySQL client info" + ], + "mysqli_get_client_stats": [ + "array mysqli_get_client_stats()", + "Returns statistics about the zval cache" + ], + "mysqli_get_client_version": [ + "int mysqli_get_client_version()", + "Get MySQL client info" + ], + "mysqli_get_connection_stats": [ + "array mysqli_get_connection_stats()", + "Returns statistics about the zval cache" + ], + "mysqli_get_host_info": [ + "string mysqli_get_host_info(object link)", + "Get MySQL host info" + ], + "mysqli_get_proto_info": [ + "int mysqli_get_proto_info(object link)", + "Get MySQL protocol information" + ], + "mysqli_get_server_info": [ + "string mysqli_get_server_info(object link)", + "Get MySQL server info" + ], + "mysqli_get_server_version": [ + "int mysqli_get_server_version(object link)", + "Return the MySQL version for the server referenced by the given link" + ], + "mysqli_get_warnings": [ + "object mysqli_get_warnings(object link)", + "" + ], + "mysqli_info": [ + "string mysqli_info(object link)", + "Get information about the most recent query" + ], + "mysqli_init": [ + "resource mysqli_init()", + "Initialize mysqli and return a resource for use with mysql_real_connect" + ], + "mysqli_insert_id": [ + "mixed mysqli_insert_id(object link)", + "Get the ID generated from the previous INSERT operation" + ], + "mysqli_kill": [ + "bool mysqli_kill(object link, int processid)", + "Kill a mysql process on the server" + ], + "mysqli_link_construct": [ + "object mysqli_link_construct()", + "" + ], + "mysqli_more_results": [ + "bool mysqli_more_results(object link)", + "check if there any more query results from a multi query" + ], + "mysqli_multi_query": [ + "bool mysqli_multi_query(object link, string query)", + "allows to execute multiple queries" + ], + "mysqli_next_result": [ + "bool mysqli_next_result(object link)", + "read next result from multi_query" + ], + "mysqli_num_fields": [ + "int mysqli_num_fields(object result)", + "Get number of fields in result" + ], + "mysqli_num_rows": [ + "mixed mysqli_num_rows(object result)", + "Get number of rows in result" + ], + "mysqli_options": [ + "bool mysqli_options(object link, int flags, mixed values)", + "Set options" + ], + "mysqli_ping": [ + "bool mysqli_ping(object link)", + "Ping a server connection or reconnect if there is no connection" + ], + "mysqli_poll": [ + "int mysqli_poll(array read, array write, array error, long sec [, long usec])", + "Poll connections" + ], + "mysqli_prepare": [ + "mixed mysqli_prepare(object link, string query)", + "Prepare a SQL statement for execution" + ], + "mysqli_query": [ + "mixed mysqli_query(object link, string query [,int resultmode])", + "" + ], + "mysqli_real_connect": [ + "bool mysqli_real_connect(object link [,string hostname [,string username [,string passwd [,string dbname [,int port [,string socket [,int flags]]]]]]])", + "Open a connection to a mysql server" + ], + "mysqli_real_escape_string": [ + "string mysqli_real_escape_string(object link, string escapestr)", + "Escapes special characters in a string for use in a SQL statement, taking into account the current charset of the connection" + ], + "mysqli_real_query": [ + "bool mysqli_real_query(object link, string query)", + "Binary-safe version of mysql_query()" + ], + "mysqli_reap_async_query": [ + "int mysqli_reap_async_query(object link)", + "Poll connections" + ], + "mysqli_refresh": [ + "bool mysqli_refresh(object link, long options)", + "Flush tables or caches, or reset replication server information" + ], + "mysqli_report": [ + "bool mysqli_report(int flags)", + "sets report level" + ], + "mysqli_rollback": [ + "bool mysqli_rollback(object link)", + "Undo actions from current transaction" + ], + "mysqli_select_db": [ + "bool mysqli_select_db(object link, string dbname)", + "Select a MySQL database" + ], + "mysqli_set_charset": [ + "bool mysqli_set_charset(object link, string csname)", + "sets client character set" + ], + "mysqli_set_local_infile_default": [ + "void mysqli_set_local_infile_default(object link)", + "unsets user defined handler for load local infile command" + ], + "mysqli_set_local_infile_handler": [ + "bool mysqli_set_local_infile_handler(object link, callback read_func)", + "Set callback functions for LOAD DATA LOCAL INFILE" + ], + "mysqli_sqlstate": [ + "string mysqli_sqlstate(object link)", + "Returns the SQLSTATE error from previous MySQL operation" + ], + "mysqli_ssl_set": [ + "bool mysqli_ssl_set(object link ,string key ,string cert ,string ca ,string capath ,string cipher])", + "" + ], + "mysqli_stat": [ + "mixed mysqli_stat(object link)", + "Get current system status" + ], + "mysqli_stmt_affected_rows": [ + "mixed mysqli_stmt_affected_rows(object stmt)", + "Return the number of rows affected in the last query for the given link" + ], + "mysqli_stmt_attr_get": [ + "int mysqli_stmt_attr_get(object stmt, long attr)", + "" + ], + "mysqli_stmt_attr_set": [ + "int mysqli_stmt_attr_set(object stmt, long attr, long mode)", + "" + ], + "mysqli_stmt_bind_param": [ + "bool mysqli_stmt_bind_param(object stmt, string types, mixed variable [,mixed,....])", + "Bind variables to a prepared statement as parameters" + ], + "mysqli_stmt_bind_result": [ + "bool mysqli_stmt_bind_result(object stmt, mixed var, [,mixed, ...])", + "Bind variables to a prepared statement for result storage" + ], + "mysqli_stmt_close": [ + "bool mysqli_stmt_close(object stmt)", + "Close statement" + ], + "mysqli_stmt_data_seek": [ + "void mysqli_stmt_data_seek(object stmt, int offset)", + "Move internal result pointer" + ], + "mysqli_stmt_errno": [ + "int mysqli_stmt_errno(object stmt)", + "" + ], + "mysqli_stmt_error": [ + "string mysqli_stmt_error(object stmt)", + "" + ], + "mysqli_stmt_execute": [ + "bool mysqli_stmt_execute(object stmt)", + "Execute a prepared statement" + ], + "mysqli_stmt_fetch": [ + "mixed mysqli_stmt_fetch(object stmt)", + "Fetch results from a prepared statement into the bound variables" + ], + "mysqli_stmt_field_count": [ + "int mysqli_stmt_field_count(object stmt) {", + "Return the number of result columns for the given statement" + ], + "mysqli_stmt_free_result": [ + "void mysqli_stmt_free_result(object stmt)", + "Free stored result memory for the given statement handle" + ], + "mysqli_stmt_get_result": [ + "object mysqli_stmt_get_result(object link)", + "Buffer result set on client" + ], + "mysqli_stmt_get_warnings": [ + "object mysqli_stmt_get_warnings(object link)", + "" + ], + "mysqli_stmt_init": [ + "mixed mysqli_stmt_init(object link)", + "Initialize statement object" + ], + "mysqli_stmt_insert_id": [ + "mixed mysqli_stmt_insert_id(object stmt)", + "Get the ID generated from the previous INSERT operation" + ], + "mysqli_stmt_next_result": [ + "bool mysqli_stmt_next_result(object link)", + "read next result from multi_query" + ], + "mysqli_stmt_num_rows": [ + "mixed mysqli_stmt_num_rows(object stmt)", + "Return the number of rows in statements result set" + ], + "mysqli_stmt_param_count": [ + "int mysqli_stmt_param_count(object stmt)", + "Return the number of parameter for the given statement" + ], + "mysqli_stmt_prepare": [ + "bool mysqli_stmt_prepare(object stmt, string query)", + "prepare server side statement with query" + ], + "mysqli_stmt_reset": [ + "bool mysqli_stmt_reset(object stmt)", + "reset a prepared statement" + ], + "mysqli_stmt_result_metadata": [ + "mixed mysqli_stmt_result_metadata(object stmt)", + "return result set from statement" + ], + "mysqli_stmt_send_long_data": [ + "bool mysqli_stmt_send_long_data(object stmt, int param_nr, string data)", + "" + ], + "mysqli_stmt_sqlstate": [ + "string mysqli_stmt_sqlstate(object stmt)", + "" + ], + "mysqli_stmt_store_result": [ + "bool mysqli_stmt_store_result(stmt)", + "" + ], + "mysqli_store_result": [ + "object mysqli_store_result(object link)", + "Buffer result set on client" + ], + "mysqli_thread_id": [ + "int mysqli_thread_id(object link)", + "Return the current thread ID" + ], + "mysqli_thread_safe": [ + "bool mysqli_thread_safe()", + "Return whether thread safety is given or not" + ], + "mysqli_use_result": [ + "mixed mysqli_use_result(object link)", + "Directly retrieve query results - do not buffer results on client side" + ], + "mysqli_warning_count": [ + "int mysqli_warning_count(object link)", + "Return number of warnings from the last query for the given link" + ], + "natcasesort": [ + "void natcasesort(array &array_arg)", + "Sort an array using case-insensitive natural sort" + ], + "natsort": [ + "void natsort(array &array_arg)", + "Sort an array using natural sort" + ], + "next": [ + "mixed next(array array_arg)", + "Move array argument's internal pointer to the next element and return it" + ], + "ngettext": [ + "string ngettext(string MSGID1, string MSGID2, int N)", + "Plural version of gettext()" + ], + "nl2br": [ + "string nl2br(string str [, bool is_xhtml])", + "Converts newlines to HTML line breaks" + ], + "nl_langinfo": [ + "string nl_langinfo(int item)", + "Query language and locale information" + ], + "normalizer_is_normalize": [ + "bool normalizer_is_normalize( string $input [, string $form = FORM_C] )", + "* Test if a string is in a given normalization form." + ], + "normalizer_normalize": [ + "string normalizer_normalize( string $input [, string $form = FORM_C] )", + "* Normalize a string." + ], + "nsapi_request_headers": [ + "array nsapi_request_headers()", + "Get all headers from the request" + ], + "nsapi_response_headers": [ + "array nsapi_response_headers()", + "Get all headers from the response" + ], + "nsapi_virtual": [ + "bool nsapi_virtual(string uri)", + "Perform an NSAPI sub-request" + ], + "number_format": [ + "string number_format(float number [, int num_decimal_places [, string dec_seperator, string thousands_seperator]])", + "Formats a number with grouped thousands" + ], + "numfmt_create": [ + "NumberFormatter numfmt_create( string $locale, int style[, string $pattern ] )", + "* Create number formatter." + ], + "numfmt_format": [ + "mixed numfmt_format( NumberFormatter $nf, mixed $num[, int type] )", + "* Format a number." + ], + "numfmt_format_currency": [ + "mixed numfmt_format_currency( NumberFormatter $nf, double $num, string $currency )", + "* Format a number as currency." + ], + "numfmt_get_attribute": [ + "mixed numfmt_get_attribute( NumberFormatter $nf, int $attr )", + "* Get formatter attribute value." + ], + "numfmt_get_error_code": [ + "int numfmt_get_error_code( NumberFormatter $nf )", + "* Get formatter's last error code." + ], + "numfmt_get_error_message": [ + "string numfmt_get_error_message( NumberFormatter $nf )", + "* Get text description for formatter's last error code." + ], + "numfmt_get_locale": [ + "string numfmt_get_locale( NumberFormatter $nf[, int type] )", + "* Get formatter locale." + ], + "numfmt_get_pattern": [ + "string numfmt_get_pattern( NumberFormatter $nf )", + "* Get formatter pattern." + ], + "numfmt_get_symbol": [ + "string numfmt_get_symbol( NumberFormatter $nf, int $attr )", + "* Get formatter symbol value." + ], + "numfmt_get_text_attribute": [ + "string numfmt_get_text_attribute( NumberFormatter $nf, int $attr )", + "* Get formatter attribute value." + ], + "numfmt_parse": [ + "mixed numfmt_parse( NumberFormatter $nf, string $str[, int $type, int &$position ])", + "* Parse a number." + ], + "numfmt_parse_currency": [ + "double numfmt_parse_currency( NumberFormatter $nf, string $str, string $¤cy[, int $&position] )", + "* Parse a number as currency." + ], + "numfmt_parse_message": [ + "array numfmt_parse_message( string $locale, string $pattern, string $source )", + "* Parse a message." + ], + "numfmt_set_attribute": [ + "bool numfmt_set_attribute( NumberFormatter $nf, int $attr, mixed $value )", + "* Get formatter attribute value." + ], + "numfmt_set_pattern": [ + "bool numfmt_set_pattern( NumberFormatter $nf, string $pattern )", + "* Set formatter pattern." + ], + "numfmt_set_symbol": [ + "bool numfmt_set_symbol( NumberFormatter $nf, int $attr, string $symbol )", + "* Set formatter symbol value." + ], + "numfmt_set_text_attribute": [ + "bool numfmt_set_text_attribute( NumberFormatter $nf, int $attr, string $value )", + "* Get formatter attribute value." + ], + "ob_clean": [ + "bool ob_clean()", + "Clean (delete) the current output buffer" + ], + "ob_end_clean": [ + "bool ob_end_clean()", + "Clean the output buffer, and delete current output buffer" + ], + "ob_end_flush": [ + "bool ob_end_flush()", + "Flush (send) the output buffer, and delete current output buffer" + ], + "ob_flush": [ + "bool ob_flush()", + "Flush (send) contents of the output buffer. The last buffer content is sent to next buffer" + ], + "ob_get_clean": [ + "bool ob_get_clean()", + "Get current buffer contents and delete current output buffer" + ], + "ob_get_contents": [ + "string ob_get_contents()", + "Return the contents of the output buffer" + ], + "ob_get_flush": [ + "bool ob_get_flush()", + "Get current buffer contents, flush (send) the output buffer, and delete current output buffer" + ], + "ob_get_length": [ + "int ob_get_length()", + "Return the length of the output buffer" + ], + "ob_get_level": [ + "int ob_get_level()", + "Return the nesting level of the output buffer" + ], + "ob_get_status": [ + "false|array ob_get_status([bool full_status])", + "Return the status of the active or all output buffers" + ], + "ob_gzhandler": [ + "string ob_gzhandler(string str, int mode)", + "Encode str based on accept-encoding setting - designed to be called from ob_start()" + ], + "ob_iconv_handler": [ + "string ob_iconv_handler(string contents, int status)", + "Returns str in output buffer converted to the iconv.output_encoding character set" + ], + "ob_implicit_flush": [ + "void ob_implicit_flush([int flag])", + "Turn implicit flush on/off and is equivalent to calling flush() after every output call" + ], + "ob_list_handlers": [ + "false|array ob_list_handlers()", + "* List all output_buffers in an array" + ], + "ob_start": [ + "bool ob_start([ string|array user_function [, int chunk_size [, bool erase]]])", + "Turn on Output Buffering (specifying an optional output handler)." + ], + "oci_bind_array_by_name": [ + "bool oci_bind_array_by_name(resource stmt, string name, array &var, int max_table_length [, int max_item_length [, int type ]])", + "Bind a PHP array to an Oracle PL/SQL type by name" + ], + "oci_bind_by_name": [ + "bool oci_bind_by_name(resource stmt, string name, mixed &var, [, int maxlength [, int type]])", + "Bind a PHP variable to an Oracle placeholder by name" + ], + "oci_cancel": [ + "bool oci_cancel(resource stmt)", + "Cancel reading from a cursor" + ], + "oci_close": [ + "bool oci_close(resource connection)", + "Disconnect from database" + ], + "oci_collection_append": [ + "bool oci_collection_append(string value)", + "Append an object to the collection" + ], + "oci_collection_assign": [ + "bool oci_collection_assign(object from)", + "Assign a collection from another existing collection" + ], + "oci_collection_element_assign": [ + "bool oci_collection_element_assign(int index, string val)", + "Assign element val to collection at index ndx" + ], + "oci_collection_element_get": [ + "string oci_collection_element_get(int ndx)", + "Retrieve the value at collection index ndx" + ], + "oci_collection_max": [ + "int oci_collection_max()", + "Return the max value of a collection. For a varray this is the maximum length of the array" + ], + "oci_collection_size": [ + "int oci_collection_size()", + "Return the size of a collection" + ], + "oci_collection_trim": [ + "bool oci_collection_trim(int num)", + "Trim num elements from the end of a collection" + ], + "oci_commit": [ + "bool oci_commit(resource connection)", + "Commit the current context" + ], + "oci_connect": [ + "resource oci_connect(string user, string pass [, string db [, string charset [, int session_mode ]])", + "Connect to an Oracle database and log on. Returns a new session." + ], + "oci_define_by_name": [ + "bool oci_define_by_name(resource stmt, string name, mixed &var [, int type])", + "Define a PHP variable to an Oracle column by name" + ], + "oci_error": [ + "array oci_error([resource stmt|connection|global])", + "Return the last error of stmt|connection|global. If no error happened returns false." + ], + "oci_execute": [ + "bool oci_execute(resource stmt [, int mode])", + "Execute a parsed statement" + ], + "oci_fetch": [ + "bool oci_fetch(resource stmt)", + "Prepare a new row of data for reading" + ], + "oci_fetch_all": [ + "int oci_fetch_all(resource stmt, array &output[, int skip[, int maxrows[, int flags]]])", + "Fetch all rows of result data into an array" + ], + "oci_fetch_array": [ + "array oci_fetch_array( resource stmt [, int mode ])", + "Fetch a result row as an array" + ], + "oci_fetch_assoc": [ + "array oci_fetch_assoc( resource stmt )", + "Fetch a result row as an associative array" + ], + "oci_fetch_object": [ + "object oci_fetch_object( resource stmt )", + "Fetch a result row as an object" + ], + "oci_fetch_row": [ + "array oci_fetch_row( resource stmt )", + "Fetch a result row as an enumerated array" + ], + "oci_field_is_null": [ + "bool oci_field_is_null(resource stmt, int col)", + "Tell whether a column is NULL" + ], + "oci_field_name": [ + "string oci_field_name(resource stmt, int col)", + "Tell the name of a column" + ], + "oci_field_precision": [ + "int oci_field_precision(resource stmt, int col)", + "Tell the precision of a column" + ], + "oci_field_scale": [ + "int oci_field_scale(resource stmt, int col)", + "Tell the scale of a column" + ], + "oci_field_size": [ + "int oci_field_size(resource stmt, int col)", + "Tell the maximum data size of a column" + ], + "oci_field_type": [ + "mixed oci_field_type(resource stmt, int col)", + "Tell the data type of a column" + ], + "oci_field_type_raw": [ + "int oci_field_type_raw(resource stmt, int col)", + "Tell the raw oracle data type of a column" + ], + "oci_free_collection": [ + "bool oci_free_collection()", + "Deletes collection object" + ], + "oci_free_descriptor": [ + "bool oci_free_descriptor()", + "Deletes large object description" + ], + "oci_free_statement": [ + "bool oci_free_statement(resource stmt)", + "Free all resources associated with a statement" + ], + "oci_internal_debug": [ + "void oci_internal_debug(int onoff)", + "Toggle internal debugging output for the OCI extension" + ], + "oci_lob_append": [ + "bool oci_lob_append( object lob )", + "Appends data from a LOB to another LOB" + ], + "oci_lob_close": [ + "bool oci_lob_close()", + "Closes lob descriptor" + ], + "oci_lob_copy": [ + "bool oci_lob_copy( object lob_to, object lob_from [, int length ] )", + "Copies data from a LOB to another LOB" + ], + "oci_lob_eof": [ + "bool oci_lob_eof()", + "Checks if EOF is reached" + ], + "oci_lob_erase": [ + "int oci_lob_erase( [ int offset [, int length ] ] )", + "Erases a specified portion of the internal LOB, starting at a specified offset" + ], + "oci_lob_export": [ + "bool oci_lob_export([string filename [, int start [, int length]]])", + "Writes a large object into a file" + ], + "oci_lob_flush": [ + "bool oci_lob_flush( [ int flag ] )", + "Flushes the LOB buffer" + ], + "oci_lob_import": [ + "bool oci_lob_import( string filename )", + "Loads file into a LOB" + ], + "oci_lob_is_equal": [ + "bool oci_lob_is_equal( object lob1, object lob2 )", + "Tests to see if two LOB/FILE locators are equal" + ], + "oci_lob_load": [ + "string oci_lob_load()", + "Loads a large object" + ], + "oci_lob_read": [ + "string oci_lob_read( int length )", + "Reads particular part of a large object" + ], + "oci_lob_rewind": [ + "bool oci_lob_rewind()", + "Rewind pointer of a LOB" + ], + "oci_lob_save": [ + "bool oci_lob_save( string data [, int offset ])", + "Saves a large object" + ], + "oci_lob_seek": [ + "bool oci_lob_seek( int offset [, int whence ])", + "Moves the pointer of a LOB" + ], + "oci_lob_size": [ + "int oci_lob_size()", + "Returns size of a large object" + ], + "oci_lob_tell": [ + "int oci_lob_tell()", + "Tells LOB pointer position" + ], + "oci_lob_truncate": [ + "bool oci_lob_truncate( [ int length ])", + "Truncates a LOB" + ], + "oci_lob_write": [ + "int oci_lob_write( string string [, int length ])", + "Writes data to current position of a LOB" + ], + "oci_lob_write_temporary": [ + "bool oci_lob_write_temporary(string var [, int lob_type])", + "Writes temporary blob" + ], + "oci_new_collection": [ + "object oci_new_collection(resource connection, string tdo [, string schema])", + "Initialize a new collection" + ], + "oci_new_connect": [ + "resource oci_new_connect(string user, string pass [, string db])", + "Connect to an Oracle database and log on. Returns a new session." + ], + "oci_new_cursor": [ + "resource oci_new_cursor(resource connection)", + "Return a new cursor (Statement-Handle) - use this to bind ref-cursors!" + ], + "oci_new_descriptor": [ + "object oci_new_descriptor(resource connection [, int type])", + "Initialize a new empty descriptor LOB/FILE (LOB is default)" + ], + "oci_num_fields": [ + "int oci_num_fields(resource stmt)", + "Return the number of result columns in a statement" + ], + "oci_num_rows": [ + "int oci_num_rows(resource stmt)", + "Return the row count of an OCI statement" + ], + "oci_parse": [ + "resource oci_parse(resource connection, string query)", + "Parse a query and return a statement" + ], + "oci_password_change": [ + "bool oci_password_change(resource connection, string username, string old_password, string new_password)", + "Changes the password of an account" + ], + "oci_pconnect": [ + "resource oci_pconnect(string user, string pass [, string db [, string charset ]])", + "Connect to an Oracle database using a persistent connection and log on. Returns a new session." + ], + "oci_result": [ + "string oci_result(resource stmt, mixed column)", + "Return a single column of result data" + ], + "oci_rollback": [ + "bool oci_rollback(resource connection)", + "Rollback the current context" + ], + "oci_server_version": [ + "string oci_server_version(resource connection)", + "Return a string containing server version information" + ], + "oci_set_action": [ + "bool oci_set_action(resource connection, string value)", + "Sets the action attribute on the connection" + ], + "oci_set_client_identifier": [ + "bool oci_set_client_identifier(resource connection, string value)", + "Sets the client identifier attribute on the connection" + ], + "oci_set_client_info": [ + "bool oci_set_client_info(resource connection, string value)", + "Sets the client info attribute on the connection" + ], + "oci_set_edition": [ + "bool oci_set_edition(string value)", + "Sets the edition attribute for all subsequent connections created" + ], + "oci_set_module_name": [ + "bool oci_set_module_name(resource connection, string value)", + "Sets the module attribute on the connection" + ], + "oci_set_prefetch": [ + "bool oci_set_prefetch(resource stmt, int prefetch_rows)", + "Sets the number of rows to be prefetched on execute to prefetch_rows for stmt" + ], + "oci_statement_type": [ + "string oci_statement_type(resource stmt)", + "Return the query type of an OCI statement" + ], + "ocifetchinto": [ + "int ocifetchinto(resource stmt, array &output [, int mode])", + "Fetch a row of result data into an array" + ], + "ocigetbufferinglob": [ + "bool ocigetbufferinglob()", + "Returns current state of buffering for a LOB" + ], + "ocisetbufferinglob": [ + "bool ocisetbufferinglob( bool flag )", + "Enables/disables buffering for a LOB" + ], + "octdec": [ + "int octdec(string octal_number)", + "Returns the decimal equivalent of an octal string" + ], + "odbc_autocommit": [ + "mixed odbc_autocommit(resource connection_id [, int OnOff])", + "Toggle autocommit mode or get status" + ], + "odbc_binmode": [ + "bool odbc_binmode(int result_id, int mode)", + "Handle binary column data" + ], + "odbc_close": [ + "void odbc_close(resource connection_id)", + "Close an ODBC connection" + ], + "odbc_close_all": [ + "void odbc_close_all()", + "Close all ODBC connections" + ], + "odbc_columnprivileges": [ + "resource odbc_columnprivileges(resource connection_id, string catalog, string schema, string table, string column)", + "Returns a result identifier that can be used to fetch a list of columns and associated privileges for the specified table" + ], + "odbc_columns": [ + "resource odbc_columns(resource connection_id [, string qualifier [, string owner [, string table_name [, string column_name]]]])", + "Returns a result identifier that can be used to fetch a list of column names in specified tables" + ], + "odbc_commit": [ + "bool odbc_commit(resource connection_id)", + "Commit an ODBC transaction" + ], + "odbc_connect": [ + "resource odbc_connect(string DSN, string user, string password [, int cursor_option])", + "Connect to a datasource" + ], + "odbc_cursor": [ + "string odbc_cursor(resource result_id)", + "Get cursor name" + ], + "odbc_data_source": [ + "array odbc_data_source(resource connection_id, int fetch_type)", + "Return information about the currently connected data source" + ], + "odbc_error": [ + "string odbc_error([resource connection_id])", + "Get the last error code" + ], + "odbc_errormsg": [ + "string odbc_errormsg([resource connection_id])", + "Get the last error message" + ], + "odbc_exec": [ + "resource odbc_exec(resource connection_id, string query [, int flags])", + "Prepare and execute an SQL statement" + ], + "odbc_execute": [ + "bool odbc_execute(resource result_id [, array parameters_array])", + "Execute a prepared statement" + ], + "odbc_fetch_array": [ + "array odbc_fetch_array(int result [, int rownumber])", + "Fetch a result row as an associative array" + ], + "odbc_fetch_into": [ + "int odbc_fetch_into(resource result_id, array &result_array, [, int rownumber])", + "Fetch one result row into an array" + ], + "odbc_fetch_object": [ + "object odbc_fetch_object(int result [, int rownumber])", + "Fetch a result row as an object" + ], + "odbc_fetch_row": [ + "bool odbc_fetch_row(resource result_id [, int row_number])", + "Fetch a row" + ], + "odbc_field_len": [ + "int odbc_field_len(resource result_id, int field_number)", + "Get the length (precision) of a column" + ], + "odbc_field_name": [ + "string odbc_field_name(resource result_id, int field_number)", + "Get a column name" + ], + "odbc_field_num": [ + "int odbc_field_num(resource result_id, string field_name)", + "Return column number" + ], + "odbc_field_scale": [ + "int odbc_field_scale(resource result_id, int field_number)", + "Get the scale of a column" + ], + "odbc_field_type": [ + "string odbc_field_type(resource result_id, int field_number)", + "Get the datatype of a column" + ], + "odbc_foreignkeys": [ + "resource odbc_foreignkeys(resource connection_id, string pk_qualifier, string pk_owner, string pk_table, string fk_qualifier, string fk_owner, string fk_table)", + "Returns a result identifier to either a list of foreign keys in the specified table or a list of foreign keys in other tables that refer to the primary key in the specified table" + ], + "odbc_free_result": [ + "bool odbc_free_result(resource result_id)", + "Free resources associated with a result" + ], + "odbc_gettypeinfo": [ + "resource odbc_gettypeinfo(resource connection_id [, int data_type])", + "Returns a result identifier containing information about data types supported by the data source" + ], + "odbc_longreadlen": [ + "bool odbc_longreadlen(int result_id, int length)", + "Handle LONG columns" + ], + "odbc_next_result": [ + "bool odbc_next_result(resource result_id)", + "Checks if multiple results are avaiable" + ], + "odbc_num_fields": [ + "int odbc_num_fields(resource result_id)", + "Get number of columns in a result" + ], + "odbc_num_rows": [ + "int odbc_num_rows(resource result_id)", + "Get number of rows in a result" + ], + "odbc_pconnect": [ + "resource odbc_pconnect(string DSN, string user, string password [, int cursor_option])", + "Establish a persistent connection to a datasource" + ], + "odbc_prepare": [ + "resource odbc_prepare(resource connection_id, string query)", + "Prepares a statement for execution" + ], + "odbc_primarykeys": [ + "resource odbc_primarykeys(resource connection_id, string qualifier, string owner, string table)", + "Returns a result identifier listing the column names that comprise the primary key for a table" + ], + "odbc_procedurecolumns": [ + "resource odbc_procedurecolumns(resource connection_id [, string qualifier, string owner, string proc, string column])", + "Returns a result identifier containing the list of input and output parameters, as well as the columns that make up the result set for the specified procedures" + ], + "odbc_procedures": [ + "resource odbc_procedures(resource connection_id [, string qualifier, string owner, string name])", + "Returns a result identifier containg the list of procedure names in a datasource" + ], + "odbc_result": [ + "mixed odbc_result(resource result_id, mixed field)", + "Get result data" + ], + "odbc_result_all": [ + "int odbc_result_all(resource result_id [, string format])", + "Print result as HTML table" + ], + "odbc_rollback": [ + "bool odbc_rollback(resource connection_id)", + "Rollback a transaction" + ], + "odbc_setoption": [ + "bool odbc_setoption(resource conn_id|result_id, int which, int option, int value)", + "Sets connection or statement options" + ], + "odbc_specialcolumns": [ + "resource odbc_specialcolumns(resource connection_id, int type, string qualifier, string owner, string table, int scope, int nullable)", + "Returns a result identifier containing either the optimal set of columns that uniquely identifies a row in the table or columns that are automatically updated when any value in the row is updated by a transaction" + ], + "odbc_statistics": [ + "resource odbc_statistics(resource connection_id, string qualifier, string owner, string name, int unique, int accuracy)", + "Returns a result identifier that contains statistics about a single table and the indexes associated with the table" + ], + "odbc_tableprivileges": [ + "resource odbc_tableprivileges(resource connection_id, string qualifier, string owner, string name)", + "Returns a result identifier containing a list of tables and the privileges associated with each table" + ], + "odbc_tables": [ + "resource odbc_tables(resource connection_id [, string qualifier [, string owner [, string name [, string table_types]]]])", + "Call the SQLTables function" + ], + "opendir": [ + "mixed opendir(string path[, resource context])", + "Open a directory and return a dir_handle" + ], + "openlog": [ + "bool openlog(string ident, int option, int facility)", + "Open connection to system logger" + ], + "openssl_csr_export": [ + "bool openssl_csr_export(resource csr, string &out [, bool notext=true])", + "Exports a CSR to file or a var" + ], + "openssl_csr_export_to_file": [ + "bool openssl_csr_export_to_file(resource csr, string outfilename [, bool notext=true])", + "Exports a CSR to file" + ], + "openssl_csr_get_public_key": [ + "mixed openssl_csr_get_public_key(mixed csr)", + "Returns the subject of a CERT or FALSE on error" + ], + "openssl_csr_get_subject": [ + "mixed openssl_csr_get_subject(mixed csr)", + "Returns the subject of a CERT or FALSE on error" + ], + "openssl_csr_new": [ + "bool openssl_csr_new(array dn, resource &privkey [, array configargs [, array extraattribs]])", + "Generates a privkey and CSR" + ], + "openssl_csr_sign": [ + "resource openssl_csr_sign(mixed csr, mixed x509, mixed priv_key, long days [, array config_args [, long serial]])", + "Signs a cert with another CERT" + ], + "openssl_decrypt": [ + "string openssl_decrypt(string data, string method, string password [, bool raw_input=false])", + "Takes raw or base64 encoded string and dectupt it using given method and key" + ], + "openssl_dh_compute_key": [ + "string openssl_dh_compute_key(string pub_key, resource dh_key)", + "Computes shared sicret for public value of remote DH key and local DH key" + ], + "openssl_digest": [ + "string openssl_digest(string data, string method [, bool raw_output=false])", + "Computes digest hash value for given data using given method, returns raw or binhex encoded string" + ], + "openssl_encrypt": [ + "string openssl_encrypt(string data, string method, string password [, bool raw_output=false])", + "Encrypts given data with given method and key, returns raw or base64 encoded string" + ], + "openssl_error_string": [ + "mixed openssl_error_string()", + "Returns a description of the last error, and alters the index of the error messages. Returns false when the are no more messages" + ], + "openssl_get_cipher_methods": [ + "array openssl_get_cipher_methods([bool aliases = false])", + "Return array of available cipher methods" + ], + "openssl_get_md_methods": [ + "array openssl_get_md_methods([bool aliases = false])", + "Return array of available digest methods" + ], + "openssl_open": [ + "bool openssl_open(string data, &string opendata, string ekey, mixed privkey)", + "Opens data" + ], + "openssl_pkcs12_export": [ + "bool openssl_pkcs12_export(mixed x509, string &out, mixed priv_key, string pass[, array args])", + "Creates and exports a PKCS12 to a var" + ], + "openssl_pkcs12_export_to_file": [ + "bool openssl_pkcs12_export_to_file(mixed x509, string filename, mixed priv_key, string pass[, array args])", + "Creates and exports a PKCS to file" + ], + "openssl_pkcs12_read": [ + "bool openssl_pkcs12_read(string PKCS12, array &certs, string pass)", + "Parses a PKCS12 to an array" + ], + "openssl_pkcs7_decrypt": [ + "bool openssl_pkcs7_decrypt(string infilename, string outfilename, mixed recipcert [, mixed recipkey])", + "Decrypts the S/MIME message in the file name infilename and output the results to the file name outfilename. recipcert is a CERT for one of the recipients. recipkey specifies the private key matching recipcert, if recipcert does not include the key" + ], + "openssl_pkcs7_encrypt": [ + "bool openssl_pkcs7_encrypt(string infile, string outfile, mixed recipcerts, array headers [, long flags [, long cipher]])", + "Encrypts the message in the file named infile with the certificates in recipcerts and output the result to the file named outfile" + ], + "openssl_pkcs7_sign": [ + "bool openssl_pkcs7_sign(string infile, string outfile, mixed signcert, mixed signkey, array headers [, long flags [, string extracertsfilename]])", + "Signs the MIME message in the file named infile with signcert/signkey and output the result to file name outfile. headers lists plain text headers to exclude from the signed portion of the message, and should include to, from and subject as a minimum" + ], + "openssl_pkcs7_verify": [ + "bool openssl_pkcs7_verify(string filename, long flags [, string signerscerts [, array cainfo [, string extracerts [, string content]]]])", + "Verifys that the data block is intact, the signer is who they say they are, and returns the CERTs of the signers" + ], + "openssl_pkey_export": [ + "bool openssl_pkey_export(mixed key, &mixed out [, string passphrase [, array config_args]])", + "Gets an exportable representation of a key into a string or file" + ], + "openssl_pkey_export_to_file": [ + "bool openssl_pkey_export_to_file(mixed key, string outfilename [, string passphrase, array config_args)", + "Gets an exportable representation of a key into a file" + ], + "openssl_pkey_free": [ + "void openssl_pkey_free(int key)", + "Frees a key" + ], + "openssl_pkey_get_details": [ + "resource openssl_pkey_get_details(resource key)", + "returns an array with the key details (bits, pkey, type)" + ], + "openssl_pkey_get_private": [ + "int openssl_pkey_get_private(string key [, string passphrase])", + "Gets private keys" + ], + "openssl_pkey_get_public": [ + "int openssl_pkey_get_public(mixed cert)", + "Gets public key from X.509 certificate" + ], + "openssl_pkey_new": [ + "resource openssl_pkey_new([array configargs])", + "Generates a new private key" + ], + "openssl_private_decrypt": [ + "bool openssl_private_decrypt(string data, string &decrypted, mixed key [, int padding])", + "Decrypts data with private key" + ], + "openssl_private_encrypt": [ + "bool openssl_private_encrypt(string data, string &crypted, mixed key [, int padding])", + "Encrypts data with private key" + ], + "openssl_public_decrypt": [ + "bool openssl_public_decrypt(string data, string &crypted, resource key [, int padding])", + "Decrypts data with public key" + ], + "openssl_public_encrypt": [ + "bool openssl_public_encrypt(string data, string &crypted, mixed key [, int padding])", + "Encrypts data with public key" + ], + "openssl_random_pseudo_bytes": [ + "string openssl_random_pseudo_bytes(integer length [, &bool returned_strong_result])", + "Returns a string of the length specified filled with random pseudo bytes" + ], + "openssl_seal": [ + "int openssl_seal(string data, &string sealdata, &array ekeys, array pubkeys)", + "Seals data" + ], + "openssl_sign": [ + "bool openssl_sign(string data, &string signature, mixed key[, mixed method])", + "Signs data" + ], + "openssl_verify": [ + "int openssl_verify(string data, string signature, mixed key[, mixed method])", + "Verifys data" + ], + "openssl_x509_check_private_key": [ + "bool openssl_x509_check_private_key(mixed cert, mixed key)", + "Checks if a private key corresponds to a CERT" + ], + "openssl_x509_checkpurpose": [ + "int openssl_x509_checkpurpose(mixed x509cert, int purpose, array cainfo [, string untrustedfile])", + "Checks the CERT to see if it can be used for the purpose in purpose. cainfo holds information about trusted CAs" + ], + "openssl_x509_export": [ + "bool openssl_x509_export(mixed x509, string &out [, bool notext = true])", + "Exports a CERT to file or a var" + ], + "openssl_x509_export_to_file": [ + "bool openssl_x509_export_to_file(mixed x509, string outfilename [, bool notext = true])", + "Exports a CERT to file or a var" + ], + "openssl_x509_free": [ + "void openssl_x509_free(resource x509)", + "Frees X.509 certificates" + ], + "openssl_x509_parse": [ + "array openssl_x509_parse(mixed x509 [, bool shortnames=true])", + "Returns an array of the fields/values of the CERT" + ], + "openssl_x509_read": [ + "resource openssl_x509_read(mixed cert)", + "Reads X.509 certificates" + ], + "ord": [ + "int ord(string character)", + "Returns ASCII value of character" + ], + "output_add_rewrite_var": [ + "bool output_add_rewrite_var(string name, string value)", + "Add URL rewriter values" + ], + "output_reset_rewrite_vars": [ + "bool output_reset_rewrite_vars()", + "Reset(clear) URL rewriter values" + ], + "pack": [ + "string pack(string format, mixed arg1 [, mixed arg2 [, mixed ...]])", + "Takes one or more arguments and packs them into a binary string according to the format argument" + ], + "parse_ini_file": [ + "array parse_ini_file(string filename [, bool process_sections [, int scanner_mode]])", + "Parse configuration file" + ], + "parse_ini_string": [ + "array parse_ini_string(string ini_string [, bool process_sections [, int scanner_mode]])", + "Parse configuration string" + ], + "parse_locale": [ + "static array parse_locale($locale)", + "* parses a locale-id into an array the different parts of it" + ], + "parse_str": [ + "void parse_str(string encoded_string [, array result])", + "Parses GET/POST/COOKIE data and sets global variables" + ], + "parse_url": [ + "mixed parse_url(string url, [int url_component])", + "Parse a URL and return its components" + ], + "passthru": [ + "void passthru(string command [, int &return_value])", + "Execute an external program and display raw output" + ], + "pathinfo": [ + "array pathinfo(string path[, int options])", + "Returns information about a certain string" + ], + "pclose": [ + "int pclose(resource fp)", + "Close a file pointer opened by popen()" + ], + "pcnlt_sigwaitinfo": [ + "int pcnlt_sigwaitinfo(array set[, array &siginfo])", + "Synchronously wait for queued signals" + ], + "pcntl_alarm": [ + "int pcntl_alarm(int seconds)", + "Set an alarm clock for delivery of a signal" + ], + "pcntl_exec": [ + "bool pcntl_exec(string path [, array args [, array envs]])", + "Executes specified program in current process space as defined by exec(2)" + ], + "pcntl_fork": [ + "int pcntl_fork()", + "Forks the currently running process following the same behavior as the UNIX fork() system call" + ], + "pcntl_getpriority": [ + "int pcntl_getpriority([int pid [, int process_identifier]])", + "Get the priority of any process" + ], + "pcntl_setpriority": [ + "bool pcntl_setpriority(int priority [, int pid [, int process_identifier]])", + "Change the priority of any process" + ], + "pcntl_signal": [ + "bool pcntl_signal(int signo, callback handle [, bool restart_syscalls])", + "Assigns a system signal handler to a PHP function" + ], + "pcntl_signal_dispatch": [ + "bool pcntl_signal_dispatch()", + "Dispatch signals to signal handlers" + ], + "pcntl_sigprocmask": [ + "bool pcntl_sigprocmask(int how, array set[, array &oldset])", + "Examine and change blocked signals" + ], + "pcntl_sigtimedwait": [ + "int pcntl_sigtimedwait(array set[, array &siginfo[, int seconds[, int nanoseconds]]])", + "Wait for queued signals" + ], + "pcntl_wait": [ + "int pcntl_wait(int &status)", + "Waits on or returns the status of a forked child as defined by the waitpid() system call" + ], + "pcntl_waitpid": [ + "int pcntl_waitpid(int pid, int &status, int options)", + "Waits on or returns the status of a forked child as defined by the waitpid() system call" + ], + "pcntl_wexitstatus": [ + "int pcntl_wexitstatus(int status)", + "Returns the status code of a child's exit" + ], + "pcntl_wifexited": [ + "bool pcntl_wifexited(int status)", + "Returns true if the child status code represents a successful exit" + ], + "pcntl_wifsignaled": [ + "bool pcntl_wifsignaled(int status)", + "Returns true if the child status code represents a process that was terminated due to a signal" + ], + "pcntl_wifstopped": [ + "bool pcntl_wifstopped(int status)", + "Returns true if the child status code represents a stopped process (WUNTRACED must have been used with waitpid)" + ], + "pcntl_wstopsig": [ + "int pcntl_wstopsig(int status)", + "Returns the number of the signal that caused the process to stop who's status code is passed" + ], + "pcntl_wtermsig": [ + "int pcntl_wtermsig(int status)", + "Returns the number of the signal that terminated the process who's status code is passed" + ], + "pdo_drivers": [ + "array pdo_drivers()", + "Return array of available PDO drivers" + ], + "pfsockopen": [ + "resource pfsockopen(string hostname, int port [, int errno [, string errstr [, float timeout]]])", + "Open persistent Internet or Unix domain socket connection" + ], + "pg_affected_rows": [ + "int pg_affected_rows(resource result)", + "Returns the number of affected tuples" + ], + "pg_cancel_query": [ + "bool pg_cancel_query(resource connection)", + "Cancel request" + ], + "pg_client_encoding": [ + "string pg_client_encoding([resource connection])", + "Get the current client encoding" + ], + "pg_close": [ + "bool pg_close([resource connection])", + "Close a PostgreSQL connection" + ], + "pg_connect": [ + "resource pg_connect(string connection_string[, int connect_type] | [string host, string port [, string options [, string tty,]]] string database)", + "Open a PostgreSQL connection" + ], + "pg_connection_busy": [ + "bool pg_connection_busy(resource connection)", + "Get connection is busy or not" + ], + "pg_connection_reset": [ + "bool pg_connection_reset(resource connection)", + "Reset connection (reconnect)" + ], + "pg_connection_status": [ + "int pg_connection_status(resource connnection)", + "Get connection status" + ], + "pg_convert": [ + "array pg_convert(resource db, string table, array values[, int options])", + "Check and convert values for PostgreSQL SQL statement" + ], + "pg_copy_from": [ + "bool pg_copy_from(resource connection, string table_name , array rows [, string delimiter [, string null_as]])", + "Copy table from array" + ], + "pg_copy_to": [ + "array pg_copy_to(resource connection, string table_name [, string delimiter [, string null_as]])", + "Copy table to array" + ], + "pg_dbname": [ + "string pg_dbname([resource connection])", + "Get the database name" + ], + "pg_delete": [ + "mixed pg_delete(resource db, string table, array ids[, int options])", + "Delete records has ids (id => value)" + ], + "pg_end_copy": [ + "bool pg_end_copy([resource connection])", + "Sync with backend. Completes the Copy command" + ], + "pg_escape_bytea": [ + "string pg_escape_bytea([resource connection,] string data)", + "Escape binary for bytea type" + ], + "pg_escape_string": [ + "string pg_escape_string([resource connection,] string data)", + "Escape string for text/char type" + ], + "pg_execute": [ + "resource pg_execute([resource connection,] string stmtname, array params)", + "Execute a prepared query" + ], + "pg_fetch_all": [ + "array pg_fetch_all(resource result)", + "Fetch all rows into array" + ], + "pg_fetch_all_columns": [ + "array pg_fetch_all_columns(resource result [, int column_number])", + "Fetch all rows into array" + ], + "pg_fetch_array": [ + "array pg_fetch_array(resource result [, int row [, int result_type]])", + "Fetch a row as an array" + ], + "pg_fetch_assoc": [ + "array pg_fetch_assoc(resource result [, int row])", + "Fetch a row as an assoc array" + ], + "pg_fetch_object": [ + "object pg_fetch_object(resource result [, int row [, string class_name [, NULL|array ctor_params]]])", + "Fetch a row as an object" + ], + "pg_fetch_result": [ + "mixed pg_fetch_result(resource result, [int row_number,] mixed field_name)", + "Returns values from a result identifier" + ], + "pg_fetch_row": [ + "array pg_fetch_row(resource result [, int row [, int result_type]])", + "Get a row as an enumerated array" + ], + "pg_field_is_null": [ + "int pg_field_is_null(resource result, [int row,] mixed field_name_or_number)", + "Test if a field is NULL" + ], + "pg_field_name": [ + "string pg_field_name(resource result, int field_number)", + "Returns the name of the field" + ], + "pg_field_num": [ + "int pg_field_num(resource result, string field_name)", + "Returns the field number of the named field" + ], + "pg_field_prtlen": [ + "int pg_field_prtlen(resource result, [int row,] mixed field_name_or_number)", + "Returns the printed length" + ], + "pg_field_size": [ + "int pg_field_size(resource result, int field_number)", + "Returns the internal size of the field" + ], + "pg_field_table": [ + "mixed pg_field_table(resource result, int field_number[, bool oid_only])", + "Returns the name of the table field belongs to, or table's oid if oid_only is true" + ], + "pg_field_type": [ + "string pg_field_type(resource result, int field_number)", + "Returns the type name for the given field" + ], + "pg_field_type_oid": [ + "string pg_field_type_oid(resource result, int field_number)", + "Returns the type oid for the given field" + ], + "pg_free_result": [ + "bool pg_free_result(resource result)", + "Free result memory" + ], + "pg_get_notify": [ + "array pg_get_notify([resource connection[, result_type]])", + "Get asynchronous notification" + ], + "pg_get_pid": [ + "int pg_get_pid([resource connection)", + "Get backend(server) pid" + ], + "pg_get_result": [ + "resource pg_get_result(resource connection)", + "Get asynchronous query result" + ], + "pg_host": [ + "string pg_host([resource connection])", + "Returns the host name associated with the connection" + ], + "pg_insert": [ + "mixed pg_insert(resource db, string table, array values[, int options])", + "Insert values (filed => value) to table" + ], + "pg_last_error": [ + "string pg_last_error([resource connection])", + "Get the error message string" + ], + "pg_last_notice": [ + "string pg_last_notice(resource connection)", + "Returns the last notice set by the backend" + ], + "pg_last_oid": [ + "string pg_last_oid(resource result)", + "Returns the last object identifier" + ], + "pg_lo_close": [ + "bool pg_lo_close(resource large_object)", + "Close a large object" + ], + "pg_lo_create": [ + "mixed pg_lo_create([resource connection],[mixed large_object_oid])", + "Create a large object" + ], + "pg_lo_export": [ + "bool pg_lo_export([resource connection, ] int objoid, string filename)", + "Export large object direct to filesystem" + ], + "pg_lo_import": [ + "int pg_lo_import([resource connection, ] string filename [, mixed oid])", + "Import large object direct from filesystem" + ], + "pg_lo_open": [ + "resource pg_lo_open([resource connection,] int large_object_oid, string mode)", + "Open a large object and return fd" + ], + "pg_lo_read": [ + "string pg_lo_read(resource large_object [, int len])", + "Read a large object" + ], + "pg_lo_read_all": [ + "int pg_lo_read_all(resource large_object)", + "Read a large object and send straight to browser" + ], + "pg_lo_seek": [ + "bool pg_lo_seek(resource large_object, int offset [, int whence])", + "Seeks position of large object" + ], + "pg_lo_tell": [ + "int pg_lo_tell(resource large_object)", + "Returns current position of large object" + ], + "pg_lo_unlink": [ + "bool pg_lo_unlink([resource connection,] string large_object_oid)", + "Delete a large object" + ], + "pg_lo_write": [ + "int pg_lo_write(resource large_object, string buf [, int len])", + "Write a large object" + ], + "pg_meta_data": [ + "array pg_meta_data(resource db, string table)", + "Get meta_data" + ], + "pg_num_fields": [ + "int pg_num_fields(resource result)", + "Return the number of fields in the result" + ], + "pg_num_rows": [ + "int pg_num_rows(resource result)", + "Return the number of rows in the result" + ], + "pg_options": [ + "string pg_options([resource connection])", + "Get the options associated with the connection" + ], + "pg_parameter_status": [ + "string|false pg_parameter_status([resource connection,] string param_name)", + "Returns the value of a server parameter" + ], + "pg_pconnect": [ + "resource pg_pconnect(string connection_string | [string host, string port [, string options [, string tty,]]] string database)", + "Open a persistent PostgreSQL connection" + ], + "pg_ping": [ + "bool pg_ping([resource connection])", + "Ping database. If connection is bad, try to reconnect." + ], + "pg_port": [ + "int pg_port([resource connection])", + "Return the port number associated with the connection" + ], + "pg_prepare": [ + "resource pg_prepare([resource connection,] string stmtname, string query)", + "Prepare a query for future execution" + ], + "pg_put_line": [ + "bool pg_put_line([resource connection,] string query)", + "Send null-terminated string to backend server" + ], + "pg_query": [ + "resource pg_query([resource connection,] string query)", + "Execute a query" + ], + "pg_query_params": [ + "resource pg_query_params([resource connection,] string query, array params)", + "Execute a query" + ], + "pg_result_error": [ + "string pg_result_error(resource result)", + "Get error message associated with result" + ], + "pg_result_error_field": [ + "string pg_result_error_field(resource result, int fieldcode)", + "Get error message field associated with result" + ], + "pg_result_seek": [ + "bool pg_result_seek(resource result, int offset)", + "Set internal row offset" + ], + "pg_result_status": [ + "mixed pg_result_status(resource result[, long result_type])", + "Get status of query result" + ], + "pg_select": [ + "mixed pg_select(resource db, string table, array ids[, int options])", + "Select records that has ids (id => value)" + ], + "pg_send_execute": [ + "bool pg_send_execute(resource connection, string stmtname, array params)", + "Executes prevriously prepared stmtname asynchronously" + ], + "pg_send_prepare": [ + "bool pg_send_prepare(resource connection, string stmtname, string query)", + "Asynchronously prepare a query for future execution" + ], + "pg_send_query": [ + "bool pg_send_query(resource connection, string query)", + "Send asynchronous query" + ], + "pg_send_query_params": [ + "bool pg_send_query_params(resource connection, string query, array params)", + "Send asynchronous parameterized query" + ], + "pg_set_client_encoding": [ + "int pg_set_client_encoding([resource connection,] string encoding)", + "Set client encoding" + ], + "pg_set_error_verbosity": [ + "int pg_set_error_verbosity([resource connection,] int verbosity)", + "Set error verbosity" + ], + "pg_trace": [ + "bool pg_trace(string filename [, string mode [, resource connection]])", + "Enable tracing a PostgreSQL connection" + ], + "pg_transaction_status": [ + "int pg_transaction_status(resource connnection)", + "Get transaction status" + ], + "pg_tty": [ + "string pg_tty([resource connection])", + "Return the tty name associated with the connection" + ], + "pg_unescape_bytea": [ + "string pg_unescape_bytea(string data)", + "Unescape binary for bytea type" + ], + "pg_untrace": [ + "bool pg_untrace([resource connection])", + "Disable tracing of a PostgreSQL connection" + ], + "pg_update": [ + "mixed pg_update(resource db, string table, array fields, array ids[, int options])", + "Update table using values (field => value) and ids (id => value)" + ], + "pg_version": [ + "array pg_version([resource connection])", + "Returns an array with client, protocol and server version (when available)" + ], + "php_egg_logo_guid": [ + "string php_egg_logo_guid()", + "Return the special ID used to request the PHP logo in phpinfo screens" + ], + "php_ini_loaded_file": [ + "string php_ini_loaded_file()", + "Return the actual loaded ini filename" + ], + "php_ini_scanned_files": [ + "string php_ini_scanned_files()", + "Return comma-separated string of .ini files parsed from the additional ini dir" + ], + "php_logo_guid": [ + "string php_logo_guid()", + "Return the special ID used to request the PHP logo in phpinfo screens" + ], + "php_real_logo_guid": [ + "string php_real_logo_guid()", + "Return the special ID used to request the PHP logo in phpinfo screens" + ], + "php_sapi_name": [ + "string php_sapi_name()", + "Return the current SAPI module name" + ], + "php_snmpv3": [ + "void php_snmpv3(INTERNAL_FUNCTION_PARAMETERS, int st)", + "* * Generic SNMPv3 object fetcher * From here is passed on the the common internal object fetcher. * * st=SNMP_CMD_GET snmp3_get() - query an agent and return a single value. * st=SNMP_CMD_GETNEXT snmp3_getnext() - query an agent and return the next single value. * st=SNMP_CMD_WALK snmp3_walk() - walk the mib and return a single dimensional array * containing the values. * st=SNMP_CMD_REALWALK snmp3_real_walk() - walk the mib and return an * array of oid,value pairs. * st=SNMP_CMD_SET snmp3_set() - query an agent and set a single value *" + ], + "php_strip_whitespace": [ + "string php_strip_whitespace(string file_name)", + "Return source with stripped comments and whitespace" + ], + "php_uname": [ + "string php_uname()", + "Return information about the system PHP was built on" + ], + "phpcredits": [ + "void phpcredits([int flag])", + "Prints the list of people who've contributed to the PHP project" + ], + "phpinfo": [ + "void phpinfo([int what])", + "Output a page of useful information about PHP and the current request" + ], + "phpversion": [ + "string phpversion([string extension])", + "Return the current PHP version" + ], + "pi": [ + "float pi()", + "Returns an approximation of pi" + ], + "png2wbmp": [ + "bool png2wbmp(string f_org, string f_dest, int d_height, int d_width, int threshold)", + "Convert PNG image to WBMP image" + ], + "popen": [ + "resource popen(string command, string mode)", + "Execute a command and open either a read or a write pipe to it" + ], + "posix_access": [ + "bool posix_access(string file [, int mode])", + "Determine accessibility of a file (POSIX.1 5.6.3)" + ], + "posix_ctermid": [ + "string posix_ctermid()", + "Generate terminal path name (POSIX.1, 4.7.1)" + ], + "posix_get_last_error": [ + "int posix_get_last_error()", + "Retrieve the error number set by the last posix function which failed." + ], + "posix_getcwd": [ + "string posix_getcwd()", + "Get working directory pathname (POSIX.1, 5.2.2)" + ], + "posix_getegid": [ + "int posix_getegid()", + "Get the current effective group id (POSIX.1, 4.2.1)" + ], + "posix_geteuid": [ + "int posix_geteuid()", + "Get the current effective user id (POSIX.1, 4.2.1)" + ], + "posix_getgid": [ + "int posix_getgid()", + "Get the current group id (POSIX.1, 4.2.1)" + ], + "posix_getgrgid": [ + "array posix_getgrgid(long gid)", + "Group database access (POSIX.1, 9.2.1)" + ], + "posix_getgrnam": [ + "array posix_getgrnam(string groupname)", + "Group database access (POSIX.1, 9.2.1)" + ], + "posix_getgroups": [ + "array posix_getgroups()", + "Get supplementary group id's (POSIX.1, 4.2.3)" + ], + "posix_getlogin": [ + "string posix_getlogin()", + "Get user name (POSIX.1, 4.2.4)" + ], + "posix_getpgid": [ + "int posix_getpgid()", + "Get the process group id of the specified process (This is not a POSIX function, but a SVR4ism, so we compile conditionally)" + ], + "posix_getpgrp": [ + "int posix_getpgrp()", + "Get current process group id (POSIX.1, 4.3.1)" + ], + "posix_getpid": [ + "int posix_getpid()", + "Get the current process id (POSIX.1, 4.1.1)" + ], + "posix_getppid": [ + "int posix_getppid()", + "Get the parent process id (POSIX.1, 4.1.1)" + ], + "posix_getpwnam": [ + "array posix_getpwnam(string groupname)", + "User database access (POSIX.1, 9.2.2)" + ], + "posix_getpwuid": [ + "array posix_getpwuid(long uid)", + "User database access (POSIX.1, 9.2.2)" + ], + "posix_getrlimit": [ + "array posix_getrlimit()", + "Get system resource consumption limits (This is not a POSIX function, but a BSDism and a SVR4ism. We compile conditionally)" + ], + "posix_getsid": [ + "int posix_getsid()", + "Get process group id of session leader (This is not a POSIX function, but a SVR4ism, so be compile conditionally)" + ], + "posix_getuid": [ + "int posix_getuid()", + "Get the current user id (POSIX.1, 4.2.1)" + ], + "posix_initgroups": [ + "bool posix_initgroups(string name, int base_group_id)", + "Calculate the group access list for the user specified in name." + ], + "posix_isatty": [ + "bool posix_isatty(int fd)", + "Determine if filedesc is a tty (POSIX.1, 4.7.1)" + ], + "posix_kill": [ + "bool posix_kill(int pid, int sig)", + "Send a signal to a process (POSIX.1, 3.3.2)" + ], + "posix_mkfifo": [ + "bool posix_mkfifo(string pathname, int mode)", + "Make a FIFO special file (POSIX.1, 5.4.2)" + ], + "posix_mknod": [ + "bool posix_mknod(string pathname, int mode [, int major [, int minor]])", + "Make a special or ordinary file (POSIX.1)" + ], + "posix_setegid": [ + "bool posix_setegid(long uid)", + "Set effective group id" + ], + "posix_seteuid": [ + "bool posix_seteuid(long uid)", + "Set effective user id" + ], + "posix_setgid": [ + "bool posix_setgid(int uid)", + "Set group id (POSIX.1, 4.2.2)" + ], + "posix_setpgid": [ + "bool posix_setpgid(int pid, int pgid)", + "Set process group id for job control (POSIX.1, 4.3.3)" + ], + "posix_setsid": [ + "int posix_setsid()", + "Create session and set process group id (POSIX.1, 4.3.2)" + ], + "posix_setuid": [ + "bool posix_setuid(long uid)", + "Set user id (POSIX.1, 4.2.2)" + ], + "posix_strerror": [ + "string posix_strerror(int errno)", + "Retrieve the system error message associated with the given errno." + ], + "posix_times": [ + "array posix_times()", + "Get process times (POSIX.1, 4.5.2)" + ], + "posix_ttyname": [ + "string posix_ttyname(int fd)", + "Determine terminal device name (POSIX.1, 4.7.2)" + ], + "posix_uname": [ + "array posix_uname()", + "Get system name (POSIX.1, 4.4.1)" + ], + "pow": [ + "number pow(number base, number exponent)", + "Returns base raised to the power of exponent. Returns integer result when possible" + ], + "preg_filter": [ + "mixed preg_filter(mixed regex, mixed replace, mixed subject [, int limit [, int &count]])", + "Perform Perl-style regular expression replacement and only return matches." + ], + "preg_grep": [ + "array preg_grep(string regex, array input [, int flags])", + "Searches array and returns entries which match regex" + ], + "preg_last_error": [ + "int preg_last_error()", + "Returns the error code of the last regexp execution." + ], + "preg_match": [ + "int preg_match(string pattern, string subject [, array &subpatterns [, int flags [, int offset]]])", + "Perform a Perl-style regular expression match" + ], + "preg_match_all": [ + "int preg_match_all(string pattern, string subject, array &subpatterns [, int flags [, int offset]])", + "Perform a Perl-style global regular expression match" + ], + "preg_quote": [ + "string preg_quote(string str [, string delim_char])", + "Quote regular expression characters plus an optional character" + ], + "preg_replace": [ + "mixed preg_replace(mixed regex, mixed replace, mixed subject [, int limit [, int &count]])", + "Perform Perl-style regular expression replacement." + ], + "preg_replace_callback": [ + "mixed preg_replace_callback(mixed regex, mixed callback, mixed subject [, int limit [, int &count]])", + "Perform Perl-style regular expression replacement using replacement callback." + ], + "preg_split": [ + "array preg_split(string pattern, string subject [, int limit [, int flags]])", + "Split string into an array using a perl-style regular expression as a delimiter" + ], + "prev": [ + "mixed prev(array array_arg)", + "Move array argument's internal pointer to the previous element and return it" + ], + "print": [ + "int print(string arg)", + "Output a string" + ], + "print_r": [ + "mixed print_r(mixed var [, bool return])", + "Prints out or returns information about the specified variable" + ], + "printf": [ + "int printf(string format [, mixed arg1 [, mixed ...]])", + "Output a formatted string" + ], + "proc_close": [ + "int proc_close(resource process)", + "close a process opened by proc_open" + ], + "proc_get_status": [ + "array proc_get_status(resource process)", + "get information about a process opened by proc_open" + ], + "proc_nice": [ + "bool proc_nice(int priority)", + "Change the priority of the current process" + ], + "proc_open": [ + "resource proc_open(string command, array descriptorspec, array &pipes [, string cwd [, array env [, array other_options]]])", + "Run a process with more control over it's file descriptors" + ], + "proc_terminate": [ + "bool proc_terminate(resource process [, long signal])", + "kill a process opened by proc_open" + ], + "property_exists": [ + "bool property_exists(mixed object_or_class, string property_name)", + "Checks if the object or class has a property" + ], + "pspell_add_to_personal": [ + "bool pspell_add_to_personal(int pspell, string word)", + "Adds a word to a personal list" + ], + "pspell_add_to_session": [ + "bool pspell_add_to_session(int pspell, string word)", + "Adds a word to the current session" + ], + "pspell_check": [ + "bool pspell_check(int pspell, string word)", + "Returns true if word is valid" + ], + "pspell_clear_session": [ + "bool pspell_clear_session(int pspell)", + "Clears the current session" + ], + "pspell_config_create": [ + "int pspell_config_create(string language [, string spelling [, string jargon [, string encoding]]])", + "Create a new config to be used later to create a manager" + ], + "pspell_config_data_dir": [ + "bool pspell_config_data_dir(int conf, string directory)", + "location of language data files" + ], + "pspell_config_dict_dir": [ + "bool pspell_config_dict_dir(int conf, string directory)", + "location of the main word list" + ], + "pspell_config_ignore": [ + "bool pspell_config_ignore(int conf, int ignore)", + "Ignore words <= n chars" + ], + "pspell_config_mode": [ + "bool pspell_config_mode(int conf, long mode)", + "Select mode for config (PSPELL_FAST, PSPELL_NORMAL or PSPELL_BAD_SPELLERS)" + ], + "pspell_config_personal": [ + "bool pspell_config_personal(int conf, string personal)", + "Use a personal dictionary for this config" + ], + "pspell_config_repl": [ + "bool pspell_config_repl(int conf, string repl)", + "Use a personal dictionary with replacement pairs for this config" + ], + "pspell_config_runtogether": [ + "bool pspell_config_runtogether(int conf, bool runtogether)", + "Consider run-together words as valid components" + ], + "pspell_config_save_repl": [ + "bool pspell_config_save_repl(int conf, bool save)", + "Save replacement pairs when personal list is saved for this config" + ], + "pspell_new": [ + "int pspell_new(string language [, string spelling [, string jargon [, string encoding [, int mode]]]])", + "Load a dictionary" + ], + "pspell_new_config": [ + "int pspell_new_config(int config)", + "Load a dictionary based on the given config" + ], + "pspell_new_personal": [ + "int pspell_new_personal(string personal, string language [, string spelling [, string jargon [, string encoding [, int mode]]]])", + "Load a dictionary with a personal wordlist" + ], + "pspell_save_wordlist": [ + "bool pspell_save_wordlist(int pspell)", + "Saves the current (personal) wordlist" + ], + "pspell_store_replacement": [ + "bool pspell_store_replacement(int pspell, string misspell, string correct)", + "Notify the dictionary of a user-selected replacement" + ], + "pspell_suggest": [ + "array pspell_suggest(int pspell, string word)", + "Returns array of suggestions" + ], + "putenv": [ + "bool putenv(string setting)", + "Set the value of an environment variable" + ], + "quoted_printable_decode": [ + "string quoted_printable_decode(string str)", + "Convert a quoted-printable string to an 8 bit string" + ], + "quoted_printable_encode": [ + "string quoted_printable_encode(string str)", + "" + ], + "quotemeta": [ + "string quotemeta(string str)", + "Quotes meta characters" + ], + "rad2deg": [ + "float rad2deg(float number)", + "Converts the radian number to the equivalent number in degrees" + ], + "rand": [ + "int rand([int min, int max])", + "Returns a random number" + ], + "range": [ + "array range(mixed low, mixed high[, int step])", + "Create an array containing the range of integers or characters from low to high (inclusive)" + ], + "rawurldecode": [ + "string rawurldecode(string str)", + "Decodes URL-encodes string" + ], + "rawurlencode": [ + "string rawurlencode(string str)", + "URL-encodes string" + ], + "readdir": [ + "string readdir([resource dir_handle])", + "Read directory entry from dir_handle" + ], + "readfile": [ + "int readfile(string filename [, bool use_include_path[, resource context]])", + "Output a file or a URL" + ], + "readgzfile": [ + "int readgzfile(string filename [, int use_include_path])", + "Output a .gz-file" + ], + "readline": [ + "string readline([string prompt])", + "Reads a line" + ], + "readline_add_history": [ + "bool readline_add_history(string prompt)", + "Adds a line to the history" + ], + "readline_callback_handler_install": [ + "void readline_callback_handler_install(string prompt, mixed callback)", + "Initializes the readline callback interface and terminal, prints the prompt and returns immediately" + ], + "readline_callback_handler_remove": [ + "bool readline_callback_handler_remove()", + "Removes a previously installed callback handler and restores terminal settings" + ], + "readline_callback_read_char": [ + "void readline_callback_read_char()", + "Informs the readline callback interface that a character is ready for input" + ], + "readline_clear_history": [ + "bool readline_clear_history()", + "Clears the history" + ], + "readline_completion_function": [ + "bool readline_completion_function(string funcname)", + "Readline completion function?" + ], + "readline_info": [ + "mixed readline_info([string varname [, string newvalue]])", + "Gets/sets various internal readline variables." + ], + "readline_list_history": [ + "array readline_list_history()", + "Lists the history" + ], + "readline_on_new_line": [ + "void readline_on_new_line()", + "Inform readline that the cursor has moved to a new line" + ], + "readline_read_history": [ + "bool readline_read_history([string filename])", + "Reads the history" + ], + "readline_redisplay": [ + "void readline_redisplay()", + "Ask readline to redraw the display" + ], + "readline_write_history": [ + "bool readline_write_history([string filename])", + "Writes the history" + ], + "readlink": [ + "string readlink(string filename)", + "Return the target of a symbolic link" + ], + "realpath": [ + "string realpath(string path)", + "Return the resolved path" + ], + "realpath_cache_get": [ + "bool realpath_cache_get()", + "Get current size of realpath cache" + ], + "realpath_cache_size": [ + "bool realpath_cache_size()", + "Get current size of realpath cache" + ], + "recode_file": [ + "bool recode_file(string request, resource input, resource output)", + "Recode file input into file output according to request" + ], + "recode_string": [ + "string recode_string(string request, string str)", + "Recode string str according to request string" + ], + "register_shutdown_function": [ + "void register_shutdown_function(string function_name)", + "Register a user-level function to be called on request termination" + ], + "register_tick_function": [ + "bool register_tick_function(string function_name [, mixed arg [, mixed ... ]])", + "Registers a tick callback function" + ], + "rename": [ + "bool rename(string old_name, string new_name[, resource context])", + "Rename a file" + ], + "require": [ + "bool require(string path)", + "Includes and evaluates the specified file, erroring if the file cannot be included" + ], + "require_once": [ + "bool require_once(string path)", + "Includes and evaluates the specified file, erroring if the file cannot be included" + ], + "reset": [ + "mixed reset(array array_arg)", + "Set array argument's internal pointer to the first element and return it" + ], + "restore_error_handler": [ + "void restore_error_handler()", + "Restores the previously defined error handler function" + ], + "restore_exception_handler": [ + "void restore_exception_handler()", + "Restores the previously defined exception handler function" + ], + "restore_include_path": [ + "void restore_include_path()", + "Restore the value of the include_path configuration option" + ], + "rewind": [ + "bool rewind(resource fp)", + "Rewind the position of a file pointer" + ], + "rewinddir": [ + "void rewinddir([resource dir_handle])", + "Rewind dir_handle back to the start" + ], + "rmdir": [ + "bool rmdir(string dirname[, resource context])", + "Remove a directory" + ], + "round": [ + "float round(float number [, int precision [, int mode]])", + "Returns the number rounded to specified precision" + ], + "rsort": [ + "bool rsort(array &array_arg [, int sort_flags])", + "Sort an array in reverse order" + ], + "rtrim": [ + "string rtrim(string str [, string character_mask])", + "Removes trailing whitespace" + ], + "scandir": [ + "array scandir(string dir [, int sorting_order [, resource context]])", + "List files & directories inside the specified path" + ], + "sem_acquire": [ + "bool sem_acquire(resource id)", + "Acquires the semaphore with the given id, blocking if necessary" + ], + "sem_get": [ + "resource sem_get(int key [, int max_acquire [, int perm [, int auto_release]])", + "Return an id for the semaphore with the given key, and allow max_acquire (default 1) processes to acquire it simultaneously" + ], + "sem_release": [ + "bool sem_release(resource id)", + "Releases the semaphore with the given id" + ], + "sem_remove": [ + "bool sem_remove(resource id)", + "Removes semaphore from Unix systems" + ], + "serialize": [ + "string serialize(mixed variable)", + "Returns a string representation of variable (which can later be unserialized)" + ], + "session_cache_expire": [ + "int session_cache_expire([int new_cache_expire])", + "Return the current cache expire. If new_cache_expire is given, the current cache_expire is replaced with new_cache_expire" + ], + "session_cache_limiter": [ + "string session_cache_limiter([string new_cache_limiter])", + "Return the current cache limiter. If new_cache_limited is given, the current cache_limiter is replaced with new_cache_limiter" + ], + "session_decode": [ + "bool session_decode(string data)", + "Deserializes data and reinitializes the variables" + ], + "session_destroy": [ + "bool session_destroy()", + "Destroy the current session and all data associated with it" + ], + "session_encode": [ + "string session_encode()", + "Serializes the current setup and returns the serialized representation" + ], + "session_get_cookie_params": [ + "array session_get_cookie_params()", + "Return the session cookie parameters" + ], + "session_id": [ + "string session_id([string newid])", + "Return the current session id. If newid is given, the session id is replaced with newid" + ], + "session_is_registered": [ + "bool session_is_registered(string varname)", + "Checks if a variable is registered in session" + ], + "session_module_name": [ + "string session_module_name([string newname])", + "Return the current module name used for accessing session data. If newname is given, the module name is replaced with newname" + ], + "session_name": [ + "string session_name([string newname])", + "Return the current session name. If newname is given, the session name is replaced with newname" + ], + "session_regenerate_id": [ + "bool session_regenerate_id([bool delete_old_session])", + "Update the current session id with a newly generated one. If delete_old_session is set to true, remove the old session." + ], + "session_register": [ + "bool session_register(mixed var_names [, mixed ...])", + "Adds varname(s) to the list of variables which are freezed at the session end" + ], + "session_save_path": [ + "string session_save_path([string newname])", + "Return the current save path passed to module_name. If newname is given, the save path is replaced with newname" + ], + "session_set_cookie_params": [ + "void session_set_cookie_params(int lifetime [, string path [, string domain [, bool secure[, bool httponly]]]])", + "Set session cookie parameters" + ], + "session_set_save_handler": [ + "void session_set_save_handler(string open, string close, string read, string write, string destroy, string gc)", + "Sets user-level functions" + ], + "session_start": [ + "bool session_start()", + "Begin session - reinitializes freezed variables, registers browsers etc" + ], + "session_unregister": [ + "bool session_unregister(string varname)", + "Removes varname from the list of variables which are freezed at the session end" + ], + "session_unset": [ + "void session_unset()", + "Unset all registered variables" + ], + "session_write_close": [ + "void session_write_close()", + "Write session data and end session" + ], + "set_error_handler": [ + "string set_error_handler(string error_handler [, int error_types])", + "Sets a user-defined error handler function. Returns the previously defined error handler, or false on error" + ], + "set_exception_handler": [ + "string set_exception_handler(callable exception_handler)", + "Sets a user-defined exception handler function. Returns the previously defined exception handler, or false on error" + ], + "set_include_path": [ + "string set_include_path(string new_include_path)", + "Sets the include_path configuration option" + ], + "set_magic_quotes_runtime": [ + "bool set_magic_quotes_runtime(int new_setting)", + "Set the current active configuration setting of magic_quotes_runtime and return previous" + ], + "set_time_limit": [ + "bool set_time_limit(int seconds)", + "Sets the maximum time a script can run" + ], + "setcookie": [ + "bool setcookie(string name [, string value [, int expires [, string path [, string domain [, bool secure[, bool httponly]]]]]])", + "Send a cookie" + ], + "setlocale": [ + "string setlocale(mixed category, string locale [, string ...])", + "Set locale information" + ], + "setrawcookie": [ + "bool setrawcookie(string name [, string value [, int expires [, string path [, string domain [, bool secure[, bool httponly]]]]]])", + "Send a cookie with no url encoding of the value" + ], + "settype": [ + "bool settype(mixed var, string type)", + "Set the type of the variable" + ], + "sha1": [ + "string sha1(string str [, bool raw_output])", + "Calculate the sha1 hash of a string" + ], + "sha1_file": [ + "string sha1_file(string filename [, bool raw_output])", + "Calculate the sha1 hash of given filename" + ], + "shell_exec": [ + "string shell_exec(string cmd)", + "Execute command via shell and return complete output as string" + ], + "shm_attach": [ + "int shm_attach(int key [, int memsize [, int perm]])", + "Creates or open a shared memory segment" + ], + "shm_detach": [ + "bool shm_detach(resource shm_identifier)", + "Disconnects from shared memory segment" + ], + "shm_get_var": [ + "mixed shm_get_var(resource id, int variable_key)", + "Returns a variable from shared memory" + ], + "shm_has_var": [ + "bool shm_has_var(resource id, int variable_key)", + "Checks whether a specific entry exists" + ], + "shm_put_var": [ + "bool shm_put_var(resource shm_identifier, int variable_key, mixed variable)", + "Inserts or updates a variable in shared memory" + ], + "shm_remove": [ + "bool shm_remove(resource shm_identifier)", + "Removes shared memory from Unix systems" + ], + "shm_remove_var": [ + "bool shm_remove_var(resource id, int variable_key)", + "Removes variable from shared memory" + ], + "shmop_close": [ + "void shmop_close(int shmid)", + "closes a shared memory segment" + ], + "shmop_delete": [ + "bool shmop_delete(int shmid)", + "mark segment for deletion" + ], + "shmop_open": [ + "int shmop_open(int key, string flags, int mode, int size)", + "gets and attaches a shared memory segment" + ], + "shmop_read": [ + "string shmop_read(int shmid, int start, int count)", + "reads from a shm segment" + ], + "shmop_size": [ + "int shmop_size(int shmid)", + "returns the shm size" + ], + "shmop_write": [ + "int shmop_write(int shmid, string data, int offset)", + "writes to a shared memory segment" + ], + "shuffle": [ + "bool shuffle(array array_arg)", + "Randomly shuffle the contents of an array" + ], + "similar_text": [ + "int similar_text(string str1, string str2 [, float percent])", + "Calculates the similarity between two strings" + ], + "simplexml_import_dom": [ + "simplemxml_element simplexml_import_dom(domNode node [, string class_name])", + "Get a simplexml_element object from dom to allow for processing" + ], + "simplexml_load_file": [ + "simplemxml_element simplexml_load_file(string filename [, string class_name [, int options [, string ns [, bool is_prefix]]]])", + "Load a filename and return a simplexml_element object to allow for processing" + ], + "simplexml_load_string": [ + "simplemxml_element simplexml_load_string(string data [, string class_name [, int options [, string ns [, bool is_prefix]]]])", + "Load a string and return a simplexml_element object to allow for processing" + ], + "sin": [ + "float sin(float number)", + "Returns the sine of the number in radians" + ], + "sinh": [ + "float sinh(float number)", + "Returns the hyperbolic sine of the number, defined as (exp(number) - exp(-number))/2" + ], + "sleep": [ + "void sleep(int seconds)", + "Delay for a given number of seconds" + ], + "smfi_addheader": [ + "bool smfi_addheader(string headerf, string headerv)", + "Adds a header to the current message." + ], + "smfi_addrcpt": [ + "bool smfi_addrcpt(string rcpt)", + "Add a recipient to the message envelope." + ], + "smfi_chgheader": [ + "bool smfi_chgheader(string headerf, string headerv)", + "Changes a header's value for the current message." + ], + "smfi_delrcpt": [ + "bool smfi_delrcpt(string rcpt)", + "Removes the named recipient from the current message's envelope." + ], + "smfi_getsymval": [ + "string smfi_getsymval(string macro)", + "Returns the value of the given macro or NULL if the macro is not defined." + ], + "smfi_replacebody": [ + "bool smfi_replacebody(string body)", + "Replaces the body of the current message. If called more than once, subsequent calls result in data being appended to the new body." + ], + "smfi_setflags": [ + "void smfi_setflags(long flags)", + "Sets the flags describing the actions the filter may take." + ], + "smfi_setreply": [ + "bool smfi_setreply(string rcode, string xcode, string message)", + "Directly set the SMTP error reply code for this connection. This code will be used on subsequent error replies resulting from actions taken by this filter." + ], + "smfi_settimeout": [ + "void smfi_settimeout(long timeout)", + "Sets the number of seconds libmilter will wait for an MTA connection before timing out a socket." + ], + "snmp2_get": [ + "string snmp2_get(string host, string community, string object_id [, int timeout [, int retries]])", + "Fetch a SNMP object" + ], + "snmp2_getnext": [ + "string snmp2_getnext(string host, string community, string object_id [, int timeout [, int retries]])", + "Fetch a SNMP object" + ], + "snmp2_real_walk": [ + "array snmp2_real_walk(string host, string community, string object_id [, int timeout [, int retries]])", + "Return all objects including their respective object id withing the specified one" + ], + "snmp2_set": [ + "int snmp2_set(string host, string community, string object_id, string type, mixed value [, int timeout [, int retries]])", + "Set the value of a SNMP object" + ], + "snmp2_walk": [ + "array snmp2_walk(string host, string community, string object_id [, int timeout [, int retries]])", + "Return all objects under the specified object id" + ], + "snmp3_get": [ + "int snmp3_get(string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id [, int timeout [, int retries]])", + "Fetch the value of a SNMP object" + ], + "snmp3_getnext": [ + "int snmp3_getnext(string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id [, int timeout [, int retries]])", + "Fetch the value of a SNMP object" + ], + "snmp3_real_walk": [ + "int snmp3_real_walk(string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id [, int timeout [, int retries]])", + "Fetch the value of a SNMP object" + ], + "snmp3_set": [ + "int snmp3_set(string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id, string type, mixed value [, int timeout [, int retries]])", + "Fetch the value of a SNMP object" + ], + "snmp3_walk": [ + "int snmp3_walk(string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id [, int timeout [, int retries]])", + "Fetch the value of a SNMP object" + ], + "snmp_get_quick_print": [ + "bool snmp_get_quick_print()", + "Return the current status of quick_print" + ], + "snmp_get_valueretrieval": [ + "int snmp_get_valueretrieval()", + "Return the method how the SNMP values will be returned" + ], + "snmp_read_mib": [ + "int snmp_read_mib(string filename)", + "Reads and parses a MIB file into the active MIB tree." + ], + "snmp_set_enum_print": [ + "void snmp_set_enum_print(int enum_print)", + "Return all values that are enums with their enum value instead of the raw integer" + ], + "snmp_set_oid_output_format": [ + "void snmp_set_oid_output_format(int oid_format)", + "Set the OID output format." + ], + "snmp_set_quick_print": [ + "void snmp_set_quick_print(int quick_print)", + "Return all objects including their respective object id withing the specified one" + ], + "snmp_set_valueretrieval": [ + "void snmp_set_valueretrieval(int method)", + "Specify the method how the SNMP values will be returned" + ], + "snmpget": [ + "string snmpget(string host, string community, string object_id [, int timeout [, int retries]])", + "Fetch a SNMP object" + ], + "snmpgetnext": [ + "string snmpgetnext(string host, string community, string object_id [, int timeout [, int retries]])", + "Fetch a SNMP object" + ], + "snmprealwalk": [ + "array snmprealwalk(string host, string community, string object_id [, int timeout [, int retries]])", + "Return all objects including their respective object id withing the specified one" + ], + "snmpset": [ + "int snmpset(string host, string community, string object_id, string type, mixed value [, int timeout [, int retries]])", + "Set the value of a SNMP object" + ], + "snmpwalk": [ + "array snmpwalk(string host, string community, string object_id [, int timeout [, int retries]])", + "Return all objects under the specified object id" + ], + "socket_accept": [ + "resource socket_accept(resource socket)", + "Accepts a connection on the listening socket fd" + ], + "socket_bind": [ + "bool socket_bind(resource socket, string addr [, int port])", + "Binds an open socket to a listening port, port is only specified in AF_INET family." + ], + "socket_clear_error": [ + "void socket_clear_error([resource socket])", + "Clears the error on the socket or the last error code." + ], + "socket_close": [ + "void socket_close(resource socket)", + "Closes a file descriptor" + ], + "socket_connect": [ + "bool socket_connect(resource socket, string addr [, int port])", + "Opens a connection to addr:port on the socket specified by socket" + ], + "socket_create": [ + "resource socket_create(int domain, int type, int protocol)", + "Creates an endpoint for communication in the domain specified by domain, of type specified by type" + ], + "socket_create_listen": [ + "resource socket_create_listen(int port[, int backlog])", + "Opens a socket on port to accept connections" + ], + "socket_create_pair": [ + "bool socket_create_pair(int domain, int type, int protocol, array &fd)", + "Creates a pair of indistinguishable sockets and stores them in fds." + ], + "socket_get_option": [ + "mixed socket_get_option(resource socket, int level, int optname)", + "Gets socket options for the socket" + ], + "socket_getpeername": [ + "bool socket_getpeername(resource socket, string &addr[, int &port])", + "Queries the remote side of the given socket which may either result in host/port or in a UNIX filesystem path, dependent on its type." + ], + "socket_getsockname": [ + "bool socket_getsockname(resource socket, string &addr[, int &port])", + "Queries the remote side of the given socket which may either result in host/port or in a UNIX filesystem path, dependent on its type." + ], + "socket_last_error": [ + "int socket_last_error([resource socket])", + "Returns the last socket error (either the last used or the provided socket resource)" + ], + "socket_listen": [ + "bool socket_listen(resource socket[, int backlog])", + "Sets the maximum number of connections allowed to be waited for on the socket specified by fd" + ], + "socket_read": [ + "string socket_read(resource socket, int length [, int type])", + "Reads a maximum of length bytes from socket" + ], + "socket_recv": [ + "int socket_recv(resource socket, string &buf, int len, int flags)", + "Receives data from a connected socket" + ], + "socket_recvfrom": [ + "int socket_recvfrom(resource socket, string &buf, int len, int flags, string &name [, int &port])", + "Receives data from a socket, connected or not" + ], + "socket_select": [ + "int socket_select(array &read_fds, array &write_fds, array &except_fds, int tv_sec[, int tv_usec])", + "Runs the select() system call on the sets mentioned with a timeout specified by tv_sec and tv_usec" + ], + "socket_send": [ + "int socket_send(resource socket, string buf, int len, int flags)", + "Sends data to a connected socket" + ], + "socket_sendto": [ + "int socket_sendto(resource socket, string buf, int len, int flags, string addr [, int port])", + "Sends a message to a socket, whether it is connected or not" + ], + "socket_set_block": [ + "bool socket_set_block(resource socket)", + "Sets blocking mode on a socket resource" + ], + "socket_set_nonblock": [ + "bool socket_set_nonblock(resource socket)", + "Sets nonblocking mode on a socket resource" + ], + "socket_set_option": [ + "bool socket_set_option(resource socket, int level, int optname, int|array optval)", + "Sets socket options for the socket" + ], + "socket_shutdown": [ + "bool socket_shutdown(resource socket[, int how])", + "Shuts down a socket for receiving, sending, or both." + ], + "socket_strerror": [ + "string socket_strerror(int errno)", + "Returns a string describing an error" + ], + "socket_write": [ + "int socket_write(resource socket, string buf[, int length])", + "Writes the buffer to the socket resource, length is optional" + ], + "solid_fetch_prev": [ + "bool solid_fetch_prev(resource result_id)", + "" + ], + "sort": [ + "bool sort(array &array_arg [, int sort_flags])", + "Sort an array" + ], + "soundex": [ + "string soundex(string str)", + "Calculate the soundex key of a string" + ], + "spl_autoload": [ + "void spl_autoload(string class_name [, string file_extensions])", + "Default implementation for __autoload()" + ], + "spl_autoload_call": [ + "void spl_autoload_call(string class_name)", + "Try all registerd autoload function to load the requested class" + ], + "spl_autoload_extensions": [ + "string spl_autoload_extensions([string file_extensions])", + "Register and return default file extensions for spl_autoload" + ], + "spl_autoload_functions": [ + "false|array spl_autoload_functions()", + "Return all registered __autoload() functionns" + ], + "spl_autoload_register": [ + "bool spl_autoload_register([mixed autoload_function = \"spl_autoload\" [, throw = true [, prepend]]])", + "Register given function as __autoload() implementation" + ], + "spl_autoload_unregister": [ + "bool spl_autoload_unregister(mixed autoload_function)", + "Unregister given function as __autoload() implementation" + ], + "spl_classes": [ + "array spl_classes()", + "Return an array containing the names of all clsses and interfaces defined in SPL" + ], + "spl_object_hash": [ + "string spl_object_hash(object obj)", + "Return hash id for given object" + ], + "split": [ + "array split(string pattern, string string [, int limit])", + "Split string into array by regular expression" + ], + "spliti": [ + "array spliti(string pattern, string string [, int limit])", + "Split string into array by regular expression case-insensitive" + ], + "sprintf": [ + "string sprintf(string format [, mixed arg1 [, mixed ...]])", + "Return a formatted string" + ], + "sql_regcase": [ + "string sql_regcase(string string)", + "Make regular expression for case insensitive match" + ], + "sqlite_array_query": [ + "array sqlite_array_query(resource db, string query [ , int result_type [, bool decode_binary]])", + "Executes a query against a given database and returns an array of arrays." + ], + "sqlite_busy_timeout": [ + "void sqlite_busy_timeout(resource db, int ms)", + "Set busy timeout duration. If ms <= 0, all busy handlers are disabled." + ], + "sqlite_changes": [ + "int sqlite_changes(resource db)", + "Returns the number of rows that were changed by the most recent SQL statement." + ], + "sqlite_close": [ + "void sqlite_close(resource db)", + "Closes an open sqlite database." + ], + "sqlite_column": [ + "mixed sqlite_column(resource result, mixed index_or_name [, bool decode_binary])", + "Fetches a column from the current row of a result set." + ], + "sqlite_create_aggregate": [ + "bool sqlite_create_aggregate(resource db, string funcname, mixed step_func, mixed finalize_func[, long num_args])", + "Registers an aggregate function for queries." + ], + "sqlite_create_function": [ + "bool sqlite_create_function(resource db, string funcname, mixed callback[, long num_args])", + "Registers a \"regular\" function for queries." + ], + "sqlite_current": [ + "array sqlite_current(resource result [, int result_type [, bool decode_binary]])", + "Fetches the current row from a result set as an array." + ], + "sqlite_error_string": [ + "string sqlite_error_string(int error_code)", + "Returns the textual description of an error code." + ], + "sqlite_escape_string": [ + "string sqlite_escape_string(string item)", + "Escapes a string for use as a query parameter." + ], + "sqlite_exec": [ + "bool sqlite_exec(string query, resource db[, string &error_message])", + "Executes a result-less query against a given database" + ], + "sqlite_factory": [ + "object sqlite_factory(string filename [, int mode [, string &error_message]])", + "Opens a SQLite database and creates an object for it. Will create the database if it does not exist." + ], + "sqlite_fetch_all": [ + "array sqlite_fetch_all(resource result [, int result_type [, bool decode_binary]])", + "Fetches all rows from a result set as an array of arrays." + ], + "sqlite_fetch_array": [ + "array sqlite_fetch_array(resource result [, int result_type [, bool decode_binary]])", + "Fetches the next row from a result set as an array." + ], + "sqlite_fetch_column_types": [ + "resource sqlite_fetch_column_types(string table_name, resource db [, int result_type])", + "Return an array of column types from a particular table." + ], + "sqlite_fetch_object": [ + "object sqlite_fetch_object(resource result [, string class_name [, NULL|array ctor_params [, bool decode_binary]]])", + "Fetches the next row from a result set as an object." + ], + "sqlite_fetch_single": [ + "string sqlite_fetch_single(resource result [, bool decode_binary])", + "Fetches the first column of a result set as a string." + ], + "sqlite_field_name": [ + "string sqlite_field_name(resource result, int field_index)", + "Returns the name of a particular field of a result set." + ], + "sqlite_has_prev": [ + "bool sqlite_has_prev(resource result)", + "* Returns whether a previous row is available." + ], + "sqlite_key": [ + "int sqlite_key(resource result)", + "Return the current row index of a buffered result." + ], + "sqlite_last_error": [ + "int sqlite_last_error(resource db)", + "Returns the error code of the last error for a database." + ], + "sqlite_last_insert_rowid": [ + "int sqlite_last_insert_rowid(resource db)", + "Returns the rowid of the most recently inserted row." + ], + "sqlite_libencoding": [ + "string sqlite_libencoding()", + "Returns the encoding (iso8859 or UTF-8) of the linked SQLite library." + ], + "sqlite_libversion": [ + "string sqlite_libversion()", + "Returns the version of the linked SQLite library." + ], + "sqlite_next": [ + "bool sqlite_next(resource result)", + "Seek to the next row number of a result set." + ], + "sqlite_num_fields": [ + "int sqlite_num_fields(resource result)", + "Returns the number of fields in a result set." + ], + "sqlite_num_rows": [ + "int sqlite_num_rows(resource result)", + "Returns the number of rows in a buffered result set." + ], + "sqlite_open": [ + "resource sqlite_open(string filename [, int mode [, string &error_message]])", + "Opens a SQLite database. Will create the database if it does not exist." + ], + "sqlite_popen": [ + "resource sqlite_popen(string filename [, int mode [, string &error_message]])", + "Opens a persistent handle to a SQLite database. Will create the database if it does not exist." + ], + "sqlite_prev": [ + "bool sqlite_prev(resource result)", + "* Seek to the previous row number of a result set." + ], + "sqlite_query": [ + "resource sqlite_query(string query, resource db [, int result_type [, string &error_message]])", + "Executes a query against a given database and returns a result handle." + ], + "sqlite_rewind": [ + "bool sqlite_rewind(resource result)", + "Seek to the first row number of a buffered result set." + ], + "sqlite_seek": [ + "bool sqlite_seek(resource result, int row)", + "Seek to a particular row number of a buffered result set." + ], + "sqlite_single_query": [ + "array sqlite_single_query(resource db, string query [, bool first_row_only [, bool decode_binary]])", + "Executes a query and returns either an array for one single column or the value of the first row." + ], + "sqlite_udf_decode_binary": [ + "string sqlite_udf_decode_binary(string data)", + "Decode binary encoding on a string parameter passed to an UDF." + ], + "sqlite_udf_encode_binary": [ + "string sqlite_udf_encode_binary(string data)", + "Apply binary encoding (if required) to a string to return from an UDF." + ], + "sqlite_unbuffered_query": [ + "resource sqlite_unbuffered_query(string query, resource db [ , int result_type [, string &error_message]])", + "Executes a query that does not prefetch and buffer all data." + ], + "sqlite_valid": [ + "bool sqlite_valid(resource result)", + "Returns whether more rows are available." + ], + "sqrt": [ + "float sqrt(float number)", + "Returns the square root of the number" + ], + "srand": [ + "void srand([int seed])", + "Seeds random number generator" + ], + "sscanf": [ + "mixed sscanf(string str, string format [, string ...])", + "Implements an ANSI C compatible sscanf" + ], + "stat": [ + "array stat(string filename)", + "Give information about a file" + ], + "str_getcsv": [ + "array str_getcsv(string input[, string delimiter[, string enclosure[, string escape]]])", + "Parse a CSV string into an array" + ], + "str_ireplace": [ + "mixed str_ireplace(mixed search, mixed replace, mixed subject [, int &replace_count])", + "Replaces all occurrences of search in haystack with replace / case-insensitive" + ], + "str_pad": [ + "string str_pad(string input, int pad_length [, string pad_string [, int pad_type]])", + "Returns input string padded on the left or right to specified length with pad_string" + ], + "str_repeat": [ + "string str_repeat(string input, int mult)", + "Returns the input string repeat mult times" + ], + "str_replace": [ + "mixed str_replace(mixed search, mixed replace, mixed subject [, int &replace_count])", + "Replaces all occurrences of search in haystack with replace" + ], + "str_rot13": [ + "string str_rot13(string str)", + "Perform the rot13 transform on a string" + ], + "str_shuffle": [ + "void str_shuffle(string str)", + "Shuffles string. One permutation of all possible is created" + ], + "str_split": [ + "array str_split(string str [, int split_length])", + "Convert a string to an array. If split_length is specified, break the string down into chunks each split_length characters long." + ], + "str_word_count": [ + "mixed str_word_count(string str, [int format [, string charlist]])", + "Counts the number of words inside a string. If format of 1 is specified, then the function will return an array containing all the words found inside the string. If format of 2 is specified, then the function will return an associated array where the position of the word is the key and the word itself is the value. For the purpose of this function, 'word' is defined as a locale dependent string containing alphabetic characters, which also may contain, but not start with \"'\" and \"-\" characters." + ], + "strcasecmp": [ + "int strcasecmp(string str1, string str2)", + "Binary safe case-insensitive string comparison" + ], + "strchr": [ + "string strchr(string haystack, string needle)", + "An alias for strstr" + ], + "strcmp": [ + "int strcmp(string str1, string str2)", + "Binary safe string comparison" + ], + "strcoll": [ + "int strcoll(string str1, string str2)", + "Compares two strings using the current locale" + ], + "strcspn": [ + "int strcspn(string str, string mask [, start [, len]])", + "Finds length of initial segment consisting entirely of characters not found in mask. If start or/and length is provide works like strcspn(substr($s,$start,$len),$bad_chars)" + ], + "stream_bucket_append": [ + "void stream_bucket_append(resource brigade, resource bucket)", + "Append bucket to brigade" + ], + "stream_bucket_make_writeable": [ + "object stream_bucket_make_writeable(resource brigade)", + "Return a bucket object from the brigade for operating on" + ], + "stream_bucket_new": [ + "resource stream_bucket_new(resource stream, string buffer)", + "Create a new bucket for use on the current stream" + ], + "stream_bucket_prepend": [ + "void stream_bucket_prepend(resource brigade, resource bucket)", + "Prepend bucket to brigade" + ], + "stream_context_create": [ + "resource stream_context_create([array options[, array params]])", + "Create a file context and optionally set parameters" + ], + "stream_context_get_default": [ + "resource stream_context_get_default([array options])", + "Get a handle on the default file/stream context and optionally set parameters" + ], + "stream_context_get_options": [ + "array stream_context_get_options(resource context|resource stream)", + "Retrieve options for a stream/wrapper/context" + ], + "stream_context_get_params": [ + "array stream_context_get_params(resource context|resource stream)", + "Get parameters of a file context" + ], + "stream_context_set_default": [ + "resource stream_context_set_default(array options)", + "Set default file/stream context, returns the context as a resource" + ], + "stream_context_set_option": [ + "bool stream_context_set_option(resource context|resource stream, string wrappername, string optionname, mixed value)", + "Set an option for a wrapper" + ], + "stream_context_set_params": [ + "bool stream_context_set_params(resource context|resource stream, array options)", + "Set parameters for a file context" + ], + "stream_copy_to_stream": [ + "long stream_copy_to_stream(resource source, resource dest [, long maxlen [, long pos]])", + "Reads up to maxlen bytes from source stream and writes them to dest stream." + ], + "stream_filter_append": [ + "resource stream_filter_append(resource stream, string filtername[, int read_write[, string filterparams]])", + "Append a filter to a stream" + ], + "stream_filter_prepend": [ + "resource stream_filter_prepend(resource stream, string filtername[, int read_write[, string filterparams]])", + "Prepend a filter to a stream" + ], + "stream_filter_register": [ + "bool stream_filter_register(string filtername, string classname)", + "Registers a custom filter handler class" + ], + "stream_filter_remove": [ + "bool stream_filter_remove(resource stream_filter)", + "Flushes any data in the filter's internal buffer, removes it from the chain, and frees the resource" + ], + "stream_get_contents": [ + "string stream_get_contents(resource source [, long maxlen [, long offset]])", + "Reads all remaining bytes (or up to maxlen bytes) from a stream and returns them as a string." + ], + "stream_get_filters": [ + "array stream_get_filters()", + "Returns a list of registered filters" + ], + "stream_get_line": [ + "string stream_get_line(resource stream, int maxlen [, string ending])", + "Read up to maxlen bytes from a stream or until the ending string is found" + ], + "stream_get_meta_data": [ + "array stream_get_meta_data(resource fp)", + "Retrieves header/meta data from streams/file pointers" + ], + "stream_get_transports": [ + "array stream_get_transports()", + "Retrieves list of registered socket transports" + ], + "stream_get_wrappers": [ + "array stream_get_wrappers()", + "Retrieves list of registered stream wrappers" + ], + "stream_is_local": [ + "bool stream_is_local(resource stream|string url)", + "" + ], + "stream_resolve_include_path": [ + "string stream_resolve_include_path(string filename)", + "Determine what file will be opened by calls to fopen() with a relative path" + ], + "stream_select": [ + "int stream_select(array &read_streams, array &write_streams, array &except_streams, int tv_sec[, int tv_usec])", + "Runs the select() system call on the sets of streams with a timeout specified by tv_sec and tv_usec" + ], + "stream_set_blocking": [ + "bool stream_set_blocking(resource socket, int mode)", + "Set blocking/non-blocking mode on a socket or stream" + ], + "stream_set_timeout": [ + "bool stream_set_timeout(resource stream, int seconds [, int microseconds])", + "Set timeout on stream read to seconds + microseonds" + ], + "stream_set_write_buffer": [ + "int stream_set_write_buffer(resource fp, int buffer)", + "Set file write buffer" + ], + "stream_socket_accept": [ + "resource stream_socket_accept(resource serverstream, [ double timeout [, string &peername ]])", + "Accept a client connection from a server socket" + ], + "stream_socket_client": [ + "resource stream_socket_client(string remoteaddress [, long &errcode [, string &errstring [, double timeout [, long flags [, resource context]]]]])", + "Open a client connection to a remote address" + ], + "stream_socket_enable_crypto": [ + "int stream_socket_enable_crypto(resource stream, bool enable [, int cryptokind [, resource sessionstream]])", + "Enable or disable a specific kind of crypto on the stream" + ], + "stream_socket_get_name": [ + "string stream_socket_get_name(resource stream, bool want_peer)", + "Returns either the locally bound or remote name for a socket stream" + ], + "stream_socket_pair": [ + "array stream_socket_pair(int domain, int type, int protocol)", + "Creates a pair of connected, indistinguishable socket streams" + ], + "stream_socket_recvfrom": [ + "string stream_socket_recvfrom(resource stream, long amount [, long flags [, string &remote_addr]])", + "Receives data from a socket stream" + ], + "stream_socket_sendto": [ + "long stream_socket_sendto(resouce stream, string data [, long flags [, string target_addr]])", + "Send data to a socket stream. If target_addr is specified it must be in dotted quad (or [ipv6]) format" + ], + "stream_socket_server": [ + "resource stream_socket_server(string localaddress [, long &errcode [, string &errstring [, long flags [, resource context]]]])", + "Create a server socket bound to localaddress" + ], + "stream_socket_shutdown": [ + "int stream_socket_shutdown(resource stream, int how)", + "causes all or part of a full-duplex connection on the socket associated with stream to be shut down. If how is SHUT_RD, further receptions will be disallowed. If how is SHUT_WR, further transmissions will be disallowed. If how is SHUT_RDWR, further receptions and transmissions will be disallowed." + ], + "stream_supports_lock": [ + "bool stream_supports_lock(resource stream)", + "Tells whether the stream supports locking through flock()." + ], + "stream_wrapper_register": [ + "bool stream_wrapper_register(string protocol, string classname[, integer flags])", + "Registers a custom URL protocol handler class" + ], + "stream_wrapper_restore": [ + "bool stream_wrapper_restore(string protocol)", + "Restore the original protocol handler, overriding if necessary" + ], + "stream_wrapper_unregister": [ + "bool stream_wrapper_unregister(string protocol)", + "Unregister a wrapper for the life of the current request." + ], + "strftime": [ + "string strftime(string format [, int timestamp])", + "Format a local time/date according to locale settings" + ], + "strip_tags": [ + "string strip_tags(string str [, string allowable_tags])", + "Strips HTML and PHP tags from a string" + ], + "stripcslashes": [ + "string stripcslashes(string str)", + "Strips backslashes from a string. Uses C-style conventions" + ], + "stripos": [ + "int stripos(string haystack, string needle [, int offset])", + "Finds position of first occurrence of a string within another, case insensitive" + ], + "stripslashes": [ + "string stripslashes(string str)", + "Strips backslashes from a string" + ], + "stristr": [ + "string stristr(string haystack, string needle[, bool part])", + "Finds first occurrence of a string within another, case insensitive" + ], + "strlen": [ + "int strlen(string str)", + "Get string length" + ], + "strnatcasecmp": [ + "int strnatcasecmp(string s1, string s2)", + "Returns the result of case-insensitive string comparison using 'natural' algorithm" + ], + "strnatcmp": [ + "int strnatcmp(string s1, string s2)", + "Returns the result of string comparison using 'natural' algorithm" + ], + "strncasecmp": [ + "int strncasecmp(string str1, string str2, int len)", + "Binary safe string comparison" + ], + "strncmp": [ + "int strncmp(string str1, string str2, int len)", + "Binary safe string comparison" + ], + "strpbrk": [ + "array strpbrk(string haystack, string char_list)", + "Search a string for any of a set of characters" + ], + "strpos": [ + "int strpos(string haystack, string needle [, int offset])", + "Finds position of first occurrence of a string within another" + ], + "strptime": [ + "string strptime(string timestamp, string format)", + "Parse a time/date generated with strftime()" + ], + "strrchr": [ + "string strrchr(string haystack, string needle)", + "Finds the last occurrence of a character in a string within another" + ], + "strrev": [ + "string strrev(string str)", + "Reverse a string" + ], + "strripos": [ + "int strripos(string haystack, string needle [, int offset])", + "Finds position of last occurrence of a string within another string" + ], + "strrpos": [ + "int strrpos(string haystack, string needle [, int offset])", + "Finds position of last occurrence of a string within another string" + ], + "strspn": [ + "int strspn(string str, string mask [, start [, len]])", + "Finds length of initial segment consisting entirely of characters found in mask. If start or/and length is provided works like strspn(substr($s,$start,$len),$good_chars)" + ], + "strstr": [ + "string strstr(string haystack, string needle[, bool part])", + "Finds first occurrence of a string within another" + ], + "strtok": [ + "string strtok([string str,] string token)", + "Tokenize a string" + ], + "strtolower": [ + "string strtolower(string str)", + "Makes a string lowercase" + ], + "strtotime": [ + "int strtotime(string time [, int now ])", + "Convert string representation of date and time to a timestamp" + ], + "strtoupper": [ + "string strtoupper(string str)", + "Makes a string uppercase" + ], + "strtr": [ + "string strtr(string str, string from[, string to])", + "Translates characters in str using given translation tables" + ], + "strval": [ + "string strval(mixed var)", + "Get the string value of a variable" + ], + "substr": [ + "string substr(string str, int start [, int length])", + "Returns part of a string" + ], + "substr_compare": [ + "int substr_compare(string main_str, string str, int offset [, int length [, bool case_sensitivity]])", + "Binary safe optionally case insensitive comparison of 2 strings from an offset, up to length characters" + ], + "substr_count": [ + "int substr_count(string haystack, string needle [, int offset [, int length]])", + "Returns the number of times a substring occurs in the string" + ], + "substr_replace": [ + "mixed substr_replace(mixed str, mixed repl, mixed start [, mixed length])", + "Replaces part of a string with another string" + ], + "sybase_affected_rows": [ + "int sybase_affected_rows([resource link_id])", + "Get number of affected rows in last query" + ], + "sybase_close": [ + "bool sybase_close([resource link_id])", + "Close Sybase connection" + ], + "sybase_connect": [ + "int sybase_connect([string host [, string user [, string password [, string charset [, string appname [, bool new]]]]]])", + "Open Sybase server connection" + ], + "sybase_data_seek": [ + "bool sybase_data_seek(resource result, int offset)", + "Move internal row pointer" + ], + "sybase_deadlock_retry_count": [ + "void sybase_deadlock_retry_count(int retry_count)", + "Sets deadlock retry count" + ], + "sybase_fetch_array": [ + "array sybase_fetch_array(resource result)", + "Fetch row as array" + ], + "sybase_fetch_assoc": [ + "array sybase_fetch_assoc(resource result)", + "Fetch row as array without numberic indices" + ], + "sybase_fetch_field": [ + "object sybase_fetch_field(resource result [, int offset])", + "Get field information" + ], + "sybase_fetch_object": [ + "object sybase_fetch_object(resource result [, mixed object])", + "Fetch row as object" + ], + "sybase_fetch_row": [ + "array sybase_fetch_row(resource result)", + "Get row as enumerated array" + ], + "sybase_field_seek": [ + "bool sybase_field_seek(resource result, int offset)", + "Set field offset" + ], + "sybase_free_result": [ + "bool sybase_free_result(resource result)", + "Free result memory" + ], + "sybase_get_last_message": [ + "string sybase_get_last_message()", + "Returns the last message from server (over min_message_severity)" + ], + "sybase_min_client_severity": [ + "void sybase_min_client_severity(int severity)", + "Sets minimum client severity" + ], + "sybase_min_server_severity": [ + "void sybase_min_server_severity(int severity)", + "Sets minimum server severity" + ], + "sybase_num_fields": [ + "int sybase_num_fields(resource result)", + "Get number of fields in result" + ], + "sybase_num_rows": [ + "int sybase_num_rows(resource result)", + "Get number of rows in result" + ], + "sybase_pconnect": [ + "int sybase_pconnect([string host [, string user [, string password [, string charset [, string appname]]]]])", + "Open persistent Sybase connection" + ], + "sybase_query": [ + "int sybase_query(string query [, resource link_id])", + "Send Sybase query" + ], + "sybase_result": [ + "string sybase_result(resource result, int row, mixed field)", + "Get result data" + ], + "sybase_select_db": [ + "bool sybase_select_db(string database [, resource link_id])", + "Select Sybase database" + ], + "sybase_set_message_handler": [ + "bool sybase_set_message_handler(mixed error_func [, resource connection])", + "Set the error handler, to be called when a server message is raised. If error_func is NULL the handler will be deleted" + ], + "sybase_unbuffered_query": [ + "int sybase_unbuffered_query(string query [, resource link_id])", + "Send Sybase query" + ], + "symlink": [ + "int symlink(string target, string link)", + "Create a symbolic link" + ], + "sys_get_temp_dir": [ + "string sys_get_temp_dir()", + "Returns directory path used for temporary files" + ], + "sys_getloadavg": [ + "array sys_getloadavg()", + "" + ], + "syslog": [ + "bool syslog(int priority, string message)", + "Generate a system log message" + ], + "system": [ + "int system(string command [, int &return_value])", + "Execute an external program and display output" + ], + "tan": [ + "float tan(float number)", + "Returns the tangent of the number in radians" + ], + "tanh": [ + "float tanh(float number)", + "Returns the hyperbolic tangent of the number, defined as sinh(number)/cosh(number)" + ], + "tempnam": [ + "string tempnam(string dir, string prefix)", + "Create a unique filename in a directory" + ], + "textdomain": [ + "string textdomain(string domain)", + "Set the textdomain to \"domain\". Returns the current domain" + ], + "tidy_access_count": [ + "int tidy_access_count()", + "Returns the Number of Tidy accessibility warnings encountered for specified document." + ], + "tidy_clean_repair": [ + "bool tidy_clean_repair()", + "Execute configured cleanup and repair operations on parsed markup" + ], + "tidy_config_count": [ + "int tidy_config_count()", + "Returns the Number of Tidy configuration errors encountered for specified document." + ], + "tidy_diagnose": [ + "bool tidy_diagnose()", + "Run configured diagnostics on parsed and repaired markup." + ], + "tidy_error_count": [ + "int tidy_error_count()", + "Returns the Number of Tidy errors encountered for specified document." + ], + "tidy_get_body": [ + "TidyNode tidy_get_body(resource tidy)", + "Returns a TidyNode Object starting from the tag of the tidy parse tree" + ], + "tidy_get_config": [ + "array tidy_get_config()", + "Get current Tidy configuarion" + ], + "tidy_get_error_buffer": [ + "string tidy_get_error_buffer([bool detailed])", + "Return warnings and errors which occured parsing the specified document" + ], + "tidy_get_head": [ + "TidyNode tidy_get_head()", + "Returns a TidyNode Object starting from the tag of the tidy parse tree" + ], + "tidy_get_html": [ + "TidyNode tidy_get_html()", + "Returns a TidyNode Object starting from the tag of the tidy parse tree" + ], + "tidy_get_html_ver": [ + "int tidy_get_html_ver()", + "Get the Detected HTML version for the specified document." + ], + "tidy_get_opt_doc": [ + "string tidy_get_opt_doc(tidy resource, string optname)", + "Returns the documentation for the given option name" + ], + "tidy_get_output": [ + "string tidy_get_output()", + "Return a string representing the parsed tidy markup" + ], + "tidy_get_release": [ + "string tidy_get_release()", + "Get release date (version) for Tidy library" + ], + "tidy_get_root": [ + "TidyNode tidy_get_root()", + "Returns a TidyNode Object representing the root of the tidy parse tree" + ], + "tidy_get_status": [ + "int tidy_get_status()", + "Get status of specfied document." + ], + "tidy_getopt": [ + "mixed tidy_getopt(string option)", + "Returns the value of the specified configuration option for the tidy document." + ], + "tidy_is_xhtml": [ + "bool tidy_is_xhtml()", + "Indicates if the document is a XHTML document." + ], + "tidy_is_xml": [ + "bool tidy_is_xml()", + "Indicates if the document is a generic (non HTML/XHTML) XML document." + ], + "tidy_parse_file": [ + "bool tidy_parse_file(string file [, mixed config_options [, string encoding [, bool use_include_path]]])", + "Parse markup in file or URI" + ], + "tidy_parse_string": [ + "bool tidy_parse_string(string input [, mixed config_options [, string encoding]])", + "Parse a document stored in a string" + ], + "tidy_repair_file": [ + "bool tidy_repair_file(string filename [, mixed config_file [, string encoding [, bool use_include_path]]])", + "Repair a file using an optionally provided configuration file" + ], + "tidy_repair_string": [ + "bool tidy_repair_string(string data [, mixed config_file [, string encoding]])", + "Repair a string using an optionally provided configuration file" + ], + "tidy_warning_count": [ + "int tidy_warning_count()", + "Returns the Number of Tidy warnings encountered for specified document." + ], + "time": [ + "int time()", + "Return current UNIX timestamp" + ], + "time_nanosleep": [ + "mixed time_nanosleep(long seconds, long nanoseconds)", + "Delay for a number of seconds and nano seconds" + ], + "time_sleep_until": [ + "mixed time_sleep_until(float timestamp)", + "Make the script sleep until the specified time" + ], + "timezone_abbreviations_list": [ + "array timezone_abbreviations_list()", + "Returns associative array containing dst, offset and the timezone name" + ], + "timezone_identifiers_list": [ + "array timezone_identifiers_list([long what[, string country]])", + "Returns numerically index array with all timezone identifiers." + ], + "timezone_location_get": [ + "array timezone_location_get()", + "Returns location information for a timezone, including country code, latitude/longitude and comments" + ], + "timezone_name_from_abbr": [ + "string timezone_name_from_abbr(string abbr[, long gmtOffset[, long isdst]])", + "Returns the timezone name from abbrevation" + ], + "timezone_name_get": [ + "string timezone_name_get(DateTimeZone object)", + "Returns the name of the timezone." + ], + "timezone_offset_get": [ + "long timezone_offset_get(DateTimeZone object, DateTime object)", + "Returns the timezone offset." + ], + "timezone_open": [ + "DateTimeZone timezone_open(string timezone)", + "Returns new DateTimeZone object" + ], + "timezone_transitions_get": [ + "array timezone_transitions_get(DateTimeZone object [, long timestamp_begin [, long timestamp_end ]])", + "Returns numerically indexed array containing associative array for all transitions in the specified range for the timezone." + ], + "timezone_version_get": [ + "array timezone_version_get()", + "Returns the Olson database version number." + ], + "tmpfile": [ + "resource tmpfile()", + "Create a temporary file that will be deleted automatically after use" + ], + "token_get_all": [ + "array token_get_all(string source)", + "" + ], + "token_name": [ + "string token_name(int type)", + "" + ], + "touch": [ + "bool touch(string filename [, int time [, int atime]])", + "Set modification time of file" + ], + "trigger_error": [ + "void trigger_error(string messsage [, int error_type])", + "Generates a user-level error/warning/notice message" + ], + "trim": [ + "string trim(string str [, string character_mask])", + "Strips whitespace from the beginning and end of a string" + ], + "uasort": [ + "bool uasort(array array_arg, string cmp_function)", + "Sort an array with a user-defined comparison function and maintain index association" + ], + "ucfirst": [ + "string ucfirst(string str)", + "Make a string's first character lowercase" + ], + "ucwords": [ + "string ucwords(string str)", + "Uppercase the first character of every word in a string" + ], + "uksort": [ + "bool uksort(array array_arg, string cmp_function)", + "Sort an array by keys using a user-defined comparison function" + ], + "umask": [ + "int umask([int mask])", + "Return or change the umask" + ], + "uniqid": [ + "string uniqid([string prefix [, bool more_entropy]])", + "Generates a unique ID" + ], + "unixtojd": [ + "int unixtojd([int timestamp])", + "Convert UNIX timestamp to Julian Day" + ], + "unlink": [ + "bool unlink(string filename[, context context])", + "Delete a file" + ], + "unpack": [ + "array unpack(string format, string input)", + "Unpack binary string into named array elements according to format argument" + ], + "unregister_tick_function": [ + "void unregister_tick_function(string function_name)", + "Unregisters a tick callback function" + ], + "unserialize": [ + "mixed unserialize(string variable_representation)", + "Takes a string representation of variable and recreates it" + ], + "unset": [ + "void unset(mixed var [, mixed var])", + "Unset a given variable" + ], + "urldecode": [ + "string urldecode(string str)", + "Decodes URL-encoded string" + ], + "urlencode": [ + "string urlencode(string str)", + "URL-encodes string" + ], + "usleep": [ + "void usleep(int micro_seconds)", + "Delay for a given number of micro seconds" + ], + "usort": [ + "bool usort(array array_arg, string cmp_function)", + "Sort an array by values using a user-defined comparison function" + ], + "utf8_decode": [ + "string utf8_decode(string data)", + "Converts a UTF-8 encoded string to ISO-8859-1" + ], + "utf8_encode": [ + "string utf8_encode(string data)", + "Encodes an ISO-8859-1 string to UTF-8" + ], + "var_dump": [ + "void var_dump(mixed var)", + "Dumps a string representation of variable to output" + ], + "var_export": [ + "string var_export(mixed var [, bool return])", + "Outputs or returns a string representation of a variable" + ], + "variant_abs": [ + "mixed variant_abs(mixed left)", + "Returns the absolute value of a variant" + ], + "variant_add": [ + "mixed variant_add(mixed left, mixed right)", + "\"Adds\" two variant values together and returns the result" + ], + "variant_and": [ + "mixed variant_and(mixed left, mixed right)", + "performs a bitwise AND operation between two variants and returns the result" + ], + "variant_cast": [ + "object variant_cast(object variant, int type)", + "Convert a variant into a new variant object of another type" + ], + "variant_cat": [ + "mixed variant_cat(mixed left, mixed right)", + "concatenates two variant values together and returns the result" + ], + "variant_cmp": [ + "int variant_cmp(mixed left, mixed right [, int lcid [, int flags]])", + "Compares two variants" + ], + "variant_date_from_timestamp": [ + "object variant_date_from_timestamp(int timestamp)", + "Returns a variant date representation of a unix timestamp" + ], + "variant_date_to_timestamp": [ + "int variant_date_to_timestamp(object variant)", + "Converts a variant date/time value to unix timestamp" + ], + "variant_div": [ + "mixed variant_div(mixed left, mixed right)", + "Returns the result from dividing two variants" + ], + "variant_eqv": [ + "mixed variant_eqv(mixed left, mixed right)", + "Performs a bitwise equivalence on two variants" + ], + "variant_fix": [ + "mixed variant_fix(mixed left)", + "Returns the integer part ? of a variant" + ], + "variant_get_type": [ + "int variant_get_type(object variant)", + "Returns the VT_XXX type code for a variant" + ], + "variant_idiv": [ + "mixed variant_idiv(mixed left, mixed right)", + "Converts variants to integers and then returns the result from dividing them" + ], + "variant_imp": [ + "mixed variant_imp(mixed left, mixed right)", + "Performs a bitwise implication on two variants" + ], + "variant_int": [ + "mixed variant_int(mixed left)", + "Returns the integer portion of a variant" + ], + "variant_mod": [ + "mixed variant_mod(mixed left, mixed right)", + "Divides two variants and returns only the remainder" + ], + "variant_mul": [ + "mixed variant_mul(mixed left, mixed right)", + "multiplies the values of the two variants and returns the result" + ], + "variant_neg": [ + "mixed variant_neg(mixed left)", + "Performs logical negation on a variant" + ], + "variant_not": [ + "mixed variant_not(mixed left)", + "Performs bitwise not negation on a variant" + ], + "variant_or": [ + "mixed variant_or(mixed left, mixed right)", + "Performs a logical disjunction on two variants" + ], + "variant_pow": [ + "mixed variant_pow(mixed left, mixed right)", + "Returns the result of performing the power function with two variants" + ], + "variant_round": [ + "mixed variant_round(mixed left, int decimals)", + "Rounds a variant to the specified number of decimal places" + ], + "variant_set": [ + "void variant_set(object variant, mixed value)", + "Assigns a new value for a variant object" + ], + "variant_set_type": [ + "void variant_set_type(object variant, int type)", + "Convert a variant into another type. Variant is modified \"in-place\"" + ], + "variant_sub": [ + "mixed variant_sub(mixed left, mixed right)", + "subtracts the value of the right variant from the left variant value and returns the result" + ], + "variant_xor": [ + "mixed variant_xor(mixed left, mixed right)", + "Performs a logical exclusion on two variants" + ], + "version_compare": [ + "int version_compare(string ver1, string ver2 [, string oper])", + "Compares two \"PHP-standardized\" version number strings" + ], + "vfprintf": [ + "int vfprintf(resource stream, string format, array args)", + "Output a formatted string into a stream" + ], + "virtual": [ + "bool virtual(string filename)", + "Perform an Apache sub-request" + ], + "vprintf": [ + "int vprintf(string format, array args)", + "Output a formatted string" + ], + "vsprintf": [ + "string vsprintf(string format, array args)", + "Return a formatted string" + ], + "wddx_add_vars": [ + "int wddx_add_vars(resource packet_id, mixed var_names [, mixed ...])", + "Serializes given variables and adds them to packet given by packet_id" + ], + "wddx_deserialize": [ + "mixed wddx_deserialize(mixed packet)", + "Deserializes given packet and returns a PHP value" + ], + "wddx_packet_end": [ + "string wddx_packet_end(resource packet_id)", + "Ends specified WDDX packet and returns the string containing the packet" + ], + "wddx_packet_start": [ + "resource wddx_packet_start([string comment])", + "Starts a WDDX packet with optional comment and returns the packet id" + ], + "wddx_serialize_value": [ + "string wddx_serialize_value(mixed var [, string comment])", + "Creates a new packet and serializes the given value" + ], + "wddx_serialize_vars": [ + "string wddx_serialize_vars(mixed var_name [, mixed ...])", + "Creates a new packet and serializes given variables into a struct" + ], + "wordwrap": [ + "string wordwrap(string str [, int width [, string break [, bool cut]]])", + "Wraps buffer to selected number of characters using string break char" + ], + "xml_error_string": [ + "string xml_error_string(int code)", + "Get XML parser error string" + ], + "xml_get_current_byte_index": [ + "int xml_get_current_byte_index(resource parser)", + "Get current byte index for an XML parser" + ], + "xml_get_current_column_number": [ + "int xml_get_current_column_number(resource parser)", + "Get current column number for an XML parser" + ], + "xml_get_current_line_number": [ + "int xml_get_current_line_number(resource parser)", + "Get current line number for an XML parser" + ], + "xml_get_error_code": [ + "int xml_get_error_code(resource parser)", + "Get XML parser error code" + ], + "xml_parse": [ + "int xml_parse(resource parser, string data [, int isFinal])", + "Start parsing an XML document" + ], + "xml_parse_into_struct": [ + "int xml_parse_into_struct(resource parser, string data, array &values [, array &index ])", + "Parsing a XML document" + ], + "xml_parser_create": [ + "resource xml_parser_create([string encoding])", + "Create an XML parser" + ], + "xml_parser_create_ns": [ + "resource xml_parser_create_ns([string encoding [, string sep]])", + "Create an XML parser" + ], + "xml_parser_free": [ + "int xml_parser_free(resource parser)", + "Free an XML parser" + ], + "xml_parser_get_option": [ + "int xml_parser_get_option(resource parser, int option)", + "Get options from an XML parser" + ], + "xml_parser_set_option": [ + "int xml_parser_set_option(resource parser, int option, mixed value)", + "Set options in an XML parser" + ], + "xml_set_character_data_handler": [ + "int xml_set_character_data_handler(resource parser, string hdl)", + "Set up character data handler" + ], + "xml_set_default_handler": [ + "int xml_set_default_handler(resource parser, string hdl)", + "Set up default handler" + ], + "xml_set_element_handler": [ + "int xml_set_element_handler(resource parser, string shdl, string ehdl)", + "Set up start and end element handlers" + ], + "xml_set_end_namespace_decl_handler": [ + "int xml_set_end_namespace_decl_handler(resource parser, string hdl)", + "Set up character data handler" + ], + "xml_set_external_entity_ref_handler": [ + "int xml_set_external_entity_ref_handler(resource parser, string hdl)", + "Set up external entity reference handler" + ], + "xml_set_notation_decl_handler": [ + "int xml_set_notation_decl_handler(resource parser, string hdl)", + "Set up notation declaration handler" + ], + "xml_set_object": [ + "int xml_set_object(resource parser, object &obj)", + "Set up object which should be used for callbacks" + ], + "xml_set_processing_instruction_handler": [ + "int xml_set_processing_instruction_handler(resource parser, string hdl)", + "Set up processing instruction (PI) handler" + ], + "xml_set_start_namespace_decl_handler": [ + "int xml_set_start_namespace_decl_handler(resource parser, string hdl)", + "Set up character data handler" + ], + "xml_set_unparsed_entity_decl_handler": [ + "int xml_set_unparsed_entity_decl_handler(resource parser, string hdl)", + "Set up unparsed entity declaration handler" + ], + "xmlrpc_decode": [ + "array xmlrpc_decode(string xml [, string encoding])", + "Decodes XML into native PHP types" + ], + "xmlrpc_decode_request": [ + "array xmlrpc_decode_request(string xml, string& method [, string encoding])", + "Decodes XML into native PHP types" + ], + "xmlrpc_encode": [ + "string xmlrpc_encode(mixed value)", + "Generates XML for a PHP value" + ], + "xmlrpc_encode_request": [ + "string xmlrpc_encode_request(string method, mixed params [, array output_options])", + "Generates XML for a method request" + ], + "xmlrpc_get_type": [ + "string xmlrpc_get_type(mixed value)", + "Gets xmlrpc type for a PHP value. Especially useful for base64 and datetime strings" + ], + "xmlrpc_is_fault": [ + "bool xmlrpc_is_fault(array)", + "Determines if an array value represents an XMLRPC fault." + ], + "xmlrpc_parse_method_descriptions": [ + "array xmlrpc_parse_method_descriptions(string xml)", + "Decodes XML into a list of method descriptions" + ], + "xmlrpc_server_add_introspection_data": [ + "int xmlrpc_server_add_introspection_data(resource server, array desc)", + "Adds introspection documentation" + ], + "xmlrpc_server_call_method": [ + "mixed xmlrpc_server_call_method(resource server, string xml, mixed user_data [, array output_options])", + "Parses XML requests and call methods" + ], + "xmlrpc_server_create": [ + "resource xmlrpc_server_create()", + "Creates an xmlrpc server" + ], + "xmlrpc_server_destroy": [ + "int xmlrpc_server_destroy(resource server)", + "Destroys server resources" + ], + "xmlrpc_server_register_introspection_callback": [ + "bool xmlrpc_server_register_introspection_callback(resource server, string function)", + "Register a PHP function to generate documentation" + ], + "xmlrpc_server_register_method": [ + "bool xmlrpc_server_register_method(resource server, string method_name, string function)", + "Register a PHP function to handle method matching method_name" + ], + "xmlrpc_set_type": [ + "bool xmlrpc_set_type(string value, string type)", + "Sets xmlrpc type, base64 or datetime, for a PHP string value" + ], + "xmlwriter_end_attribute": [ + "bool xmlwriter_end_attribute(resource xmlwriter)", + "End attribute - returns FALSE on error" + ], + "xmlwriter_end_cdata": [ + "bool xmlwriter_end_cdata(resource xmlwriter)", + "End current CDATA - returns FALSE on error" + ], + "xmlwriter_end_comment": [ + "bool xmlwriter_end_comment(resource xmlwriter)", + "Create end comment - returns FALSE on error" + ], + "xmlwriter_end_document": [ + "bool xmlwriter_end_document(resource xmlwriter)", + "End current document - returns FALSE on error" + ], + "xmlwriter_end_dtd": [ + "bool xmlwriter_end_dtd(resource xmlwriter)", + "End current DTD - returns FALSE on error" + ], + "xmlwriter_end_dtd_attlist": [ + "bool xmlwriter_end_dtd_attlist(resource xmlwriter)", + "End current DTD AttList - returns FALSE on error" + ], + "xmlwriter_end_dtd_element": [ + "bool xmlwriter_end_dtd_element(resource xmlwriter)", + "End current DTD element - returns FALSE on error" + ], + "xmlwriter_end_dtd_entity": [ + "bool xmlwriter_end_dtd_entity(resource xmlwriter)", + "End current DTD Entity - returns FALSE on error" + ], + "xmlwriter_end_element": [ + "bool xmlwriter_end_element(resource xmlwriter)", + "End current element - returns FALSE on error" + ], + "xmlwriter_end_pi": [ + "bool xmlwriter_end_pi(resource xmlwriter)", + "End current PI - returns FALSE on error" + ], + "xmlwriter_flush": [ + "mixed xmlwriter_flush(resource xmlwriter [,bool empty])", + "Output current buffer" + ], + "xmlwriter_full_end_element": [ + "bool xmlwriter_full_end_element(resource xmlwriter)", + "End current element - returns FALSE on error" + ], + "xmlwriter_open_memory": [ + "resource xmlwriter_open_memory()", + "Create new xmlwriter using memory for string output" + ], + "xmlwriter_open_uri": [ + "resource xmlwriter_open_uri(resource xmlwriter, string source)", + "Create new xmlwriter using source uri for output" + ], + "xmlwriter_output_memory": [ + "string xmlwriter_output_memory(resource xmlwriter [,bool flush])", + "Output current buffer as string" + ], + "xmlwriter_set_indent": [ + "bool xmlwriter_set_indent(resource xmlwriter, bool indent)", + "Toggle indentation on/off - returns FALSE on error" + ], + "xmlwriter_set_indent_string": [ + "bool xmlwriter_set_indent_string(resource xmlwriter, string indentString)", + "Set string used for indenting - returns FALSE on error" + ], + "xmlwriter_start_attribute": [ + "bool xmlwriter_start_attribute(resource xmlwriter, string name)", + "Create start attribute - returns FALSE on error" + ], + "xmlwriter_start_attribute_ns": [ + "bool xmlwriter_start_attribute_ns(resource xmlwriter, string prefix, string name, string uri)", + "Create start namespaced attribute - returns FALSE on error" + ], + "xmlwriter_start_cdata": [ + "bool xmlwriter_start_cdata(resource xmlwriter)", + "Create start CDATA tag - returns FALSE on error" + ], + "xmlwriter_start_comment": [ + "bool xmlwriter_start_comment(resource xmlwriter)", + "Create start comment - returns FALSE on error" + ], + "xmlwriter_start_document": [ + "bool xmlwriter_start_document(resource xmlwriter, string version, string encoding, string standalone)", + "Create document tag - returns FALSE on error" + ], + "xmlwriter_start_dtd": [ + "bool xmlwriter_start_dtd(resource xmlwriter, string name, string pubid, string sysid)", + "Create start DTD tag - returns FALSE on error" + ], + "xmlwriter_start_dtd_attlist": [ + "bool xmlwriter_start_dtd_attlist(resource xmlwriter, string name)", + "Create start DTD AttList - returns FALSE on error" + ], + "xmlwriter_start_dtd_element": [ + "bool xmlwriter_start_dtd_element(resource xmlwriter, string name)", + "Create start DTD element - returns FALSE on error" + ], + "xmlwriter_start_dtd_entity": [ + "bool xmlwriter_start_dtd_entity(resource xmlwriter, string name, bool isparam)", + "Create start DTD Entity - returns FALSE on error" + ], + "xmlwriter_start_element": [ + "bool xmlwriter_start_element(resource xmlwriter, string name)", + "Create start element tag - returns FALSE on error" + ], + "xmlwriter_start_element_ns": [ + "bool xmlwriter_start_element_ns(resource xmlwriter, string prefix, string name, string uri)", + "Create start namespaced element tag - returns FALSE on error" + ], + "xmlwriter_start_pi": [ + "bool xmlwriter_start_pi(resource xmlwriter, string target)", + "Create start PI tag - returns FALSE on error" + ], + "xmlwriter_text": [ + "bool xmlwriter_text(resource xmlwriter, string content)", + "Write text - returns FALSE on error" + ], + "xmlwriter_write_attribute": [ + "bool xmlwriter_write_attribute(resource xmlwriter, string name, string content)", + "Write full attribute - returns FALSE on error" + ], + "xmlwriter_write_attribute_ns": [ + "bool xmlwriter_write_attribute_ns(resource xmlwriter, string prefix, string name, string uri, string content)", + "Write full namespaced attribute - returns FALSE on error" + ], + "xmlwriter_write_cdata": [ + "bool xmlwriter_write_cdata(resource xmlwriter, string content)", + "Write full CDATA tag - returns FALSE on error" + ], + "xmlwriter_write_comment": [ + "bool xmlwriter_write_comment(resource xmlwriter, string content)", + "Write full comment tag - returns FALSE on error" + ], + "xmlwriter_write_dtd": [ + "bool xmlwriter_write_dtd(resource xmlwriter, string name, string pubid, string sysid, string subset)", + "Write full DTD tag - returns FALSE on error" + ], + "xmlwriter_write_dtd_attlist": [ + "bool xmlwriter_write_dtd_attlist(resource xmlwriter, string name, string content)", + "Write full DTD AttList tag - returns FALSE on error" + ], + "xmlwriter_write_dtd_element": [ + "bool xmlwriter_write_dtd_element(resource xmlwriter, string name, string content)", + "Write full DTD element tag - returns FALSE on error" + ], + "xmlwriter_write_dtd_entity": [ + "bool xmlwriter_write_dtd_entity(resource xmlwriter, string name, string content [, int pe [, string pubid [, string sysid [, string ndataid]]]])", + "Write full DTD Entity tag - returns FALSE on error" + ], + "xmlwriter_write_element": [ + "bool xmlwriter_write_element(resource xmlwriter, string name[, string content])", + "Write full element tag - returns FALSE on error" + ], + "xmlwriter_write_element_ns": [ + "bool xmlwriter_write_element_ns(resource xmlwriter, string prefix, string name, string uri[, string content])", + "Write full namespaced element tag - returns FALSE on error" + ], + "xmlwriter_write_pi": [ + "bool xmlwriter_write_pi(resource xmlwriter, string target, string content)", + "Write full PI tag - returns FALSE on error" + ], + "xmlwriter_write_raw": [ + "bool xmlwriter_write_raw(resource xmlwriter, string content)", + "Write text - returns FALSE on error" + ], + "xsl_xsltprocessor_get_parameter": [ + "string xsl_xsltprocessor_get_parameter(string namespace, string name)", + "" + ], + "xsl_xsltprocessor_has_exslt_support": [ + "bool xsl_xsltprocessor_has_exslt_support()", + "" + ], + "xsl_xsltprocessor_import_stylesheet": [ + "void xsl_xsltprocessor_import_stylesheet(domdocument doc)", + "" + ], + "xsl_xsltprocessor_register_php_functions": [ + "void xsl_xsltprocessor_register_php_functions([mixed $restrict])", + "" + ], + "xsl_xsltprocessor_remove_parameter": [ + "bool xsl_xsltprocessor_remove_parameter(string namespace, string name)", + "" + ], + "xsl_xsltprocessor_set_parameter": [ + "bool xsl_xsltprocessor_set_parameter(string namespace, mixed name [, string value])", + "" + ], + "xsl_xsltprocessor_set_profiling": [ + "bool xsl_xsltprocessor_set_profiling(string filename)", + "" + ], + "xsl_xsltprocessor_transform_to_doc": [ + "domdocument xsl_xsltprocessor_transform_to_doc(domnode doc)", + "" + ], + "xsl_xsltprocessor_transform_to_uri": [ + "int xsl_xsltprocessor_transform_to_uri(domdocument doc, string uri)", + "" + ], + "xsl_xsltprocessor_transform_to_xml": [ + "string xsl_xsltprocessor_transform_to_xml(domdocument doc)", + "" + ], + "zend_logo_guid": [ + "string zend_logo_guid()", + "Return the special ID used to request the Zend logo in phpinfo screens" + ], + "zend_version": [ + "string zend_version()", + "Get the version of the Zend Engine" + ], + "zip_close": [ + "void zip_close(resource zip)", + "Close a Zip archive" + ], + "zip_entry_close": [ + "void zip_entry_close(resource zip_ent)", + "Close a zip entry" + ], + "zip_entry_compressedsize": [ + "int zip_entry_compressedsize(resource zip_entry)", + "Return the compressed size of a ZZip entry" + ], + "zip_entry_compressionmethod": [ + "string zip_entry_compressionmethod(resource zip_entry)", + "Return a string containing the compression method used on a particular entry" + ], + "zip_entry_filesize": [ + "int zip_entry_filesize(resource zip_entry)", + "Return the actual filesize of a ZZip entry" + ], + "zip_entry_name": [ + "string zip_entry_name(resource zip_entry)", + "Return the name given a ZZip entry" + ], + "zip_entry_open": [ + "bool zip_entry_open(resource zip_dp, resource zip_entry [, string mode])", + "Open a Zip File, pointed by the resource entry" + ], + "zip_entry_read": [ + "mixed zip_entry_read(resource zip_entry [, int len])", + "Read from an open directory entry" + ], + "zip_open": [ + "resource zip_open(string filename)", + "Create new zip using source uri for output" + ], + "zip_read": [ + "resource zip_read(resource zip)", + "Returns the next file in the archive" + ], + "zlib_get_coding_type": [ + "string zlib_get_coding_type()", + "Returns the coding type used for output compression" + ], + "array_column": [ + "array_column(array $array, int|string|null $column_key, int|string|null $index_key = null): array", + "Return the values from a single column in the input array" + ], + "boolval": [ + "boolval(mixed $value): bool", + "Get the boolean value of a variable" + ], + "bzclose": [ + "bzclose(resource $bz): bool", + "Close a bzip2 file" + ], + "bzflush": [ + "bzflush(resource $bz): bool", + "Do nothing" + ], + "bzwrite": [ + "bzwrite(resource $bz, string $data, ?int $length = null): int|false", + "Binary safe bzip2 file write" + ], + "checkdnsrr": [ + "checkdnsrr(string $hostname, string $type = "MX"): bool", + "Check DNS records corresponding to a given Internet host name or IP address" + ], + "chop": [ + "chop()", + "Alias of rtrim()" + ], + "class_uses": [ + "class_uses(object|string $object_or_class, bool $autoload = true): array|false", + "" + ], + "curl_escape": [ + "curl_escape(CurlHandle $handle, string $string): string|false", + "URL encodes the given string" + ], + "curl_file_create": [ + "curl_file_create()", + "Create a CURLFile object" + ], + "curl_multi_errno": [ + "curl_multi_errno(CurlMultiHandle $multi_handle): int", + "Return the last multi curl error number" + ], + "curl_multi_setopt": [ + "curl_multi_setopt(CurlMultiHandle $multi_handle, int $option, mixed $value): bool", + "Set an option for the cURL multi handle" + ], + "curl_multi_strerror": [ + "curl_multi_strerror(int $error_code): ?string", + "Return string describing error code" + ], + "curl_pause": [ + "curl_pause(CurlHandle $handle, int $flags): int", + "Pause and unpause a connection" + ], + "curl_reset": [ + "curl_reset(CurlHandle $handle): void", + "Reset all options of a libcurl session handle" + ], + "curl_share_close": [ + "curl_share_close(CurlShareHandle $share_handle): void", + "Close a cURL share handle" + ], + "curl_share_errno": [ + "curl_share_errno(CurlShareHandle $share_handle): int", + "Return the last share curl error number" + ], + "curl_share_init": [ + "curl_share_init(): CurlShareHandle", + "Initialize a cURL share handle" + ], + "curl_share_setopt": [ + "curl_share_setopt(CurlShareHandle $share_handle, int $option, mixed $value): bool", + "Set an option for a cURL share handle" + ], + "curl_share_strerror": [ + "curl_share_strerror(int $error_code): ?string", + "Return string describing the given error code" + ], + "curl_strerror": [ + "curl_strerror(int $error_code): ?string", + "Return string describing the given error code" + ], + "curl_unescape": [ + "curl_unescape(CurlHandle $handle, string $string): string|false", + "Decodes the given URL encoded string" + ], + "date_create_immutable_from_format": [ + "date_create_immutable_from_format()", + "Alias of DateTimeImmutable::createFromFormat()" + ], + "date_create_immutable": [ + "date_create_immutable()", + "Alias of DateTimeImmutable::__construct()" + ], + "deflate_add": [ + "deflate_add(DeflateContext $context, string $data, int $flush_mode = ZLIB_SYNC_FLUSH): string|false", + "Incrementally deflate data" + ], + "deflate_init": [ + "deflate_init(int $encoding, array $options = []): DeflateContext|false", + "Initialize an incremental deflate context" + ], + "delete": [ + "delete()", + "See unlink()" + ], + "diskfreespace": [ + "diskfreespace()", + "Alias of disk_free_space()" + ], + "doubleval": [ + "doubleval()", + "Alias of floatval()" + ], + "enchant_dict_add": [ + "enchant_dict_add(EnchantDictionary $dictionary, string $word): void", + "Add a word to personal word list" + ], + "enchant_dict_is_added": [ + "enchant_dict_is_added(EnchantDictionary $dictionary, string $word): bool", + "Whether or not 'word' exists in this spelling-session" + ], + "error_clear_last": [ + "error_clear_last(): void", + "Clear the most recent error" + ], + "eval": [ + "eval(string $code): mixed", + "Evaluate a string as PHP code" + ], + "expect_expectl": [ + "expect_expectl(resource $expect, array $cases, array &$match = ?): int", + "" + ], + "expect_popen": [ + "expect_popen(string $command): resource", + "" + ], + "fdiv": [ + "fdiv(float $num1, float $num2): float", + "Divides two numbers, according to IEEE 754" + ], + "filter_id": [ + "filter_id(string $name): int|false", + "Returns the filter ID belonging to a named filter" + ], + "filter_list": [ + "filter_list(): array", + "Returns a list of all supported filters" + ], + "forward_static_call_array": [ + "forward_static_call_array(callable $callback, array $args): mixed", + "Call a static method and pass the arguments as array" + ], + "fputs": [ + "fputs()", + "Alias of fwrite()" + ], + "ftp_append": [ + "ftp_append(FTP\\Connection $ftp, string $remote_filename, string $local_filename, int $mode = FTP_BINARY): bool", + "Append the contents of a file to another file on the FTP server" + ], + "ftp_mlsd": [ + "ftp_mlsd(FTP\\Connection $ftp, string $directory): array|false", + "Returns a list of files in the given directory" + ], + "ftp_quit": [ + "ftp_quit()", + "Alias of ftp_close()" + ], + "gc_mem_caches": [ + "gc_mem_caches(): int", + "" + ], + "gc_status": [ + "gc_status(): array", + "Gets information about the garbage collector" + ], + "get_debug_type": [ + "get_debug_type(mixed $value): string", + "Gets the type name of a variable in a way that is suitable for debugging" + ], + "get_declared_traits": [ + "get_declared_traits(): array", + "Returns an array of all declared traits" + ], + "get_required_files": [ + "get_required_files()", + "Alias of get_included_files()" + ], + "get_resource_id": [ + "get_resource_id(resource $resource): int", + "" + ], + "get_resources": [ + "get_resources(?string $type = null): array", + "Returns active resources" + ], + "getimagesizefromstring": [ + "getimagesizefromstring(string $string, array &$image_info = null): array|false", + "Get the size of an image from a string" + ], + "getmxrr": [ + "getmxrr(string $hostname, array &$hosts, array &$weights = null): bool", + "Get MX records corresponding to a given Internet host name" + ], + "gmp_binomial": [ + "gmp_binomial(GMP|int|string $n, int $k): GMP", + "Calculates binomial coefficient" + ], + "gmp_div": [ + "gmp_div()", + "Alias of gmp_div_q()" + ], + "gmp_export": [ + "gmp_export(GMP|int|string $num, int $word_size = 1, int $flags = GMP_MSW_FIRST | GMP_NATIVE_ENDIAN): string", + "Export to a binary string" + ], + "gmp_import": [ + "gmp_import(string $data, int $word_size = 1, int $flags = GMP_MSW_FIRST | GMP_NATIVE_ENDIAN): GMP", + "Import from a binary string" + ], + "gmp_kronecker": [ + "gmp_kronecker(GMP|int|string $num1, GMP|int|string $num2): int", + "Kronecker symbol" + ], + "gmp_lcm": [ + "gmp_lcm(GMP|int|string $num1, GMP|int|string $num2): GMP", + "Calculate LCM" + ], + "gmp_perfect_power": [ + "gmp_perfect_power(GMP|int|string $num): bool", + "Perfect power check" + ], + "gmp_random_bits": [ + "gmp_random_bits(int $bits): GMP", + "Random number" + ], + "gmp_random_range": [ + "gmp_random_range(GMP|int|string $min, GMP|int|string $max): GMP", + "Random number" + ], + "gmp_random_seed": [ + "gmp_random_seed(GMP|int|string $seed): void", + "Sets the RNG seed" + ], + "gmp_root": [ + "gmp_root(GMP|int|string $num, int $nth): GMP", + "Take the integer part of nth root" + ], + "gmp_rootrem": [ + "gmp_rootrem(GMP|int|string $num, int $nth): array", + "Take the integer part and remainder of nth root" + ], + "gzclose": [ + "gzclose(resource $stream): bool", + "Close an open gz-file pointer" + ], + "gzdecode": [ + "gzdecode(string $data, int $max_length = 0): string|false", + "Decodes a gzip compressed string" + ], + "gzeof": [ + "gzeof(resource $stream): bool", + "Test for EOF on a gz-file pointer" + ], + "gzgetc": [ + "gzgetc(resource $stream): string|false", + "Get character from gz-file pointer" + ], + "gzgets": [ + "gzgets(resource $stream, ?int $length = null): string|false", + "Get line from file pointer" + ], + "gzgetss": [ + "gzgetss(resource $zp, int $length, string $allowable_tags = ?): string", + "" + ], + "gzpassthru": [ + "gzpassthru(resource $stream): int", + "" + ], + "gzputs": [ + "gzputs()", + "Alias of gzwrite()" + ], + "gzread": [ + "gzread(resource $stream, int $length): string|false", + "Binary-safe gz-file read" + ], + "gzrewind": [ + "gzrewind(resource $stream): bool", + "Rewind the position of a gz-file pointer" + ], + "gzseek": [ + "gzseek(resource $stream, int $offset, int $whence = SEEK_SET): int", + "Seek on a gz-file pointer" + ], + "gztell": [ + "gztell(resource $stream): int|false", + "Tell gz-file pointer read/write position" + ], + "gzwrite": [ + "gzwrite(resource $stream, string $data, ?int $length = null): int|false", + "Binary-safe gz-file write" + ], + "halt_compiler": [ + "__halt_compiler(): void", + "" + ], + "hash_equals": [ + "hash_equals(string $known_string, string $user_string): bool", + "Timing attack safe string comparison" + ], + "hash_hkdf": [ + "hash_hkdf(string $algo, string $key, int $length = 0, string $info = \"\", string $salt = \"\"): string", + "Generate a HKDF key derivation of a supplied key input" + ], + "hash_hmac_algos": [ + "hash_hmac_algos(): array", + "Return a list of registered hashing algorithms suitable for hash_hmac" + ], + "hash_pbkdf2": [ + "hash_pbkdf2(string $algo, string $password, string $salt, int $iterations, int $length = 0, bool $binary = false): string", + "Generate a PBKDF2 key derivation of a supplied password" + ], + "header_register_callback": [ + "header_register_callback(callable $callback): bool", + "Call a header function" + ], + "hex2bin": [ + "hex2bin(string $string): string|false", + "Decodes a hexadecimally encoded binary string" + ], + "hrtime": [ + "hrtime(bool $as_number = false): array|int|float|false", + "Get the system's high resolution time" + ], + "http_response_code": [ + "http_response_code(int $response_code = 0): int|bool", + "Get or Set the HTTP response code" + ], + "imageaffine": [ + "imageaffine(GdImage $image, array $affine, ?array $clip = null): GdImage|false", + "Return an image containing the affine transformed src image, using an optional clipping area" + ], + "imageaffinematrixconcat": [ + "imageaffinematrixconcat(array $matrix1, array $matrix2): array|false", + "Concatenate two affine transformation matrices" + ], + "imageaffinematrixget": [ + "imageaffinematrixget(int $type, array|float $options): array|false", + "Get an affine transformation matrix" + ], + "imagebmp": [ + "imagebmp(GdImage $image, resource|string|null $file = null, bool $compressed = true): bool", + "Output a BMP image to browser or file" + ], + "imagecreatefrombmp": [ + "imagecreatefrombmp(string $filename): GdImage|false", + "Create a new image from file or URL" + ], + "imagecreatefromwebp": [ + "imagecreatefromwebp(string $filename): GdImage|false", + "Create a new image from file or URL" + ], + "imagecrop": [ + "imagecrop(GdImage $image, array $rectangle): GdImage|false", + "Crop an image to the given rectangle" + ], + "imagecropauto": [ + "imagecropauto(GdImage $image, int $mode = IMG_CROP_DEFAULT, float $threshold = 0.5, int $color = -1): GdImage|false", + "Crop an image automatically using one of the available modes" + ], + "imageflip": [ + "imageflip(GdImage $image, int $mode): bool", + "Flips an image using a given mode" + ], + "imagegetclip": [ + "imagegetclip(GdImage $image): array", + "Get the clipping rectangle" + ], + "imagegetinterpolation": [ + "imagegetinterpolation(GdImage $image): int", + "Get the interpolation method" + ], + "imageopenpolygon": [ + "imageopenpolygon(GdImage $image, array $points, int $color): bool", + "Draws an open polygon" + ], + "imagepalettetotruecolor": [ + "imagepalettetotruecolor(GdImage $image): bool", + "Converts a palette based image to true color" + ], + "imageresolution": [ + "imageresolution(GdImage $image, ?int $resolution_x = null, ?int $resolution_y = null): array|bool", + "Get or set the resolution of the image" + ], + "imagescale": [ + "imagescale(GdImage $image, int $width, int $height = -1, int $mode = IMG_BILINEAR_FIXED): GdImage|false", + "Scale an image using the given new width and height" + ], + "imagesetclip": [ + "imagesetclip(GdImage $image, int $x1, int $y1, int $x2, int $y2): bool", + "Set the clipping rectangle" + ], + "imagesetinterpolation": [ + "imagesetinterpolation(GdImage $image, int $method = IMG_BILINEAR_FIXED): bool", + "Set the interpolation method" + ], + "imagewebp": [ + "imagewebp(GdImage $image, resource|string|null $file = null, int $quality = -1): bool", + "Output a WebP image to browser or file" + ], + "imap_create": [ + "", + "Alias of imap_createmailbox()" + ], + "imap_fetchmime": [ + "imap_fetchmime(IMAP\\Connection $imap, int $message_num, string $section, int $flags = 0): string|false", + "Fetch MIME headers for a particular section of the message" + ], + "imap_fetchtext": [ + "imap_fetchtext()", + "Alias of imap_body()" + ], + "imap_header": [ + "imap_header()", + "Alias of imap_headerinfo()" + ], + "imap_listmailbox": [ + "imap_listmailbox()", + "Alias of imap_list()" + ], + "imap_listsubscribed": [ + "imap_listsubscribed()", + "Alias of imap_lsub()" + ], + "imap_rename": [ + "imap_rename()", + "Alias of imap_renamemailbox()" + ], + "imap_scan": [ + "imap_scan()", + "Alias of imap_listscan()" + ], + "imap_scanmailbox": [ + "imap_scanmailbox()", + "Alias of imap_listscan()" + ], + "ini_alter": [ + "ini_alter()", + "Alias of ini_set()" + ], + "intdiv": [ + "intdiv(int $num1, int $num2): int", + "Integer division" + ], + "is_double": [ + "is_double()", + "Alias of is_float()" + ], + "is_int": [ + "is_int(mixed $value): bool", + "Find whether the type of a variable is integer" + ], + "is_integer": [ + "is_integer()", + "Alias of is_int()" + ], + "is_iterable": [ + "is_iterable(mixed $value): bool", + "" + ], + "is_real": [ + "is_real()", + "Alias of is_float()" + ], + "is_soap_fault": [ + "is_soap_fault(mixed $object): bool", + "Checks if a SOAP call has failed" + ], + "is_tainted": [ + "is_tainted(string $string): bool", + "Checks whether a string is tainted" + ], + "is_writeable": [ + "is_writeable()", + "Alias of is_writable()" + ], + "json_last_error_msg": [ + "json_last_error_msg(): string", + "Returns the error string of the last json_encode() or json_decode() call" + ], + "key_exists": [ + "key_exists()", + "Alias of array_key_exists()" + ], + "lchown": [ + "lchown(string $filename, string|int $user): bool", + "Changes user ownership of symlink" + ], + "libxml_set_external_entity_loader": [ + "libxml_set_external_entity_loader(?callable $resolver_function): bool", + "Changes the default external entity loader" + ], + "mb_chr": [ + "mb_chr(int $codepoint, ?string $encoding = null): string|false", + "Return character by Unicode code point value" + ], + "mb_ereg_replace_callback": [ + "mb_ereg_replace_callback(string $pattern, callable $callback, string $string, ?string $options = null): string|false|null", + "" + ], + "mb_ord": [ + "mb_ord(string $string, ?string $encoding = null): int|false", + "Get Unicode code point of character" + ], + "mb_scrub": [ + "mb_scrub(string $string, ?string $encoding = null): string", + "Description" + ], + "mb_str_split": [ + "mb_str_split(string $string, int $length = 1, ?string $encoding = null): array", + "Given a multibyte string, return an array of its characters" + ], + "memcache_debug": [ + "memcache_debug(bool $on_off): bool", + "Turn debug output on/off" + ], + "mysql_db_name": [ + "mysql_db_name(resource $result, int $row, mixed $field = NULL): string", + "Retrieves database name from the call to mysql_list_dbs()" + ], + "mysql_tablename": [ + "mysql_tablename(resource $result, int $i): string|false", + "Get table name of field" + ], + "mysql_xdevapi_expression": [ + "mysql_xdevapi\\expression(string $expression): object", + "Bind prepared statement variables as parameters" + ], + "mysql_xdevapi_getsession": [ + "mysql_xdevapi\\getSession(string $uri): mysql_xdevapi\\Session", + "Connect to a MySQL server" + ], + "mysqli_escape_string": [ + "mysqli_escape_string()", + "Alias of mysqli_real_escape_string()" + ], + "mysqli_execute": [ + "mysqli_execute()", + "Alias for mysqli_stmt_execute()" + ], + "mysqli_get_links_stats": [ + "mysqli_get_links_stats(): array", + "Return information about open and cached links" + ], + "mysqli_set_opt": [ + "mysqli_set_opt()", + "Alias of mysqli_options()" + ], + "ob_tidyhandler": [ + "ob_tidyhandler(string $input, int $mode = ?): string", + "ob_start callback function to repair the buffer" + ], + "odbc_do": [ + "odbc_do()", + "Alias of odbc_exec()" + ], + "odbc_field_precision": [ + "odbc_field_precision()", + "Alias of odbc_field_len()" + ], + "opcache_compile_file": [ + "opcache_compile_file(string $filename): bool", + "Compiles and caches a PHP script without executing it" + ], + "opcache_get_configuration": [ + "opcache_get_configuration(): array|false", + "Get configuration information about the cache" + ], + "opcache_get_status": [ + "opcache_get_status(bool $include_scripts = true): array|false", + "Get status information about the cache" + ], + "opcache_invalidate": [ + "opcache_invalidate(string $filename, bool $force = false): bool", + "Invalidates a cached script" + ], + "opcache_is_script_cached": [ + "opcache_is_script_cached(string $filename): bool", + "Tells whether a script is cached in OPCache" + ], + "opcache_reset": [ + "opcache_reset(): bool", + "Resets the contents of the opcode cache" + ], + "password_algos": [ + "password_algos(): array", + "Get available password hashing algorithm IDs" + ], + "password_get_info": [ + "password_get_info(string $hash): array", + "Returns information about the given hash" + ], + "password_hash": [ + "password_hash(string $password, string|int|null $algo, array $options = []): string", + "Creates a password hash" + ], + "password_needs_rehash": [ + "password_needs_rehash(string $hash, string|int|null $algo, array $options = []): bool", + "Checks if the given hash matches the given options" + ], + "password_verify": [ + "password_verify(string $password, string $hash): bool", + "Verifies that a password matches a hash" + ], + "pcntl_async_signals": [ + "pcntl_async_signals(?bool $enable = null): bool", + "Enable/disable asynchronous signal handling or return the old setting" + ], + "pcntl_errno": [ + "pcntl_errno()", + "Alias of pcntl_get_last_error()" + ], + "pcntl_get_last_error": [ + "pcntl_get_last_error(): int", + "Retrieve the error number set by the last pcntl function which failed" + ], + "pcntl_signal_get_handler": [ + "pcntl_signal_get_handler(int $signal): callable|int", + "Get the current handler for specified signal" + ], + "pcntl_sigwaitinfo": [ + "pcntl_sigwaitinfo(array $signals, array &$info = []): int|false", + "Waits for signals" + ], + "pcntl_strerror": [ + "pcntl_strerror(int $error_code): string", + "Retrieve the system error message associated with the given errno" + ], + "pg_connect_poll": [ + "pg_connect_poll(PgSql\\Connection $connection): int", + "" + ], + "pg_consume_input": [ + "pg_consume_input(PgSql\\Connection $connection): bool", + "Reads input on the connection" + ], + "pg_escape_identifier": [ + "pg_escape_identifier(PgSql\\Connection $connection = ?, string $data): string", + "" + ], + "pg_escape_literal": [ + "pg_escape_literal(PgSql\\Connection $connection = ?, string $data): string", + "" + ], + "pg_flush": [ + "pg_flush(PgSql\\Connection $connection): int|bool", + "Flush outbound query data on the connection" + ], + "pg_lo_truncate": [ + "pg_lo_truncate(PgSql\\Lob $lob, int $size): bool", + "" + ], + "pg_socket": [ + "pg_socket(PgSql\\Connection $connection): resource|false", + "" + ], + "pos": [ + "pos()", + "Alias of current()" + ], + "posix_errno": [ + "posix_errno()", + "Alias of posix_get_last_error()" + ], + "posix_setrlimit": [ + "posix_setrlimit(int $resource, int $soft_limit, int $hard_limit): bool", + "Set system resource limits" + ], + "preg_last_error_msg": [ + "preg_last_error_msg(): string", + "Returns the error message of the last PCRE regex execution" + ], + "preg_replace_callback_array": [ + "preg_replace_callback_array(array $pattern, string|array $subject, int $limit = -1, int &$count = null, int $flags = 0): string|array|null", + "Perform a regular expression search and replace using callbacks" + ], + "ps_translate": [ + "ps_translate(resource $psdoc, float $x, float $y): bool", + "Sets translation" + ], + "random_bytes": [ + "random_bytes(int $length): string", + "Generates cryptographically secure pseudo-random bytes" + ], + "random_int": [ + "random_int(int $min, int $max): int", + "Generates cryptographically secure pseudo-random integers" + ], + "read_exif_data": [ + "read_exif_data()", + "Alias of exif_read_data()" + ], + "recode": [ + "recode()", + "Alias of recode_string()" + ], + "session_abort": [ + "session_abort(): bool", + "Discard session array changes and finish session" + ], + "session_commit": [ + "session_commit()", + "Alias of session_write_close()" + ], + "session_create_id": [ + "session_create_id(string $prefix = \"\"): string|false", + "Create new session id" + ], + "session_gc": [ + "session_gc(): int|false", + "Perform session data garbage collection" + ], + "session_register_shutdown": [ + "session_register_shutdown(): void", + "Session shutdown function" + ], + "session_reset": [ + "session_reset(): bool", + "Re-initialize session array with original values" + ], + "session_status": [ + "session_status(): int", + "Returns the current session status" + ], + "set_file_buffer": [ + "set_file_buffer()", + "Alias of stream_set_write_buffer()" + ], + "show_source": [ + "show_source()", + "Alias of highlight_file()" + ], + "sizeof": [ + "sizeof()", + "Alias of count()" + ], + "snmp_set_oid_numeric_print": [ + "snmp_set_oid_numeric_print(int $format): bool", + "" + ], + "snmpwalkoid": [ + "snmpwalkoid(string $hostname, string $community, array|string $object_id, int $timeout = -1, int $retries = -1): array|false", + "" + ], + "socket_addrinfo_bind": [ + "socket_addrinfo_bind(AddressInfo $address): Socket|false", + "Create and bind to a socket from a given addrinfo" + ], + "socket_addrinfo_connect": [ + "socket_addrinfo_connect(AddressInfo $address): Socket|false", + "Create and connect to a socket from a given addrinfo" + ], + "socket_addrinfo_explain": [ + "socket_addrinfo_explain(AddressInfo $address): array", + "Get information about addrinfo" + ], + "socket_addrinfo_lookup": [ + "socket_addrinfo_lookup(string $host, ?string $service = null, array $hints = []): array|false", + "Get array with contents of getaddrinfo about the given hostname" + ], + "socket_cmsg_space": [ + "socket_cmsg_space(int $level, int $type, int $num = 0): ?int", + "Calculate message buffer size" + ], + "socket_export_stream": [ + "socket_export_stream(Socket $socket): resource|false", + "Export a socket into a stream that encapsulates a socket" + ], + "socket_get_status": [ + "socket_get_status()", + "Alias of stream_get_meta_data()" + ], + "socket_getopt": [ + "socket_getopt()", + "Alias of socket_get_option()" + ], + "socket_import_stream": [ + "socket_import_stream(resource $stream): Socket|false", + "Import a stream" + ], + "socket_recvmsg": [ + "socket_recvmsg(Socket $socket, array &$message, int $flags = 0): int|false", + "Read a message" + ], + "socket_sendmsg": [ + "socket_sendmsg(Socket $socket, array $message, int $flags = 0): int|false", + "Send a message" + ], + "socket_set_blocking": [ + "socket_set_blocking()", + "Alias of stream_set_blocking()" + ], + "socket_set_timeout": [ + "socket_set_timeout()", + "Alias of stream_set_timeout()" + ], + "socket_setopt": [ + "socket_setopt()", + "Alias of socket_set_option()" + ], + "socket_wsaprotocol_info_export": [ + "socket_wsaprotocol_info_export(Socket $socket, int $process_id): string|false", + "Exports the WSAPROTOCOL_INFO Structure" + ], + "socket_wsaprotocol_info_import": [ + "socket_wsaprotocol_info_import(string $info_id): Socket|false", + "Imports a Socket from another Process" + ], + "socket_wsaprotocol_info_release": [ + "socket_wsaprotocol_info_release(string $info_id): bool", + "Releases an exported WSAPROTOCOL_INFO Structure" + ], + "spl_object_id": [ + "spl_object_id(object $object): int", + "" + ], + "sqlsrv_begin_transaction": [ + "sqlsrv_begin_transaction(resource $conn): bool", + "Begins a database transaction" + ], + "sqlsrv_cancel": [ + "sqlsrv_cancel(resource $stmt): bool", + "Cancels a statement" + ], + "sqlsrv_client_info": [ + "sqlsrv_client_info(resource $conn): array", + "Returns information about the client and specified connection" + ], + "sqlsrv_close": [ + "sqlsrv_close(resource $conn): bool", + "Closes an open connection and releases resourses associated with the connection" + ], + "sqlsrv_commit": [ + "sqlsrv_commit(resource $conn): bool", + "Commits a transaction that was begun with sqlsrv_begin_transaction()" + ], + "sqlsrv_configure": [ + "sqlsrv_configure(string $setting, mixed $value): bool", + "Changes the driver error handling and logging configurations" + ], + "sqlsrv_connect": [ + "sqlsrv_connect(string $serverName, array $connectionInfo = ?): resource", + "Opens a connection to a Microsoft SQL Server database" + ], + "sqlsrv_errors": [ + "sqlsrv_errors(int $errorsOrWarnings = ?): mixed", + "Returns error and warning information about the last SQLSRV operation performed" + ], + "sqlsrv_execute": [ + "sqlsrv_execute(resource $stmt): bool", + "Executes a statement prepared with sqlsrv_prepare()" + ], + "sqlsrv_fetch_array": [ + "sqlsrv_fetch_array(resource $stmt, int $fetchType = ?, int $row = ?, int $offset = ?): array", + "Returns a row as an array" + ], + "sqlsrv_fetch_object": [ + "sqlsrv_fetch_object(resource $stmt, string $className = ?, array $ctorParams = ?, int $row = ?, int $offset = ?): mixed", + "Retrieves the next row of data in a result set as an object" + ], + "sqlsrv_fetch": [ + "sqlsrv_fetch(resource $stmt, int $row = ?, int $offset = ?): mixed", + "Makes the next row in a result set available for reading" + ], + "sqlsrv_field_metadata": [ + "sqlsrv_field_metadata(resource $stmt): mixed", + "" + ], + "sqlsrv_free_stmt": [ + "sqlsrv_free_stmt(resource $stmt): bool", + "Frees all resources for the specified statement" + ], + "sqlsrv_get_config": [ + "sqlsrv_get_config(string $setting): mixed", + "Returns the value of the specified configuration setting" + ], + "sqlsrv_get_field": [ + "sqlsrv_get_field(resource $stmt, int $fieldIndex, int $getAsType = ?): mixed", + "Gets field data from the currently selected row" + ], + "sqlsrv_has_rows": [ + "sqlsrv_has_rows(resource $stmt): bool", + "Indicates whether the specified statement has rows" + ], + "sqlsrv_next_result": [ + "sqlsrv_next_result(resource $stmt): mixed", + "Makes the next result of the specified statement active" + ], + "sqlsrv_num_fields": [ + "sqlsrv_num_fields(resource $stmt): mixed", + "Retrieves the number of fields (columns) on a statement" + ], + "sqlsrv_num_rows": [ + "sqlsrv_num_rows(resource $stmt): mixed", + "Retrieves the number of rows in a result set" + ], + "sqlsrv_prepare": [ + "sqlsrv_prepare(resource $conn, string $sql, array $params = ?, array $options = ?): mixed", + "Prepares a query for execution" + ], + "sqlsrv_query": [ + "sqlsrv_query(resource $conn, string $sql, array $params = ?, array $options = ?): mixed", + "Prepares and executes a query" + ], + "sqlsrv_rollback": [ + "sqlsrv_rollback(resource $conn): bool", + "" + ], + "sqlsrv_rows_affected": [ + "sqlsrv_rows_affected(resource $stmt): int|false", + "" + ], + "sqlsrv_send_stream_data": [ + "sqlsrv_send_stream_data(resource $stmt): bool", + "Sends data from parameter streams to the server" + ], + "sqlsrv_server_info": [ + "sqlsrv_server_info(resource $conn): array", + "Returns information about the server" + ], + "str_contains": [ + "str_contains(string $haystack, string $needle): bool", + "Determine if a string contains a given substring" + ], + "str_ends_with": [ + "str_ends_with(string $haystack, string $needle): bool", + "Checks if a string ends with a given substring" + ], + "str_starts_with": [ + "str_starts_with(string $haystack, string $needle): bool", + "Checks if a string starts with a given substring" + ], + "stream_isatty": [ + "stream_isatty(resource $stream): bool", + "Check if a stream is a TTY" + ], + "stream_notification_callback": [ + "stream_notification_callback(int $notification_code, int $severity, string $message, int $message_code, int $bytes_transferred, int $bytes_max): void", + "A callback function for the notification context parameter" + ], + "stream_register_wrapper": [ + "stream_register_wrapper()", + "Alias of stream_wrapper_register()" + ], + "stream_set_chunk_size": [ + "stream_set_chunk_size(resource $stream, int $size): int", + "Set the stream chunk size" + ], + "stream_set_read_buffer": [ + "stream_set_read_buffer(resource $stream, int $size): int", + "Set read file buffering on the given stream" + ], + "tcpwrap_check": [ + "tcpwrap_check(string $daemon, string $address, string $user = ?, bool $nodns = false): bool", + "Performs a tcpwrap check" + ], + "trait_exists": [ + "trait_exists(string $trait, bool $autoload = true): bool", + "Checks if the trait exists" + ], + "use_soap_error_handler": [ + "use_soap_error_handler(bool $enable = true): bool", + "Set whether to use the SOAP error handler" + ], + "user_error": [ + "user_error()", + "Alias of trigger_error()" + ], + "yaml_emit_file": [ + "yaml_emit_file(string $filename, mixed $data, int $encoding = YAML_ANY_ENCODING, int $linebreak = YAML_ANY_BREAK, array $callbacks = null): bool", + "Send the YAML representation of a value to a file" + ], + "yaml_emit": [ + "yaml_emit(mixed $data, int $encoding = YAML_ANY_ENCODING, int $linebreak = YAML_ANY_BREAK, array $callbacks = null): string", + "Returns the YAML representation of a value" + ], + "yaml_parse_file": [ + "yaml_parse_file(string $filename, int $pos = 0, int &$ndocs = ?, array $callbacks = null): mixed", + "Parse a YAML stream from a file" + ], + "yaml_parse_url": [ + "yaml_parse_url(string $url, int $pos = 0, int &$ndocs = ?, array $callbacks = null): mixed", + "Parse a Yaml stream from a URL" + ], + "yaml_parse": [ + "yaml_parse(string $input, int $pos = 0, int &$ndocs = ?, array $callbacks = null): mixed", + "Parse a YAML stream" + ], + "zlib_decode": [ + "zlib_decode(string $data, int $max_length = 0): string|false", + "Uncompress any raw/gzip/zlib encoded data" + ], + "zlib_encode": [ + "zlib_encode(string $data, int $encoding, int $level = -1): string|false", + "Compress data with the specified encoding" + ] +}; +var variableMap = { + "$_COOKIE": { + type: "array" + }, + "$_ENV": { + type: "array" + }, + "$_FILES": { + type: "array" + }, + "$_GET": { + type: "array" + }, + "$_POST": { + type: "array" + }, + "$_REQUEST": { + type: "array" + }, + "$_SERVER": { + type: "array", + value: { + "DOCUMENT_ROOT": 1, + "GATEWAY_INTERFACE": 1, + "HTTP_ACCEPT": 1, + "HTTP_ACCEPT_CHARSET": 1, + "HTTP_ACCEPT_ENCODING": 1, + "HTTP_ACCEPT_LANGUAGE": 1, + "HTTP_CONNECTION": 1, + "HTTP_HOST": 1, + "HTTP_REFERER": 1, + "HTTP_USER_AGENT": 1, + "PATH_TRANSLATED": 1, + "PHP_SELF": 1, + "QUERY_STRING": 1, + "REMOTE_ADDR": 1, + "REMOTE_PORT": 1, + "REQUEST_METHOD": 1, + "REQUEST_URI": 1, + "SCRIPT_FILENAME": 1, + "SCRIPT_NAME": 1, + "SERVER_ADMIN": 1, + "SERVER_NAME": 1, + "SERVER_PORT": 1, + "SERVER_PROTOCOL": 1, + "SERVER_SIGNATURE": 1, + "SERVER_SOFTWARE": 1, + "argv": 1, + "argc": 1 + } + }, + "$_SESSION": { + type: "array" + }, + "$GLOBALS": { + type: "array" + }, + '$argv': { + type: "array" + }, + '$argc': { + type: "int" + } +}; +function is(token, type) { + return token.type.lastIndexOf(type) > -1; +} +var PhpCompletions = function () { +}; +(function () { + this.getCompletions = function (state, session, pos, prefix) { + var token = session.getTokenAt(pos.row, pos.column); + if (!token) + return []; + if (token.type === 'support.php_tag' && token.value === ' 0) { + var prevToken = session.getTokenAt(pos.row, token.start); + if (prevToken.type === 'support.php_tag') { + return this.getTagCompletions(state, session, pos, prefix); + } + } + return this.getFunctionCompletions(state, session, pos, prefix); + } + if (is(token, "variable")) + return this.getVariableCompletions(state, session, pos, prefix); + var line = session.getLine(pos.row).substr(0, pos.column); + if (token.type === 'string' && /(\$[\w]*)\[["']([^'"]*)$/i.test(line)) + return this.getArrayKeyCompletions(state, session, pos, prefix); + return []; + }; + this.getTagCompletions = function (state, session, pos, prefix) { + return [{ + caption: 'php', + value: 'php', + meta: "php tag", + score: 1000000 + }, { + caption: '=', + value: '=', + meta: "php tag", + score: 1000000 + }]; + }; + this.getFunctionCompletions = function (state, session, pos, prefix) { + var functions = Object.keys(functionMap); + return functions.map(function (func) { + return { + caption: func, + snippet: func + '($0)', + meta: "php function", + score: 1000000, + docHTML: functionMap[func][1] + }; + }); + }; + this.getVariableCompletions = function (state, session, pos, prefix) { + var variables = Object.keys(variableMap); + return variables.map(function (variable) { + return { + caption: variable, + value: variable, + meta: "php variable", + score: 1000000 + }; + }); + }; + this.getArrayKeyCompletions = function (state, session, pos, prefix) { + var line = session.getLine(pos.row).substr(0, pos.column); + var variable = line.match(/(\$[\w]*)\[["']([^'"]*)$/i)[1]; + if (!variableMap[variable]) { + return []; + } + var keys = []; + if (variableMap[variable].type === 'array' && variableMap[variable].value) + keys = Object.keys(variableMap[variable].value); + return keys.map(function (key) { + return { + caption: key, + value: key, + meta: "php array key", + score: 1000000 + }; + }); + }; +}).call(PhpCompletions.prototype); +exports.PhpCompletions = PhpCompletions; + +}); + +ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = JavaScriptHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CstyleBehaviour(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "//"; + this.blockComment = { start: "/*", end: "*/" }; + this.$quotes = { '"': '"', "'": "'", "`": "`" }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + var endState = tokenizedLine.state; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + if (state == "start" || state == "no_regex") { + var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); + if (match) { + indent += tab; + } + } + else if (state == "doc-start") { + if (endState == "start" || endState == "no_regex") { + return ""; + } + var match = line.match(/^\s*(\/?)\*/); + if (match) { + if (match[1]) { + indent += " "; + } + indent += "* "; + } + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.createWorker = function (session) { + var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); + worker.attachToDocument(session.getDocument()); + worker.on("annotate", function (results) { + session.setAnnotations(results.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/javascript"; + this.snippetFileId = "ace/snippets/javascript"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +ace.define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module){"use strict"; +var propertyMap = { + "background": { "#$0": 1 }, + "background-color": { "#$0": 1, "transparent": 1, "fixed": 1 }, + "background-image": { "url('/$0')": 1 }, + "background-repeat": { "repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1 }, + "background-position": { "bottom": 2, "center": 2, "left": 2, "right": 2, "top": 2, "inherit": 2 }, + "background-attachment": { "scroll": 1, "fixed": 1 }, + "background-size": { "cover": 1, "contain": 1 }, + "background-clip": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "background-origin": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "border": { "solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1 }, + "border-color": { "#$0": 1 }, + "border-style": { "solid": 2, "dashed": 2, "dotted": 2, "double": 2, "groove": 2, "hidden": 2, "inherit": 2, "inset": 2, "none": 2, "outset": 2, "ridged": 2 }, + "border-collapse": { "collapse": 1, "separate": 1 }, + "bottom": { "px": 1, "em": 1, "%": 1 }, + "clear": { "left": 1, "right": 1, "both": 1, "none": 1 }, + "color": { "#$0": 1, "rgb(#$00,0,0)": 1 }, + "cursor": { "default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1 }, + "display": { "none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1 }, + "empty-cells": { "show": 1, "hide": 1 }, + "float": { "left": 1, "right": 1, "none": 1 }, + "font-family": { "Arial": 2, "Comic Sans MS": 2, "Consolas": 2, "Courier New": 2, "Courier": 2, "Georgia": 2, "Monospace": 2, "Sans-Serif": 2, "Segoe UI": 2, "Tahoma": 2, "Times New Roman": 2, "Trebuchet MS": 2, "Verdana": 1 }, + "font-size": { "px": 1, "em": 1, "%": 1 }, + "font-weight": { "bold": 1, "normal": 1 }, + "font-style": { "italic": 1, "normal": 1 }, + "font-variant": { "normal": 1, "small-caps": 1 }, + "height": { "px": 1, "em": 1, "%": 1 }, + "left": { "px": 1, "em": 1, "%": 1 }, + "letter-spacing": { "normal": 1 }, + "line-height": { "normal": 1 }, + "list-style-type": { "none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1 }, + "margin": { "px": 1, "em": 1, "%": 1 }, + "margin-right": { "px": 1, "em": 1, "%": 1 }, + "margin-left": { "px": 1, "em": 1, "%": 1 }, + "margin-top": { "px": 1, "em": 1, "%": 1 }, + "margin-bottom": { "px": 1, "em": 1, "%": 1 }, + "max-height": { "px": 1, "em": 1, "%": 1 }, + "max-width": { "px": 1, "em": 1, "%": 1 }, + "min-height": { "px": 1, "em": 1, "%": 1 }, + "min-width": { "px": 1, "em": 1, "%": 1 }, + "overflow": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-x": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-y": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "padding": { "px": 1, "em": 1, "%": 1 }, + "padding-top": { "px": 1, "em": 1, "%": 1 }, + "padding-right": { "px": 1, "em": 1, "%": 1 }, + "padding-bottom": { "px": 1, "em": 1, "%": 1 }, + "padding-left": { "px": 1, "em": 1, "%": 1 }, + "page-break-after": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "page-break-before": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "position": { "absolute": 1, "relative": 1, "fixed": 1, "static": 1 }, + "right": { "px": 1, "em": 1, "%": 1 }, + "table-layout": { "fixed": 1, "auto": 1 }, + "text-decoration": { "none": 1, "underline": 1, "line-through": 1, "blink": 1 }, + "text-align": { "left": 1, "right": 1, "center": 1, "justify": 1 }, + "text-transform": { "capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1 }, + "top": { "px": 1, "em": 1, "%": 1 }, + "vertical-align": { "top": 1, "bottom": 1 }, + "visibility": { "hidden": 1, "visible": 1 }, + "white-space": { "nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1 }, + "width": { "px": 1, "em": 1, "%": 1 }, + "word-spacing": { "normal": 1 }, + "filter": { "alpha(opacity=$0100)": 1 }, + "text-shadow": { "$02px 2px 2px #777": 1 }, + "text-overflow": { "ellipsis-word": 1, "clip": 1, "ellipsis": 1 }, + "-moz-border-radius": 1, + "-moz-border-radius-topright": 1, + "-moz-border-radius-bottomright": 1, + "-moz-border-radius-topleft": 1, + "-moz-border-radius-bottomleft": 1, + "-webkit-border-radius": 1, + "-webkit-border-top-right-radius": 1, + "-webkit-border-top-left-radius": 1, + "-webkit-border-bottom-right-radius": 1, + "-webkit-border-bottom-left-radius": 1, + "-moz-box-shadow": 1, + "-webkit-box-shadow": 1, + "transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-moz-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-webkit-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 } +}; +var CssCompletions = function () { +}; +(function () { + this.completionsDefined = false; + this.defineCompletions = function () { + if (document) { + var style = document.createElement('c').style; + for (var i in style) { + if (typeof style[i] !== 'string') + continue; + var name = i.replace(/[A-Z]/g, function (x) { + return '-' + x.toLowerCase(); + }); + if (!propertyMap.hasOwnProperty(name)) + propertyMap[name] = 1; + } + } + this.completionsDefined = true; + }; + this.getCompletions = function (state, session, pos, prefix) { + if (!this.completionsDefined) { + this.defineCompletions(); + } + if (state === 'ruleset' || session.$mode.$id == "ace/mode/scss") { + var line = session.getLine(pos.row).substr(0, pos.column); + var inParens = /\([^)]*$/.test(line); + if (inParens) { + line = line.substr(line.lastIndexOf('(') + 1); + } + if (/:[^;]+$/.test(line)) { + /([\w\-]+):[^:]*$/.test(line); + return this.getPropertyValueCompletions(state, session, pos, prefix); + } + else { + return this.getPropertyCompletions(state, session, pos, prefix, inParens); + } + } + return []; + }; + this.getPropertyCompletions = function (state, session, pos, prefix, skipSemicolon) { + skipSemicolon = skipSemicolon || false; + var properties = Object.keys(propertyMap); + return properties.map(function (property) { + return { + caption: property, + snippet: property + ': $0' + (skipSemicolon ? '' : ';'), + meta: "property", + score: 1000000 + }; + }); + }; + this.getPropertyValueCompletions = function (state, session, pos, prefix) { + var line = session.getLine(pos.row).substr(0, pos.column); + var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; + if (!property) + return []; + var values = []; + if (property in propertyMap && typeof propertyMap[property] === "object") { + values = Object.keys(propertyMap[property]); + } + return values.map(function (value) { + return { + caption: value, + snippet: value, + meta: "property value", + score: 1000000 + }; + }); + }; +}).call(CssCompletions.prototype); +exports.CssCompletions = CssCompletions; + +}); + +ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Behaviour = require("../behaviour").Behaviour; +var CstyleBehaviour = require("./cstyle").CstyleBehaviour; +var TokenIterator = require("../../token_iterator").TokenIterator; +var CssBehaviour = function () { + this.inherit(CstyleBehaviour); + this.add("colon", "insertion", function (state, action, editor, session, text) { + if (text === ':' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.value.match(/\s+/)) { + token = iterator.stepBackward(); + } + if (token && token.type === 'support.type') { + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + if (rightChar === ':') { + return { + text: '', + selection: [1, 1] + }; + } + if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { + return { + text: ':;', + selection: [1, 1] + }; + } + } + } + }); + this.add("colon", "deletion", function (state, action, editor, session, range) { + var selected = session.doc.getTextRange(range); + if (!range.isMultiLine() && selected === ':') { + var cursor = editor.getCursorPosition(); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.value.match(/\s+/)) { + token = iterator.stepBackward(); + } + if (token && token.type === 'support.type') { + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.end.column, range.end.column + 1); + if (rightChar === ';') { + range.end.column++; + return range; + } + } + } + }); + this.add("semicolon", "insertion", function (state, action, editor, session, text) { + if (text === ';' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + if (rightChar === ';') { + return { + text: '', + selection: [1, 1] + }; + } + } + }); + this.add("!important", "insertion", function (state, action, editor, session, text) { + if (text === '!' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { + return { + text: '!important', + selection: [10, 10] + }; + } + } + }); +}; +oop.inherits(CssBehaviour, CstyleBehaviour); +exports.CssBehaviour = CssBehaviour; + +}); + +ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var CssCompletions = require("./css_completions").CssCompletions; +var CssBehaviour = require("./behaviour/css").CssBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = CssHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CssBehaviour(); + this.$completer = new CssCompletions(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.foldingRules = "cStyle"; + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokens = this.getTokenizer().getLineTokens(line, state).tokens; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + var match = line.match(/^.*\{\s*$/); + if (match) { + indent += tab; + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.getCompletions = function (state, session, pos, prefix) { + return this.$completer.getCompletions(state, session, pos, prefix); + }; + this.createWorker = function (session) { + var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); + worker.attachToDocument(session.getDocument()); + worker.on("annotate", function (e) { + session.setAnnotations(e.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/css"; + this.snippetFileId = "ace/snippets/css"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Behaviour = require("../behaviour").Behaviour; +var TokenIterator = require("../../token_iterator").TokenIterator; +var lang = require("../../lib/lang"); +function is(token, type) { + return token && token.type.lastIndexOf(type + ".xml") > -1; +} +var XmlBehaviour = function () { + this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { + if (text == '"' || text == "'") { + var quote = text; + var selected = session.doc.getTextRange(editor.getSelectionRange()); + if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { + return { + text: quote + selected + quote, + selection: false + }; + } + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { + return { + text: "", + selection: [1, 1] + }; + } + if (!token) + token = iterator.stepBackward(); + if (!token) + return; + while (is(token, "tag-whitespace") || is(token, "whitespace")) { + token = iterator.stepBackward(); + } + var rightSpace = !rightChar || rightChar.match(/\s/); + if (is(token, "attribute-equals") && (rightSpace || rightChar == '>') || (is(token, "decl-attribute-equals") && (rightSpace || rightChar == '?'))) { + return { + text: quote + quote, + selection: [1, 1] + }; + } + } + }); + this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { + var selected = session.doc.getTextRange(range); + if (!range.isMultiLine() && (selected == '"' || selected == "'")) { + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.start.column + 1, range.start.column + 2); + if (rightChar == selected) { + range.end.column++; + return range; + } + } + }); + this.add("autoclosing", "insertion", function (state, action, editor, session, text) { + if (text == '>') { + var position = editor.getSelectionRange().start; + var iterator = new TokenIterator(session, position.row, position.column); + var token = iterator.getCurrentToken() || iterator.stepBackward(); + if (!token || !(is(token, "tag-name") || is(token, "tag-whitespace") || is(token, "attribute-name") || is(token, "attribute-equals") || is(token, "attribute-value"))) + return; + if (is(token, "reference.attribute-value")) + return; + if (is(token, "attribute-value")) { + var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; + if (position.column < tokenEndColumn) + return; + if (position.column == tokenEndColumn) { + var nextToken = iterator.stepForward(); + if (nextToken && is(nextToken, "attribute-value")) + return; + iterator.stepBackward(); + } + } + if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) + return; + while (!is(token, "tag-name")) { + token = iterator.stepBackward(); + if (token.value == "<") { + token = iterator.stepForward(); + break; + } + } + var tokenRow = iterator.getCurrentTokenRow(); + var tokenColumn = iterator.getCurrentTokenColumn(); + if (is(iterator.stepBackward(), "end-tag-open")) + return; + var element = token.value; + if (tokenRow == position.row) + element = element.substring(0, position.column - tokenColumn); + if (this.voidElements.hasOwnProperty(element.toLowerCase())) + return; + return { + text: ">" + "", + selection: [1, 1] + }; + } + }); + this.add("autoindent", "insertion", function (state, action, editor, session, text) { + if (text == "\n") { + var cursor = editor.getCursorPosition(); + var line = session.getLine(cursor.row); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.type.indexOf("tag-close") !== -1) { + if (token.value == "/>") + return; + while (token && token.type.indexOf("tag-name") === -1) { + token = iterator.stepBackward(); + } + if (!token) { + return; + } + var tag = token.value; + var row = iterator.getCurrentTokenRow(); + token = iterator.stepBackward(); + if (!token || token.type.indexOf("end-tag") !== -1) { + return; + } + if (this.voidElements && !this.voidElements[tag]) { + var nextToken = session.getTokenAt(cursor.row, cursor.column + 1); + var line = session.getLine(row); + var nextIndent = this.$getIndent(line); + var indent = nextIndent + session.getTabString(); + if (nextToken && nextToken.value === " -1; +} +(function () { + this.getFoldWidget = function (session, foldStyle, row) { + var tag = this._getFirstTagInLine(session, row); + if (!tag) + return this.getCommentFoldWidget(session, row); + if (tag.closing || (!tag.tagName && tag.selfClosing)) + return foldStyle === "markbeginend" ? "end" : ""; + if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) + return ""; + if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) + return ""; + return "start"; + }; + this.getCommentFoldWidget = function (session, row) { + if (/comment/.test(session.getState(row)) && /'; + break; + } + } + return tag; + } + else if (is(token, "tag-close")) { + tag.selfClosing = token.value == '/>'; + return tag; + } + tag.start.column += token.value.length; + } + return null; + }; + this._findEndTagInLine = function (session, row, tagName, startColumn) { + var tokens = session.getTokens(row); + var column = 0; + for (var i = 0; i < tokens.length; i++) { + var token = tokens[i]; + column += token.value.length; + if (column < startColumn) + continue; + if (is(token, "end-tag-open")) { + token = tokens[i + 1]; + if (token && token.value == tagName) + return true; + } + } + return false; + }; + this.getFoldWidgetRange = function (session, foldStyle, row) { + var tags = session.getMatchingTags({ row: row, column: 0 }); + if (tags) { + return new Range(tags.openTag.end.row, tags.openTag.end.column, tags.closeTag.start.row, tags.closeTag.start.column); + } + else { + return this.getCommentFoldWidget(session, row) + && session.getCommentFoldRange(row, session.getLine(row).length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var MixedFoldMode = require("./mixed").FoldMode; +var XmlFoldMode = require("./xml").FoldMode; +var CStyleFoldMode = require("./cstyle").FoldMode; +var FoldMode = exports.FoldMode = function (voidElements, optionalTags) { + MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { + "js-": new CStyleFoldMode(), + "css-": new CStyleFoldMode() + }); +}; +oop.inherits(FoldMode, MixedFoldMode); + +}); + +ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module){"use strict"; +var TokenIterator = require("../token_iterator").TokenIterator; +var commonAttributes = [ + "accesskey", + "class", + "contenteditable", + "contextmenu", + "dir", + "draggable", + "dropzone", + "hidden", + "id", + "inert", + "itemid", + "itemprop", + "itemref", + "itemscope", + "itemtype", + "lang", + "spellcheck", + "style", + "tabindex", + "title", + "translate" +]; +var eventAttributes = [ + "onabort", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextmenu", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onmousewheel", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onscroll", + "onseeked", + "onseeking", + "onselect", + "onshow", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "onvolumechange", + "onwaiting" +]; +var globalAttributes = commonAttributes.concat(eventAttributes); +var attributeMap = { + "a": { "href": 1, "target": { "_blank": 1, "top": 1 }, "ping": 1, "rel": { "nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1 }, "media": 1, "hreflang": 1, "type": 1 }, + "abbr": {}, + "address": {}, + "area": { "shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1 }, + "article": { "pubdate": 1 }, + "aside": {}, + "audio": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "b": {}, + "base": { "href": 1, "target": 1 }, + "bdi": {}, + "bdo": {}, + "blockquote": { "cite": 1 }, + "body": { "onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1 }, + "br": {}, + "button": { "autofocus": 1, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": { "button": 1, "submit": 1 } }, + "canvas": { "width": 1, "height": 1 }, + "caption": {}, + "cite": {}, + "code": {}, + "col": { "span": 1 }, + "colgroup": { "span": 1 }, + "command": { "type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1 }, + "data": {}, + "datalist": {}, + "dd": {}, + "del": { "cite": 1, "datetime": 1 }, + "details": { "open": 1 }, + "dfn": {}, + "dialog": { "open": 1 }, + "div": {}, + "dl": {}, + "dt": {}, + "em": {}, + "embed": { "src": 1, "height": 1, "width": 1, "type": 1 }, + "fieldset": { "disabled": 1, "form": 1, "name": 1 }, + "figcaption": {}, + "figure": {}, + "footer": {}, + "form": { "accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": { "multipart/form-data": 1, "application/x-www-form-urlencoded": 1 }, "method": { "get": 1, "post": 1 }, "name": 1, "novalidate": 1, "target": { "_blank": 1, "top": 1 } }, + "h1": {}, + "h2": {}, + "h3": {}, + "h4": {}, + "h5": {}, + "h6": {}, + "head": {}, + "header": {}, + "hr": {}, + "html": { "manifest": 1 }, + "i": {}, + "iframe": { "name": 1, "src": 1, "height": 1, "width": 1, "sandbox": { "allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1 }, "seamless": { "seamless": 1 } }, + "img": { "alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1 }, + "input": { + "type": { "text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1 }, + "accept": 1, "alt": 1, "autocomplete": { "on": 1, "off": 1 }, "autofocus": { "autofocus": 1 }, "checked": { "checked": 1 }, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": { "application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1 }, "formmethod": { "get": 1, "post": 1 }, "formnovalidate": { "formnovalidate": 1 }, "formtarget": { "_blank": 1, "_self": 1, "_parent": 1, "_top": 1 }, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": { "multiple": 1 }, "name": 1, "pattern": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1 + }, + "ins": { "cite": 1, "datetime": 1 }, + "kbd": {}, + "keygen": { "autofocus": 1, "challenge": { "challenge": 1 }, "disabled": { "disabled": 1 }, "form": 1, "keytype": { "rsa": 1, "dsa": 1, "ec": 1 }, "name": 1 }, + "label": { "form": 1, "for": 1 }, + "legend": {}, + "li": { "value": 1 }, + "link": { "href": 1, "hreflang": 1, "rel": { "stylesheet": 1, "icon": 1 }, "media": { "all": 1, "screen": 1, "print": 1 }, "type": { "text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1 }, "sizes": 1 }, + "main": {}, + "map": { "name": 1 }, + "mark": {}, + "math": {}, + "menu": { "type": 1, "label": 1 }, + "meta": { "http-equiv": { "content-type": 1 }, "name": { "description": 1, "keywords": 1 }, "content": { "text/html; charset=UTF-8": 1 }, "charset": 1 }, + "meter": { "value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1 }, + "nav": {}, + "noscript": { "href": 1 }, + "object": { "param": 1, "data": 1, "type": 1, "height": 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1 }, + "ol": { "start": 1, "reversed": 1 }, + "optgroup": { "disabled": 1, "label": 1 }, + "option": { "disabled": 1, "selected": 1, "label": 1, "value": 1 }, + "output": { "for": 1, "form": 1, "name": 1 }, + "p": {}, + "param": { "name": 1, "value": 1 }, + "pre": {}, + "progress": { "value": 1, "max": 1 }, + "q": { "cite": 1 }, + "rp": {}, + "rt": {}, + "ruby": {}, + "s": {}, + "samp": {}, + "script": { "charset": 1, "type": { "text/javascript": 1 }, "src": 1, "defer": 1, "async": 1 }, + "select": { "autofocus": 1, "disabled": 1, "form": 1, "multiple": { "multiple": 1 }, "name": 1, "size": 1, "readonly": { "readonly": 1 } }, + "small": {}, + "source": { "src": 1, "type": 1, "media": 1 }, + "span": {}, + "strong": {}, + "style": { "type": 1, "media": { "all": 1, "screen": 1, "print": 1 }, "scoped": 1 }, + "sub": {}, + "sup": {}, + "svg": {}, + "table": { "summary": 1 }, + "tbody": {}, + "td": { "headers": 1, "rowspan": 1, "colspan": 1 }, + "textarea": { "autofocus": { "autofocus": 1 }, "disabled": { "disabled": 1 }, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "rows": 1, "cols": 1, "wrap": { "on": 1, "off": 1, "hard": 1, "soft": 1 } }, + "tfoot": {}, + "th": { "headers": 1, "rowspan": 1, "colspan": 1, "scope": 1 }, + "thead": {}, + "time": { "datetime": 1 }, + "title": {}, + "tr": {}, + "track": { "kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1 }, + "section": {}, + "summary": {}, + "u": {}, + "ul": {}, + "var": {}, + "video": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "width": 1, "height": 1, "poster": 1, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "wbr": {} +}; +var elements = Object.keys(attributeMap); +function is(token, type) { + return token.type.lastIndexOf(type + ".xml") > -1; +} +function findTagName(session, pos) { + var iterator = new TokenIterator(session, pos.row, pos.column); + var token = iterator.getCurrentToken(); + while (token && !is(token, "tag-name")) { + token = iterator.stepBackward(); + } + if (token) + return token.value; +} +function findAttributeName(session, pos) { + var iterator = new TokenIterator(session, pos.row, pos.column); + var token = iterator.getCurrentToken(); + while (token && !is(token, "attribute-name")) { + token = iterator.stepBackward(); + } + if (token) + return token.value; +} +var HtmlCompletions = function () { +}; +(function () { + this.getCompletions = function (state, session, pos, prefix) { + var token = session.getTokenAt(pos.row, pos.column); + if (!token) + return []; + if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) + return this.getTagCompletions(state, session, pos, prefix); + if (is(token, "tag-whitespace") || is(token, "attribute-name")) + return this.getAttributeCompletions(state, session, pos, prefix); + if (is(token, "attribute-value")) + return this.getAttributeValueCompletions(state, session, pos, prefix); + var line = session.getLine(pos.row).substr(0, pos.column); + if (/&[a-z]*$/i.test(line)) + return this.getHTMLEntityCompletions(state, session, pos, prefix); + return []; + }; + this.getTagCompletions = function (state, session, pos, prefix) { + return elements.map(function (element) { + return { + value: element, + meta: "tag", + score: 1000000 + }; + }); + }; + this.getAttributeCompletions = function (state, session, pos, prefix) { + var tagName = findTagName(session, pos); + if (!tagName) + return []; + var attributes = globalAttributes; + if (tagName in attributeMap) { + attributes = attributes.concat(Object.keys(attributeMap[tagName])); + } + return attributes.map(function (attribute) { + return { + caption: attribute, + snippet: attribute + '="$0"', + meta: "attribute", + score: 1000000 + }; + }); + }; + this.getAttributeValueCompletions = function (state, session, pos, prefix) { + var tagName = findTagName(session, pos); + var attributeName = findAttributeName(session, pos); + if (!tagName) + return []; + var values = []; + if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { + values = Object.keys(attributeMap[tagName][attributeName]); + } + return values.map(function (value) { + return { + caption: value, + snippet: value, + meta: "attribute value", + score: 1000000 + }; + }); + }; + this.getHTMLEntityCompletions = function (state, session, pos, prefix) { + var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;']; + return values.map(function (value) { + return { + caption: value, + snippet: value, + meta: "html entity", + score: 1000000 + }; + }); + }; +}).call(HtmlCompletions.prototype); +exports.HtmlCompletions = HtmlCompletions; + +}); + +ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextMode = require("./text").Mode; +var JavaScriptMode = require("./javascript").Mode; +var CssMode = require("./css").Mode; +var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; +var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; +var HtmlFoldMode = require("./folding/html").FoldMode; +var HtmlCompletions = require("./html_completions").HtmlCompletions; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; +var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; +var Mode = function (options) { + this.fragmentContext = options && options.fragmentContext; + this.HighlightRules = HtmlHighlightRules; + this.$behaviour = new XmlBehaviour(); + this.$completer = new HtmlCompletions(); + this.createModeDelegates({ + "js-": JavaScriptMode, + "css-": CssMode + }); + this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); +}; +oop.inherits(Mode, TextMode); +(function () { + this.blockComment = { start: "" }; + this.voidElements = lang.arrayToMap(voidElements); + this.getNextLineIndent = function (state, line, tab) { + return this.$getIndent(line); + }; + this.checkOutdent = function (state, line, input) { + return false; + }; + this.getCompletions = function (state, session, pos, prefix) { + return this.$completer.getCompletions(state, session, pos, prefix); + }; + this.createWorker = function (session) { + if (this.constructor != Mode) + return; + var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker"); + worker.attachToDocument(session.getDocument()); + if (this.fragmentContext) + worker.call("setOptions", [{ context: this.fragmentContext }]); + worker.on("error", function (e) { + session.setAnnotations(e.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/html"; + this.snippetFileId = "ace/snippets/html"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +ace.define("ace/mode/php",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/php_highlight_rules","ace/mode/php_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/php_completions","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle","ace/unicode","ace/mode/html","ace/mode/javascript","ace/mode/css"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var PhpHighlightRules = require("./php_highlight_rules").PhpHighlightRules; +var PhpLangHighlightRules = require("./php_highlight_rules").PhpLangHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var Range = require("../range").Range; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var PhpCompletions = require("./php_completions").PhpCompletions; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var unicode = require("../unicode"); +var HtmlMode = require("./html").Mode; +var JavaScriptMode = require("./javascript").Mode; +var CssMode = require("./css").Mode; +var PhpMode = function (opts) { + this.HighlightRules = PhpLangHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CstyleBehaviour(); + this.$completer = new PhpCompletions(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(PhpMode, TextMode); +(function () { + this.tokenRe = new RegExp("^[" + unicode.wordChars + "_]+", "g"); + this.nonTokenRe = new RegExp("^(?:[^" + unicode.wordChars + "_]|\\s])+", "g"); + this.lineCommentStart = ["//", "#"]; + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + var endState = tokenizedLine.state; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + if (state == "start") { + var match = line.match(/^.*[\{\(\[:]\s*$/); + if (match) { + indent += tab; + } + } + else if (state == "doc-start") { + if (endState != "doc-start") { + return ""; + } + var match = line.match(/^\s*(\/?)\*/); + if (match) { + if (match[1]) { + indent += " "; + } + indent += "* "; + } + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.getCompletions = function (state, session, pos, prefix) { + return this.$completer.getCompletions(state, session, pos, prefix); + }; + this.$id = "ace/mode/php-inline"; +}).call(PhpMode.prototype); +var Mode = function (opts) { + if (opts && opts.inline) { + var mode = new PhpMode(); + mode.createWorker = this.createWorker; + mode.inlinePhp = true; + return mode; + } + HtmlMode.call(this); + this.HighlightRules = PhpHighlightRules; + this.createModeDelegates({ + "js-": JavaScriptMode, + "css-": CssMode, + "php-": PhpMode + }); + this.foldingRules.subModes["php-"] = new CStyleFoldMode(); +}; +oop.inherits(Mode, HtmlMode); +(function () { + this.createWorker = function (session) { + var worker = new WorkerClient(["ace"], "ace/mode/php_worker", "PhpWorker"); + worker.attachToDocument(session.getDocument()); + if (this.inlinePhp) + worker.call("setOptions", [{ inline: true }]); + worker.on("annotate", function (e) { + session.setAnnotations(e.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/php"; + this.snippetFileId = "ace/snippets/php"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +ace.define("ace/mode/php_laravel_blade",["require","exports","module","ace/lib/oop","ace/mode/php_laravel_blade_highlight_rules","ace/mode/php","ace/mode/javascript","ace/mode/css","ace/mode/html"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var PHPLaravelBladeHighlightRules = require("./php_laravel_blade_highlight_rules").PHPLaravelBladeHighlightRules; +var PHPMode = require("./php").Mode; +var JavaScriptMode = require("./javascript").Mode; +var CssMode = require("./css").Mode; +var HtmlMode = require("./html").Mode; +var Mode = function () { + PHPMode.call(this); + this.HighlightRules = PHPLaravelBladeHighlightRules; + this.createModeDelegates({ + "js-": JavaScriptMode, + "css-": CssMode, + "html-": HtmlMode + }); +}; +oop.inherits(Mode, PHPMode); +(function () { + this.$id = "ace/mode/php_laravel_blade"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/php_laravel_blade"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/c53921154b1d064db029a19020dd6e6c.js.gz b/web/dist/c53921154b1d064db029a19020dd6e6c.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..aea7e4f0a00084aa4258dc8291dfee663385b23b GIT binary patch literal 134526 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 Wu_ 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%0AcSPMAL3fyq2^ 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

    t7yYNM6)=zqxBwB{hB53!d@4Y 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 indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/prisma",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/prisma_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ +"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var PrismaHighlightRules = require("./prisma_highlight_rules").PrismaHighlightRules; +var FoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = PrismaHighlightRules; + this.foldingRules = new FoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "//"; + this.$id = "ace/mode/prisma"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/prisma"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/c57721ccc0d5a41063560477b0bc7d02.js.gz b/web/dist/c57721ccc0d5a41063560477b0bc7d02.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..93a93d1c475bff41ade6017aeaf1280c78e805b3 GIT binary patch literal 2780 zcmV<23M2I&iwFP!000023hi5MbK5o&{_bBvv%U@~OJMTxtaFv5ajuz3dL7%D-km6G zAQ6&T^Q|BmIgRw+Zvg@n-zibH>kJ> z`Vx?O;z>XKUOVl|Rf_yO;z3WTgR=_#n1Tl;4u^<4BbG%hlr*dT8luRjcu5e`7;#+$ zgIa$Dgr}a}WBAotQjpN3TmnzKN?R$~=j)Kc1*Zad(ma`*dyL2qy|Wn)`Q|_IKCc z^1@+gFTIX@9@*bBx^-}Ib`Gq=JskXO3^qi5bW14O3Tkn(CZ2cX%gUz~@`D8ZC?b^N zg-_i^ZXF!VT%GF4(|Pj$Ar90qrL5?aC-4!z13jc`Ol{Axy)MuzWxdY?fVKxlvMppg z4q0Lcwgv~{b$8H)alk4%$vy*YT$t@=(!#KWbjJ>(sbsMap&u~gVrLiP;?zaS$I8)m z^(Jj}24Bwfk=T^d#<4kJjqGtGACBR{*sFAbBZ&XAI3m-P9o1rqV~T zO7g(K&E-HltXdPVQlfJpzh*FZfJUY`A!F`&ikWANfa+}iIqjea?0F~8*Y35VI+#A| z8nP6PQUNVCe%P#Dd-ZAr`MQZFYz4G$e^}R_AQfSTx6&p2Hfc>`cD=tvN=PM&eL+zcx|!~HRoDAV>9tb%)6 z!agS}!e(I#u~;Aj!`9h4*86?W!{`SlRwH7l_f1fS{!?!%ru*vYE!f^@%ahJW1*w>MKg zpSsww|04VbtELZ+pttIBD}po^zr_(wZ?Q7)foi{HO&-qufc%H4rnxF593mSgr64Pi(M-jqNu4cX7F3=G$5ZjM*l%h1N=S95G? z6McMRZp?|PPkJZo8whF|>@skK8y+=I+PDEa#zUL*fLFpnU*C+)(Ck5z*)xqClMpyK zbuEJaj}wC zEZeu%O!>(l0}s%$aTiI#djUn>w8mBj*lsRG?U_hNTTJr?w2FtxL_mLlF1~ zTe6)P`kTTqjaEy9m+w1FG%gqUWL z`(X*6ymS0=QVTAw0AvXsDDZ~j`5mAqKO4zHSl-r$B{is6xQxMtec0miWz`a52+s+> z7Zc1#GJDMw9HJJSH#m{2YY3fSnlt(o?ITyC)Xq{?rkQ z<%RAF&bi})LDk))=UgoJGU#j8j;`^j0I~UGa%V@W{Wj`X+PEQ&4e+Z%? zUUo7{3alM$A`vCWf;Yf=mSDwBs4g&n^o=rLd`OA;Kd= zRe0fA2u5`QPWFovJ~#1s3WmCXSD|%FEKB9IhTSciQW|#f&w*zbfm!gMOZy)(pZvFK zRBwtI3O{`$>m_X3&$?4z@adP3o3!h~(e%nZr<^fV2a#>|PzWUzj-7e~OVaf&{@NBz z=r+e6ouyg+dN6=QpG{jYru&l6B0wYm`TT9yY_wO*x>tEhqDevBYxKMt7eWkqqbp5Y?Ui^A-`TF|et@7qS zY%H7&+`vJ9gh$j%LV|;zXe{SDQ)dGSX%ZHJQxelb@h~w`v$_M)HYmvBn}Ox2P^5T2|VG1rn1m zm>1nQRZ6SdtuQZEB_<>svRepj`I)&!NUIFz6 i0qm2ELMac$9oCNDRF}A`4o$jNX#F2-u-K#zLjVBxymjmV literal 0 HcmV?d00001 diff --git a/web/dist/c6c186b45f36f18d9ce1fb2bc07fa5e3.js b/web/dist/c6c186b45f36f18d9ce1fb2bc07fa5e3.js new file mode 100644 index 00000000..6f1ad150 --- /dev/null +++ b/web/dist/c6c186b45f36f18d9ce1fb2bc07fa5e3.js @@ -0,0 +1,272 @@ +ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) + return false; + return /^\s*\}/.test(input); + }; + this.autoOutdent = function (doc, row) { + var line = doc.getLine(row); + var match = line.match(/^(\s*\})/); + if (!match) + return 0; + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; + var indent = this.$getIndent(doc.getLine(openBracePos.row)); + doc.replace(new Range(row, 0, row, column - 1), indent); + }; + this.$getIndent = function (line) { + return line.match(/^\s*/)[0]; + }; +}).call(MatchingBraceOutdent.prototype); +exports.MatchingBraceOutdent = MatchingBraceOutdent; + +}); + +ace.define("ace/mode/livescript",["require","exports","module","ace/tokenizer","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/text"], function(require, exports, module){var identifier, LiveScriptMode, keywordend, stringfill; +identifier = '(?![\\d\\s])[$\\w\\xAA-\\uFFDC](?:(?!\\s)[$\\w\\xAA-\\uFFDC]|-[A-Za-z])*'; +exports.Mode = LiveScriptMode = (function (superclass) { + var indenter, prototype = extend$((import$(LiveScriptMode, superclass).displayName = 'LiveScriptMode', LiveScriptMode), superclass).prototype, constructor = LiveScriptMode; + function LiveScriptMode() { + var that; + this.$tokenizer = new (require('../tokenizer')).Tokenizer(LiveScriptMode.Rules); + if (that = require('../mode/matching_brace_outdent')) { + this.$outdent = new that.MatchingBraceOutdent; + } + this.$id = "ace/mode/livescript"; + this.$behaviour = new (require("./behaviour/cstyle").CstyleBehaviour)(); + } + indenter = RegExp('(?:[({[=:]|[-~]>|\\b(?:e(?:lse|xport)|d(?:o|efault)|t(?:ry|hen)|finally|import(?:\\s*all)?|const|var|let|new|catch(?:\\s*' + identifier + ')?))\\s*$'); + prototype.getNextLineIndent = function (state, line, tab) { + var indent, tokens; + indent = this.$getIndent(line); + tokens = this.$tokenizer.getLineTokens(line, state).tokens; + if (!(tokens.length && tokens[tokens.length - 1].type === 'comment')) { + if (state === 'start' && indenter.test(line)) { + indent += tab; + } + } + return indent; + }; + prototype.lineCommentStart = "#"; + prototype.blockComment = { start: "###", end: "###" }; + prototype.checkOutdent = function (state, line, input) { + var ref$; + return (ref$ = this.$outdent) != null ? ref$.checkOutdent(line, input) : void 8; + }; + prototype.autoOutdent = function (state, doc, row) { + var ref$; + return (ref$ = this.$outdent) != null ? ref$.autoOutdent(doc, row) : void 8; + }; + return LiveScriptMode; +}(require('../mode/text').Mode)); +keywordend = '(?![$\\w]|-[A-Za-z]|\\s*:(?![:=]))'; +stringfill = { + defaultToken: 'string' +}; +LiveScriptMode.Rules = { + start: [ + { + token: 'keyword', + regex: '(?:t(?:h(?:is|row|en)|ry|ypeof!?)|c(?:on(?:tinue|st)|a(?:se|tch)|lass)|i(?:n(?:stanceof)?|mp(?:ort(?:\\s+all)?|lements)|[fs])|d(?:e(?:fault|lete|bugger)|o)|f(?:or(?:\\s+own)?|inally|unction)|s(?:uper|witch)|e(?:lse|x(?:tends|port)|val)|a(?:nd|rguments)|n(?:ew|ot)|un(?:less|til)|w(?:hile|ith)|o[fr]|return|break|let|var|loop)' + keywordend + }, { + token: 'constant.language', + regex: '(?:true|false|yes|no|on|off|null|void|undefined)' + keywordend + }, { + token: 'invalid.illegal', + regex: '(?:p(?:ackage|r(?:ivate|otected)|ublic)|i(?:mplements|nterface)|enum|static|yield)' + keywordend + }, { + token: 'language.support.class', + regex: '(?:R(?:e(?:gExp|ferenceError)|angeError)|S(?:tring|yntaxError)|E(?:rror|valError)|Array|Boolean|Date|Function|Number|Object|TypeError|URIError)' + keywordend + }, { + token: 'language.support.function', + regex: '(?:is(?:NaN|Finite)|parse(?:Int|Float)|Math|JSON|(?:en|de)codeURI(?:Component)?)' + keywordend + }, { + token: 'variable.language', + regex: '(?:t(?:hat|il|o)|f(?:rom|allthrough)|it|by|e)' + keywordend + }, { + token: 'identifier', + regex: identifier + '\\s*:(?![:=])' + }, { + token: 'variable', + regex: identifier + }, { + token: 'keyword.operator', + regex: '(?:\\.{3}|\\s+\\?)' + }, { + token: 'keyword.variable', + regex: '(?:@+|::|\\.\\.)', + next: 'key' + }, { + token: 'keyword.operator', + regex: '\\.\\s*', + next: 'key' + }, { + token: 'string', + regex: '\\\\\\S[^\\s,;)}\\]]*' + }, { + token: 'string.doc', + regex: '\'\'\'', + next: 'qdoc' + }, { + token: 'string.doc', + regex: '"""', + next: 'qqdoc' + }, { + token: 'string', + regex: '\'', + next: 'qstring' + }, { + token: 'string', + regex: '"', + next: 'qqstring' + }, { + token: 'string', + regex: '`', + next: 'js' + }, { + token: 'string', + regex: '<\\[', + next: 'words' + }, { + token: 'string.regex', + regex: '//', + next: 'heregex' + }, { + token: 'comment.doc', + regex: '/\\*', + next: 'comment' + }, { + token: 'comment', + regex: '#.*' + }, { + token: 'string.regex', + regex: '\\/(?:[^[\\/\\n\\\\]*(?:(?:\\\\.|\\[[^\\]\\n\\\\]*(?:\\\\.[^\\]\\n\\\\]*)*\\])[^[\\/\\n\\\\]*)*)\\/[gimy$]{0,4}', + next: 'key' + }, { + token: 'constant.numeric', + regex: '(?:0x[\\da-fA-F][\\da-fA-F_]*|(?:[2-9]|[12]\\d|3[0-6])r[\\da-zA-Z][\\da-zA-Z_]*|(?:\\d[\\d_]*(?:\\.\\d[\\d_]*)?|\\.\\d[\\d_]*)(?:e[+-]?\\d[\\d_]*)?[\\w$]*)' + }, { + token: 'lparen', + regex: '[({[]' + }, { + token: 'rparen', + regex: '[)}\\]]', + next: 'key' + }, { + token: 'keyword.operator', + regex: '[\\^!|&%+\\-]+' + }, { + token: 'text', + regex: '\\s+' + } + ], + heregex: [ + { + token: 'string.regex', + regex: '.*?//[gimy$?]{0,4}', + next: 'start' + }, { + token: 'string.regex', + regex: '\\s*#{' + }, { + token: 'comment.regex', + regex: '\\s+(?:#.*)?' + }, { + defaultToken: 'string.regex' + } + ], + key: [ + { + token: 'keyword.operator', + regex: '[.?@!]+' + }, { + token: 'identifier', + regex: identifier, + next: 'start' + }, { + token: 'text', + regex: '', + next: 'start' + } + ], + comment: [ + { + token: 'comment.doc', + regex: '.*?\\*/', + next: 'start' + }, { + defaultToken: 'comment.doc' + } + ], + qdoc: [ + { + token: 'string', + regex: ".*?'''", + next: 'key' + }, stringfill + ], + qqdoc: [ + { + token: 'string', + regex: '.*?"""', + next: 'key' + }, stringfill + ], + qstring: [ + { + token: 'string', + regex: '[^\\\\\']*(?:\\\\.[^\\\\\']*)*\'', + next: 'key' + }, stringfill + ], + qqstring: [ + { + token: 'string', + regex: '[^\\\\"]*(?:\\\\.[^\\\\"]*)*"', + next: 'key' + }, stringfill + ], + js: [ + { + token: 'string', + regex: '[^\\\\`]*(?:\\\\.[^\\\\`]*)*`', + next: 'key' + }, stringfill + ], + words: [ + { + token: 'string', + regex: '.*?\\]>', + next: 'key' + }, stringfill + ] +}; +function extend$(sub, sup) { + function fun() { } + fun.prototype = (sub.superclass = sup).prototype; + (sub.prototype = new fun).constructor = sub; + if (typeof sup.extended == 'function') + sup.extended(sub); + return sub; +} +function import$(obj, src) { + var own = {}.hasOwnProperty; + for (var key in src) + if (own.call(src, key)) + obj[key] = src[key]; + return obj; +} + +}); (function() { + ace.require(["ace/mode/livescript"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/c6d4a590e14107a8a5ad505d66241032.js b/web/dist/c6d4a590e14107a8a5ad505d66241032.js new file mode 100644 index 00000000..d60cd30f --- /dev/null +++ b/web/dist/c6d4a590e14107a8a5ad505d66241032.js @@ -0,0 +1,9 @@ + +; (function() { + ace.require(["ace/snippets/csharp"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/c6f608398c43e25821557ee65cda5e58.js b/web/dist/c6f608398c43e25821557ee65cda5e58.js new file mode 100644 index 00000000..0b215e86 --- /dev/null +++ b/web/dist/c6f608398c43e25821557ee65cda5e58.js @@ -0,0 +1,9 @@ + +; (function() { + ace.require(["ace/snippets/pascal"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/c7d3b0afe7600a632fbf44ee8d84996e.js b/web/dist/c7d3b0afe7600a632fbf44ee8d84996e.js new file mode 100644 index 00000000..a5cc05b5 --- /dev/null +++ b/web/dist/c7d3b0afe7600a632fbf44ee8d84996e.js @@ -0,0 +1,9 @@ + +; (function() { + ace.require(["ace/snippets/mixal"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/c856709d8ff07b9e3a72f0fd736437a5.js b/web/dist/c856709d8ff07b9e3a72f0fd736437a5.js new file mode 100644 index 00000000..56b9e2bd --- /dev/null +++ b/web/dist/c856709d8ff07b9e3a72f0fd736437a5.js @@ -0,0 +1,104 @@ +ace.define("ace/mode/lisp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY Lisp.tmlanguage (UUID: 00D451C9-6B1D-11D9-8DFA-000D93589AF6) */ +"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var LispHighlightRules = function () { + var keywordControl = "case|do|let|loop|if|else|when"; + var keywordOperator = "eq|neq|and|or"; + var constantLanguage = "null|nil"; + var supportFunctions = "cons|car|cdr|cond|lambda|format|setq|setf|quote|eval|append|list|listp|memberp|t|load|progn"; + var keywordMapper = this.createKeywordMapper({ + "keyword.control": keywordControl, + "keyword.operator": keywordOperator, + "constant.language": constantLanguage, + "support.function": supportFunctions + }, "identifier", true); + this.$rules = + { + "start": [ + { + token: "comment", + regex: ";.*$" + }, + { + token: ["storage.type.function-type.lisp", "text", "entity.name.function.lisp"], + regex: "(?:\\b(?:(defun|defmethod|defmacro))\\b)(\\s+)((?:\\w|\\-|\\!|\\?)*)" + }, + { + token: ["punctuation.definition.constant.character.lisp", "constant.character.lisp"], + regex: "(#)((?:\\w|[\\\\+-=<>'\"&#])+)" + }, + { + token: ["punctuation.definition.variable.lisp", "variable.other.global.lisp", "punctuation.definition.variable.lisp"], + regex: "(\\*)(\\S*)(\\*)" + }, + { + token: "constant.numeric", + regex: "0[xX][0-9a-fA-F]+(?:L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" + }, + { + token: "constant.numeric", + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(?:L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" + }, + { + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, + { + token: "string", + regex: '"(?=.)', + next: "qqstring" + } + ], + "qqstring": [ + { + token: "constant.character.escape.lisp", + regex: "\\\\." + }, + { + token: "string", + regex: '[^"\\\\]+' + }, { + token: "string", + regex: "\\\\$", + next: "qqstring" + }, { + token: "string", + regex: '"|$', + next: "start" + } + ] + }; +}; +oop.inherits(LispHighlightRules, TextHighlightRules); +exports.LispHighlightRules = LispHighlightRules; + +}); + +ace.define("ace/mode/lisp",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/lisp_highlight_rules"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ +"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var LispHighlightRules = require("./lisp_highlight_rules").LispHighlightRules; +var Mode = function () { + this.HighlightRules = LispHighlightRules; + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = ";"; + this.$id = "ace/mode/lisp"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/lisp"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/c8fa7b978e3d1a3d8871518e9cb83968.js b/web/dist/c8fa7b978e3d1a3d8871518e9cb83968.js new file mode 100644 index 00000000..1f6b32df --- /dev/null +++ b/web/dist/c8fa7b978e3d1a3d8871518e9cb83968.js @@ -0,0 +1,293 @@ +ace.define("ace/mode/jssm_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){/* This file was autogenerated from ./jssm.tmLanguage (uuid: ) */ +"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var JSSMHighlightRules = function () { + this.$rules = { + start: [{ + token: "punctuation.definition.comment.mn", + regex: /\/\*/, + push: [{ + token: "punctuation.definition.comment.mn", + regex: /\*\//, + next: "pop" + }, { + defaultToken: "comment.block.jssm" + }], + comment: "block comment" + }, { + token: "comment.line.jssm", + regex: /\/\//, + push: [{ + token: "comment.line.jssm", + regex: /$/, + next: "pop" + }, { + defaultToken: "comment.line.jssm" + }], + comment: "block comment" + }, { + token: "entity.name.function", + regex: /\${/, + push: [{ + token: "entity.name.function", + regex: /}/, + next: "pop" + }, { + defaultToken: "keyword.other" + }], + comment: "js outcalls" + }, { + token: "constant.numeric", + regex: /[0-9]*\.[0-9]*\.[0-9]*/, + comment: "semver" + }, { + token: "constant.language.jssmLanguage", + regex: /graph_layout\s*:/, + comment: "jssm language tokens" + }, { + token: "constant.language.jssmLanguage", + regex: /machine_name\s*:/, + comment: "jssm language tokens" + }, { + token: "constant.language.jssmLanguage", + regex: /machine_version\s*:/, + comment: "jssm language tokens" + }, { + token: "constant.language.jssmLanguage", + regex: /jssm_version\s*:/, + comment: "jssm language tokens" + }, { + token: "keyword.control.transition.jssmArrow.legal_legal", + regex: /<->/, + comment: "transitions" + }, { + token: "keyword.control.transition.jssmArrow.legal_none", + regex: /<-/, + comment: "transitions" + }, { + token: "keyword.control.transition.jssmArrow.none_legal", + regex: /->/, + comment: "transitions" + }, { + token: "keyword.control.transition.jssmArrow.main_main", + regex: /<=>/, + comment: "transitions" + }, { + token: "keyword.control.transition.jssmArrow.none_main", + regex: /=>/, + comment: "transitions" + }, { + token: "keyword.control.transition.jssmArrow.main_none", + regex: /<=/, + comment: "transitions" + }, { + token: "keyword.control.transition.jssmArrow.forced_forced", + regex: /<~>/, + comment: "transitions" + }, { + token: "keyword.control.transition.jssmArrow.none_forced", + regex: /~>/, + comment: "transitions" + }, { + token: "keyword.control.transition.jssmArrow.forced_none", + regex: /<~/, + comment: "transitions" + }, { + token: "keyword.control.transition.jssmArrow.legal_main", + regex: /<-=>/, + comment: "transitions" + }, { + token: "keyword.control.transition.jssmArrow.main_legal", + regex: /<=->/, + comment: "transitions" + }, { + token: "keyword.control.transition.jssmArrow.legal_forced", + regex: /<-~>/, + comment: "transitions" + }, { + token: "keyword.control.transition.jssmArrow.forced_legal", + regex: /<~->/, + comment: "transitions" + }, { + token: "keyword.control.transition.jssmArrow.main_forced", + regex: /<=~>/, + comment: "transitions" + }, { + token: "keyword.control.transition.jssmArrow.forced_main", + regex: /<~=>/, + comment: "transitions" + }, { + token: "constant.numeric.jssmProbability", + regex: /[0-9]+%/, + comment: "edge probability annotation" + }, { + token: "constant.character.jssmAction", + regex: /\'[^']*\'/, + comment: "action annotation" + }, { + token: "entity.name.tag.jssmLabel.doublequoted", + regex: /\"[^"]*\"/, + comment: "jssm label annotation" + }, { + token: "entity.name.tag.jssmLabel.atom", + regex: /[a-zA-Z0-9_.+&()#@!?,]/, + comment: "jssm label annotation" + }] + }; + this.normalizeRules(); +}; +JSSMHighlightRules.metaData = { + fileTypes: ["jssm", "jssm_state"], + name: "JSSM", + scopeName: "source.jssm" +}; +oop.inherits(JSSMHighlightRules, TextHighlightRules); +exports.JSSMHighlightRules = JSSMHighlightRules; + +}); + +ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/jssm",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/jssm_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ +"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var JSSMHighlightRules = require("./jssm_highlight_rules").JSSMHighlightRules; +var FoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = JSSMHighlightRules; + this.foldingRules = new FoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "//"; + this.blockComment = { start: "/*", end: "*/" }; + this.$id = "ace/mode/jssm"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/jssm"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/c8fa7b978e3d1a3d8871518e9cb83968.js.gz b/web/dist/c8fa7b978e3d1a3d8871518e9cb83968.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..4594cd75d31473ad3fa0d5e08dca6ca1d1a06cef GIT binary patch literal 2208 zcmV;R2w(RfiwFP!000023e8$=bK5o&{;ppEv%Z9sC9wH;R+XI7x@|g1dt>{i(@L@i zk|2pONvI@P+l`gqev3DW@08`nsxpZ!0=xTQ_t^!oA(>JBVU7`4ruf7?Fgt1r2FLIGv$+!~%pRSj>a>BwQq9 zL6My#-s}`PsO`3_B&I0lkvHX5uk|O15THYSq;1+3#v9Czns5bpe>89}1lr8}^7S~l zD5li?bb0xqpw6rv*$(>DLh#|RPJA5carI1mVooA{iU!*!=EKfo^hUcvNkZa0#ZD8D|1ZEdod7H=2 z9EB~mXAA<&_V_&xNkFm5!n!yde|kz7cC?nax_+ie+|c`57R@l@OB(GHg^w{}37-<* zj~|r?A(S;>K$rv+N^_0>2VZypJ!%he_NQBiDW<`n`PJ+O$JaZEB&FF-YQQZbvRaOP zat}Tj#_dzL-c@mcj0I&oeh!cUnJyvG#)5=yfULHx1&w+8k%-Pg59x2nGoz>tNs7T=-Z31E%xJDm3d;)P@JPo4An zuMg_I26+9$Is!qxM3UzTHc-r{T(7b#wRaq=d1r5z3GgejCCZx zu6x_=U&x|>_}*Vsb_s2#*MiYv`w$0|lkW&8n?9jvk6zucXncwWmTLAW3}c`SriKaARMj$L5ngN05|+ANmMZO7?V7-y?y+h)#V zP1A5@46h4xH;(LNA_LRyipG7Zzg&AT{4^X4?U6IM9Voqaj3tf(r+jWHO zQPC$U3H0IxI;!=0T7AjR#FHpQmbJyZ&Ma|$YrI(WZ>5{Ei$4M#fUq=K|mL$Ywg0ylH^V?owFU-I;g|so$;yV<94~fq`<>)7c{xQoos58rzG2Ma{(s^GC zSOMYFCE$|(AtJw271$h1IX6!~q0s|vau90TjNbJM{FH-(SEEXDNdRy<2m!!bIB?zo zd$OxBDzxW4r&oXx>Ax9s1FBi-?yAv^I_uqSp(}b zzD4TvP@I#s+3$nV0Jt*&LWWiubsxz^vp?-g#bTiMCFj&<@xJ8LdYXCJLESVB*JXt& zO_cH~weKz@Cdw-G4qO*<6PB2g2;$-nFWs`q7fh6Y&{Q(^E%TEgG>Y;8h>Rpe=~Y%5 z&Px?~19GQE(rb~5?G(D(rFe(KJ~)jh745&uLN~N zE!)^>EW2AaZDfE!I76OY45rE7H~xRhda~cjS-sAmP~`1H#Y_9NlTN3O*3&64S3P%h zqB*7KoZ^Y0yohX154loOlGvMU5QlVUpL}hqCeikc|K@aa%75r~;h-;;?c|U9MsP+~ zTx>9}zGQ6(U|5!$+_KC86aP466_Q&SNj8_rkjNh+>%WHZ&s!O&13x(Z{=jhk7OLX?Xt6zRN|M~pl?CShG^!7I~7w!eY%Euq$*8VRW7P~%jg$~{} zdrI4BDS=WKIJm6gmg^nmdQB-msIsP?RO_miq= zhJ2E5mSI=zX+*ZPREP#S1Zg4%PR(0i@XfK4 iAU ${2:items} = ${1}.findAll();${3}\nsnippet findbyid\n\t${1:var} ${2:item} = ${1}.findById(${3});${4}\n##\n## Javadocs\nsnippet /**\n\t/**\n\t * ${1}\n\t */\nsnippet @au\n\t@author `system(\"grep \\`id -un\\` /etc/passwd | cut -d \\\":\\\" -f5 | cut -d \\\",\\\" -f1\")`\nsnippet @br\n\t@brief ${1:Description}\nsnippet @fi\n\t@file ${1:`Filename()`}.java\nsnippet @pa\n\t@param ${1:param}\nsnippet @re\n\t@return ${1:param}\n##\n## Logger Methods\nsnippet debug\n\tLogger.debug(${1:param});${2}\nsnippet error\n\tLogger.error(${1:param});${2}\nsnippet info\n\tLogger.info(${1:param});${2}\nsnippet warn\n\tLogger.warn(${1:param});${2}\n##\n## Loops\nsnippet enfor\n\tfor (${1} : ${2}) ${3}\nsnippet for\n\tfor (${1}; ${2}; ${3}) ${4}\nsnippet wh\n\twhile (${1}) ${2}\n##\n## Main method\nsnippet main\n\tpublic static void main (String[] args) {\n\t\t${1:/* code */}\n\t}\n##\n## Print Methods\nsnippet print\n\tSystem.out.print(\"${1:Message}\");\nsnippet printf\n\tSystem.out.printf(\"${1:Message}\", ${2:args});\nsnippet println\n\tSystem.out.println(${1});\n##\n## Render Methods\nsnippet ren\n\trender(${1:param});${2}\nsnippet rena\n\trenderArgs.put(\"${1}\", ${2});${3}\nsnippet renb\n\trenderBinary(${1:param});${2}\nsnippet renj\n\trenderJSON(${1:param});${2}\nsnippet renx\n\trenderXml(${1:param});${2}\n##\n## Setter and Getter Methods\nsnippet set\n\t${1:public} void set${3:}(${2:String} ${4:}){\n\t\tthis.$4 = $4;\n\t}\nsnippet get\n\t${1:public} ${2:String} get${3:}(){\n\t\treturn this.${4:};\n\t}\n##\n## Terminate Methods or Loops\nsnippet re\n\treturn\nsnippet br\n\tbreak;\n##\n## Test Methods\nsnippet t\n\tpublic void test${1:Name}() throws Exception {\n\t\t${2}\n\t}\nsnippet test\n\t@Test\n\tpublic void test${1:Name}() throws Exception {\n\t\t${2}\n\t}\n##\n## Utils\nsnippet Sc\n\tScanner\n##\n## Miscellaneous\nsnippet action\n\tpublic static void ${1:index}(${2:args}) { ${3} }\nsnippet rnf\n\tnotFound(${1:param});${2}\nsnippet rnfin\n\tnotFoundIfNull(${1:param});${2}\nsnippet rr\n\tredirect(${1:param});${2}\nsnippet ru\n\tunauthorized(${1:param});${2}\nsnippet unless\n\t(unless=${1:param});${2}\n"; + +}); + +ace.define("ace/snippets/java",["require","exports","module","ace/snippets/java.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./java.snippets"); +exports.scope = "java"; + +}); (function() { + ace.require(["ace/snippets/java"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/ca1483809659f6c87cc6f588891d2bd4.js b/web/dist/ca1483809659f6c87cc6f588891d2bd4.js new file mode 100644 index 00000000..6c09f622 --- /dev/null +++ b/web/dist/ca1483809659f6c87cc6f588891d2bd4.js @@ -0,0 +1,9 @@ + +; (function() { + ace.require(["ace/snippets/mel"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/ca66e3089e6c4a01fceaa4c4675d4da1.js b/web/dist/ca66e3089e6c4a01fceaa4c4675d4da1.js new file mode 100644 index 00000000..61277bcc --- /dev/null +++ b/web/dist/ca66e3089e6c4a01fceaa4c4675d4da1.js @@ -0,0 +1,245 @@ +ace.define("ace/mode/rst_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var RSTHighlightRules = function () { + var tokens = { + title: "markup.heading", + list: "markup.heading", + table: "constant", + directive: "keyword.operator", + entity: "string", + link: "markup.underline.list", + bold: "markup.bold", + italic: "markup.italic", + literal: "support.function", + comment: "comment" + }; + var startStringPrefix = "(^|\\s|[\"'(<\\[{\\-/:])"; + var endStringSuffix = "(?:$|(?=\\s|[\\\\.,;!?\\-/:\"')>\\]}]))"; + this.$rules = { + "start": [ + { + token: tokens.title, + regex: "(^)([\\=\\-`:\\.'\"~\\^_\\*\\+#])(\\2{2,}\\s*$)" + }, + { + token: ["text", tokens.directive, tokens.literal], + regex: "(^\\s*\\.\\. )([^: ]+::)(.*$)", + next: "codeblock" + }, + { + token: tokens.directive, + regex: "::$", + next: "codeblock" + }, + { + token: [tokens.entity, tokens.link], + regex: "(^\\.\\. _[^:]+:)(.*$)" + }, + { + token: [tokens.entity, tokens.link], + regex: "(^__ )(https?://.*$)" + }, + { + token: tokens.entity, + regex: "^\\.\\. \\[[^\\]]+\\] " + }, + { + token: tokens.comment, + regex: "^\\.\\. .*$", + next: "comment" + }, + { + token: tokens.list, + regex: "^\\s*[\\*\\+-] " + }, + { + token: tokens.list, + regex: "^\\s*(?:[A-Za-z]|[0-9]+|[ivxlcdmIVXLCDM]+)\\. " + }, + { + token: tokens.list, + regex: "^\\s*\\(?(?:[A-Za-z]|[0-9]+|[ivxlcdmIVXLCDM]+)\\) " + }, + { + token: tokens.table, + regex: "^={2,}(?: +={2,})+$" + }, + { + token: tokens.table, + regex: "^\\+-{2,}(?:\\+-{2,})+\\+$" + }, + { + token: tokens.table, + regex: "^\\+={2,}(?:\\+={2,})+\\+$" + }, + { + token: ["text", tokens.literal], + regex: startStringPrefix + "(``)(?=\\S)", + next: "code" + }, + { + token: ["text", tokens.bold], + regex: startStringPrefix + "(\\*\\*)(?=\\S)", + next: "bold" + }, + { + token: ["text", tokens.italic], + regex: startStringPrefix + "(\\*)(?=\\S)", + next: "italic" + }, + { + token: tokens.entity, + regex: "\\|[\\w\\-]+?\\|" + }, + { + token: tokens.entity, + regex: ":[\\w-:]+:`\\S", + next: "entity" + }, + { + token: ["text", tokens.entity], + regex: startStringPrefix + "(_`)(?=\\S)", + next: "entity" + }, + { + token: tokens.entity, + regex: "_[A-Za-z0-9\\-]+?" + }, + { + token: ["text", tokens.link], + regex: startStringPrefix + "(`)(?=\\S)", + next: "link" + }, + { + token: tokens.link, + regex: "[A-Za-z0-9\\-]+?__?" + }, + { + token: tokens.link, + regex: "\\[[^\\]]+?\\]_" + }, + { + token: tokens.link, + regex: "https?://\\S+" + }, + { + token: tokens.table, + regex: "\\|" + } + ], + "codeblock": [ + { + token: tokens.literal, + regex: "^ +.+$", + next: "codeblock" + }, + { + token: tokens.literal, + regex: '^$', + next: "codeblock" + }, + { + token: "empty", + regex: "", + next: "start" + } + ], + "code": [ + { + token: tokens.literal, + regex: "\\S``" + endStringSuffix, + next: "start" + }, + { + defaultToken: tokens.literal + } + ], + "bold": [ + { + token: tokens.bold, + regex: "\\S\\*\\*" + endStringSuffix, + next: "start" + }, + { + defaultToken: tokens.bold + } + ], + "italic": [ + { + token: tokens.italic, + regex: "\\S\\*" + endStringSuffix, + next: "start" + }, + { + defaultToken: tokens.italic + } + ], + "entity": [ + { + token: tokens.entity, + regex: "\\S`" + endStringSuffix, + next: "start" + }, + { + defaultToken: tokens.entity + } + ], + "link": [ + { + token: tokens.link, + regex: "\\S`__?" + endStringSuffix, + next: "start" + }, + { + defaultToken: tokens.link + } + ], + "comment": [ + { + token: tokens.comment, + regex: "^ +.+$", + next: "comment" + }, + { + token: tokens.comment, + regex: '^$', + next: "comment" + }, + { + token: "empty", + regex: "", + next: "start" + } + ] + }; +}; +oop.inherits(RSTHighlightRules, TextHighlightRules); +exports.RSTHighlightRules = RSTHighlightRules; + +}); + +ace.define("ace/mode/rst",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/rst_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var RSTHighlightRules = require("./rst_highlight_rules").RSTHighlightRules; +var Mode = function () { + this.HighlightRules = RSTHighlightRules; +}; +oop.inherits(Mode, TextMode); +(function () { + this.type = "text"; + this.$id = "ace/mode/rst"; + this.snippetFileId = "ace/snippets/rst"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/rst"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/cb133a447f7bbaa64d268360db08ac7a.js b/web/dist/cb133a447f7bbaa64d268360db08ac7a.js new file mode 100644 index 00000000..392e3744 --- /dev/null +++ b/web/dist/cb133a447f7bbaa64d268360db08ac7a.js @@ -0,0 +1,439 @@ +ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var DocCommentHighlightRules = function () { + this.$rules = { + "start": [{ + token: "comment.doc.tag", + regex: "@[\\w\\d_]+" // TODO: fix email addresses + }, + DocCommentHighlightRules.getTagRule(), + { + defaultToken: "comment.doc", + caseInsensitive: true + }] + }; +}; +oop.inherits(DocCommentHighlightRules, TextHighlightRules); +DocCommentHighlightRules.getTagRule = function (start) { + return { + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" + }; +}; +DocCommentHighlightRules.getStartRule = function (start) { + return { + token: "comment.doc", + regex: "\\/\\*(?=\\*)", + next: start + }; +}; +DocCommentHighlightRules.getEndRule = function (start) { + return { + token: "comment.doc", + regex: "\\*\\/", + next: start + }; +}; +exports.DocCommentHighlightRules = DocCommentHighlightRules; + +}); + +ace.define("ace/mode/java_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var JavaHighlightRules = function () { + var keywords = ("abstract|continue|for|new|switch|" + + "assert|default|goto|package|synchronized|" + + "boolean|do|if|private|this|" + + "break|double|implements|protected|throw|" + + "byte|else|import|public|throws|" + + "case|enum|instanceof|return|transient|" + + "catch|extends|int|short|try|" + + "char|final|interface|static|void|" + + "class|finally|long|strictfp|volatile|" + + "const|float|native|super|while|" + + "var"); + var buildinConstants = ("null|Infinity|NaN|undefined"); + var langClasses = ("AbstractMethodError|AssertionError|ClassCircularityError|" + + "ClassFormatError|Deprecated|EnumConstantNotPresentException|" + + "ExceptionInInitializerError|IllegalAccessError|" + + "IllegalThreadStateException|InstantiationError|InternalError|" + + "NegativeArraySizeException|NoSuchFieldError|Override|Process|" + + "ProcessBuilder|SecurityManager|StringIndexOutOfBoundsException|" + + "SuppressWarnings|TypeNotPresentException|UnknownError|" + + "UnsatisfiedLinkError|UnsupportedClassVersionError|VerifyError|" + + "InstantiationException|IndexOutOfBoundsException|" + + "ArrayIndexOutOfBoundsException|CloneNotSupportedException|" + + "NoSuchFieldException|IllegalArgumentException|NumberFormatException|" + + "SecurityException|Void|InheritableThreadLocal|IllegalStateException|" + + "InterruptedException|NoSuchMethodException|IllegalAccessException|" + + "UnsupportedOperationException|Enum|StrictMath|Package|Compiler|" + + "Readable|Runtime|StringBuilder|Math|IncompatibleClassChangeError|" + + "NoSuchMethodError|ThreadLocal|RuntimePermission|ArithmeticException|" + + "NullPointerException|Long|Integer|Short|Byte|Double|Number|Float|" + + "Character|Boolean|StackTraceElement|Appendable|StringBuffer|" + + "Iterable|ThreadGroup|Runnable|Thread|IllegalMonitorStateException|" + + "StackOverflowError|OutOfMemoryError|VirtualMachineError|" + + "ArrayStoreException|ClassCastException|LinkageError|" + + "NoClassDefFoundError|ClassNotFoundException|RuntimeException|" + + "Exception|ThreadDeath|Error|Throwable|System|ClassLoader|" + + "Cloneable|Class|CharSequence|Comparable|String|Object"); + var keywordMapper = this.createKeywordMapper({ + "variable.language": "this", + "keyword": keywords, + "constant.language": buildinConstants, + "support.function": langClasses + }, "identifier"); + this.$rules = { + "start": [ + { + token: "comment", + regex: "\\/\\/.*$" + }, + DocCommentHighlightRules.getStartRule("doc-start"), + { + token: "comment", + regex: "\\/\\*", + next: "comment" + }, { + token: "string", + regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + }, { + token: "string", + regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + }, { + token: "constant.numeric", + regex: /0(?:[xX][0-9a-fA-F][0-9a-fA-F_]*|[bB][01][01_]*)[LlSsDdFfYy]?\b/ + }, { + token: "constant.numeric", + regex: /[+-]?\d[\d_]*(?:(?:\.[\d_]*)?(?:[eE][+-]?[\d_]+)?)?[LlSsDdFfYy]?\b/ + }, { + token: "constant.language.boolean", + regex: "(?:true|false)\\b" + }, { + regex: "(open(?:\\s+))?module(?=\\s*\\w)", + token: "keyword", + next: [{ + regex: "{", + token: "paren.lparen", + next: [{ + regex: "}", + token: "paren.rparen", + next: "start" + }, { + regex: "\\b(requires|transitive|exports|opens|to|uses|provides|with)\\b", + token: "keyword" + }] + }, { + token: "text", + regex: "\\s+" + }, { + token: "identifier", + regex: "\\w+" + }, { + token: "punctuation.operator", + regex: "." + }, { + token: "text", + regex: "\\s+" + }, { + regex: "", + next: "start" + }] + }, { + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token: "keyword.operator", + regex: "!|\\$|%|&|\\||\\^|\\*|\\/|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?|\\:|\\*=|\\/=|%=|\\+=|\\-=|&=|\\|=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" + }, { + token: "lparen", + regex: "[[({]" + }, { + token: "rparen", + regex: "[\\])}]" + }, { + token: "text", + regex: "\\s+" + } + ], + "comment": [ + { + token: "comment", + regex: "\\*\\/", + next: "start" + }, { + defaultToken: "comment" + } + ] + }; + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("start")]); + this.normalizeRules(); +}; +oop.inherits(JavaHighlightRules, TextHighlightRules); +exports.JavaHighlightRules = JavaHighlightRules; + +}); + +ace.define("ace/mode/drools_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/java_highlight_rules","ace/mode/doc_comment_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var JavaHighlightRules = require("./java_highlight_rules").JavaHighlightRules; +var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; +var packageIdentifierRe = "[a-zA-Z\\$_\u00a1-\uffff][\\.a-zA-Z\\d\\$_\u00a1-\uffff]*"; +var DroolsHighlightRules = function () { + var keywords = ("date|effective|expires|lock|on|active|no|loop|auto|focus" + + "|activation|group|agenda|ruleflow|duration|timer|calendars|refract|direct" + + "|dialect|salience|enabled|attributes|extends|template" + + "|function|contains|matches|eval|excludes|soundslike" + + "|memberof|not|in|or|and|exists|forall|over|from|entry|point|accumulate|acc|collect" + + "|action|reverse|result|end|init|instanceof|extends|super|boolean|char|byte|short" + + "|int|long|float|double|this|void|class|new|case|final|if|else|for|while|do" + + "|default|try|catch|finally|switch|synchronized|return|throw|break|continue|assert" + + "|modify|static|public|protected|private|abstract|native|transient|volatile" + + "|strictfp|throws|interface|enum|implements|type|window|trait|no-loop|str"); + var langClasses = ("AbstractMethodError|AssertionError|ClassCircularityError|" + + "ClassFormatError|Deprecated|EnumConstantNotPresentException|" + + "ExceptionInInitializerError|IllegalAccessError|" + + "IllegalThreadStateException|InstantiationError|InternalError|" + + "NegativeArraySizeException|NoSuchFieldError|Override|Process|" + + "ProcessBuilder|SecurityManager|StringIndexOutOfBoundsException|" + + "SuppressWarnings|TypeNotPresentException|UnknownError|" + + "UnsatisfiedLinkError|UnsupportedClassVersionError|VerifyError|" + + "InstantiationException|IndexOutOfBoundsException|" + + "ArrayIndexOutOfBoundsException|CloneNotSupportedException|" + + "NoSuchFieldException|IllegalArgumentException|NumberFormatException|" + + "SecurityException|Void|InheritableThreadLocal|IllegalStateException|" + + "InterruptedException|NoSuchMethodException|IllegalAccessException|" + + "UnsupportedOperationException|Enum|StrictMath|Package|Compiler|" + + "Readable|Runtime|StringBuilder|Math|IncompatibleClassChangeError|" + + "NoSuchMethodError|ThreadLocal|RuntimePermission|ArithmeticException|" + + "NullPointerException|Long|Integer|Short|Byte|Double|Number|Float|" + + "Character|Boolean|StackTraceElement|Appendable|StringBuffer|" + + "Iterable|ThreadGroup|Runnable|Thread|IllegalMonitorStateException|" + + "StackOverflowError|OutOfMemoryError|VirtualMachineError|" + + "ArrayStoreException|ClassCastException|LinkageError|" + + "NoClassDefFoundError|ClassNotFoundException|RuntimeException|" + + "Exception|ThreadDeath|Error|Throwable|System|ClassLoader|" + + "Cloneable|Class|CharSequence|Comparable|String|Object"); + var keywordMapper = this.createKeywordMapper({ + "variable.language": "this", + "keyword": keywords, + "constant.language": "null", + "support.class": langClasses, + "support.function": "retract|update|modify|insert" + }, "identifier"); + var stringRules = function () { + return [{ + token: "string", + regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + }, { + token: "string", + regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + }]; + }; + var basicPreRules = function (blockCommentRules) { + return [{ + token: "comment", + regex: "\\/\\/.*$" + }, + DocCommentHighlightRules.getStartRule("doc-start"), + { + token: "comment", + regex: "\\/\\*", + next: blockCommentRules + }, { + token: "constant.numeric", + regex: "0[xX][0-9a-fA-F]+\\b" + }, { + token: "constant.numeric", + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token: "constant.language.boolean", + regex: "(?:true|false)\\b" + }]; + }; + var blockCommentRules = function (returnRule) { + return [ + { + token: "comment.block", + regex: "\\*\\/", + next: returnRule + }, { + defaultToken: "comment.block" + } + ]; + }; + var basicPostRules = function () { + return [{ + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token: "keyword.operator", + regex: "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" + }, { + token: "lparen", + regex: "[[({]" + }, { + token: "rparen", + regex: "[\\])}]" + }, { + token: "text", + regex: "\\s+" + }]; + }; + this.$rules = { + "start": [].concat(basicPreRules("block.comment"), [ + { + token: "entity.name.type", + regex: "@[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token: ["keyword", "text", "entity.name.type"], + regex: "(package)(\\s+)(" + packageIdentifierRe + ")" + }, { + token: ["keyword", "text", "keyword", "text", "entity.name.type"], + regex: "(import)(\\s+)(function)(\\s+)(" + packageIdentifierRe + ")" + }, { + token: ["keyword", "text", "entity.name.type"], + regex: "(import)(\\s+)(" + packageIdentifierRe + ")" + }, { + token: ["keyword", "text", "entity.name.type", "text", "variable"], + regex: "(global)(\\s+)(" + packageIdentifierRe + ")(\\s+)(" + identifierRe + ")" + }, { + token: ["keyword", "text", "keyword", "text", "entity.name.type"], + regex: "(declare)(\\s+)(trait)(\\s+)(" + identifierRe + ")" + }, { + token: ["keyword", "text", "entity.name.type"], + regex: "(declare)(\\s+)(" + identifierRe + ")" + }, { + token: ["keyword", "text", "entity.name.type"], + regex: "(extends)(\\s+)(" + packageIdentifierRe + ")" + }, { + token: ["keyword", "text"], + regex: "(rule)(\\s+)", + next: "asset.name" + } + ], stringRules(), [{ + token: ["variable.other", "text", "text"], + regex: "(" + identifierRe + ")(\\s*)(:)" + }, { + token: ["keyword", "text"], + regex: "(query)(\\s+)", + next: "asset.name" + }, { + token: ["keyword", "text"], + regex: "(when)(\\s*)" + }, { + token: ["keyword", "text"], + regex: "(then)(\\s*)", + next: "java-start" + }, { + token: "paren.lparen", + regex: /[\[({]/ + }, { + token: "paren.rparen", + regex: /[\])}]/ + }], basicPostRules()), + "block.comment": blockCommentRules("start"), + "asset.name": [ + { + token: "entity.name", + regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + }, { + token: "entity.name", + regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + }, { + token: "entity.name", + regex: identifierRe + }, { + regex: "", + token: "empty", + next: "start" + } + ] + }; + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("start")]); + this.embedRules(JavaHighlightRules, "java-", [ + { + token: "support.function", + regex: "\\b(insert|modify|retract|update)\\b" + }, { + token: "keyword", + regex: "\\bend\\b", + next: "start" + } + ]); +}; +oop.inherits(DroolsHighlightRules, TextHighlightRules); +exports.DroolsHighlightRules = DroolsHighlightRules; + +}); + +ace.define("ace/mode/folding/drools",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode","ace/token_iterator"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var TokenIterator = require("../../token_iterator").TokenIterator; +var FoldMode = exports.FoldMode = function () { }; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /\b(rule|declare|query|when|then)\b/; + this.foldingStopMarker = /\bend\b/; + this.getFoldWidgetRange = function (session, foldStyle, row) { + var line = session.getLine(row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) { + var position = { row: row, column: line.length }; + var iterator = new TokenIterator(session, position.row, position.column); + var seek = "end"; + var token = iterator.getCurrentToken(); + if (token.value == "when") { + seek = "then"; + } + while (token) { + if (token.value == seek) { + return Range.fromPoints(position, { + row: iterator.getCurrentTokenRow(), + column: iterator.getCurrentTokenColumn() + }); + } + token = iterator.stepForward(); + } + } + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/drools",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/drools_highlight_rules","ace/mode/folding/drools"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var DroolsHighlightRules = require("./drools_highlight_rules").DroolsHighlightRules; +var DroolsFoldMode = require("./folding/drools").FoldMode; +var Mode = function () { + this.HighlightRules = DroolsHighlightRules; + this.foldingRules = new DroolsFoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "//"; + this.$id = "ace/mode/drools"; + this.snippetFileId = "ace/snippets/drools"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/drools"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/cb133a447f7bbaa64d268360db08ac7a.js.gz b/web/dist/cb133a447f7bbaa64d268360db08ac7a.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..c48d18020c43caa6f638f09b66cbf51720098df5 GIT binary patch literal 3799 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 N{{gnOszIen001gdKA!*p literal 0 HcmV?d00001 diff --git a/web/dist/cbc9092524363d014f77a62f36ff1540.js b/web/dist/cbc9092524363d014f77a62f36ff1540.js new file mode 100644 index 00000000..55ac6f38 --- /dev/null +++ b/web/dist/cbc9092524363d014f77a62f36ff1540.js @@ -0,0 +1,174 @@ +ace.define("ace/mode/graphqlschema_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var GraphQLSchemaHighlightRules = function () { + var keywords = ("type|interface|union|enum|schema|input|implements|extends|scalar"); + var dataTypes = ("Int|Float|String|ID|Boolean"); + var keywordMapper = this.createKeywordMapper({ + "keyword": keywords, + "storage.type": dataTypes + }, "identifier"); + this.$rules = { + "start": [{ + token: "comment", + regex: "#.*$" + }, { + token: "paren.lparen", + regex: /[\[({]/, + next: "start" + }, { + token: "paren.rparen", + regex: /[\])}]/ + }, { + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }] + }; + this.normalizeRules(); +}; +oop.inherits(GraphQLSchemaHighlightRules, TextHighlightRules); +exports.GraphQLSchemaHighlightRules = GraphQLSchemaHighlightRules; + +}); + +ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/graphqlschema",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/graphqlschema_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var GraphQLSchemaHighlightRules = require("./graphqlschema_highlight_rules").GraphQLSchemaHighlightRules; +var FoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = GraphQLSchemaHighlightRules; + this.foldingRules = new FoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "#"; + this.$id = "ace/mode/graphqlschema"; + this.snippetFileId = "ace/snippets/graphqlschema"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/graphqlschema"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/cbdf771a8121b4ee46803ff5a9cc2162.js b/web/dist/cbdf771a8121b4ee46803ff5a9cc2162.js new file mode 100644 index 00000000..f965ea75 --- /dev/null +++ b/web/dist/cbdf771a8121b4ee46803ff5a9cc2162.js @@ -0,0 +1,369 @@ +ace.define("ace/mode/sh_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var reservedKeywords = exports.reservedKeywords = ('!|{|}|case|do|done|elif|else|' + + 'esac|fi|for|if|in|then|until|while|' + + '&|;|export|local|read|typeset|unset|' + + 'elif|select|set|function|declare|readonly'); +var languageConstructs = exports.languageConstructs = ('[|]|alias|bg|bind|break|builtin|' + + 'cd|command|compgen|complete|continue|' + + 'dirs|disown|echo|enable|eval|exec|' + + 'exit|fc|fg|getopts|hash|help|history|' + + 'jobs|kill|let|logout|popd|printf|pushd|' + + 'pwd|return|set|shift|shopt|source|' + + 'suspend|test|times|trap|type|ulimit|' + + 'umask|unalias|wait'); +var ShHighlightRules = function () { + var keywordMapper = this.createKeywordMapper({ + "keyword": reservedKeywords, + "support.function.builtin": languageConstructs, + "invalid.deprecated": "debugger" + }, "identifier"); + var integer = "(?:(?:[1-9]\\d*)|(?:0))"; + var fraction = "(?:\\.\\d+)"; + var intPart = "(?:\\d+)"; + var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))"; + var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + ")"; + var floatNumber = "(?:" + exponentFloat + "|" + pointFloat + ")"; + var fileDescriptor = "(?:&" + intPart + ")"; + var variableName = "[a-zA-Z_][a-zA-Z0-9_]*"; + var variable = "(?:" + variableName + "(?==))"; + var builtinVariable = "(?:\\$(?:SHLVL|\\$|\\!|\\?))"; + var func = "(?:" + variableName + "\\s*\\(\\))"; + this.$rules = { + "start": [{ + token: "constant", + regex: /\\./ + }, { + token: ["text", "comment"], + regex: /(^|\s)(#.*)$/ + }, { + token: "string.start", + regex: '"', + push: [{ + token: "constant.language.escape", + regex: /\\(?:[$`"\\]|$)/ + }, { + include: "variables" + }, { + token: "keyword.operator", + regex: /`/ // TODO highlight ` + }, { + token: "string.end", + regex: '"', + next: "pop" + }, { + defaultToken: "string" + }] + }, { + token: "string", + regex: "\\$'", + push: [{ + token: "constant.language.escape", + regex: /\\(?:[abeEfnrtv\\'"]|x[a-fA-F\d]{1,2}|u[a-fA-F\d]{4}([a-fA-F\d]{4})?|c.|\d{1,3})/ + }, { + token: "string", + regex: "'", + next: "pop" + }, { + defaultToken: "string" + }] + }, { + regex: "<<<", + token: "keyword.operator" + }, { + stateName: "heredoc", + regex: "(<<-?)(\\s*)(['\"`]?)([\\w\\-]+)(['\"`]?)", + onMatch: function (value, currentState, stack) { + var next = value[2] == '-' ? "indentedHeredoc" : "heredoc"; + var tokens = value.split(this.splitRegex); + stack.push(next, tokens[4]); + return [ + { type: "constant", value: tokens[1] }, + { type: "text", value: tokens[2] }, + { type: "string", value: tokens[3] }, + { type: "support.class", value: tokens[4] }, + { type: "string", value: tokens[5] } + ]; + }, + rules: { + heredoc: [{ + onMatch: function (value, currentState, stack) { + if (value === stack[1]) { + stack.shift(); + stack.shift(); + this.next = stack[0] || "start"; + return "support.class"; + } + this.next = ""; + return "string"; + }, + regex: ".*$", + next: "start" + }], + indentedHeredoc: [{ + token: "string", + regex: "^\t+" + }, { + onMatch: function (value, currentState, stack) { + if (value === stack[1]) { + stack.shift(); + stack.shift(); + this.next = stack[0] || "start"; + return "support.class"; + } + this.next = ""; + return "string"; + }, + regex: ".*$", + next: "start" + }] + } + }, { + regex: "$", + token: "empty", + next: function (currentState, stack) { + if (stack[0] === "heredoc" || stack[0] === "indentedHeredoc") + return stack[0]; + return currentState; + } + }, { + token: ["keyword", "text", "text", "text", "variable"], + regex: /(declare|local|readonly)(\s+)(?:(-[fixar]+)(\s+))?([a-zA-Z_][a-zA-Z0-9_]*\b)/ + }, { + token: "variable.language", + regex: builtinVariable + }, { + token: "variable", + regex: variable + }, { + include: "variables" + }, { + token: "support.function", + regex: func + }, { + token: "support.function", + regex: fileDescriptor + }, { + token: "string", + start: "'", end: "'" + }, { + token: "constant.numeric", + regex: floatNumber + }, { + token: "constant.numeric", + regex: integer + "\\b" + }, { + token: keywordMapper, + regex: "[a-zA-Z_][a-zA-Z0-9_]*\\b" + }, { + token: "keyword.operator", + regex: "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|~|<|>|<=|=>|=|!=|[%&|`]" + }, { + token: "punctuation.operator", + regex: ";" + }, { + token: "paren.lparen", + regex: "[\\[\\(\\{]" + }, { + token: "paren.rparen", + regex: "[\\]]" + }, { + token: "paren.rparen", + regex: "[\\)\\}]", + next: "pop" + }], + variables: [{ + token: "variable", + regex: /(\$)(\w+)/ + }, { + token: ["variable", "paren.lparen"], + regex: /(\$)(\()/, + push: "start" + }, { + token: ["variable", "paren.lparen", "keyword.operator", "variable", "keyword.operator"], + regex: /(\$)(\{)([#!]?)(\w+|[*@#?\-$!0_])(:[?+\-=]?|##?|%%?|,,?\/|\^\^?)?/, + push: "start" + }, { + token: "variable", + regex: /\$[*@#?\-$!0_]/ + }, { + token: ["variable", "paren.lparen"], + regex: /(\$)(\{)/, + push: "start" + }] + }; + this.normalizeRules(); +}; +oop.inherits(ShHighlightRules, TextHighlightRules); +exports.ShHighlightRules = ShHighlightRules; + +}); + +ace.define("ace/mode/makefile_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/sh_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var ShHighlightFile = require("./sh_highlight_rules"); +var MakefileHighlightRules = function () { + var keywordMapper = this.createKeywordMapper({ + "keyword": ShHighlightFile.reservedKeywords, + "support.function.builtin": ShHighlightFile.languageConstructs, + "invalid.deprecated": "debugger" + }, "string"); + this.$rules = + { + "start": [ + { + token: "string.interpolated.backtick.makefile", + regex: "`", + next: "shell-start" + }, + { + token: "punctuation.definition.comment.makefile", + regex: /#(?=.)/, + next: "comment" + }, + { + token: ["keyword.control.makefile"], + regex: "^(?:\\s*\\b)(\\-??include|ifeq|ifneq|ifdef|ifndef|else|endif|vpath|export|unexport|define|endef|override)(?:\\b)" + }, + { + token: ["entity.name.function.makefile", "text"], + regex: "^([^\\t ]+(?:\\s[^\\t ]+)*:)(\\s*.*)" + } + ], + "comment": [ + { + token: "punctuation.definition.comment.makefile", + regex: /.+\\/ + }, + { + token: "punctuation.definition.comment.makefile", + regex: ".+", + next: "start" + } + ], + "shell-start": [ + { + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, + { + token: "string", + regex: "\\w+" + }, + { + token: "string.interpolated.backtick.makefile", + regex: "`", + next: "start" + } + ] + }; +}; +oop.inherits(MakefileHighlightRules, TextHighlightRules); +exports.MakefileHighlightRules = MakefileHighlightRules; + +}); + +ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var BaseFoldMode = require("./fold_mode").FoldMode; +var Range = require("../../range").Range; +var FoldMode = exports.FoldMode = function () { }; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.getFoldWidgetRange = function (session, foldStyle, row) { + var range = this.indentationBlock(session, row); + if (range) + return range; + var re = /\S/; + var line = session.getLine(row); + var startLevel = line.search(re); + if (startLevel == -1 || line[startLevel] != "#") + return; + var startColumn = line.length; + var maxRow = session.getLength(); + var startRow = row; + var endRow = row; + while (++row < maxRow) { + line = session.getLine(row); + var level = line.search(re); + if (level == -1) + continue; + if (line[level] != "#") + break; + endRow = row; + } + if (endRow > startRow) { + var endColumn = session.getLine(endRow).length; + return new Range(startRow, startColumn, endRow, endColumn); + } + }; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + var indent = line.search(/\S/); + var next = session.getLine(row + 1); + var prev = session.getLine(row - 1); + var prevIndent = prev.search(/\S/); + var nextIndent = next.search(/\S/); + if (indent == -1) { + session.foldWidgets[row - 1] = prevIndent != -1 && prevIndent < nextIndent ? "start" : ""; + return ""; + } + if (prevIndent == -1) { + if (indent == nextIndent && line[indent] == "#" && next[indent] == "#") { + session.foldWidgets[row - 1] = ""; + session.foldWidgets[row + 1] = ""; + return "start"; + } + } + else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { + if (session.getLine(row - 2).search(/\S/) == -1) { + session.foldWidgets[row - 1] = "start"; + session.foldWidgets[row + 1] = ""; + return ""; + } + } + if (prevIndent != -1 && prevIndent < indent) + session.foldWidgets[row - 1] = "start"; + else + session.foldWidgets[row - 1] = ""; + if (indent < nextIndent) + return "start"; + else + return ""; + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/makefile",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/makefile_highlight_rules","ace/mode/folding/coffee"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ +"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var MakefileHighlightRules = require("./makefile_highlight_rules").MakefileHighlightRules; +var FoldMode = require("./folding/coffee").FoldMode; +var Mode = function () { + this.HighlightRules = MakefileHighlightRules; + this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "#"; + this.$indentWithTabs = true; + this.$id = "ace/mode/makefile"; + this.snippetFileId = "ace/snippets/makefile"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/makefile"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/cbdf771a8121b4ee46803ff5a9cc2162.js.gz b/web/dist/cbdf771a8121b4ee46803ff5a9cc2162.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..0720fa4e3573b985838ea3ef4b1ba2ae7822cc28 GIT binary patch literal 3078 zcmV+h4EggPiwFP!000023hf(dciT4dyMF~us}X5QRFY;t)V89{xyfseeX+NByCRcN zBqTAWNR|YB)X@I+9e@B&P>18R+xMzxNfa$>Q_E zn=gEL(hLLmBGk`PT_DV4OKzUW* z<>C$Dm6tjpGt0TrTZ^eMfUpk$(FKBX|I1gS4cm>%|Fiy(GL02yzx7L4iF5 zOP~u-8eJi$q~?_ex`7GjWR7qc;e;&gWI-0lkI2GHa2Q_~&|kx8Le4$kC%_quI1f`y zqA+qv6ng=lktj_TZUG-%x?m@q#sRZovhZf~6WEX>Ok<}cbCMuLc!i|x!J8MJ8{ z0N5)-0J(qKG0p+1y-^7LFa6NQ1wU2k?d? zBc!X@XGuj0`Yv5gbDL0*Dg!~NO1nY@=8xwnabhomK;VS#HJBF&@b+k^y|b5yf=}$h zZ%+pQ`E2or`-7i8TZa;al8_Y|J=#1PRm{X4>X$02X?EcA^wpbR-Vk_(_ddMG)qw|} zT*JvUlS9+gOfyGfQPGKcB$YxT!Js`j=%i>9FC3nu09@ChUTz0i?KePT@YSm$We5&1 ztaO5dw-TJFbj4Bol=5;3qXh4s8DttmTLYOFR zh>$H*_%c+6L*?xK^Y==gJ1AdnF9IJiSUNT{myVlw1>jsj4_32V7zC0&JN5BdMW_}! z)~@c@?ug(Aov!*v`l3BWFJ?iEFHEzmTI34mx!IG!OVhP(9`qlsNLp%mw9+cS^f7S^ zV!8nNSn4Ver<*4tQaaenEbdLT%!taSXHfDHWwpC34R77Sqx- zi;fGdJq&sB&{9Str90>6UZDp~{Qv7sIj=pG@3aBU)eiD>nX$jXyFr_SPF;bOD2*l(p+yHEXvmxiM0*Kc8Ms&ccEL^CcA_3mQ4#;y{15A&z`m?n-{e~xOux;B*mQ>tQjJ_;D zlnQ*Kf1~I(x;8o3r#mTNE;2d%`@z^8boTFmwsh@iGVYm!ku@d<2V?TX4`b5rk7EGb|7cDRyjb1khi5-Qdr1MWAHYmmWLVD$$bY z#ie-5E&RKj{MKYNZg&z~r*bDJ!#thRB}aETv1-&7$9RpPlh-)4Qx}@x#8K!|nT#n^ zDA z;p8{VoL6B6z2Omuej%l`-m;(AaWFm0ozmU=!FbFo4C2kuukaDDPp|`hreEw*4P@Hh zj9f%EUWj`#X}}+{X^nyaba;W{*mIH2_)PV?(3M_lz}H4#FHsRN#jxm<)9+Rzng3cf^DOzYydm3aUCZSiYcsD|=(}L1 zp%cz#2;DZ{5>)8-XWGI$V_34$9i~>z?CPnVpqIe)EikR-LWL~4As{lG4^*lqr=^jvrnG8V82N)mVgTLRE2zV?A~ z9A1`pTGt%6Tc~V8d+LYIc|n9?7Tce6Tb3bK_gMLsX`C6P!iBOJny15Rvk%Ti zclVYZ~ zUc&ZS=%>p-@bytJ$BQc1(!Tl-Ue*+0aGFey3>K8E_CX#X>0$S66|L8UR^^1Vs&AKX zWyjp;o6IOo=@(XP?xl+xvJy0EZNJ^n^u?~^R#D~ZuPTGfVIJpptQ&&cF(0zJMKS_< zV-!o?8=%W9;x)mfU-pAO7qnmS(d*)tYv)Ro-X=h|j*%>QYXeJTt_CNL*_s5Ep7Nju z4As#^3-CY+{8~sse{7HN@}XYwBKb&cW3#qn=Wj6F7B;JyOYX3lZS=iw zQHKuB-YtEo}F4IysisZJnI4B{tnnE|)N{CuET+6ddHmfJwvRt`XO}8##atzK+z|+-TFw`o$ zdQ-HpFT60#w=X;V0_s!IAt}dLzAh}iCReAE-Lq_4;1u(J0y(JsKR^~zA3eM{v!_&2 z9E;?N1Gp5a>Fy<%B=DeOXS<)Tb7$7V zK9R^>4wmJ*+emc6q2h%z9ztwc2&Z2W1OuHOc_){>-pj*o!*!<&%E)Ob%l1n<^7}$7 U$yKM7UcUhKKQAPSyUsWO0PX+m8UO$Q literal 0 HcmV?d00001 diff --git a/web/dist/cc14b072276b7c5f264efe205d06956f.js b/web/dist/cc14b072276b7c5f264efe205d06956f.js new file mode 100644 index 00000000..786925ab --- /dev/null +++ b/web/dist/cc14b072276b7c5f264efe205d06956f.js @@ -0,0 +1,388 @@ +ace.define("ace/mode/sh_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var reservedKeywords = exports.reservedKeywords = ('!|{|}|case|do|done|elif|else|' + + 'esac|fi|for|if|in|then|until|while|' + + '&|;|export|local|read|typeset|unset|' + + 'elif|select|set|function|declare|readonly'); +var languageConstructs = exports.languageConstructs = ('[|]|alias|bg|bind|break|builtin|' + + 'cd|command|compgen|complete|continue|' + + 'dirs|disown|echo|enable|eval|exec|' + + 'exit|fc|fg|getopts|hash|help|history|' + + 'jobs|kill|let|logout|popd|printf|pushd|' + + 'pwd|return|set|shift|shopt|source|' + + 'suspend|test|times|trap|type|ulimit|' + + 'umask|unalias|wait'); +var ShHighlightRules = function () { + var keywordMapper = this.createKeywordMapper({ + "keyword": reservedKeywords, + "support.function.builtin": languageConstructs, + "invalid.deprecated": "debugger" + }, "identifier"); + var integer = "(?:(?:[1-9]\\d*)|(?:0))"; + var fraction = "(?:\\.\\d+)"; + var intPart = "(?:\\d+)"; + var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))"; + var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + ")"; + var floatNumber = "(?:" + exponentFloat + "|" + pointFloat + ")"; + var fileDescriptor = "(?:&" + intPart + ")"; + var variableName = "[a-zA-Z_][a-zA-Z0-9_]*"; + var variable = "(?:" + variableName + "(?==))"; + var builtinVariable = "(?:\\$(?:SHLVL|\\$|\\!|\\?))"; + var func = "(?:" + variableName + "\\s*\\(\\))"; + this.$rules = { + "start": [{ + token: "constant", + regex: /\\./ + }, { + token: ["text", "comment"], + regex: /(^|\s)(#.*)$/ + }, { + token: "string.start", + regex: '"', + push: [{ + token: "constant.language.escape", + regex: /\\(?:[$`"\\]|$)/ + }, { + include: "variables" + }, { + token: "keyword.operator", + regex: /`/ // TODO highlight ` + }, { + token: "string.end", + regex: '"', + next: "pop" + }, { + defaultToken: "string" + }] + }, { + token: "string", + regex: "\\$'", + push: [{ + token: "constant.language.escape", + regex: /\\(?:[abeEfnrtv\\'"]|x[a-fA-F\d]{1,2}|u[a-fA-F\d]{4}([a-fA-F\d]{4})?|c.|\d{1,3})/ + }, { + token: "string", + regex: "'", + next: "pop" + }, { + defaultToken: "string" + }] + }, { + regex: "<<<", + token: "keyword.operator" + }, { + stateName: "heredoc", + regex: "(<<-?)(\\s*)(['\"`]?)([\\w\\-]+)(['\"`]?)", + onMatch: function (value, currentState, stack) { + var next = value[2] == '-' ? "indentedHeredoc" : "heredoc"; + var tokens = value.split(this.splitRegex); + stack.push(next, tokens[4]); + return [ + { type: "constant", value: tokens[1] }, + { type: "text", value: tokens[2] }, + { type: "string", value: tokens[3] }, + { type: "support.class", value: tokens[4] }, + { type: "string", value: tokens[5] } + ]; + }, + rules: { + heredoc: [{ + onMatch: function (value, currentState, stack) { + if (value === stack[1]) { + stack.shift(); + stack.shift(); + this.next = stack[0] || "start"; + return "support.class"; + } + this.next = ""; + return "string"; + }, + regex: ".*$", + next: "start" + }], + indentedHeredoc: [{ + token: "string", + regex: "^\t+" + }, { + onMatch: function (value, currentState, stack) { + if (value === stack[1]) { + stack.shift(); + stack.shift(); + this.next = stack[0] || "start"; + return "support.class"; + } + this.next = ""; + return "string"; + }, + regex: ".*$", + next: "start" + }] + } + }, { + regex: "$", + token: "empty", + next: function (currentState, stack) { + if (stack[0] === "heredoc" || stack[0] === "indentedHeredoc") + return stack[0]; + return currentState; + } + }, { + token: ["keyword", "text", "text", "text", "variable"], + regex: /(declare|local|readonly)(\s+)(?:(-[fixar]+)(\s+))?([a-zA-Z_][a-zA-Z0-9_]*\b)/ + }, { + token: "variable.language", + regex: builtinVariable + }, { + token: "variable", + regex: variable + }, { + include: "variables" + }, { + token: "support.function", + regex: func + }, { + token: "support.function", + regex: fileDescriptor + }, { + token: "string", + start: "'", end: "'" + }, { + token: "constant.numeric", + regex: floatNumber + }, { + token: "constant.numeric", + regex: integer + "\\b" + }, { + token: keywordMapper, + regex: "[a-zA-Z_][a-zA-Z0-9_]*\\b" + }, { + token: "keyword.operator", + regex: "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|~|<|>|<=|=>|=|!=|[%&|`]" + }, { + token: "punctuation.operator", + regex: ";" + }, { + token: "paren.lparen", + regex: "[\\[\\(\\{]" + }, { + token: "paren.rparen", + regex: "[\\]]" + }, { + token: "paren.rparen", + regex: "[\\)\\}]", + next: "pop" + }], + variables: [{ + token: "variable", + regex: /(\$)(\w+)/ + }, { + token: ["variable", "paren.lparen"], + regex: /(\$)(\()/, + push: "start" + }, { + token: ["variable", "paren.lparen", "keyword.operator", "variable", "keyword.operator"], + regex: /(\$)(\{)([#!]?)(\w+|[*@#?\-$!0_])(:[?+\-=]?|##?|%%?|,,?\/|\^\^?)?/, + push: "start" + }, { + token: "variable", + regex: /\$[*@#?\-$!0_]/ + }, { + token: ["variable", "paren.lparen"], + regex: /(\$)(\{)/, + push: "start" + }] + }; + this.normalizeRules(); +}; +oop.inherits(ShHighlightRules, TextHighlightRules); +exports.ShHighlightRules = ShHighlightRules; + +}); + +ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/sh",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sh_highlight_rules","ace/range","ace/mode/folding/cstyle","ace/mode/behaviour/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var ShHighlightRules = require("./sh_highlight_rules").ShHighlightRules; +var Range = require("../range").Range; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var Mode = function () { + this.HighlightRules = ShHighlightRules; + this.foldingRules = new CStyleFoldMode(); + this.$behaviour = new CstyleBehaviour(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "#"; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + if (state == "start") { + var match = line.match(/^.*[\{\(\[:]\s*$/); + if (match) { + indent += tab; + } + } + return indent; + }; + var outdents = { + "pass": 1, + "return": 1, + "raise": 1, + "break": 1, + "continue": 1 + }; + this.checkOutdent = function (state, line, input) { + if (input !== "\r\n" && input !== "\r" && input !== "\n") + return false; + var tokens = this.getTokenizer().getLineTokens(line.trim(), state).tokens; + if (!tokens) + return false; + do { + var last = tokens.pop(); + } while (last && (last.type == "comment" || (last.type == "text" && last.value.match(/^\s+$/)))); + if (!last) + return false; + return (last.type == "keyword" && outdents[last.value]); + }; + this.autoOutdent = function (state, doc, row) { + row += 1; + var indent = this.$getIndent(doc.getLine(row)); + var tab = doc.getTabString(); + if (indent.slice(-tab.length) == tab) + doc.remove(new Range(row, indent.length - tab.length, row, indent.length)); + }; + this.$id = "ace/mode/sh"; + this.snippetFileId = "ace/snippets/sh"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/sh"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/cc14b072276b7c5f264efe205d06956f.js.gz b/web/dist/cc14b072276b7c5f264efe205d06956f.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..1ea49553f2714fd1b71ea09efd3051192be0fd3d GIT binary patch literal 3543 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 R)9ZH`{|f`+0cM#z006lg<{$t7 literal 0 HcmV?d00001 diff --git a/web/dist/cc8577464e70c97c43ca0992593d5e93.js b/web/dist/cc8577464e70c97c43ca0992593d5e93.js new file mode 100644 index 00000000..932de5a4 --- /dev/null +++ b/web/dist/cc8577464e70c97c43ca0992593d5e93.js @@ -0,0 +1,18 @@ +ace.define("ace/theme/chrome.css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-chrome .ace_gutter {\n background: #ebebeb;\n color: #333;\n overflow : hidden;\n}\n\n.ace-chrome .ace_print-margin {\n width: 1px;\n background: #e8e8e8;\n}\n\n.ace-chrome {\n background-color: #FFFFFF;\n color: black;\n}\n\n.ace-chrome .ace_cursor {\n color: black;\n}\n\n.ace-chrome .ace_invisible {\n color: rgb(191, 191, 191);\n}\n\n.ace-chrome .ace_constant.ace_buildin {\n color: rgb(88, 72, 246);\n}\n\n.ace-chrome .ace_constant.ace_language {\n color: rgb(88, 92, 246);\n}\n\n.ace-chrome .ace_constant.ace_library {\n color: rgb(6, 150, 14);\n}\n\n.ace-chrome .ace_invalid {\n background-color: rgb(153, 0, 0);\n color: white;\n}\n\n.ace-chrome .ace_fold {\n}\n\n.ace-chrome .ace_support.ace_function {\n color: rgb(60, 76, 114);\n}\n\n.ace-chrome .ace_support.ace_constant {\n color: rgb(6, 150, 14);\n}\n\n.ace-chrome .ace_support.ace_type,\n.ace-chrome .ace_support.ace_class\n.ace-chrome .ace_support.ace_other {\n color: rgb(109, 121, 222);\n}\n\n.ace-chrome .ace_variable.ace_parameter {\n font-style:italic;\n color:#FD971F;\n}\n.ace-chrome .ace_keyword.ace_operator {\n color: rgb(104, 118, 135);\n}\n\n.ace-chrome .ace_comment {\n color: #236e24;\n}\n\n.ace-chrome .ace_comment.ace_doc {\n color: #236e24;\n}\n\n.ace-chrome .ace_comment.ace_doc.ace_tag {\n color: #236e24;\n}\n\n.ace-chrome .ace_constant.ace_numeric {\n color: rgb(0, 0, 205);\n}\n\n.ace-chrome .ace_variable {\n color: rgb(49, 132, 149);\n}\n\n.ace-chrome .ace_xml-pe {\n color: rgb(104, 104, 91);\n}\n\n.ace-chrome .ace_entity.ace_name.ace_function {\n color: #0000A2;\n}\n\n\n.ace-chrome .ace_heading {\n color: rgb(12, 7, 255);\n}\n\n.ace-chrome .ace_list {\n color:rgb(185, 6, 144);\n}\n\n.ace-chrome .ace_marker-layer .ace_selection {\n background: rgb(181, 213, 255);\n}\n\n.ace-chrome .ace_marker-layer .ace_step {\n background: rgb(252, 255, 0);\n}\n\n.ace-chrome .ace_marker-layer .ace_stack {\n background: rgb(164, 229, 101);\n}\n\n.ace-chrome .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgb(192, 192, 192);\n}\n\n.ace-chrome .ace_marker-layer .ace_active-line {\n background: rgba(0, 0, 0, 0.07);\n}\n\n.ace-chrome .ace_gutter-active-line {\n background-color : #dcdcdc;\n}\n\n.ace-chrome .ace_marker-layer .ace_selected-word {\n background: rgb(250, 250, 255);\n border: 1px solid rgb(200, 200, 250);\n}\n\n.ace-chrome .ace_storage,\n.ace-chrome .ace_keyword,\n.ace-chrome .ace_meta.ace_tag {\n color: rgb(147, 15, 128);\n}\n\n.ace-chrome .ace_string.ace_regex {\n color: rgb(255, 0, 0)\n}\n\n.ace-chrome .ace_string {\n color: #1A1AA6;\n}\n\n.ace-chrome .ace_entity.ace_other.ace_attribute-name {\n color: #994409;\n}\n\n.ace-chrome .ace_indent-guide {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;\n}\n \n.ace-chrome .ace_indent-guide-active {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC\") right repeat-y;\n}\n"; + +}); + +ace.define("ace/theme/chrome",["require","exports","module","ace/theme/chrome.css","ace/lib/dom"], function(require, exports, module){exports.isDark = false; +exports.cssClass = "ace-chrome"; +exports.cssText = require("./chrome.css"); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass, false); + +}); (function() { + ace.require(["ace/theme/chrome"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/cde6284f9404fcf0323362f4c28285bd.js b/web/dist/cde6284f9404fcf0323362f4c28285bd.js new file mode 100644 index 00000000..77e7c73f --- /dev/null +++ b/web/dist/cde6284f9404fcf0323362f4c28285bd.js @@ -0,0 +1,342 @@ +ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var DocCommentHighlightRules = function () { + this.$rules = { + "start": [{ + token: "comment.doc.tag", + regex: "@[\\w\\d_]+" // TODO: fix email addresses + }, + DocCommentHighlightRules.getTagRule(), + { + defaultToken: "comment.doc", + caseInsensitive: true + }] + }; +}; +oop.inherits(DocCommentHighlightRules, TextHighlightRules); +DocCommentHighlightRules.getTagRule = function (start) { + return { + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" + }; +}; +DocCommentHighlightRules.getStartRule = function (start) { + return { + token: "comment.doc", + regex: "\\/\\*(?=\\*)", + next: start + }; +}; +DocCommentHighlightRules.getEndRule = function (start) { + return { + token: "comment.doc", + regex: "\\*\\/", + next: start + }; +}; +exports.DocCommentHighlightRules = DocCommentHighlightRules; + +}); + +ace.define("ace/mode/golang_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){var oop = require("../lib/oop"); +var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var GolangHighlightRules = function () { + var keywords = ("else|break|case|return|goto|if|const|select|" + + "continue|struct|default|switch|for|range|" + + "func|import|package|chan|defer|fallthrough|go|interface|map|range|" + + "select|type|var"); + var builtinTypes = ("string|uint8|uint16|uint32|uint64|int8|int16|int32|int64|float32|" + + "float64|complex64|complex128|byte|rune|uint|int|uintptr|bool|error"); + var builtinFunctions = ("new|close|cap|copy|panic|panicln|print|println|len|make|delete|real|recover|imag|append"); + var builtinConstants = ("nil|true|false|iota"); + var keywordMapper = this.createKeywordMapper({ + "keyword": keywords, + "constant.language": builtinConstants, + "support.function": builtinFunctions, + "support.type": builtinTypes + }, ""); + var stringEscapeRe = "\\\\(?:[0-7]{3}|x\\h{2}|u{4}|U\\h{6}|[abfnrtv'\"\\\\])".replace(/\\h/g, "[a-fA-F\\d]"); + this.$rules = { + "start": [ + { + token: "comment", + regex: "\\/\\/.*$" + }, + DocCommentHighlightRules.getStartRule("doc-start"), + { + token: "comment.start", + regex: "\\/\\*", + next: "comment" + }, { + token: "string", + regex: /"(?:[^"\\]|\\.)*?"/ + }, { + token: "string", + regex: '`', + next: "bqstring" + }, { + token: "constant.numeric", + regex: "'(?:[^\\'\uD800-\uDBFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|" + stringEscapeRe.replace('"', '') + ")'" + }, { + token: "constant.numeric", + regex: "0[xX][0-9a-fA-F]+\\b" + }, { + token: "constant.numeric", + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token: ["keyword", "text", "entity.name.function"], + regex: "(func)(\\s+)([a-zA-Z_$][a-zA-Z0-9_$]*)\\b" + }, { + token: function (val) { + if (val[val.length - 1] == "(") { + return [{ + type: keywordMapper(val.slice(0, -1)) || "support.function", + value: val.slice(0, -1) + }, { + type: "paren.lparen", + value: val.slice(-1) + }]; + } + return keywordMapper(val) || "identifier"; + }, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b\\(?" + }, { + token: "keyword.operator", + regex: "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=" + }, { + token: "punctuation.operator", + regex: "\\?|\\:|\\,|\\;|\\." + }, { + token: "paren.lparen", + regex: "[[({]" + }, { + token: "paren.rparen", + regex: "[\\])}]" + }, { + token: "text", + regex: "\\s+" + } + ], + "comment": [ + { + token: "comment.end", + regex: "\\*\\/", + next: "start" + }, { + defaultToken: "comment" + } + ], + "bqstring": [ + { + token: "string", + regex: '`', + next: "start" + }, { + defaultToken: "string" + } + ] + }; + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("start")]); +}; +oop.inherits(GolangHighlightRules, TextHighlightRules); +exports.GolangHighlightRules = GolangHighlightRules; + +}); + +ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) + return false; + return /^\s*\}/.test(input); + }; + this.autoOutdent = function (doc, row) { + var line = doc.getLine(row); + var match = line.match(/^(\s*\})/); + if (!match) + return 0; + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; + var indent = this.$getIndent(doc.getLine(openBracePos.row)); + doc.replace(new Range(row, 0, row, column - 1), indent); + }; + this.$getIndent = function (line) { + return line.match(/^\s*/)[0]; + }; +}).call(MatchingBraceOutdent.prototype); +exports.MatchingBraceOutdent = MatchingBraceOutdent; + +}); + +ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/golang",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/golang_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var GolangHighlightRules = require("./golang_highlight_rules").GolangHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = GolangHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.foldingRules = new CStyleFoldMode(); + this.$behaviour = new CstyleBehaviour(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "//"; + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + var endState = tokenizedLine.state; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + if (state == "start") { + var match = line.match(/^.*[\{\(\[]\s*$/); + if (match) { + indent += tab; + } + } + return indent; + }; //end getNextLineIndent + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.$id = "ace/mode/golang"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/golang"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/cde6284f9404fcf0323362f4c28285bd.js.gz b/web/dist/cde6284f9404fcf0323362f4c28285bd.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..61494fcf6695ceba7f183a80698f673c5aa3189c GIT binary patch literal 3243 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 literal 0 HcmV?d00001 diff --git a/web/dist/cf0a04afa21ac9ba23a1de0416a03105.js b/web/dist/cf0a04afa21ac9ba23a1de0416a03105.js new file mode 100644 index 00000000..e5e1d7fb --- /dev/null +++ b/web/dist/cf0a04afa21ac9ba23a1de0416a03105.js @@ -0,0 +1,9 @@ + +; (function() { + ace.require(["ace/snippets/scheme"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/cf90a0e6a2989274c84edd1dc44db5e1.js b/web/dist/cf90a0e6a2989274c84edd1dc44db5e1.js new file mode 100644 index 00000000..84fd3672 --- /dev/null +++ b/web/dist/cf90a0e6a2989274c84edd1dc44db5e1.js @@ -0,0 +1,318 @@ +ace.define("ace/mode/hjson_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){/* This file was autogenerated from Hjson.tmLanguage (uuid: ) */ +"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var HjsonHighlightRules = function () { + this.$rules = { + start: [{ + include: "#comments" + }, { + include: "#rootObject" + }, { + include: "#value" + }], + "#array": [{ + token: "paren.lparen", + regex: /\[/, + push: [{ + token: "paren.rparen", + regex: /\]/, + next: "pop" + }, { + include: "#value" + }, { + include: "#comments" + }, { + token: "text", + regex: /,|$/ + }, { + token: "invalid.illegal", + regex: /[^\s\]]/ + }, { + defaultToken: "array" + }] + }], + "#comments": [{ + token: [ + "comment.punctuation", + "comment.line" + ], + regex: /(#)(.*$)/ + }, { + token: "comment.punctuation", + regex: /\/\*/, + push: [{ + token: "comment.punctuation", + regex: /\*\//, + next: "pop" + }, { + defaultToken: "comment.block" + }] + }, { + token: [ + "comment.punctuation", + "comment.line" + ], + regex: /(\/\/)(.*$)/ + }], + "#constant": [{ + token: "constant", + regex: /\b(?:true|false|null)\b/ + }], + "#keyname": [{ + token: "keyword", + regex: /(?:[^,\{\[\}\]\s]+|"(?:[^"\\]|\\.)*")\s*(?=:)/ + }], + "#mstring": [{ + token: "string", + regex: /'''/, + push: [{ + token: "string", + regex: /'''/, + next: "pop" + }, { + defaultToken: "string" + }] + }], + "#number": [{ + token: "constant.numeric", + regex: /-?(?:0|[1-9]\d*)(?:(?:\.\d+)?(?:[eE][+-]?\d+)?)?/, + comment: "handles integer and decimal numbers" + }], + "#object": [{ + token: "paren.lparen", + regex: /\{/, + push: [{ + token: "paren.rparen", + regex: /\}/, + next: "pop" + }, { + include: "#keyname" + }, { + include: "#value" + }, { + token: "text", + regex: /:/ + }, { + token: "text", + regex: /,/ + }, { + defaultToken: "paren" + }] + }], + "#rootObject": [{ + token: "paren", + regex: /(?=\s*(?:[^,\{\[\}\]\s]+|"(?:[^"\\]|\\.)*")\s*:)/, + push: [{ + token: "paren.rparen", + regex: /---none---/, + next: "pop" + }, { + include: "#keyname" + }, { + include: "#value" + }, { + token: "text", + regex: /:/ + }, { + token: "text", + regex: /,/ + }, { + defaultToken: "paren" + }] + }], + "#string": [{ + token: "string", + regex: /"/, + push: [{ + token: "string", + regex: /"/, + next: "pop" + }, { + token: "constant.language.escape", + regex: /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/ + }, { + token: "invalid.illegal", + regex: /\\./ + }, { + defaultToken: "string" + }] + }], + "#ustring": [{ + token: "string", + regex: /\b[^:,0-9\-\{\[\}\]\s].*$/ + }], + "#value": [{ + include: "#constant" + }, { + include: "#number" + }, { + include: "#string" + }, { + include: "#array" + }, { + include: "#object" + }, { + include: "#comments" + }, { + include: "#mstring" + }, { + include: "#ustring" + }] + }; + this.normalizeRules(); +}; +HjsonHighlightRules.metaData = { + fileTypes: ["hjson"], + foldingStartMarker: "(?x: # turn on extended mode\n ^ # a line beginning with\n \\s* # some optional space\n [{\\[] # the start of an object or array\n (?! # but not followed by\n .* # whatever\n [}\\]] # and the close of an object or array\n ,? # an optional comma\n \\s* # some optional space\n $ # at the end of the line\n )\n | # ...or...\n [{\\[] # the start of an object or array\n \\s* # some optional space\n $ # at the end of the line\n )", + foldingStopMarker: "(?x: # turn on extended mode\n ^ # a line beginning with\n \\s* # some optional space\n [}\\]] # and the close of an object or array\n )", + keyEquivalent: "^~J", + name: "Hjson", + scopeName: "source.hjson" +}; +oop.inherits(HjsonHighlightRules, TextHighlightRules); +exports.HjsonHighlightRules = HjsonHighlightRules; + +}); + +ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/hjson",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/hjson_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var HjsonHighlightRules = require("./hjson_highlight_rules").HjsonHighlightRules; +var FoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = HjsonHighlightRules; + this.foldingRules = new FoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "//"; + this.blockComment = { start: "/*", end: "*/" }; + this.$id = "ace/mode/hjson"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/hjson"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/cf90a0e6a2989274c84edd1dc44db5e1.js.gz b/web/dist/cf90a0e6a2989274c84edd1dc44db5e1.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..3f7c43be055651bf74a994609b0a9b31bf42c317 GIT binary patch literal 2461 zcmV;O31apiiwFP!000023hi21bK|%Xe)q3{Y1a-ZQ{=cRFKflC%4}w9liEqDJX4hi zlA59FM=5Bnm@yKl+3Zc z`aMnJud86W3gJKcm1H4KHPg`u{v!(r)=UjQtP?_EPy-H_hA)gg45oIHtmP9IM)3n} z$ns3I$l@6dl315QO(bQSNQg9^>;d|+3R1KPLX0+kiu{ZwOB`e3Q#?ltl0@iNW~)V` z-~4!)`AdxSEDPp0$Up=8Ov_S?Qc8ju)kbIEe1gC@bc>`)U9+shWJ3^q0ds%Nt-WK$ zR_N8sF{~z=5Xa4H$jjG`bOSw|A^1>Or*%o>yclDjl=_6;AZI_4e}Z@xW^;Ulw2N61 zML34ts1WT;)X7DXg#L5-I|knz#rMq*GhAcw%;H(Q@CorBHKoxsxyLaGS^EUXR>=Qo zW`m62C4RU;w(Ho<$#s^ll)}|YNSl&|GS6-&ieZ15NC1kGM(MPE&O26wdbfK?$vwkB z+`}X0_R>CGNf5(ggSi!iAzu1n4}H$WOsahaVEyn9WZsFQ4@H$Gl zn&h?CEVeVBg?G!63(^qMZqrJyJs$K6L$?N(hJ83-^Ihm?RuKcXJ9tjW^>;!=>%g^N zEB0#0$PJu^$?U!#LOQ(rJ)rE8Lv##BNKCuaaY5CAjHy1pp(MlGg&(GP8)so? zxYI7(_xLgPBiyYTh&BnCcW4H^&ct+|T*uwHo|}4CTaAxtuIp`G*D?m0;idz9e0$UB zi-=VM@v_?EdzTZ06 z!yi3&J}}@3{&g*Per2#J2Y>XOtD!gM1IAe49vM!ccjd=(R!jvk1@Q#IBdmKCM1F{b z-Dy`1lZe9TMT(fGw=80IZ&1YKf&E=7p(AUU8~gRkq~{kbVtbE|z)}r=7^=!w!wKqAbwbue>;|vXDlf%O4%wOX^=Yh)t7~hjBi^`W)-bHE5g+Ot55x+hsRo%Umn*ug{{|kUsaR1SR~;bbbn?IzE3{6#{?|W$AB>Q zxj-}{F-l?t2?WP;JZD`|?8eo#Oa!fu*!v@z;$;xWAQWu^x~kKUsG>I@u*6h6$ zs^N6)&l-ZAC)ag6ZpR9XE+k48P(>rLr6_@tn&F|&sE^Nul4(X!oKUvTFxi0p(*~_I z;FOz{Pw_WQ8aC{p?BF)A;+@$s3zHQ0v%?$<&&2zMGGO^?uk`ZCrF1ssw!o$^OW0TD z{5r8wAJ__R%d!#z|9dfqAGNJVEWyxfI8D}dnDztd5g6^i8PCB+zA`BGKK_vfkebCS z zgUlFj5RiX-SnDlBmIM;P>kyo-+wRtxY`www(l(K{)zB3xtF?GmFpN=)@;pGhbmuh3 zs)p#!74I5|&mC!2b_U4xmWwW>zii#%^_1=z&V*N0hBvs}PS}en>q{H<=&W(j+9_*CytxC0~lg$=8BLMB!u`k2%`_I9sF~?U@ogrYYiA9JYJT00p05mvlVpk zvVU6m`Cfu=!8tXiE${4Jj0vA~r)93MOH7%6{}s&P8}l}>@|ns+iK8-JL3)bQ6uy`| z!+&Nu!$c(6l)=pchiC0uB&nG^<}jU6?t#c6q|>Dq#VOU9EW@bPWQ_N`>5~!%`r!w3 z-s$zSctzpPk10*t+q!_ySi8sW9I>K zR^wP~MvVfsVs@TL4{kMkh9vL_-mL=R=x1&HG0V=at}K`D>E2kzUH3IJEAr`V1$MD{ zi$Am_*qWJ~whligF#u_N5^~xcKa3jq|*9tCf08|L9viU&#**&1Ax|&>s^n759 z8fFl=aV3XK|FF&F+o}s@NY6svd(VREWl2{ix;C123yCaz_%|y^`DXKNYy@J?)DDWu z!lkkKPJYH5Y{JT7)z#f=hF|`{A*3>)Tp|>m-y+QqL(S+^&+ehB3U(^I5m7xfX{tJJ zZ$W7U*x_ZWrh@K~Sj^9-6QS7L=u^ST>f=+vDdil-rHO`R817Vwstgo$mOAwmVuU;k z{S90f(|lV}>=W1*+x={-i0=}X{y~yr?&l=TqBs{+-vE+x!Y*A`xuITaksJ9BVy3(n zE?6&Fw^^~@Jn2_gO!}WCQynk8oKgU*hfi`u<+KnDu%C)swwMNShMSCK@BbuKHu^o<0i8;J?lN|D5$ypVX+{)hiVK_96C5`qV6klPTqx4djY(Lk60mtaF+bgF1=q ztA|=DQ3Q4o4Xj8vPKnn;*@WzC{P9guH~je5DCGtTjvvIFM&HFHD6-=Z!2 zfM=p+YsS=hbW9$Il*bWY%WzmFXW&&+UR^27;4=qP%C1K;X5!?`Pp!d!ETT*2gz6mJ z8P*IkSMkPdtw}-?`nYB;@96D_R?{_Ra9wd^lRVM`xiMe!&k0NUN2NSETX%T`>Ug~QhJ5t z??E72vu&-Ud0KjLX4e$?PmDEtpm7|-*MY57((Yw2XM$>Q+{3v6<-ElveI}g9@LiAF zVjX(hG3E0vmDnVwZbBKFkI)JRWD11UK{-{m(ZxcwJ!hwrgPJx literal 0 HcmV?d00001 diff --git a/web/dist/cfbb8ac8b034c4ecdb1d74d5a0aa997e.js b/web/dist/cfbb8ac8b034c4ecdb1d74d5a0aa997e.js new file mode 100644 index 00000000..f80fd6c1 --- /dev/null +++ b/web/dist/cfbb8ac8b034c4ecdb1d74d5a0aa997e.js @@ -0,0 +1,210 @@ +ace.define("ace/mode/io_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){/* This file was autogenerated from tm bundles\io.tmbundle/Syntaxes/io.plist (uuid: ) */ +"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var IoHighlightRules = function () { + this.$rules = { start: [{ token: 'keyword.control.io', + regex: '\\b(?:if|ifTrue|ifFalse|ifTrueIfFalse|for|loop|reverseForeach|foreach|map|continue|break|while|do|return)\\b' }, + { token: 'punctuation.definition.comment.io', + regex: '/\\*', + push: [{ token: 'punctuation.definition.comment.io', + regex: '\\*/', + next: 'pop' }, + { defaultToken: 'comment.block.io' }] }, + { token: 'punctuation.definition.comment.io', + regex: '//', + push: [{ token: 'comment.line.double-slash.io', + regex: '$', + next: 'pop' }, + { defaultToken: 'comment.line.double-slash.io' }] }, + { token: 'punctuation.definition.comment.io', + regex: '#', + push: [{ token: 'comment.line.number-sign.io', regex: '$', next: 'pop' }, + { defaultToken: 'comment.line.number-sign.io' }] }, + { token: 'variable.language.io', + regex: '\\b(?:self|sender|target|proto|protos|parent)\\b', + comment: 'I wonder if some of this isn\'t variable.other.language? --Allan; scoping this as variable.language to match Objective-C\'s handling of \'self\', which is inconsistent with C++\'s handling of \'this\' but perhaps intentionally so -- Rob' }, + { token: 'keyword.operator.io', + regex: '<=|>=|=|:=|\\*|\\||\\|\\||\\+|-|/|&|&&|>|<|\\?|@|@@|\\b(?:and|or)\\b' }, + { token: 'constant.other.io', regex: '\\bGL[\\w_]+\\b' }, + { token: 'support.class.io', regex: '\\b[A-Z](?:\\w+)?\\b' }, + { token: 'support.function.io', + regex: '\\b(?:clone|call|init|method|list|vector|block|\\w+(?=\\s*\\())\\b' }, + { token: 'support.function.open-gl.io', + regex: '\\bgl(?:u|ut)?[A-Z]\\w+\\b' }, + { token: 'punctuation.definition.string.begin.io', + regex: '"""', + push: [{ token: 'punctuation.definition.string.end.io', + regex: '"""', + next: 'pop' }, + { token: 'constant.character.escape.io', regex: '\\\\.' }, + { defaultToken: 'string.quoted.triple.io' }] }, + { token: 'punctuation.definition.string.begin.io', + regex: '"', + push: [{ token: 'punctuation.definition.string.end.io', + regex: '"', + next: 'pop' }, + { token: 'constant.character.escape.io', regex: '\\\\.' }, + { defaultToken: 'string.quoted.double.io' }] }, + { token: 'constant.numeric.io', + regex: '\\b(?:0(?:x|X)[0-9a-fA-F]*|(?:[0-9]+\\.?[0-9]*|\\.[0-9]+)(?:(?:e|E)(?:\\+|-)?[0-9]+)?)(?:L|l|UL|ul|u|U|F|f)?\\b' }, + { token: 'variable.other.global.io', regex: 'Lobby\\b' }, + { token: 'constant.language.io', + regex: '\\b(?:TRUE|true|FALSE|false|NULL|null|Null|Nil|nil|YES|NO)\\b' }] }; + this.normalizeRules(); +}; +IoHighlightRules.metaData = { fileTypes: ['io'], + keyEquivalent: '^~I', + name: 'Io', + scopeName: 'source.io' }; +oop.inherits(IoHighlightRules, TextHighlightRules); +exports.IoHighlightRules = IoHighlightRules; + +}); + +ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/io",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/io_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ +"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var IoHighlightRules = require("./io_highlight_rules").IoHighlightRules; +var FoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = IoHighlightRules; + this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "//"; + this.blockComment = { start: "/*", end: "*/" }; + this.$id = "ace/mode/io"; + this.snippetFileId = "ace/snippets/io"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/io"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/d19b415a0279064ddfa890d0a7b3f78c.js b/web/dist/d19b415a0279064ddfa890d0a7b3f78c.js new file mode 100644 index 00000000..be04afa2 --- /dev/null +++ b/web/dist/d19b415a0279064ddfa890d0a7b3f78c.js @@ -0,0 +1,388 @@ +ace.define("ace/ext/textarea",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/lib/net","ace/ace"], function(require, exports, module){"use strict"; +var event = require("../lib/event"); +var UA = require("../lib/useragent"); +var net = require("../lib/net"); +var ace = require("../ace"); +module.exports = exports = ace; +var getCSSProperty = function (element, container, property) { + var ret = element.style[property]; + if (!ret) { + if (window.getComputedStyle) { + ret = window.getComputedStyle(element, '').getPropertyValue(property); + } + else { + ret = element.currentStyle[property]; + } + } + if (!ret || ret == 'auto' || ret == 'intrinsic') { + ret = container.style[property]; + } + return ret; +}; +function applyStyles(elm, styles) { + for (var style in styles) { + elm.style[style] = styles[style]; + } +} +function setupContainer(element, getValue) { + if (element.type != 'textarea') { + throw new Error("Textarea required!"); + } + var parentNode = element.parentNode; + var container = document.createElement('div'); + var resizeEvent = function () { + var style = 'position:relative;'; + [ + 'margin-top', 'margin-left', 'margin-right', 'margin-bottom' + ].forEach(function (item) { + style += item + ':' + + getCSSProperty(element, container, item) + ';'; + }); + var width = getCSSProperty(element, container, 'width') || (element.clientWidth + "px"); + var height = getCSSProperty(element, container, 'height') || (element.clientHeight + "px"); + style += 'height:' + height + ';width:' + width + ';'; + style += 'display:inline-block;'; + container.setAttribute('style', style); + }; + event.addListener(window, 'resize', resizeEvent); + resizeEvent(); + parentNode.insertBefore(container, element.nextSibling); + while (parentNode !== document) { + if (parentNode.tagName.toUpperCase() === 'FORM') { + var oldSumit = parentNode.onsubmit; + parentNode.onsubmit = function (evt) { + element.value = getValue(); + if (oldSumit) { + oldSumit.call(this, evt); + } + }; + break; + } + parentNode = parentNode.parentNode; + } + return container; +} +exports.transformTextarea = function (element, options) { + var isFocused = element.autofocus || document.activeElement == element; + var session; + var container = setupContainer(element, function () { + return session.getValue(); + }); + element.style.display = 'none'; + container.style.background = 'white'; + var editorDiv = document.createElement("div"); + applyStyles(editorDiv, { + top: "0px", + left: "0px", + right: "0px", + bottom: "0px", + border: "1px solid gray", + position: "absolute" + }); + container.appendChild(editorDiv); + var settingOpener = document.createElement("div"); + applyStyles(settingOpener, { + position: "absolute", + right: "0px", + bottom: "0px", + cursor: "nw-resize", + border: "solid 9px", + borderColor: "lightblue gray gray #ceade6", + zIndex: 101 + }); + var settingDiv = document.createElement("div"); + var settingDivStyles = { + top: "0px", + left: "20%", + right: "0px", + bottom: "0px", + position: "absolute", + padding: "5px", + zIndex: 100, + color: "white", + display: "none", + overflow: "auto", + fontSize: "14px", + boxShadow: "-5px 2px 3px gray" + }; + if (!UA.isOldIE) { + settingDivStyles.backgroundColor = "rgba(0, 0, 0, 0.6)"; + } + else { + settingDivStyles.backgroundColor = "#333"; + } + applyStyles(settingDiv, settingDivStyles); + container.appendChild(settingDiv); + options = options || exports.defaultOptions; + var editor = ace.edit(editorDiv); + session = editor.getSession(); + session.setValue(element.value || element.innerHTML); + if (isFocused) + editor.focus(); + container.appendChild(settingOpener); + setupApi(editor, editorDiv, settingDiv, ace, options); + setupSettingPanel(settingDiv, settingOpener, editor); + var state = ""; + event.addListener(settingOpener, "mousemove", function (e) { + var rect = this.getBoundingClientRect(); + var x = e.clientX - rect.left, y = e.clientY - rect.top; + if (x + y < (rect.width + rect.height) / 2) { + this.style.cursor = "pointer"; + state = "toggle"; + } + else { + state = "resize"; + this.style.cursor = "nw-resize"; + } + }); + event.addListener(settingOpener, "mousedown", function (e) { + e.preventDefault(); + if (state == "toggle") { + editor.setDisplaySettings(); + return; + } + container.style.zIndex = 100000; + var rect = container.getBoundingClientRect(); + var startX = rect.width + rect.left - e.clientX; + var startY = rect.height + rect.top - e.clientY; + event.capture(settingOpener, function (e) { + container.style.width = e.clientX - rect.left + startX + "px"; + container.style.height = e.clientY - rect.top + startY + "px"; + editor.resize(); + }, function () { }); + }); + return editor; +}; +function load(url, module, callback) { + net.loadScript(url, function () { + require([module], callback); + }); +} +function setupApi(editor, editorDiv, settingDiv, ace, options) { + var session = editor.getSession(); + var renderer = editor.renderer; + function toBool(value) { + return value === "true" || value == true; + } + editor.setDisplaySettings = function (display) { + if (display == null) + display = settingDiv.style.display == "none"; + if (display) { + settingDiv.style.display = "block"; + settingDiv.hideButton.focus(); + editor.on("focus", function onFocus() { + editor.removeListener("focus", onFocus); + settingDiv.style.display = "none"; + }); + } + else { + editor.focus(); + } + }; + editor.$setOption = editor.setOption; + editor.$getOption = editor.getOption; + editor.setOption = function (key, value) { + switch (key) { + case "mode": + editor.$setOption("mode", "ace/mode/" + value); + break; + case "theme": + editor.$setOption("theme", "ace/theme/" + value); + break; + case "keybindings": + switch (value) { + case "vim": + editor.setKeyboardHandler("ace/keyboard/vim"); + break; + case "emacs": + editor.setKeyboardHandler("ace/keyboard/emacs"); + break; + default: + editor.setKeyboardHandler(null); + } + break; + case "wrap": + case "fontSize": + editor.$setOption(key, value); + break; + default: + editor.$setOption(key, toBool(value)); + } + }; + editor.getOption = function (key) { + switch (key) { + case "mode": + return editor.$getOption("mode").substr("ace/mode/".length); + break; + case "theme": + return editor.$getOption("theme").substr("ace/theme/".length); + break; + case "keybindings": + var value = editor.getKeyboardHandler(); + switch (value && value.$id) { + case "ace/keyboard/vim": + return "vim"; + case "ace/keyboard/emacs": + return "emacs"; + default: + return "ace"; + } + break; + default: + return editor.$getOption(key); + } + }; + editor.setOptions(options); + return editor; +} +function setupSettingPanel(settingDiv, settingOpener, editor) { + var BOOL = null; + var desc = { + mode: "Mode:", + wrap: "Soft Wrap:", + theme: "Theme:", + fontSize: "Font Size:", + showGutter: "Display Gutter:", + keybindings: "Keyboard", + showPrintMargin: "Show Print Margin:", + useSoftTabs: "Use Soft Tabs:", + showInvisibles: "Show Invisibles" + }; + var optionValues = { + mode: { + text: "Plain", + javascript: "JavaScript", + xml: "XML", + html: "HTML", + css: "CSS", + scss: "SCSS", + python: "Python", + php: "PHP", + java: "Java", + ruby: "Ruby", + c_cpp: "C/C++", + coffee: "CoffeeScript", + json: "json", + perl: "Perl", + clojure: "Clojure", + ocaml: "OCaml", + csharp: "C#", + haxe: "haXe", + svg: "SVG", + textile: "Textile", + groovy: "Groovy", + liquid: "Liquid", + Scala: "Scala" + }, + theme: { + clouds: "Clouds", + clouds_midnight: "Clouds Midnight", + cobalt: "Cobalt", + crimson_editor: "Crimson Editor", + dawn: "Dawn", + gob: "Green on Black", + eclipse: "Eclipse", + idle_fingers: "Idle Fingers", + kr_theme: "Kr Theme", + merbivore: "Merbivore", + merbivore_soft: "Merbivore Soft", + mono_industrial: "Mono Industrial", + monokai: "Monokai", + pastel_on_dark: "Pastel On Dark", + solarized_dark: "Solarized Dark", + solarized_light: "Solarized Light", + textmate: "Textmate", + twilight: "Twilight", + vibrant_ink: "Vibrant Ink" + }, + showGutter: BOOL, + fontSize: { + "10px": "10px", + "11px": "11px", + "12px": "12px", + "14px": "14px", + "16px": "16px" + }, + wrap: { + off: "Off", + 40: "40", + 80: "80", + free: "Free" + }, + keybindings: { + ace: "ace", + vim: "vim", + emacs: "emacs" + }, + showPrintMargin: BOOL, + useSoftTabs: BOOL, + showInvisibles: BOOL + }; + var table = []; + table.push(""); + function renderOption(builder, option, obj, cValue) { + if (!obj) { + builder.push(""); + return; + } + builder.push(""); + } + for (var option in exports.defaultOptions) { + table.push(""); + table.push(""); + } + table.push("
    SettingValue
    ", desc[option], ""); + renderOption(table, option, optionValues[option], editor.getOption(option)); + table.push("
    "); + settingDiv.innerHTML = table.join(""); + var onChange = function (e) { + var select = e.currentTarget; + editor.setOption(select.title, select.value); + }; + var onClick = function (e) { + var cb = e.currentTarget; + editor.setOption(cb.title, cb.checked); + }; + var selects = settingDiv.getElementsByTagName("select"); + for (var i = 0; i < selects.length; i++) + selects[i].onchange = onChange; + var cbs = settingDiv.getElementsByTagName("input"); + for (var i = 0; i < cbs.length; i++) + cbs[i].onclick = onClick; + var button = document.createElement("input"); + button.type = "button"; + button.value = "Hide"; + event.addListener(button, "click", function () { + editor.setDisplaySettings(false); + }); + settingDiv.appendChild(button); + settingDiv.hideButton = button; +} +exports.defaultOptions = { + mode: "javascript", + theme: "textmate", + wrap: "off", + fontSize: "12px", + showGutter: "false", + keybindings: "ace", + showPrintMargin: "false", + useSoftTabs: "true", + showInvisibles: "false" +}; + +}); (function() { + ace.require(["ace/ext/textarea"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/d19b415a0279064ddfa890d0a7b3f78c.js.gz b/web/dist/d19b415a0279064ddfa890d0a7b3f78c.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..0d84752354eab22b1616b880a830c46fe357a42c GIT binary patch literal 3597 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 T9enrwbI1P!`tRpC-!cFICY{|K literal 0 HcmV?d00001 diff --git a/web/dist/d1d9fa9ed3cbeee7c37f01294459d630.js b/web/dist/d1d9fa9ed3cbeee7c37f01294459d630.js new file mode 100644 index 00000000..62600a62 --- /dev/null +++ b/web/dist/d1d9fa9ed3cbeee7c37f01294459d630.js @@ -0,0 +1,18 @@ +ace.define("ace/theme/xcode.css",["require","exports","module"], function(require, exports, module){module.exports = "/* THIS THEME WAS AUTOGENERATED BY Theme.tmpl.css (UUID: EE3AD170-2B7F-4DE1-B724-C75F13FE0085) */\n\n.ace-xcode .ace_gutter {\n background: #e8e8e8;\n color: #333\n}\n\n.ace-xcode .ace_print-margin {\n width: 1px;\n background: #e8e8e8\n}\n\n.ace-xcode {\n background-color: #FFFFFF;\n color: #000000\n}\n\n.ace-xcode .ace_cursor {\n color: #000000\n}\n\n.ace-xcode .ace_marker-layer .ace_selection {\n background: #B5D5FF\n}\n\n.ace-xcode.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #FFFFFF;\n}\n\n.ace-xcode .ace_marker-layer .ace_step {\n background: rgb(198, 219, 174)\n}\n\n.ace-xcode .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid #BFBFBF\n}\n\n.ace-xcode .ace_marker-layer .ace_active-line {\n background: rgba(0, 0, 0, 0.071)\n}\n\n.ace-xcode .ace_gutter-active-line {\n background-color: rgba(0, 0, 0, 0.071)\n}\n\n.ace-xcode .ace_marker-layer .ace_selected-word {\n border: 1px solid #B5D5FF\n}\n\n.ace-xcode .ace_constant.ace_language,\n.ace-xcode .ace_keyword,\n.ace-xcode .ace_meta,\n.ace-xcode .ace_variable.ace_language {\n color: #C800A4\n}\n\n.ace-xcode .ace_invisible {\n color: #BFBFBF\n}\n\n.ace-xcode .ace_constant.ace_character,\n.ace-xcode .ace_constant.ace_other {\n color: #275A5E\n}\n\n.ace-xcode .ace_constant.ace_numeric {\n color: #3A00DC\n}\n\n.ace-xcode .ace_entity.ace_other.ace_attribute-name,\n.ace-xcode .ace_support.ace_constant,\n.ace-xcode .ace_support.ace_function {\n color: #450084\n}\n\n.ace-xcode .ace_fold {\n background-color: #C800A4;\n border-color: #000000\n}\n\n.ace-xcode .ace_entity.ace_name.ace_tag,\n.ace-xcode .ace_support.ace_class,\n.ace-xcode .ace_support.ace_type {\n color: #790EAD\n}\n\n.ace-xcode .ace_storage {\n color: #C900A4\n}\n\n.ace-xcode .ace_string {\n color: #DF0002\n}\n\n.ace-xcode .ace_comment {\n color: #008E00\n}\n\n.ace-xcode .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==) right repeat-y\n}\n\n.ace-xcode .ace_indent-guide-active {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC\") right repeat-y;\n} \n"; + +}); + +ace.define("ace/theme/xcode",["require","exports","module","ace/theme/xcode.css","ace/lib/dom"], function(require, exports, module){exports.isDark = false; +exports.cssClass = "ace-xcode"; +exports.cssText = require("./xcode.css"); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass, false); + +}); (function() { + ace.require(["ace/theme/xcode"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/d2bee538ff0c2eb104ee3a32dc6545de.js b/web/dist/d2bee538ff0c2eb104ee3a32dc6545de.js new file mode 100644 index 00000000..5deda28a --- /dev/null +++ b/web/dist/d2bee538ff0c2eb104ee3a32dc6545de.js @@ -0,0 +1,16 @@ +ace.define("ace/snippets/rst.snippets",["require","exports","module"], function(require, exports, module){module.exports = "# rst\n\nsnippet :\n\t:${1:field name}: ${2:field body}\nsnippet *\n\t*${1:Emphasis}*\nsnippet **\n\t**${1:Strong emphasis}**\nsnippet _\n\t\\`${1:hyperlink-name}\\`_\n\t.. _\\`$1\\`: ${2:link-block}\nsnippet =\n\t${1:Title}\n\t=====${2:=}\n\t${3}\nsnippet -\n\t${1:Title}\n\t-----${2:-}\n\t${3}\nsnippet cont:\n\t.. contents::\n\t\n"; + +}); + +ace.define("ace/snippets/rst",["require","exports","module","ace/snippets/rst.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./rst.snippets"); +exports.scope = "rst"; + +}); (function() { + ace.require(["ace/snippets/rst"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/d37f0f78c06e883be0e04a3be861fb68.js b/web/dist/d37f0f78c06e883be0e04a3be861fb68.js new file mode 100644 index 00000000..d4da7d5f --- /dev/null +++ b/web/dist/d37f0f78c06e883be0e04a3be861fb68.js @@ -0,0 +1,277 @@ +ace.define("ace/mode/fsharp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var FSharpHighlightRules = function () { + var keywordMapper = this.createKeywordMapper({ + "variable": "this", + "keyword": 'abstract|assert|base|begin|class|default|delegate|done|downcast|downto|elif\ +|else|exception|extern|false|finally|function|global|inherit|inline|interface|internal|lazy|match\ +|member|module|mutable|namespace|open|or|override|private|public|rec|return|return!|select|static\ +|struct|then|to|true|try|typeof|upcast|use|use!|val|void|when|while|with|yield|yield!|__SOURCE_DIRECTORY__\ +|as|asr|land|lor|lsl|lsr|lxor|mod|sig|atomic|break|checked|component|const|constraint|constructor|continue\ +|eager|event|external|fixed|functor|include|method|mixin|object|parallel|process|protected|pure|sealed|tailcall\ +|trait|virtual|volatile|and|do|end|for|fun|if|in|let|let!|new|not|null|of|endif', + "constant": "true|false" + }, "identifier"); + var floatNumber = "(?:(?:(?:(?:(?:(?:\\d+)?(?:\\.\\d+))|(?:(?:\\d+)\\.))|(?:\\d+))(?:[eE][+-]?\\d+))|(?:(?:(?:\\d+)?(?:\\.\\d+))|(?:(?:\\d+)\\.)))"; + this.$rules = { + "start": [ + { + token: "variable.classes", + regex: '\\[\\<[.]*\\>\\]' + }, + { + token: "comment", + regex: '//.*$' + }, + { + token: "comment.start", + regex: /\(\*(?!\))/, + push: "blockComment" + }, + { + token: "string", + regex: "'.'" + }, + { + token: "string", + regex: '"""', + next: [{ + token: "constant.language.escape", + regex: /\\./, + next: "qqstring" + }, { + token: "string", + regex: '"""', + next: "start" + }, { + defaultToken: "string" + }] + }, + { + token: "string", + regex: '"', + next: [{ + token: "constant.language.escape", + regex: /\\./, + next: "qqstring" + }, { + token: "string", + regex: '"', + next: "start" + }, { + defaultToken: "string" + }] + }, + { + token: ["verbatim.string", "string"], + regex: '(@?)(")', + stateName: "qqstring", + next: [{ + token: "constant.language.escape", + regex: '""' + }, { + token: "string", + regex: '"', + next: "start" + }, { + defaultToken: "string" + }] + }, + { + token: "constant.float", + regex: "(?:" + floatNumber + "|\\d+)[jJ]\\b" + }, + { + token: "constant.float", + regex: floatNumber + }, + { + token: "constant.integer", + regex: "(?:(?:(?:[1-9]\\d*)|(?:0))|(?:0[oO]?[0-7]+)|(?:0[xX][\\dA-Fa-f]+)|(?:0[bB][01]+))\\b" + }, + { + token: ["keyword.type", "variable"], + regex: "(type\\s)([a-zA-Z0-9_$\-]*\\b)" + }, + { + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, + { + token: "keyword.operator", + regex: "\\+\\.|\\-\\.|\\*\\.|\\/\\.|#|;;|\\+|\\-|\\*|\\*\\*\\/|\\/\\/|%|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|<-|=|\\(\\*\\)" + }, + { + token: "paren.lparen", + regex: "[[({]" + }, + { + token: "paren.rparen", + regex: "[\\])}]" + } + ], + blockComment: [{ + regex: /\(\*\)/, + token: "comment" + }, { + regex: /\(\*(?!\))/, + token: "comment.start", + push: "blockComment" + }, { + regex: /\*\)/, + token: "comment.end", + next: "pop" + }, { + defaultToken: "comment" + }] + }; + this.normalizeRules(); +}; +oop.inherits(FSharpHighlightRules, TextHighlightRules); +exports.FSharpHighlightRules = FSharpHighlightRules; + +}); + +ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/fsharp",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/fsharp_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var FSharpHighlightRules = require("./fsharp_highlight_rules").FSharpHighlightRules; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + TextMode.call(this); + this.HighlightRules = FSharpHighlightRules; + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "//"; + this.blockComment = { start: "(*", end: "*)", nestable: true }; + this.$id = "ace/mode/fsharp"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/fsharp"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/d37f0f78c06e883be0e04a3be861fb68.js.gz b/web/dist/d37f0f78c06e883be0e04a3be861fb68.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..804d29130c7aa9a7f11bdc14837d0b090139fb4a GIT binary patch literal 2612 zcmV-43d{8$iwFP!000023hf$cQ{%|>JHJBKl0otz!Kc(>4B45?R5r=%RKcWjNWvw{ zZCi`3X|=%&?fmw<*DcvPZ3CfFsak_Ask`5O^wX1Ej~G)j^CP0Eu1Cx;o)UAGE?k<7 z7yf(^z?Y5bG9aniw^T~LEqzMVzDia}Oc@NS00Pr+g7ASqG2=MNt^_tlR;-50=_|8k zvv?%)lz;uQnjn|%D-(-d-|0)F~qsf3llIX2jmo-SmdK)^#;yWY4Kr*bX77Y zg87(c37`;8ch!39Im^A19$X>^ZYhux5RXr*D=n%&i|I<~Hx^+m}tT>!305PNqYGIn3a z4sI9GyqypA#5j2))F-N{p44X}2x4%LI^Mb_WwaQOX68%C0tQJvHz5raYs$3^vwfB1 zK>hYDlb~@S#N&PzTUBtFDk=;~mw7%n*=F~(%v3WT=dEo0o2A`-FvmR9~-XM-O>wrN)sMyIkqIFz>ap^>AOp*KjLyv+le2?=Tx{E^u37Hj`%i;^ zoeq8+AKL>gq$c{yI4RxTwUf>Wj*p!pX+ijf4w5SXZkZ_DV(hY;ZTDb*0IwX#LsuSf z)8Iew;SkPyIEzzq8vaeW!sNf>7Z?2UlD~ri4&Ph;Zw>?eV#G(6d^F;n5x;=T0UyDv zCV*e4Ocm}@NMr=!utOlr(w>}Gk)V4?Kw+(~t3)L1h#H?Y7!?0P^={WW^Kugzb@RJMKKNC!2eD}n?{2>N|=q~ z#K?LVsn*oa={NL@05oex87&>4rs3hy(HbC++{UI_986*RGQE^NV!Q0w%`^%H04X-s za*TK!Zzxz`-Lv80>;L=0^qBLIe^pvD2oIpgw{0-)ezCz=NqH|;5U^5orvek$W6{g|J zts`QD>{O}2NXj(CrR$Y^jIf=$P6`mpyLU=wr`C(;8@3m0?<%Ug<#$~YarTgFv98}% zHI;?$01n`Crx<0?AJA7b0HYKZJ%|FGY zb>_4>mtX)NIRFFisq5W=_mri{QDmC;^fx7v@PScAJo8Yc zGg4GH2vmJ1d3-W3JZeXt*@w#Np}wX}b2I{?A^47X@})Mp?lXNc-=ALSigiQ3)H%H% zPG9Pr8J_)q*;fWdH(WO*s-mMbXQ`L&Lby<5p`Rms?30@%B`yWKnD&j?wD>y4^beRC z=03#1GK_LWRRho*60CGqhK72n1#jrCb-t~yEuYh-6%9~np$=BXTD#%}LCe^w|x!dIO zNGoH?(hJ$^z#d<<$&s%{CoD7F)Pa$JnUG{6;XXZHse7 zhf7-3s_{_t>QLYDm{8o}ig&&;U&qZ=m2X3-;M8M&DF6UssR{l7 literal 0 HcmV?d00001 diff --git a/web/dist/d4185e860c404e802d671def5eda2ead.js b/web/dist/d4185e860c404e802d671def5eda2ead.js new file mode 100644 index 00000000..e5521d3c --- /dev/null +++ b/web/dist/d4185e860c404e802d671def5eda2ead.js @@ -0,0 +1,469 @@ +ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var XmlHighlightRules = function (normalize) { + var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; + this.$rules = { + start: [ + { token: "string.cdata.xml", regex: "<\\!\\[CDATA\\[", next: "cdata" }, + { + token: ["punctuation.instruction.xml", "keyword.instruction.xml"], + regex: "(<\\?)(" + tagRegex + ")", next: "processing_instruction" + }, + { token: "comment.start.xml", regex: "<\\!--", next: "comment" }, + { + token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], + regex: "(<\\!)(DOCTYPE)(?=[\\s])", next: "doctype", caseInsensitive: true + }, + { include: "tag" }, + { token: "text.end-tag-open.xml", regex: "", + next: "start" + }], + doctype: [ + { include: "whitespace" }, + { include: "string" }, + { token: "xml-pe.doctype.xml", regex: ">", next: "start" }, + { token: "xml-pe.xml", regex: "[-_a-zA-Z0-9:]+" }, + { token: "punctuation.int-subset", regex: "\\[", push: "int_subset" } + ], + int_subset: [{ + token: "text.xml", + regex: "\\s+" + }, { + token: "punctuation.int-subset.xml", + regex: "]", + next: "pop" + }, { + token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], + regex: "(<\\!)(" + tagRegex + ")", + push: [{ + token: "text", + regex: "\\s+" + }, + { + token: "punctuation.markup-decl.xml", + regex: ">", + next: "pop" + }, + { include: "string" }] + }], + cdata: [ + { token: "string.cdata.xml", regex: "\\]\\]>", next: "start" }, + { token: "text.xml", regex: "\\s+" }, + { token: "text.xml", regex: "(?:[^\\]]|\\](?!\\]>))+" } + ], + comment: [ + { token: "comment.end.xml", regex: "-->", next: "start" }, + { defaultToken: "comment.xml" } + ], + reference: [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + attr_reference: [{ + token: "constant.language.escape.reference.attribute-value.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + tag: [{ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], + regex: "(?:(<)|(", next: "start" } + ] + }], + tag_whitespace: [ + { token: "text.tag-whitespace.xml", regex: "\\s+" } + ], + whitespace: [ + { token: "text.whitespace.xml", regex: "\\s+" } + ], + string: [{ + token: "string.xml", + regex: "'", + push: [ + { token: "string.xml", regex: "'", next: "pop" }, + { defaultToken: "string.xml" } + ] + }, { + token: "string.xml", + regex: '"', + push: [ + { token: "string.xml", regex: '"', next: "pop" }, + { defaultToken: "string.xml" } + ] + }], + attributes: [{ + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + include: "tag_whitespace" + }, { + include: "attribute_value" + }], + attribute_value: [{ + token: "string.attribute-value.xml", + regex: "'", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }] + }; + if (this.constructor === XmlHighlightRules) + this.normalizeRules(); +}; +(function () { + this.embedTagRules = function (HighlightRules, prefix, tag) { + this.$rules.tag.unshift({ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(<)(" + tag + "(?=\\s|>|$))", + next: [ + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: prefix + "start" } + ] + }); + this.$rules[tag + "-end"] = [ + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start", + onMatch: function (value, currentState, stack) { + stack.splice(0); + return this.token; + } } + ]; + this.embedRules(HighlightRules, prefix, [{ + token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(|$))", + next: tag + "-end" + }, { + token: "string.cdata.xml", + regex: "<\\!\\[CDATA\\[" + }, { + token: "string.cdata.xml", + regex: "\\]\\]>" + }]); + }; +}).call(TextHighlightRules.prototype); +oop.inherits(XmlHighlightRules, TextHighlightRules); +exports.XmlHighlightRules = XmlHighlightRules; + +}); + +ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Behaviour = require("../behaviour").Behaviour; +var TokenIterator = require("../../token_iterator").TokenIterator; +var lang = require("../../lib/lang"); +function is(token, type) { + return token && token.type.lastIndexOf(type + ".xml") > -1; +} +var XmlBehaviour = function () { + this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { + if (text == '"' || text == "'") { + var quote = text; + var selected = session.doc.getTextRange(editor.getSelectionRange()); + if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { + return { + text: quote + selected + quote, + selection: false + }; + } + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { + return { + text: "", + selection: [1, 1] + }; + } + if (!token) + token = iterator.stepBackward(); + if (!token) + return; + while (is(token, "tag-whitespace") || is(token, "whitespace")) { + token = iterator.stepBackward(); + } + var rightSpace = !rightChar || rightChar.match(/\s/); + if (is(token, "attribute-equals") && (rightSpace || rightChar == '>') || (is(token, "decl-attribute-equals") && (rightSpace || rightChar == '?'))) { + return { + text: quote + quote, + selection: [1, 1] + }; + } + } + }); + this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { + var selected = session.doc.getTextRange(range); + if (!range.isMultiLine() && (selected == '"' || selected == "'")) { + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.start.column + 1, range.start.column + 2); + if (rightChar == selected) { + range.end.column++; + return range; + } + } + }); + this.add("autoclosing", "insertion", function (state, action, editor, session, text) { + if (text == '>') { + var position = editor.getSelectionRange().start; + var iterator = new TokenIterator(session, position.row, position.column); + var token = iterator.getCurrentToken() || iterator.stepBackward(); + if (!token || !(is(token, "tag-name") || is(token, "tag-whitespace") || is(token, "attribute-name") || is(token, "attribute-equals") || is(token, "attribute-value"))) + return; + if (is(token, "reference.attribute-value")) + return; + if (is(token, "attribute-value")) { + var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; + if (position.column < tokenEndColumn) + return; + if (position.column == tokenEndColumn) { + var nextToken = iterator.stepForward(); + if (nextToken && is(nextToken, "attribute-value")) + return; + iterator.stepBackward(); + } + } + if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) + return; + while (!is(token, "tag-name")) { + token = iterator.stepBackward(); + if (token.value == "<") { + token = iterator.stepForward(); + break; + } + } + var tokenRow = iterator.getCurrentTokenRow(); + var tokenColumn = iterator.getCurrentTokenColumn(); + if (is(iterator.stepBackward(), "end-tag-open")) + return; + var element = token.value; + if (tokenRow == position.row) + element = element.substring(0, position.column - tokenColumn); + if (this.voidElements.hasOwnProperty(element.toLowerCase())) + return; + return { + text: ">" + "", + selection: [1, 1] + }; + } + }); + this.add("autoindent", "insertion", function (state, action, editor, session, text) { + if (text == "\n") { + var cursor = editor.getCursorPosition(); + var line = session.getLine(cursor.row); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.type.indexOf("tag-close") !== -1) { + if (token.value == "/>") + return; + while (token && token.type.indexOf("tag-name") === -1) { + token = iterator.stepBackward(); + } + if (!token) { + return; + } + var tag = token.value; + var row = iterator.getCurrentTokenRow(); + token = iterator.stepBackward(); + if (!token || token.type.indexOf("end-tag") !== -1) { + return; + } + if (this.voidElements && !this.voidElements[tag]) { + var nextToken = session.getTokenAt(cursor.row, cursor.column + 1); + var line = session.getLine(row); + var nextIndent = this.$getIndent(line); + var indent = nextIndent + session.getTabString(); + if (nextToken && nextToken.value === " -1; +} +(function () { + this.getFoldWidget = function (session, foldStyle, row) { + var tag = this._getFirstTagInLine(session, row); + if (!tag) + return this.getCommentFoldWidget(session, row); + if (tag.closing || (!tag.tagName && tag.selfClosing)) + return foldStyle === "markbeginend" ? "end" : ""; + if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) + return ""; + if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) + return ""; + return "start"; + }; + this.getCommentFoldWidget = function (session, row) { + if (/comment/.test(session.getState(row)) && /'; + break; + } + } + return tag; + } + else if (is(token, "tag-close")) { + tag.selfClosing = token.value == '/>'; + return tag; + } + tag.start.column += token.value.length; + } + return null; + }; + this._findEndTagInLine = function (session, row, tagName, startColumn) { + var tokens = session.getTokens(row); + var column = 0; + for (var i = 0; i < tokens.length; i++) { + var token = tokens[i]; + column += token.value.length; + if (column < startColumn) + continue; + if (is(token, "end-tag-open")) { + token = tokens[i + 1]; + if (token && token.value == tagName) + return true; + } + } + return false; + }; + this.getFoldWidgetRange = function (session, foldStyle, row) { + var tags = session.getMatchingTags({ row: row, column: 0 }); + if (tags) { + return new Range(tags.openTag.end.row, tags.openTag.end.column, tags.closeTag.start.row, tags.closeTag.start.column); + } + else { + return this.getCommentFoldWidget(session, row) + && session.getCommentFoldRange(row, session.getLine(row).length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/xml_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/xml","ace/worker/worker_client"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextMode = require("./text").Mode; +var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; +var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; +var XmlFoldMode = require("./folding/xml").FoldMode; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var Mode = function () { + this.HighlightRules = XmlHighlightRules; + this.$behaviour = new XmlBehaviour(); + this.foldingRules = new XmlFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.voidElements = lang.arrayToMap([]); + this.blockComment = { start: "" }; + this.createWorker = function (session) { + var worker = new WorkerClient(["ace"], "ace/mode/xml_worker", "Worker"); + worker.attachToDocument(session.getDocument()); + worker.on("error", function (e) { + session.setAnnotations(e.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/xml"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/xml"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/d4185e860c404e802d671def5eda2ead.js.gz b/web/dist/d4185e860c404e802d671def5eda2ead.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..59de64f3152fe150841b5d78461c35320239d553 GIT binary patch literal 3855 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 max) { + var space = findSpace(line, max, 5); + if (space) { + var indentation = /^\s*/.exec(line)[0]; + session.replace(new Range(row, space.start, row, space.end), "\n" + indentation); + } + endRow++; + } + else if (allowMerge && /\S/.test(line) && row != endRow) { + var nextLine = session.getLine(row + 1); + if (nextLine && /\S/.test(nextLine)) { + var trimmedLine = line.replace(/\s+$/, ""); + var trimmedNextLine = nextLine.replace(/^\s+/, ""); + var mergedLine = trimmedLine + " " + trimmedNextLine; + var space = findSpace(mergedLine, max, 5); + if (space && space.start > trimmedLine.length || mergedLine.length < max) { + var replaceRange = new Range(row, trimmedLine.length, row + 1, nextLine.length - trimmedNextLine.length); + session.replace(replaceRange, " "); + row--; + endRow--; + } + else if (trimmedLine.length < line.length) { + session.remove(new Range(row, trimmedLine.length, row, line.length)); + } + } + } + row++; + } + function findSpace(line, max, min) { + if (line.length < max) + return; + var before = line.slice(0, max); + var after = line.slice(max); + var spaceAfter = /^(?:(\s+)|(\S+)(\s+))/.exec(after); + var spaceBefore = /(?:(\s+)|(\s+)(\S+))$/.exec(before); + var start = 0; + var end = 0; + if (spaceBefore && !spaceBefore[2]) { + start = max - spaceBefore[1].length; + end = max; + } + if (spaceAfter && !spaceAfter[2]) { + if (!start) + start = max; + end = max + spaceAfter[1].length; + } + if (start) { + return { + start: start, + end: end + }; + } + if (spaceBefore && spaceBefore[2] && spaceBefore.index > min) { + return { + start: spaceBefore.index, + end: spaceBefore.index + spaceBefore[2].length + }; + } + if (spaceAfter && spaceAfter[2]) { + start = max + spaceAfter[2].length; + return { + start: start, + end: start + spaceAfter[3].length + }; + } + } +} +function wrapAfterInput(e) { + if (e.command.name == "insertstring" && /\S/.test(e.args)) { + var editor = e.editor; + var cursor = editor.selection.cursor; + if (cursor.column <= editor.renderer.$printMarginColumn) + return; + var lastDelta = editor.session.$undoManager.$lastDelta; + hardWrap(editor, { + startRow: cursor.row, endRow: cursor.row, + allowMerge: false + }); + if (lastDelta != editor.session.$undoManager.$lastDelta) + editor.session.markUndoGroup(); + } +} +var Editor = require("../editor").Editor; +require("../config").defineOptions(Editor.prototype, "editor", { + hardWrap: { + set: function (val) { + if (val) { + this.commands.on("afterExec", wrapAfterInput); + } + else { + this.commands.off("afterExec", wrapAfterInput); + } + }, + value: false + } +}); +exports.hardWrap = hardWrap; + +}); (function() { + ace.require(["ace/ext/hardwrap"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/d66813bade53d7a1eeb0fb22223c9120.js b/web/dist/d66813bade53d7a1eeb0fb22223c9120.js new file mode 100644 index 00000000..a67364d5 --- /dev/null +++ b/web/dist/d66813bade53d7a1eeb0fb22223c9120.js @@ -0,0 +1,9 @@ + +; (function() { + ace.require(["ace/snippets/scrypt"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/d750a8dbf9dd09c0a33b9986e79e3c8c.js b/web/dist/d750a8dbf9dd09c0a33b9986e79e3c8c.js new file mode 100644 index 00000000..1e7910db --- /dev/null +++ b/web/dist/d750a8dbf9dd09c0a33b9986e79e3c8c.js @@ -0,0 +1,9 @@ + +; (function() { + ace.require(["ace/snippets/mediawiki"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/d754905fe54aac6f3c350df34f51a0b6.js b/web/dist/d754905fe54aac6f3c350df34f51a0b6.js new file mode 100644 index 00000000..93e7b3a0 --- /dev/null +++ b/web/dist/d754905fe54aac6f3c350df34f51a0b6.js @@ -0,0 +1,9 @@ + +; (function() { + ace.require(["ace/snippets/ejs"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/d7889907dbb51f58ceadb3e1eec03a5d.js b/web/dist/d7889907dbb51f58ceadb3e1eec03a5d.js new file mode 100644 index 00000000..21b38d0a --- /dev/null +++ b/web/dist/d7889907dbb51f58ceadb3e1eec03a5d.js @@ -0,0 +1,9 @@ + +; (function() { + ace.require(["ace/snippets/mask"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/d8d4867d7fff5b67bbbdd47e637b3a6c.js b/web/dist/d8d4867d7fff5b67bbbdd47e637b3a6c.js new file mode 100644 index 00000000..2bb6fce6 --- /dev/null +++ b/web/dist/d8d4867d7fff5b67bbbdd47e637b3a6c.js @@ -0,0 +1,17 @@ +ace.define("ace/snippets/velocity.snippets",["require","exports","module"], function(require, exports, module){module.exports = "# macro\nsnippet #macro\n\t#macro ( ${1:macroName} ${2:\\$var1, [\\$var2, ...]} )\n\t\t${3:## macro code}\n\t#end\n# foreach\nsnippet #foreach\n\t#foreach ( ${1:\\$item} in ${2:\\$collection} )\n\t\t${3:## foreach code}\n\t#end\n# if\nsnippet #if\n\t#if ( ${1:true} )\n\t\t${0}\n\t#end\n# if ... else\nsnippet #ife\n\t#if ( ${1:true} )\n\t\t${2}\n\t#else\n\t\t${0}\n\t#end\n#import\nsnippet #import\n\t#import ( \"${1:path/to/velocity/format}\" )\n# set\nsnippet #set\n\t#set ( $${1:var} = ${0} )\n"; + +}); + +ace.define("ace/snippets/velocity",["require","exports","module","ace/snippets/velocity.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./velocity.snippets"); +exports.scope = "velocity"; +exports.includeScopes = ["html", "javascript", "css"]; + +}); (function() { + ace.require(["ace/snippets/velocity"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/da0827f4d8af0fc29eb75e28166177d3.js b/web/dist/da0827f4d8af0fc29eb75e28166177d3.js new file mode 100644 index 00000000..f1b42aed --- /dev/null +++ b/web/dist/da0827f4d8af0fc29eb75e28166177d3.js @@ -0,0 +1,16 @@ +ace.define("ace/snippets/wollok.snippets",["require","exports","module"], function(require, exports, module){module.exports = "##\n## Basic Java packages and import\nsnippet im\n\timport\nsnippet w.l\n\twollok.lang\nsnippet w.i\n\twollok.lib\n\n## Class and object\nsnippet cl\n\tclass ${1:`Filename(\"\", \"untitled\")`} ${2}\nsnippet obj\n\tobject ${1:`Filename(\"\", \"untitled\")`} ${2:inherits Parent}${3}\nsnippet te\n\ttest ${1:`Filename(\"\", \"untitled\")`}\n\n##\n## Enhancements\nsnippet inh\n\tinherits\n\n##\n## Comments\nsnippet /*\n\t/*\n\t * ${1}\n\t */\n\n##\n## Control Statements\nsnippet el\n\telse\nsnippet if\n\tif (${1}) ${2}\n\n##\n## Create a Method\nsnippet m\n\tmethod ${1:method}(${2}) ${5}\n\n## \n## Tests\nsnippet as\n\tassert.equals(${1:expected}, ${2:actual})\n\n##\n## Exceptions\nsnippet ca\n\tcatch ${1:e} : (${2:Exception} ) ${3}\nsnippet thr\n\tthrow\nsnippet try\n\ttry {\n\t\t${3}\n\t} catch ${1:e} : ${2:Exception} {\n\t}\n\n##\n## Javadocs\nsnippet /**\n\t/**\n\t * ${1}\n\t */\n\n##\n## Print Methods\nsnippet print\n\tconsole.println(\"${1:Message}\")\n\n##\n## Setter and Getter Methods\nsnippet set\n\tmethod set${1:}(${2:}) {\n\t\t$1 = $2\n\t}\nsnippet get\n\tmethod get${1:}() {\n\t\treturn ${1:};\n\t}\n\n##\n## Terminate Methods or Loops\nsnippet re\n\treturn"; + +}); + +ace.define("ace/snippets/wollok",["require","exports","module","ace/snippets/wollok.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./wollok.snippets"); +exports.scope = "wollok"; + +}); (function() { + ace.require(["ace/snippets/wollok"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/dabc32896dd99d88e7b0f27f99d9f3d1.js b/web/dist/dabc32896dd99d88e7b0f27f99d9f3d1.js new file mode 100644 index 00000000..8182a88b --- /dev/null +++ b/web/dist/dabc32896dd99d88e7b0f27f99d9f3d1.js @@ -0,0 +1,199 @@ +ace.define("ace/snippets/vala",["require","exports","module"], function(require, exports, module){"use strict"; +exports.snippets = [ + { + "content": "case ${1:condition}:\n\t$0\n\tbreak;\n", + "name": "case", + "scope": "vala", + "tabTrigger": "case" + }, + { + "content": "/**\n * ${6}\n */\n${1:public} class ${2:MethodName}${3: : GLib.Object} {\n\n\t/**\n\t * ${7}\n\t */\n\tpublic ${2}(${4}) {\n\t\t${5}\n\t}\n\n\t$0\n}", + "name": "class", + "scope": "vala", + "tabTrigger": "class" + }, + { + "content": "(${1}) => {\n\t${0}\n}\n", + "name": "closure", + "scope": "vala", + "tabTrigger": "=>" + }, + { + "content": "/*\n * $0\n */", + "name": "Comment (multiline)", + "scope": "vala", + "tabTrigger": "/*" + }, + { + "content": "Console.WriteLine($1);\n$0", + "name": "Console.WriteLine (writeline)", + "scope": "vala", + "tabTrigger": "writeline" + }, + { + "content": "[DBus(name = \"$0\")]", + "name": "DBus annotation", + "scope": "vala", + "tabTrigger": "[DBus" + }, + { + "content": "delegate ${1:void} ${2:DelegateName}($0);", + "name": "delegate", + "scope": "vala", + "tabTrigger": "delegate" + }, + { + "content": "do {\n\t$0\n} while ($1);\n", + "name": "do while", + "scope": "vala", + "tabTrigger": "dowhile" + }, + { + "content": "/**\n * $0\n */", + "name": "DocBlock", + "scope": "vala", + "tabTrigger": "/**" + }, + { + "content": "else if ($1) {\n\t$0\n}\n", + "name": "else if (elseif)", + "scope": "vala", + "tabTrigger": "elseif" + }, + { + "content": "else {\n\t$0\n}", + "name": "else", + "scope": "vala", + "tabTrigger": "else" + }, + { + "content": "enum {$1:EnumName} {\n\t$0\n}", + "name": "enum", + "scope": "vala", + "tabTrigger": "enum" + }, + { + "content": "public errordomain ${1:Error} {\n\t$0\n}", + "name": "error domain", + "scope": "vala", + "tabTrigger": "errordomain" + }, + { + "content": "for ($1;$2;$3) {\n\t$0\n}", + "name": "for", + "scope": "vala", + "tabTrigger": "for" + }, + { + "content": "foreach ($1 in $2) {\n\t$0\n}", + "name": "foreach", + "scope": "vala", + "tabTrigger": "foreach" + }, + { + "content": "Gee.ArrayList<${1:G}>($0);", + "name": "Gee.ArrayList", + "scope": "vala", + "tabTrigger": "ArrayList" + }, + { + "content": "Gee.HashMap<${1:K},${2:V}>($0);", + "name": "Gee.HashMap", + "scope": "vala", + "tabTrigger": "HashMap" + }, + { + "content": "Gee.HashSet<${1:G}>($0);", + "name": "Gee.HashSet", + "scope": "vala", + "tabTrigger": "HashSet" + }, + { + "content": "if ($1) {\n\t$0\n}", + "name": "if", + "scope": "vala", + "tabTrigger": "if" + }, + { + "content": "interface ${1:InterfaceName}{$2: : SuperInterface} {\n\t$0\n}", + "name": "interface", + "scope": "vala", + "tabTrigger": "interface" + }, + { + "content": "public static int main(string [] argv) {\n\t${0}\n\treturn 0;\n}", + "name": "Main function", + "scope": "vala", + "tabTrigger": "main" + }, + { + "content": "namespace $1 {\n\t$0\n}\n", + "name": "namespace (ns)", + "scope": "vala", + "tabTrigger": "ns" + }, + { + "content": "stdout.printf($0);", + "name": "printf", + "scope": "vala", + "tabTrigger": "printf" + }, + { + "content": "${1:public} ${2:Type} ${3:Name} {\n\tset {\n\t\t$0\n\t}\n\tget {\n\n\t}\n}", + "name": "property (prop)", + "scope": "vala", + "tabTrigger": "prop" + }, + { + "content": "${1:public} ${2:Type} ${3:Name} {\n\tget {\n\t\t$0\n\t}\n}", + "name": "read-only property (roprop)", + "scope": "vala", + "tabTrigger": "roprop" + }, + { + "content": "@\"${1:\\$var}\"", + "name": "String template (@)", + "scope": "vala", + "tabTrigger": "@" + }, + { + "content": "struct ${1:StructName} {\n\t$0\n}", + "name": "struct", + "scope": "vala", + "tabTrigger": "struct" + }, + { + "content": "switch ($1) {\n\t$0\n}", + "name": "switch", + "scope": "vala", + "tabTrigger": "switch" + }, + { + "content": "try {\n\t$2\n} catch (${1:Error} e) {\n\t$0\n}", + "name": "try/catch", + "scope": "vala", + "tabTrigger": "try" + }, + { + "content": "\"\"\"$0\"\"\";", + "name": "Verbatim string (\"\"\")", + "scope": "vala", + "tabTrigger": "verbatim" + }, + { + "content": "while ($1) {\n\t$0\n}", + "name": "while", + "scope": "vala", + "tabTrigger": "while" + } +]; +exports.scope = ""; + +}); (function() { + ace.require(["ace/snippets/vala"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/db6c0056cef31f6654438a92a8aca336.js b/web/dist/db6c0056cef31f6654438a92a8aca336.js new file mode 100644 index 00000000..2f08f2be --- /dev/null +++ b/web/dist/db6c0056cef31f6654438a92a8aca336.js @@ -0,0 +1,16 @@ +ace.define("ace/snippets/abc.snippets",["require","exports","module"], function(require, exports, module){module.exports = "\nsnippet zupfnoter.print\n\t%%%%hn.print {\"startpos\": ${1:pos_y}, \"t\":\"${2:title}\", \"v\":[${3:voices}], \"s\":[[${4:syncvoices}1,2]], \"f\":[${5:flowlines}], \"sf\":[${6:subflowlines}], \"j\":[${7:jumplines}]}\n\nsnippet zupfnoter.note\n\t%%%%hn.note {\"pos\": [${1:pos_x},${2:pos_y}], \"text\": \"${3:text}\", \"style\": \"${4:style}\"}\n\nsnippet zupfnoter.annotation\n\t%%%%hn.annotation {\"id\": \"${1:id}\", \"pos\": [${2:pos}], \"text\": \"${3:text}\"}\n\nsnippet zupfnoter.lyrics\n\t%%%%hn.lyrics {\"pos\": [${1:x_pos},${2:y_pos}]}\n\nsnippet zupfnoter.legend\n\t%%%%hn.legend {\"pos\": [${1:x_pos},${2:y_pos}]}\n\n\n\nsnippet zupfnoter.target\n\t\"^:${1:target}\"\n\nsnippet zupfnoter.goto\n\t\"^@${1:target}@${2:distance}\"\n\nsnippet zupfnoter.annotationref\n\t\"^#${1:target}\"\n\nsnippet zupfnoter.annotation\n\t\"^!${1:text}@${2:x_offset},${3:y_offset}\"\n\n\n"; + +}); + +ace.define("ace/snippets/abc",["require","exports","module","ace/snippets/abc.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./abc.snippets"); +exports.scope = "abc"; + +}); (function() { + ace.require(["ace/snippets/abc"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/dbfe76a5b35e105c53ee5e24e7aecea9.js b/web/dist/dbfe76a5b35e105c53ee5e24e7aecea9.js new file mode 100644 index 00000000..83db1c7e --- /dev/null +++ b/web/dist/dbfe76a5b35e105c53ee5e24e7aecea9.js @@ -0,0 +1,16 @@ +ace.define("ace/snippets/maze.snippets",["require","exports","module"], function(require, exports, module){module.exports = "snippet >\ndescription assignment\nscope maze\n\t-> ${1}= ${2}\n\nsnippet >\ndescription if\nscope maze\n\t-> IF ${2:**} THEN %${3:L} ELSE %${4:R}\n"; + +}); + +ace.define("ace/snippets/maze",["require","exports","module","ace/snippets/maze.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./maze.snippets"); +exports.scope = "maze"; + +}); (function() { + ace.require(["ace/snippets/maze"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/dd0c5a4ed6f5fb11d7cf1f1eff6d60e0.js b/web/dist/dd0c5a4ed6f5fb11d7cf1f1eff6d60e0.js new file mode 100644 index 00000000..04ef6512 --- /dev/null +++ b/web/dist/dd0c5a4ed6f5fb11d7cf1f1eff6d60e0.js @@ -0,0 +1,243 @@ +ace.define("ace/mode/abc_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){/* This file was partially autogenerated from https://github.com/jimhawkridge/SublimeABC + + Modifications + + - more classes to express the abc semantic + - added syntax highlighting for Zupfnoter conventions (https://github.com/bwl21/zupfnoter) + - separate note pitch and note duration - even if it looks the same + + ***********************************************************************************************/ +"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var ABCHighlightRules = function () { + this.$rules = { + start: [ + { + token: ['zupfnoter.information.comment.line.percentage', 'information.keyword', 'in formation.keyword.embedded'], + regex: '(%%%%)(hn\\.[a-z]*)(.*)', + comment: 'Instruction Comment' + }, + { + token: ['information.comment.line.percentage', 'information.keyword.embedded'], + regex: '(%%)(.*)', + comment: 'Instruction Comment' + }, + { + token: 'comment.line.percentage', + regex: '%.*', + comment: 'Comments' + }, + { + token: 'barline.keyword.operator', + regex: '[\\[:]*[|:][|\\]:]*(?:\\[?[0-9]+)?|\\[[0-9]+', + comment: 'Bar lines' + }, + { + token: ['information.keyword.embedded', 'information.argument.string.unquoted'], + regex: '(\\[[A-Za-z]:)([^\\]]*\\])', + comment: 'embedded Header lines' + }, + { + token: ['information.keyword', 'information.argument.string.unquoted'], + regex: '^([A-Za-z]:)([^%\\\\]*)', + comment: 'Header lines' + }, + { + token: ['text', 'entity.name.function', 'string.unquoted', 'text'], + regex: '(\\[)([A-Z]:)(.*?)(\\])', + comment: 'Inline fields' + }, + { + token: ['accent.constant.language', 'pitch.constant.numeric', 'duration.constant.numeric'], + regex: '([\\^=_]*)([A-Ga-gz][,\']*)([0-9]*/*[><0-9]*)', + comment: 'Notes' + }, + { + token: 'zupfnoter.jumptarget.string.quoted', + regex: '[\\"!]\\^\\:.*?[\\"!]', + comment: 'Zupfnoter jumptarget' + }, { + token: 'zupfnoter.goto.string.quoted', + regex: '[\\"!]\\^\\@.*?[\\"!]', + comment: 'Zupfnoter goto' + }, + { + token: 'zupfnoter.annotation.string.quoted', + regex: '[\\"!]\\^\\!.*?[\\"!]', + comment: 'Zupfnoter annoation' + }, + { + token: 'zupfnoter.annotationref.string.quoted', + regex: '[\\"!]\\^\\#.*?[\\"!]', + comment: 'Zupfnoter annotation reference' + }, + { + token: 'chordname.string.quoted', + regex: '[\\"!]\\^.*?[\\"!]', + comment: 'abc chord' + }, + { + token: 'string.quoted', + regex: '[\\"!].*?[\\"!]', + comment: 'abc annotation' + } + ] + }; + this.normalizeRules(); +}; +ABCHighlightRules.metaData = { + fileTypes: ['abc'], + name: 'ABC', + scopeName: 'text.abcnotation' +}; +oop.inherits(ABCHighlightRules, TextHighlightRules); +exports.ABCHighlightRules = ABCHighlightRules; + +}); + +ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/abc",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/abc_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js + */ +"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var ABCHighlightRules = require("./abc_highlight_rules").ABCHighlightRules; +var FoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = ABCHighlightRules; + this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "%"; + this.$id = "ace/mode/abc"; + this.snippetFileId = "ace/snippets/abc"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/abc"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/dd40dfc7840568927fdef65087a233ed.js b/web/dist/dd40dfc7840568927fdef65087a233ed.js new file mode 100644 index 00000000..2d0002ea --- /dev/null +++ b/web/dist/dd40dfc7840568927fdef65087a233ed.js @@ -0,0 +1,9 @@ + +; (function() { + ace.require(["ace/snippets/properties"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/dde83af0489170bfa8323236b2eb8206.js b/web/dist/dde83af0489170bfa8323236b2eb8206.js new file mode 100644 index 00000000..77ab59f3 --- /dev/null +++ b/web/dist/dde83af0489170bfa8323236b2eb8206.js @@ -0,0 +1,2377 @@ +ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var DocCommentHighlightRules = function () { + this.$rules = { + "start": [{ + token: "comment.doc.tag", + regex: "@[\\w\\d_]+" // TODO: fix email addresses + }, + DocCommentHighlightRules.getTagRule(), + { + defaultToken: "comment.doc", + caseInsensitive: true + }] + }; +}; +oop.inherits(DocCommentHighlightRules, TextHighlightRules); +DocCommentHighlightRules.getTagRule = function (start) { + return { + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" + }; +}; +DocCommentHighlightRules.getStartRule = function (start) { + return { + token: "comment.doc", + regex: "\\/\\*(?=\\*)", + next: start + }; +}; +DocCommentHighlightRules.getEndRule = function (start) { + return { + token: "comment.doc", + regex: "\\*\\/", + next: start + }; +}; +exports.DocCommentHighlightRules = DocCommentHighlightRules; + +}); + +ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; +var JavaScriptHighlightRules = function (options) { + var keywordMapper = this.createKeywordMapper({ + "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|" + // Constructors + "Namespace|QName|XML|XMLList|" + // E4X + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors + "SyntaxError|TypeError|URIError|" + + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions + "isNaN|parseFloat|parseInt|" + + "JSON|Math|" + // Other + "this|arguments|prototype|window|document", + "keyword": "const|yield|import|get|set|async|await|" + + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + + "__parent__|__count__|escape|unescape|with|__proto__|" + + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor", + "storage.type": "const|let|var|function", + "constant.language": "null|Infinity|NaN|undefined", + "support.function": "alert", + "constant.language.boolean": "true|false" + }, "identifier"); + var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; + var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex + "u[0-9a-fA-F]{4}|" + // unicode + "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode + "[0-2][0-7]{0,2}|" + // oct + "3[0-7][0-7]?|" + // oct + "[4-7][0-7]?|" + //oct + ".)"; + this.$rules = { + "no_regex": [ + DocCommentHighlightRules.getStartRule("doc-start"), + comments("no_regex"), + { + token: "string", + regex: "'(?=.)", + next: "qstring" + }, { + token: "string", + regex: '"(?=.)', + next: "qqstring" + }, { + token: "constant.numeric", + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + }, { + token: [ + "storage.type", "punctuation.operator", "support.function", + "punctuation.operator", "entity.name.function", "text", "keyword.operator" + ], + regex: "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe + ")(\\s*)(=)", + next: "function_arguments" + }, { + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", "storage.type", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "entity.name.function", "text", "keyword.operator", "text", "storage.type", + "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(function\\*?)(\\s+)(" + identifierRe + ")(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "entity.name.function", "text", "punctuation.operator", + "text", "storage.type", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "text", "text", "storage.type", "text", "paren.lparen" + ], + regex: "(:)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: "keyword", + regex: "from(?=\\s*('|\"))" + }, { + token: "keyword", + regex: "(?:" + kwBeforeRe + ")\\b", + next: "start" + }, { + token: "support.constant", + regex: /that\b/ + }, { + token: ["storage.type", "punctuation.operator", "support.function.firebug"], + regex: /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ + }, { + token: keywordMapper, + regex: identifierRe + }, { + token: "punctuation.operator", + regex: /[.](?![.])/, + next: "property" + }, { + token: "storage.type", + regex: /=>/, + next: "start" + }, { + token: "keyword.operator", + regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next: "start" + }, { + token: "punctuation.operator", + regex: /[?:,;.]/, + next: "start" + }, { + token: "paren.lparen", + regex: /[\[({]/, + next: "start" + }, { + token: "paren.rparen", + regex: /[\])}]/ + }, { + token: "comment", + regex: /^#!.*$/ + } + ], + property: [{ + token: "text", + regex: "\\s+" + }, { + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()", + next: "function_arguments" + }, { + token: "punctuation.operator", + regex: /[.](?![.])/ + }, { + token: "support.function", + regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ + }, { + token: "support.function.dom", + regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ + }, { + token: "support.constant", + regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ + }, { + token: "identifier", + regex: identifierRe + }, { + regex: "", + token: "empty", + next: "no_regex" + } + ], + "start": [ + DocCommentHighlightRules.getStartRule("doc-start"), + comments("start"), + { + token: "string.regexp", + regex: "\\/", + next: "regex" + }, { + token: "text", + regex: "\\s+|^$", + next: "start" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "regex": [ + { + token: "regexp.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "string.regexp", + regex: "/[sxngimy]*", + next: "no_regex" + }, { + token: "invalid", + regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ + }, { + token: "constant.language.escape", + regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ + }, { + token: "constant.language.delimiter", + regex: /\|/ + }, { + token: "constant.language.escape", + regex: /\[\^?/, + next: "regex_character_class" + }, { + token: "empty", + regex: "$", + next: "no_regex" + }, { + defaultToken: "string.regexp" + } + ], + "regex_character_class": [ + { + token: "regexp.charclass.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "constant.language.escape", + regex: "]", + next: "regex" + }, { + token: "constant.language.escape", + regex: "-" + }, { + token: "empty", + regex: "$", + next: "no_regex" + }, { + defaultToken: "string.regexp.charachterclass" + } + ], + "default_parameter": [ + { + token: "string", + regex: "'(?=.)", + push: [ + { + token: "string", + regex: "'|$", + next: "pop" + }, { + include: "qstring" + } + ] + }, { + token: "string", + regex: '"(?=.)', + push: [ + { + token: "string", + regex: '"|$', + next: "pop" + }, { + include: "qqstring" + } + ] + }, { + token: "constant.language", + regex: "null|Infinity|NaN|undefined" + }, { + token: "constant.numeric", + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + }, { + token: "punctuation.operator", + regex: ",", + next: "function_arguments" + }, { + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "function_arguments": [ + comments("function_arguments"), + { + token: "variable.parameter", + regex: identifierRe + }, { + token: "punctuation.operator", + regex: "," + }, { + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: '"|$', + next: "no_regex" + }, { + defaultToken: "string" + } + ], + "qstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: "'|$", + next: "no_regex" + }, { + defaultToken: "string" + } + ] + }; + if (!options || !options.noES6) { + this.$rules.no_regex.unshift({ + regex: "[{}]", onMatch: function (val, state, stack) { + this.next = val == "{" ? this.nextState : ""; + if (val == "{" && stack.length) { + stack.unshift("start", state); + } + else if (val == "}" && stack.length) { + stack.shift(); + this.next = stack.shift(); + if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) + return "paren.quasi.end"; + } + return val == "{" ? "paren.lparen" : "paren.rparen"; + }, + nextState: "start" + }, { + token: "string.quasi.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedRe + }, { + token: "paren.quasi.start", + regex: /\${/, + push: "start" + }, { + token: "string.quasi.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string.quasi" + }] + }, { + token: ["variable.parameter", "text"], + regex: "(" + identifierRe + ")(\\s*)(?=\\=>)" + }, { + token: "paren.lparen", + regex: "(\\()(?=.+\\s*=>)", + next: "function_arguments" + }, { + token: "variable.language", + regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b" + }); + this.$rules["function_arguments"].unshift({ + token: "keyword.operator", + regex: "=", + next: "default_parameter" + }, { + token: "keyword.operator", + regex: "\\.{3}" + }); + this.$rules["property"].unshift({ + token: "support.function", + regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|" + + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()" + }, { + token: "constant.language", + regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b" + }); + if (!options || options.jsx != false) + JSX.call(this); + } + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]); + this.normalizeRules(); +}; +oop.inherits(JavaScriptHighlightRules, TextHighlightRules); +function JSX() { + var tagRegex = identifierRe.replace("\\d", "\\d\\-"); + var jsxTag = { + onMatch: function (val, state, stack) { + var offset = val.charAt(1) == "/" ? 2 : 1; + if (offset == 1) { + if (state != this.nextState) + stack.unshift(this.next, this.nextState, 0); + else + stack.unshift(this.next); + stack[2]++; + } + else if (offset == 2) { + if (state == this.nextState) { + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.shift(); + stack.shift(); + } + } + } + return [{ + type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", + value: val.slice(0, offset) + }, { + type: "meta.tag.tag-name.xml", + value: val.substr(offset) + }]; + }, + regex: "", + onMatch: function (value, currentState, stack) { + if (currentState == stack[0]) + stack.shift(); + if (value.length == 2) { + if (stack[0] == this.nextState) + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.splice(0, 2); + } + } + this.next = stack[0] || "start"; + return [{ type: this.token, value: value }]; + }, + nextState: "jsx" + }, + jsxJsRule, + comments("jsxAttributes"), + { + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + token: "text.tag-whitespace.xml", + regex: "\\s+" + }, { + token: "string.attribute-value.xml", + regex: "'", + stateName: "jsx_attr_q", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + stateName: "jsx_attr_qq", + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, + jsxTag + ]; + this.$rules.reference = [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }]; +} +function comments(next) { + return [ + { + token: "comment", + regex: /\/\*/, + next: [ + DocCommentHighlightRules.getTagRule(), + { token: "comment", regex: "\\*\\/", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } + ] + }, { + token: "comment", + regex: "\\/\\/", + next: [ + DocCommentHighlightRules.getTagRule(), + { token: "comment", regex: "$|^", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } + ] + } + ]; +} +exports.JavaScriptHighlightRules = JavaScriptHighlightRules; + +}); + +ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) + return false; + return /^\s*\}/.test(input); + }; + this.autoOutdent = function (doc, row) { + var line = doc.getLine(row); + var match = line.match(/^(\s*\})/); + if (!match) + return 0; + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; + var indent = this.$getIndent(doc.getLine(openBracePos.row)); + doc.replace(new Range(row, 0, row, column - 1), indent); + }; + this.$getIndent = function (line) { + return line.match(/^\s*/)[0]; + }; +}).call(MatchingBraceOutdent.prototype); +exports.MatchingBraceOutdent = MatchingBraceOutdent; + +}); + +ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = JavaScriptHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CstyleBehaviour(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "//"; + this.blockComment = { start: "/*", end: "*/" }; + this.$quotes = { '"': '"', "'": "'", "`": "`" }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + var endState = tokenizedLine.state; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + if (state == "start" || state == "no_regex") { + var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); + if (match) { + indent += tab; + } + } + else if (state == "doc-start") { + if (endState == "start" || endState == "no_regex") { + return ""; + } + var match = line.match(/^\s*(\/?)\*/); + if (match) { + if (match[1]) { + indent += " "; + } + indent += "* "; + } + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.createWorker = function (session) { + var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); + worker.attachToDocument(session.getDocument()); + worker.on("annotate", function (results) { + session.setAnnotations(results.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/javascript"; + this.snippetFileId = "ace/snippets/javascript"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; +var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; +var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; +var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; +var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; +var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; +var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; +var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; +var CssHighlightRules = function () { + var keywordMapper = this.createKeywordMapper({ + "support.function": supportFunction, + "support.constant": supportConstant, + "support.type": supportType, + "support.constant.color": supportConstantColor, + "support.constant.fonts": supportConstantFonts + }, "text", true); + this.$rules = { + "start": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" + }, { + token: "string", + regex: "@(?!viewport)", + next: "media" + }, { + token: "keyword", + regex: "#[a-z0-9-_]+" + }, { + token: "keyword", + regex: "%" + }, { + token: "variable", + regex: "\\.[a-z0-9-_]+" + }, { + token: "string", + regex: ":[a-z0-9-_]+" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant", + regex: "[a-z0-9-_]+" + }, { + caseInsensitive: true + }], + "media": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "start" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + token: "string", + regex: ";", + next: "start" + }, { + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" + }], + "comments": [{ + token: "comment", + regex: "\\/\\*", + push: [{ + token: "comment", + regex: "\\*\\/", + next: "pop" + }, { + defaultToken: "comment" + }] + }], + "ruleset": [{ + regex: "-(webkit|ms|moz|o)-", + token: "text" + }, { + token: "punctuation.operator", + regex: "[:;]" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + include: ["strings", "url", "comments"] + }, { + token: ["constant.numeric", "keyword"], + regex: "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant.numeric", + regex: "#[a-f0-9]{6}" + }, { + token: "constant.numeric", + regex: "#[a-f0-9]{3}" + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"], + regex: pseudoElements + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"], + regex: pseudoClasses + }, { + include: "url" + }, { + token: keywordMapper, + regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" + }, { + caseInsensitive: true + }], + url: [{ + token: "support.function", + regex: "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token: "support.function", + regex: "\\)", + next: "pop" + }, { + defaultToken: "string" + }] + }], + strings: [{ + token: "string.start", + regex: "'", + push: [{ + token: "string.end", + regex: "'|$", + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }, { + token: "string.start", + regex: '"', + push: [{ + token: "string.end", + regex: '"|$', + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], + escapes: [{ + token: "constant.language.escape", + regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ + }] + }; + this.normalizeRules(); +}; +oop.inherits(CssHighlightRules, TextHighlightRules); +exports.CssHighlightRules = CssHighlightRules; + +}); + +ace.define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module){"use strict"; +var propertyMap = { + "background": { "#$0": 1 }, + "background-color": { "#$0": 1, "transparent": 1, "fixed": 1 }, + "background-image": { "url('/$0')": 1 }, + "background-repeat": { "repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1 }, + "background-position": { "bottom": 2, "center": 2, "left": 2, "right": 2, "top": 2, "inherit": 2 }, + "background-attachment": { "scroll": 1, "fixed": 1 }, + "background-size": { "cover": 1, "contain": 1 }, + "background-clip": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "background-origin": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "border": { "solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1 }, + "border-color": { "#$0": 1 }, + "border-style": { "solid": 2, "dashed": 2, "dotted": 2, "double": 2, "groove": 2, "hidden": 2, "inherit": 2, "inset": 2, "none": 2, "outset": 2, "ridged": 2 }, + "border-collapse": { "collapse": 1, "separate": 1 }, + "bottom": { "px": 1, "em": 1, "%": 1 }, + "clear": { "left": 1, "right": 1, "both": 1, "none": 1 }, + "color": { "#$0": 1, "rgb(#$00,0,0)": 1 }, + "cursor": { "default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1 }, + "display": { "none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1 }, + "empty-cells": { "show": 1, "hide": 1 }, + "float": { "left": 1, "right": 1, "none": 1 }, + "font-family": { "Arial": 2, "Comic Sans MS": 2, "Consolas": 2, "Courier New": 2, "Courier": 2, "Georgia": 2, "Monospace": 2, "Sans-Serif": 2, "Segoe UI": 2, "Tahoma": 2, "Times New Roman": 2, "Trebuchet MS": 2, "Verdana": 1 }, + "font-size": { "px": 1, "em": 1, "%": 1 }, + "font-weight": { "bold": 1, "normal": 1 }, + "font-style": { "italic": 1, "normal": 1 }, + "font-variant": { "normal": 1, "small-caps": 1 }, + "height": { "px": 1, "em": 1, "%": 1 }, + "left": { "px": 1, "em": 1, "%": 1 }, + "letter-spacing": { "normal": 1 }, + "line-height": { "normal": 1 }, + "list-style-type": { "none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1 }, + "margin": { "px": 1, "em": 1, "%": 1 }, + "margin-right": { "px": 1, "em": 1, "%": 1 }, + "margin-left": { "px": 1, "em": 1, "%": 1 }, + "margin-top": { "px": 1, "em": 1, "%": 1 }, + "margin-bottom": { "px": 1, "em": 1, "%": 1 }, + "max-height": { "px": 1, "em": 1, "%": 1 }, + "max-width": { "px": 1, "em": 1, "%": 1 }, + "min-height": { "px": 1, "em": 1, "%": 1 }, + "min-width": { "px": 1, "em": 1, "%": 1 }, + "overflow": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-x": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-y": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "padding": { "px": 1, "em": 1, "%": 1 }, + "padding-top": { "px": 1, "em": 1, "%": 1 }, + "padding-right": { "px": 1, "em": 1, "%": 1 }, + "padding-bottom": { "px": 1, "em": 1, "%": 1 }, + "padding-left": { "px": 1, "em": 1, "%": 1 }, + "page-break-after": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "page-break-before": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "position": { "absolute": 1, "relative": 1, "fixed": 1, "static": 1 }, + "right": { "px": 1, "em": 1, "%": 1 }, + "table-layout": { "fixed": 1, "auto": 1 }, + "text-decoration": { "none": 1, "underline": 1, "line-through": 1, "blink": 1 }, + "text-align": { "left": 1, "right": 1, "center": 1, "justify": 1 }, + "text-transform": { "capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1 }, + "top": { "px": 1, "em": 1, "%": 1 }, + "vertical-align": { "top": 1, "bottom": 1 }, + "visibility": { "hidden": 1, "visible": 1 }, + "white-space": { "nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1 }, + "width": { "px": 1, "em": 1, "%": 1 }, + "word-spacing": { "normal": 1 }, + "filter": { "alpha(opacity=$0100)": 1 }, + "text-shadow": { "$02px 2px 2px #777": 1 }, + "text-overflow": { "ellipsis-word": 1, "clip": 1, "ellipsis": 1 }, + "-moz-border-radius": 1, + "-moz-border-radius-topright": 1, + "-moz-border-radius-bottomright": 1, + "-moz-border-radius-topleft": 1, + "-moz-border-radius-bottomleft": 1, + "-webkit-border-radius": 1, + "-webkit-border-top-right-radius": 1, + "-webkit-border-top-left-radius": 1, + "-webkit-border-bottom-right-radius": 1, + "-webkit-border-bottom-left-radius": 1, + "-moz-box-shadow": 1, + "-webkit-box-shadow": 1, + "transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-moz-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-webkit-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 } +}; +var CssCompletions = function () { +}; +(function () { + this.completionsDefined = false; + this.defineCompletions = function () { + if (document) { + var style = document.createElement('c').style; + for (var i in style) { + if (typeof style[i] !== 'string') + continue; + var name = i.replace(/[A-Z]/g, function (x) { + return '-' + x.toLowerCase(); + }); + if (!propertyMap.hasOwnProperty(name)) + propertyMap[name] = 1; + } + } + this.completionsDefined = true; + }; + this.getCompletions = function (state, session, pos, prefix) { + if (!this.completionsDefined) { + this.defineCompletions(); + } + if (state === 'ruleset' || session.$mode.$id == "ace/mode/scss") { + var line = session.getLine(pos.row).substr(0, pos.column); + var inParens = /\([^)]*$/.test(line); + if (inParens) { + line = line.substr(line.lastIndexOf('(') + 1); + } + if (/:[^;]+$/.test(line)) { + /([\w\-]+):[^:]*$/.test(line); + return this.getPropertyValueCompletions(state, session, pos, prefix); + } + else { + return this.getPropertyCompletions(state, session, pos, prefix, inParens); + } + } + return []; + }; + this.getPropertyCompletions = function (state, session, pos, prefix, skipSemicolon) { + skipSemicolon = skipSemicolon || false; + var properties = Object.keys(propertyMap); + return properties.map(function (property) { + return { + caption: property, + snippet: property + ': $0' + (skipSemicolon ? '' : ';'), + meta: "property", + score: 1000000 + }; + }); + }; + this.getPropertyValueCompletions = function (state, session, pos, prefix) { + var line = session.getLine(pos.row).substr(0, pos.column); + var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; + if (!property) + return []; + var values = []; + if (property in propertyMap && typeof propertyMap[property] === "object") { + values = Object.keys(propertyMap[property]); + } + return values.map(function (value) { + return { + caption: value, + snippet: value, + meta: "property value", + score: 1000000 + }; + }); + }; +}).call(CssCompletions.prototype); +exports.CssCompletions = CssCompletions; + +}); + +ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Behaviour = require("../behaviour").Behaviour; +var CstyleBehaviour = require("./cstyle").CstyleBehaviour; +var TokenIterator = require("../../token_iterator").TokenIterator; +var CssBehaviour = function () { + this.inherit(CstyleBehaviour); + this.add("colon", "insertion", function (state, action, editor, session, text) { + if (text === ':' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.value.match(/\s+/)) { + token = iterator.stepBackward(); + } + if (token && token.type === 'support.type') { + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + if (rightChar === ':') { + return { + text: '', + selection: [1, 1] + }; + } + if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { + return { + text: ':;', + selection: [1, 1] + }; + } + } + } + }); + this.add("colon", "deletion", function (state, action, editor, session, range) { + var selected = session.doc.getTextRange(range); + if (!range.isMultiLine() && selected === ':') { + var cursor = editor.getCursorPosition(); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.value.match(/\s+/)) { + token = iterator.stepBackward(); + } + if (token && token.type === 'support.type') { + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.end.column, range.end.column + 1); + if (rightChar === ';') { + range.end.column++; + return range; + } + } + } + }); + this.add("semicolon", "insertion", function (state, action, editor, session, text) { + if (text === ';' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + if (rightChar === ';') { + return { + text: '', + selection: [1, 1] + }; + } + } + }); + this.add("!important", "insertion", function (state, action, editor, session, text) { + if (text === '!' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { + return { + text: '!important', + selection: [10, 10] + }; + } + } + }); +}; +oop.inherits(CssBehaviour, CstyleBehaviour); +exports.CssBehaviour = CssBehaviour; + +}); + +ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var CssCompletions = require("./css_completions").CssCompletions; +var CssBehaviour = require("./behaviour/css").CssBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = CssHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CssBehaviour(); + this.$completer = new CssCompletions(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.foldingRules = "cStyle"; + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokens = this.getTokenizer().getLineTokens(line, state).tokens; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + var match = line.match(/^.*\{\s*$/); + if (match) { + indent += tab; + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.getCompletions = function (state, session, pos, prefix) { + return this.$completer.getCompletions(state, session, pos, prefix); + }; + this.createWorker = function (session) { + var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); + worker.attachToDocument(session.getDocument()); + worker.on("annotate", function (e) { + session.setAnnotations(e.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/css"; + this.snippetFileId = "ace/snippets/css"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var XmlHighlightRules = function (normalize) { + var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; + this.$rules = { + start: [ + { token: "string.cdata.xml", regex: "<\\!\\[CDATA\\[", next: "cdata" }, + { + token: ["punctuation.instruction.xml", "keyword.instruction.xml"], + regex: "(<\\?)(" + tagRegex + ")", next: "processing_instruction" + }, + { token: "comment.start.xml", regex: "<\\!--", next: "comment" }, + { + token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], + regex: "(<\\!)(DOCTYPE)(?=[\\s])", next: "doctype", caseInsensitive: true + }, + { include: "tag" }, + { token: "text.end-tag-open.xml", regex: "", + next: "start" + }], + doctype: [ + { include: "whitespace" }, + { include: "string" }, + { token: "xml-pe.doctype.xml", regex: ">", next: "start" }, + { token: "xml-pe.xml", regex: "[-_a-zA-Z0-9:]+" }, + { token: "punctuation.int-subset", regex: "\\[", push: "int_subset" } + ], + int_subset: [{ + token: "text.xml", + regex: "\\s+" + }, { + token: "punctuation.int-subset.xml", + regex: "]", + next: "pop" + }, { + token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], + regex: "(<\\!)(" + tagRegex + ")", + push: [{ + token: "text", + regex: "\\s+" + }, + { + token: "punctuation.markup-decl.xml", + regex: ">", + next: "pop" + }, + { include: "string" }] + }], + cdata: [ + { token: "string.cdata.xml", regex: "\\]\\]>", next: "start" }, + { token: "text.xml", regex: "\\s+" }, + { token: "text.xml", regex: "(?:[^\\]]|\\](?!\\]>))+" } + ], + comment: [ + { token: "comment.end.xml", regex: "-->", next: "start" }, + { defaultToken: "comment.xml" } + ], + reference: [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + attr_reference: [{ + token: "constant.language.escape.reference.attribute-value.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + tag: [{ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], + regex: "(?:(<)|(", next: "start" } + ] + }], + tag_whitespace: [ + { token: "text.tag-whitespace.xml", regex: "\\s+" } + ], + whitespace: [ + { token: "text.whitespace.xml", regex: "\\s+" } + ], + string: [{ + token: "string.xml", + regex: "'", + push: [ + { token: "string.xml", regex: "'", next: "pop" }, + { defaultToken: "string.xml" } + ] + }, { + token: "string.xml", + regex: '"', + push: [ + { token: "string.xml", regex: '"', next: "pop" }, + { defaultToken: "string.xml" } + ] + }], + attributes: [{ + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + include: "tag_whitespace" + }, { + include: "attribute_value" + }], + attribute_value: [{ + token: "string.attribute-value.xml", + regex: "'", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }] + }; + if (this.constructor === XmlHighlightRules) + this.normalizeRules(); +}; +(function () { + this.embedTagRules = function (HighlightRules, prefix, tag) { + this.$rules.tag.unshift({ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(<)(" + tag + "(?=\\s|>|$))", + next: [ + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: prefix + "start" } + ] + }); + this.$rules[tag + "-end"] = [ + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start", + onMatch: function (value, currentState, stack) { + stack.splice(0); + return this.token; + } } + ]; + this.embedRules(HighlightRules, prefix, [{ + token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(|$))", + next: tag + "-end" + }, { + token: "string.cdata.xml", + regex: "<\\!\\[CDATA\\[" + }, { + token: "string.cdata.xml", + regex: "\\]\\]>" + }]); + }; +}).call(TextHighlightRules.prototype); +oop.inherits(XmlHighlightRules, TextHighlightRules); +exports.XmlHighlightRules = XmlHighlightRules; + +}); + +ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; +var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; +var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; +var tagMap = lang.createMap({ + a: 'anchor', + button: 'form', + form: 'form', + img: 'image', + input: 'form', + label: 'form', + option: 'form', + script: 'script', + select: 'form', + textarea: 'form', + style: 'style', + table: 'table', + tbody: 'table', + td: 'table', + tfoot: 'table', + th: 'table', + tr: 'table' +}); +var HtmlHighlightRules = function () { + XmlHighlightRules.call(this); + this.addRules({ + attributes: [{ + include: "tag_whitespace" + }, { + token: "entity.other.attribute-name.xml", + regex: "[-_a-zA-Z0-9:.]+" + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=", + push: [{ + include: "tag_whitespace" + }, { + token: "string.unquoted.attribute-value.html", + regex: "[^<>='\"`\\s]+", + next: "pop" + }, { + token: "empty", + regex: "", + next: "pop" + }] + }, { + include: "attribute_value" + }], + tag: [{ + token: function (start, tag) { + var group = tagMap[tag]; + return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", + "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; + }, + regex: "(", next: "start" } + ] + }); + this.embedTagRules(CssHighlightRules, "css-", "style"); + this.embedTagRules(new JavaScriptHighlightRules({ jsx: false }).getRules(), "js-", "script"); + if (this.constructor === HtmlHighlightRules) + this.normalizeRules(); +}; +oop.inherits(HtmlHighlightRules, XmlHighlightRules); +exports.HtmlHighlightRules = HtmlHighlightRules; + +}); + +ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Behaviour = require("../behaviour").Behaviour; +var TokenIterator = require("../../token_iterator").TokenIterator; +var lang = require("../../lib/lang"); +function is(token, type) { + return token && token.type.lastIndexOf(type + ".xml") > -1; +} +var XmlBehaviour = function () { + this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { + if (text == '"' || text == "'") { + var quote = text; + var selected = session.doc.getTextRange(editor.getSelectionRange()); + if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { + return { + text: quote + selected + quote, + selection: false + }; + } + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { + return { + text: "", + selection: [1, 1] + }; + } + if (!token) + token = iterator.stepBackward(); + if (!token) + return; + while (is(token, "tag-whitespace") || is(token, "whitespace")) { + token = iterator.stepBackward(); + } + var rightSpace = !rightChar || rightChar.match(/\s/); + if (is(token, "attribute-equals") && (rightSpace || rightChar == '>') || (is(token, "decl-attribute-equals") && (rightSpace || rightChar == '?'))) { + return { + text: quote + quote, + selection: [1, 1] + }; + } + } + }); + this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { + var selected = session.doc.getTextRange(range); + if (!range.isMultiLine() && (selected == '"' || selected == "'")) { + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.start.column + 1, range.start.column + 2); + if (rightChar == selected) { + range.end.column++; + return range; + } + } + }); + this.add("autoclosing", "insertion", function (state, action, editor, session, text) { + if (text == '>') { + var position = editor.getSelectionRange().start; + var iterator = new TokenIterator(session, position.row, position.column); + var token = iterator.getCurrentToken() || iterator.stepBackward(); + if (!token || !(is(token, "tag-name") || is(token, "tag-whitespace") || is(token, "attribute-name") || is(token, "attribute-equals") || is(token, "attribute-value"))) + return; + if (is(token, "reference.attribute-value")) + return; + if (is(token, "attribute-value")) { + var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; + if (position.column < tokenEndColumn) + return; + if (position.column == tokenEndColumn) { + var nextToken = iterator.stepForward(); + if (nextToken && is(nextToken, "attribute-value")) + return; + iterator.stepBackward(); + } + } + if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) + return; + while (!is(token, "tag-name")) { + token = iterator.stepBackward(); + if (token.value == "<") { + token = iterator.stepForward(); + break; + } + } + var tokenRow = iterator.getCurrentTokenRow(); + var tokenColumn = iterator.getCurrentTokenColumn(); + if (is(iterator.stepBackward(), "end-tag-open")) + return; + var element = token.value; + if (tokenRow == position.row) + element = element.substring(0, position.column - tokenColumn); + if (this.voidElements.hasOwnProperty(element.toLowerCase())) + return; + return { + text: ">" + "", + selection: [1, 1] + }; + } + }); + this.add("autoindent", "insertion", function (state, action, editor, session, text) { + if (text == "\n") { + var cursor = editor.getCursorPosition(); + var line = session.getLine(cursor.row); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.type.indexOf("tag-close") !== -1) { + if (token.value == "/>") + return; + while (token && token.type.indexOf("tag-name") === -1) { + token = iterator.stepBackward(); + } + if (!token) { + return; + } + var tag = token.value; + var row = iterator.getCurrentTokenRow(); + token = iterator.stepBackward(); + if (!token || token.type.indexOf("end-tag") !== -1) { + return; + } + if (this.voidElements && !this.voidElements[tag]) { + var nextToken = session.getTokenAt(cursor.row, cursor.column + 1); + var line = session.getLine(row); + var nextIndent = this.$getIndent(line); + var indent = nextIndent + session.getTabString(); + if (nextToken && nextToken.value === " -1; +} +(function () { + this.getFoldWidget = function (session, foldStyle, row) { + var tag = this._getFirstTagInLine(session, row); + if (!tag) + return this.getCommentFoldWidget(session, row); + if (tag.closing || (!tag.tagName && tag.selfClosing)) + return foldStyle === "markbeginend" ? "end" : ""; + if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) + return ""; + if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) + return ""; + return "start"; + }; + this.getCommentFoldWidget = function (session, row) { + if (/comment/.test(session.getState(row)) && /'; + break; + } + } + return tag; + } + else if (is(token, "tag-close")) { + tag.selfClosing = token.value == '/>'; + return tag; + } + tag.start.column += token.value.length; + } + return null; + }; + this._findEndTagInLine = function (session, row, tagName, startColumn) { + var tokens = session.getTokens(row); + var column = 0; + for (var i = 0; i < tokens.length; i++) { + var token = tokens[i]; + column += token.value.length; + if (column < startColumn) + continue; + if (is(token, "end-tag-open")) { + token = tokens[i + 1]; + if (token && token.value == tagName) + return true; + } + } + return false; + }; + this.getFoldWidgetRange = function (session, foldStyle, row) { + var tags = session.getMatchingTags({ row: row, column: 0 }); + if (tags) { + return new Range(tags.openTag.end.row, tags.openTag.end.column, tags.closeTag.start.row, tags.closeTag.start.column); + } + else { + return this.getCommentFoldWidget(session, row) + && session.getCommentFoldRange(row, session.getLine(row).length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var MixedFoldMode = require("./mixed").FoldMode; +var XmlFoldMode = require("./xml").FoldMode; +var CStyleFoldMode = require("./cstyle").FoldMode; +var FoldMode = exports.FoldMode = function (voidElements, optionalTags) { + MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { + "js-": new CStyleFoldMode(), + "css-": new CStyleFoldMode() + }); +}; +oop.inherits(FoldMode, MixedFoldMode); + +}); + +ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module){"use strict"; +var TokenIterator = require("../token_iterator").TokenIterator; +var commonAttributes = [ + "accesskey", + "class", + "contenteditable", + "contextmenu", + "dir", + "draggable", + "dropzone", + "hidden", + "id", + "inert", + "itemid", + "itemprop", + "itemref", + "itemscope", + "itemtype", + "lang", + "spellcheck", + "style", + "tabindex", + "title", + "translate" +]; +var eventAttributes = [ + "onabort", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextmenu", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onmousewheel", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onscroll", + "onseeked", + "onseeking", + "onselect", + "onshow", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "onvolumechange", + "onwaiting" +]; +var globalAttributes = commonAttributes.concat(eventAttributes); +var attributeMap = { + "a": { "href": 1, "target": { "_blank": 1, "top": 1 }, "ping": 1, "rel": { "nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1 }, "media": 1, "hreflang": 1, "type": 1 }, + "abbr": {}, + "address": {}, + "area": { "shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1 }, + "article": { "pubdate": 1 }, + "aside": {}, + "audio": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "b": {}, + "base": { "href": 1, "target": 1 }, + "bdi": {}, + "bdo": {}, + "blockquote": { "cite": 1 }, + "body": { "onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1 }, + "br": {}, + "button": { "autofocus": 1, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": { "button": 1, "submit": 1 } }, + "canvas": { "width": 1, "height": 1 }, + "caption": {}, + "cite": {}, + "code": {}, + "col": { "span": 1 }, + "colgroup": { "span": 1 }, + "command": { "type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1 }, + "data": {}, + "datalist": {}, + "dd": {}, + "del": { "cite": 1, "datetime": 1 }, + "details": { "open": 1 }, + "dfn": {}, + "dialog": { "open": 1 }, + "div": {}, + "dl": {}, + "dt": {}, + "em": {}, + "embed": { "src": 1, "height": 1, "width": 1, "type": 1 }, + "fieldset": { "disabled": 1, "form": 1, "name": 1 }, + "figcaption": {}, + "figure": {}, + "footer": {}, + "form": { "accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": { "multipart/form-data": 1, "application/x-www-form-urlencoded": 1 }, "method": { "get": 1, "post": 1 }, "name": 1, "novalidate": 1, "target": { "_blank": 1, "top": 1 } }, + "h1": {}, + "h2": {}, + "h3": {}, + "h4": {}, + "h5": {}, + "h6": {}, + "head": {}, + "header": {}, + "hr": {}, + "html": { "manifest": 1 }, + "i": {}, + "iframe": { "name": 1, "src": 1, "height": 1, "width": 1, "sandbox": { "allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1 }, "seamless": { "seamless": 1 } }, + "img": { "alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1 }, + "input": { + "type": { "text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1 }, + "accept": 1, "alt": 1, "autocomplete": { "on": 1, "off": 1 }, "autofocus": { "autofocus": 1 }, "checked": { "checked": 1 }, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": { "application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1 }, "formmethod": { "get": 1, "post": 1 }, "formnovalidate": { "formnovalidate": 1 }, "formtarget": { "_blank": 1, "_self": 1, "_parent": 1, "_top": 1 }, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": { "multiple": 1 }, "name": 1, "pattern": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1 + }, + "ins": { "cite": 1, "datetime": 1 }, + "kbd": {}, + "keygen": { "autofocus": 1, "challenge": { "challenge": 1 }, "disabled": { "disabled": 1 }, "form": 1, "keytype": { "rsa": 1, "dsa": 1, "ec": 1 }, "name": 1 }, + "label": { "form": 1, "for": 1 }, + "legend": {}, + "li": { "value": 1 }, + "link": { "href": 1, "hreflang": 1, "rel": { "stylesheet": 1, "icon": 1 }, "media": { "all": 1, "screen": 1, "print": 1 }, "type": { "text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1 }, "sizes": 1 }, + "main": {}, + "map": { "name": 1 }, + "mark": {}, + "math": {}, + "menu": { "type": 1, "label": 1 }, + "meta": { "http-equiv": { "content-type": 1 }, "name": { "description": 1, "keywords": 1 }, "content": { "text/html; charset=UTF-8": 1 }, "charset": 1 }, + "meter": { "value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1 }, + "nav": {}, + "noscript": { "href": 1 }, + "object": { "param": 1, "data": 1, "type": 1, "height": 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1 }, + "ol": { "start": 1, "reversed": 1 }, + "optgroup": { "disabled": 1, "label": 1 }, + "option": { "disabled": 1, "selected": 1, "label": 1, "value": 1 }, + "output": { "for": 1, "form": 1, "name": 1 }, + "p": {}, + "param": { "name": 1, "value": 1 }, + "pre": {}, + "progress": { "value": 1, "max": 1 }, + "q": { "cite": 1 }, + "rp": {}, + "rt": {}, + "ruby": {}, + "s": {}, + "samp": {}, + "script": { "charset": 1, "type": { "text/javascript": 1 }, "src": 1, "defer": 1, "async": 1 }, + "select": { "autofocus": 1, "disabled": 1, "form": 1, "multiple": { "multiple": 1 }, "name": 1, "size": 1, "readonly": { "readonly": 1 } }, + "small": {}, + "source": { "src": 1, "type": 1, "media": 1 }, + "span": {}, + "strong": {}, + "style": { "type": 1, "media": { "all": 1, "screen": 1, "print": 1 }, "scoped": 1 }, + "sub": {}, + "sup": {}, + "svg": {}, + "table": { "summary": 1 }, + "tbody": {}, + "td": { "headers": 1, "rowspan": 1, "colspan": 1 }, + "textarea": { "autofocus": { "autofocus": 1 }, "disabled": { "disabled": 1 }, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "rows": 1, "cols": 1, "wrap": { "on": 1, "off": 1, "hard": 1, "soft": 1 } }, + "tfoot": {}, + "th": { "headers": 1, "rowspan": 1, "colspan": 1, "scope": 1 }, + "thead": {}, + "time": { "datetime": 1 }, + "title": {}, + "tr": {}, + "track": { "kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1 }, + "section": {}, + "summary": {}, + "u": {}, + "ul": {}, + "var": {}, + "video": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "width": 1, "height": 1, "poster": 1, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "wbr": {} +}; +var elements = Object.keys(attributeMap); +function is(token, type) { + return token.type.lastIndexOf(type + ".xml") > -1; +} +function findTagName(session, pos) { + var iterator = new TokenIterator(session, pos.row, pos.column); + var token = iterator.getCurrentToken(); + while (token && !is(token, "tag-name")) { + token = iterator.stepBackward(); + } + if (token) + return token.value; +} +function findAttributeName(session, pos) { + var iterator = new TokenIterator(session, pos.row, pos.column); + var token = iterator.getCurrentToken(); + while (token && !is(token, "attribute-name")) { + token = iterator.stepBackward(); + } + if (token) + return token.value; +} +var HtmlCompletions = function () { +}; +(function () { + this.getCompletions = function (state, session, pos, prefix) { + var token = session.getTokenAt(pos.row, pos.column); + if (!token) + return []; + if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) + return this.getTagCompletions(state, session, pos, prefix); + if (is(token, "tag-whitespace") || is(token, "attribute-name")) + return this.getAttributeCompletions(state, session, pos, prefix); + if (is(token, "attribute-value")) + return this.getAttributeValueCompletions(state, session, pos, prefix); + var line = session.getLine(pos.row).substr(0, pos.column); + if (/&[a-z]*$/i.test(line)) + return this.getHTMLEntityCompletions(state, session, pos, prefix); + return []; + }; + this.getTagCompletions = function (state, session, pos, prefix) { + return elements.map(function (element) { + return { + value: element, + meta: "tag", + score: 1000000 + }; + }); + }; + this.getAttributeCompletions = function (state, session, pos, prefix) { + var tagName = findTagName(session, pos); + if (!tagName) + return []; + var attributes = globalAttributes; + if (tagName in attributeMap) { + attributes = attributes.concat(Object.keys(attributeMap[tagName])); + } + return attributes.map(function (attribute) { + return { + caption: attribute, + snippet: attribute + '="$0"', + meta: "attribute", + score: 1000000 + }; + }); + }; + this.getAttributeValueCompletions = function (state, session, pos, prefix) { + var tagName = findTagName(session, pos); + var attributeName = findAttributeName(session, pos); + if (!tagName) + return []; + var values = []; + if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { + values = Object.keys(attributeMap[tagName][attributeName]); + } + return values.map(function (value) { + return { + caption: value, + snippet: value, + meta: "attribute value", + score: 1000000 + }; + }); + }; + this.getHTMLEntityCompletions = function (state, session, pos, prefix) { + var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;']; + return values.map(function (value) { + return { + caption: value, + snippet: value, + meta: "html entity", + score: 1000000 + }; + }); + }; +}).call(HtmlCompletions.prototype); +exports.HtmlCompletions = HtmlCompletions; + +}); + +ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextMode = require("./text").Mode; +var JavaScriptMode = require("./javascript").Mode; +var CssMode = require("./css").Mode; +var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; +var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; +var HtmlFoldMode = require("./folding/html").FoldMode; +var HtmlCompletions = require("./html_completions").HtmlCompletions; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; +var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; +var Mode = function (options) { + this.fragmentContext = options && options.fragmentContext; + this.HighlightRules = HtmlHighlightRules; + this.$behaviour = new XmlBehaviour(); + this.$completer = new HtmlCompletions(); + this.createModeDelegates({ + "js-": JavaScriptMode, + "css-": CssMode + }); + this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); +}; +oop.inherits(Mode, TextMode); +(function () { + this.blockComment = { start: "" }; + this.voidElements = lang.arrayToMap(voidElements); + this.getNextLineIndent = function (state, line, tab) { + return this.$getIndent(line); + }; + this.checkOutdent = function (state, line, input) { + return false; + }; + this.getCompletions = function (state, session, pos, prefix) { + return this.$completer.getCompletions(state, session, pos, prefix); + }; + this.createWorker = function (session) { + if (this.constructor != Mode) + return; + var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker"); + worker.attachToDocument(session.getDocument()); + if (this.fragmentContext) + worker.call("setOptions", [{ context: this.fragmentContext }]); + worker.on("error", function (e) { + session.setAnnotations(e.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/html"; + this.snippetFileId = "ace/snippets/html"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +ace.define("ace/mode/latte_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var LatteHighlightRules = function () { + HtmlHighlightRules.call(this); + for (var rule in this.$rules) { + this.$rules[rule].unshift({ + token: "comment.start.latte", + regex: "\\{\\*", + push: [{ + token: "comment.end.latte", + regex: ".*\\*\\}", + next: "pop" + }, { + defaultToken: "comment" + }] + }, { + token: "meta.tag.punctuation.tag-open.latte", + regex: "\\{(?![\\s'\"{}]|$)/?", + push: [{ + token: "meta.tag.latte", + regex: "(?:_|=|[a-z]\\w*(?:[.:-]\\w+)*)?", + next: [{ + token: "meta.tag.punctuation.tag-close.latte", + regex: "\\}", + next: "pop" + }, { + include: "latte-content" + }] + }] + }); + } + this.$rules['tag_stuff'].unshift({ + token: "meta.attribute.latte", + regex: "n:[\\w-]+", + next: [{ + include: "tag_whitespace" + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=", + next: [{ + token: "string.attribute-value.xml", + regex: "'", + next: [ + { token: "string.attribute-value.xml", regex: "'", next: "tag_stuff" }, + { include: "latte-content" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + next: [ + { token: "string.attribute-value.xml", regex: '"', next: "tag_stuff" }, + { include: "latte-content" } + ] + }, { + token: "text.tag-whitespace.xml", + regex: "\\s", + next: "tag_stuff" + }, { + token: "meta.tag.punctuation.tag-close.xml", + regex: "/?>", + next: "tag_stuff" + }, { + include: "latte-content" + }] + }, { + token: "empty", + regex: "", + next: "tag_stuff" + }] + }); + this.$rules["latte-content"] = [ + { + token: "comment.start.latte", + regex: "\\/\\*", + push: [ + { + token: "comment.end.latte", + regex: "\\*\\/", + next: "pop" + }, { + defaultToken: "comment" + } + ] + }, { + token: "string.start", + regex: '"', + push: [ + { + token: "constant.language.escape", + regex: '\\\\(?:[nrtvef\\\\"$]|[0-7]{1,3}|x[0-9A-Fa-f]{1,2})' + }, { + token: "variable", + regex: /\$[\w]+(?:\[[\w\]+]|[=\-]>\w+)?/ + }, { + token: "variable", + regex: /\$\{[^"\}]+\}?/ // this is wrong but ok for now + }, + { token: "string.end", regex: '"', next: "pop" }, + { defaultToken: "string" } + ] + }, { + token: "string.start", + regex: "'", + push: [ + { token: "constant.language.escape", regex: /\\['\\]/ }, + { token: "string.end", regex: "'", next: "pop" }, + { defaultToken: "string" } + ] + }, { + token: "keyword.control", + regex: "\\b(?:INF|NAN|and|or|xor|AND|OR|XOR|clone|new|instanceof|return|continue|break|as)\\b" + }, { + token: "constant.language", + regex: "\\b(?:true|false|null|TRUE|FALSE|NULL)\\b" + }, { + token: "variable", + regex: /\$\w+/ + }, { + token: "constant.numeric", + regex: "[+-]?[0-9]+(?:\\.[0-9]+)?(?:e[0-9]+)?" + }, { + token: ["support.class", "keyword.operator"], + regex: "\\b(\\w+)(::)" + }, { + token: "constant.language", + regex: "\\b(?:[A-Z0-9_]+)\\b" + }, { + token: "string.unquoted", + regex: "\\w+(?:-+\\w+)*" + }, { + token: "paren.lparen", + regex: "[[({]" + }, { + token: "paren.rparen", + regex: "[\\])}]" + }, { + token: "keyword.operator", + regex: "::|=>|->|\\?->|\\?\\?->|\\+\\+|--|<<|>>|<=>|<=|>=|===|!==|==|!=|<>|&&|\\|\\||\\?\\?|\\?>|\\*\\*|\\.\\.\\.|[^'\"]" // =>, any char except quotes + } + ]; + this.normalizeRules(); +}; +oop.inherits(LatteHighlightRules, TextHighlightRules); +exports.LatteHighlightRules = LatteHighlightRules; + +}); + +ace.define("ace/mode/latte",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/latte_highlight_rules","ace/mode/matching_brace_outdent"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var HtmlMode = require("./html").Mode; +var LatteHighlightRules = require("./latte_highlight_rules").LatteHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var Mode = function () { + HtmlMode.call(this); + this.HighlightRules = LatteHighlightRules; + this.$outdent = new MatchingBraceOutdent(); +}; +oop.inherits(Mode, HtmlMode); +(function () { + this.blockComment = { start: "{*", end: "*}" }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + if (state == "start") { + var match = line.match(/^.*\{(?:if|else|elseif|ifset|elseifset|ifchanged|switch|case|foreach|iterateWhile|for|while|first|last|sep|try|capture|spaceless|snippet|block|define|embed|snippetArea)\b[^{]*$/); + if (match) { + indent += tab; + } + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return /^\s+\{\/$/.test(line + input); + }; + this.autoOutdent = function (state, doc, row) { + }; + this.$id = "ace/mode/latte"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/latte"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/dde83af0489170bfa8323236b2eb8206.js.gz b/web/dist/dde83af0489170bfa8323236b2eb8206.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..79879140b74928d41f6821c08d5a40d04e01ffbb GIT binary patch literal 22711 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 CG5Co9 literal 0 HcmV?d00001 diff --git a/web/dist/de03b970a689d024ab3383991180d48d.js b/web/dist/de03b970a689d024ab3383991180d48d.js new file mode 100644 index 00000000..905f6c8e --- /dev/null +++ b/web/dist/de03b970a689d024ab3383991180d48d.js @@ -0,0 +1,268 @@ +ace.define("ace/mode/logiql_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){/* THIS FILE WAS AUTOGENERATED FROM tool\LogicBlox.tmbundle\Syntaxes\LogicBlox.tmLanguage (UUID: 59bf5022-e261-453f-b1cb-9f9fa0712413) */ +"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var LogiQLHighlightRules = function () { + this.$rules = { start: [{ token: 'comment.block', + regex: '/\\*', + push: [{ token: 'comment.block', regex: '\\*/', next: 'pop' }, + { defaultToken: 'comment.block' }] + }, + { token: 'comment.single', + regex: '//.*' + }, + { token: 'constant.numeric', + regex: '\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?[fd]?' + }, + { token: 'string', + regex: '"', + push: [{ token: 'string', regex: '"', next: 'pop' }, + { defaultToken: 'string' }] + }, + { token: 'constant.language', + regex: '\\b(true|false)\\b' + }, + { token: 'entity.name.type.logicblox', + regex: '`[a-zA-Z_:]+(\\d|\\a)*\\b' + }, + { token: 'keyword.start', regex: '->', comment: 'Constraint' }, + { token: 'keyword.start', regex: '-->', comment: 'Level 1 Constraint' }, + { token: 'keyword.start', regex: '<-', comment: 'Rule' }, + { token: 'keyword.start', regex: '<--', comment: 'Level 1 Rule' }, + { token: 'keyword.end', regex: '\\.', comment: 'Terminator' }, + { token: 'keyword.other', regex: '!', comment: 'Negation' }, + { token: 'keyword.other', regex: ',', comment: 'Conjunction' }, + { token: 'keyword.other', regex: ';', comment: 'Disjunction' }, + { token: 'keyword.operator', regex: '<=|>=|!=|<|>', comment: 'Equality' }, + { token: 'keyword.other', regex: '@', comment: 'Equality' }, + { token: 'keyword.operator', regex: '\\+|-|\\*|/', comment: 'Arithmetic operations' }, + { token: 'keyword', regex: '::', comment: 'Colon colon' }, + { token: 'support.function', + regex: '\\b(agg\\s*<<)', + push: [{ include: '$self' }, + { token: 'support.function', + regex: '>>', + next: 'pop' }] + }, + { token: 'storage.modifier', + regex: '\\b(lang:[\\w:]*)' + }, + { token: ['storage.type', 'text'], + regex: '(export|sealed|clauses|block|alias|alias_all)(\\s*\\()(?=`)' + }, + { token: 'entity.name', + regex: '[a-zA-Z_][a-zA-Z_0-9:]*(@prev|@init|@final)?(?=(\\(|\\[))' + }, + { token: 'variable.parameter', + regex: '([a-zA-Z][a-zA-Z_0-9]*|_)\\s*(?=(,|\\.|<-|->|\\)|\\]|=))' + }] }; + this.normalizeRules(); +}; +oop.inherits(LogiQLHighlightRules, TextHighlightRules); +exports.LogiQLHighlightRules = LogiQLHighlightRules; + +}); + +ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var BaseFoldMode = require("./fold_mode").FoldMode; +var Range = require("../../range").Range; +var FoldMode = exports.FoldMode = function () { }; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.getFoldWidgetRange = function (session, foldStyle, row) { + var range = this.indentationBlock(session, row); + if (range) + return range; + var re = /\S/; + var line = session.getLine(row); + var startLevel = line.search(re); + if (startLevel == -1 || line[startLevel] != "#") + return; + var startColumn = line.length; + var maxRow = session.getLength(); + var startRow = row; + var endRow = row; + while (++row < maxRow) { + line = session.getLine(row); + var level = line.search(re); + if (level == -1) + continue; + if (line[level] != "#") + break; + endRow = row; + } + if (endRow > startRow) { + var endColumn = session.getLine(endRow).length; + return new Range(startRow, startColumn, endRow, endColumn); + } + }; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + var indent = line.search(/\S/); + var next = session.getLine(row + 1); + var prev = session.getLine(row - 1); + var prevIndent = prev.search(/\S/); + var nextIndent = next.search(/\S/); + if (indent == -1) { + session.foldWidgets[row - 1] = prevIndent != -1 && prevIndent < nextIndent ? "start" : ""; + return ""; + } + if (prevIndent == -1) { + if (indent == nextIndent && line[indent] == "#" && next[indent] == "#") { + session.foldWidgets[row - 1] = ""; + session.foldWidgets[row + 1] = ""; + return "start"; + } + } + else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { + if (session.getLine(row - 2).search(/\S/) == -1) { + session.foldWidgets[row - 1] = "start"; + session.foldWidgets[row + 1] = ""; + return ""; + } + } + if (prevIndent != -1 && prevIndent < indent) + session.foldWidgets[row - 1] = "start"; + else + session.foldWidgets[row - 1] = ""; + if (indent < nextIndent) + return "start"; + else + return ""; + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) + return false; + return /^\s*\}/.test(input); + }; + this.autoOutdent = function (doc, row) { + var line = doc.getLine(row); + var match = line.match(/^(\s*\})/); + if (!match) + return 0; + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; + var indent = this.$getIndent(doc.getLine(openBracePos.row)); + doc.replace(new Range(row, 0, row, column - 1), indent); + }; + this.$getIndent = function (line) { + return line.match(/^\s*/)[0]; + }; +}).call(MatchingBraceOutdent.prototype); +exports.MatchingBraceOutdent = MatchingBraceOutdent; + +}); + +ace.define("ace/mode/logiql",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/logiql_highlight_rules","ace/mode/folding/coffee","ace/token_iterator","ace/range","ace/mode/behaviour/cstyle","ace/mode/matching_brace_outdent"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var LogiQLHighlightRules = require("./logiql_highlight_rules").LogiQLHighlightRules; +var FoldMode = require("./folding/coffee").FoldMode; +var TokenIterator = require("../token_iterator").TokenIterator; +var Range = require("../range").Range; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var Mode = function () { + this.HighlightRules = LogiQLHighlightRules; + this.foldingRules = new FoldMode(); + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CstyleBehaviour(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "//"; + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + var endState = tokenizedLine.state; + if (/comment|string/.test(endState)) + return indent; + if (tokens.length && tokens[tokens.length - 1].type == "comment.single") + return indent; + var match = line.match(); + if (/(-->|<--|<-|->|{)\s*$/.test(line)) + indent += tab; + return indent; + }; + this.checkOutdent = function (state, line, input) { + if (this.$outdent.checkOutdent(line, input)) + return true; + if (input !== "\n" && input !== "\r\n") + return false; + if (!/^\s+/.test(line)) + return false; + return true; + }; + this.autoOutdent = function (state, doc, row) { + if (this.$outdent.autoOutdent(doc, row)) + return; + var prevLine = doc.getLine(row); + var match = prevLine.match(/^\s+/); + var column = prevLine.lastIndexOf(".") + 1; + if (!match || !row || !column) + return 0; + var line = doc.getLine(row + 1); + var startRange = this.getMatching(doc, { row: row, column: column }); + if (!startRange || startRange.start.row == row) + return 0; + column = match[0].length; + var indent = this.$getIndent(doc.getLine(startRange.start.row)); + doc.replace(new Range(row + 1, 0, row + 1, column), indent); + }; + this.getMatching = function (session, row, column) { + if (row == undefined) + row = session.selection.lead; + if (typeof row == "object") { + column = row.column; + row = row.row; + } + var startToken = session.getTokenAt(row, column); + var KW_START = "keyword.start", KW_END = "keyword.end"; + var tok; + if (!startToken) + return; + if (startToken.type == KW_START) { + var it = new TokenIterator(session, row, column); + it.step = it.stepForward; + } + else if (startToken.type == KW_END) { + var it = new TokenIterator(session, row, column); + it.step = it.stepBackward; + } + else + return; + while (tok = it.step()) { + if (tok.type == KW_START || tok.type == KW_END) + break; + } + if (!tok || tok.type == startToken.type) + return; + var col = it.getCurrentTokenColumn(); + var row = it.getCurrentTokenRow(); + return new Range(row, col, row, col + tok.value.length); + }; + this.$id = "ace/mode/logiql"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/logiql"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/de03b970a689d024ab3383991180d48d.js.gz b/web/dist/de03b970a689d024ab3383991180d48d.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..281dbec989e4793966c1c29fa8c3f6ca9480d504 GIT binary patch literal 2703 zcmV;A3UKuwiwFP!000023bk5obK5o&{_bBv^D;H57t&6f-bA+S*oo6-&PjT)1PbmLM%jW8X{l!=0~gtidX^ zp~h@CbjvE&Zc>43SoiP6vM=$f1$i|trd1tA)!}9Q`=X+-Kv6SH?O{iQU%K!U>sieD zAHZriP6yiP0ie1?;XvE-qU92WsWk~A?{=?8M)AKG&Cxx`*^bjubg!~x(WI{&55sME z4Piy_wu)AJ+PbO^{~k05LN^Q2Yo$tUJr;&ZTB?>LemDZ9SIH%CUkJ`#5Owkj3 z!Eg)MrfURlVx)0~@|hbX$b{FH7=g3>^qUpBOJt?rR>;D+%Y&%7ZI*t?4%tdeUujxPbts$)Il>Z@U88vEhi)3hEmTG60>zxNT|w0cG9_G8l{3sVAd-4eT1nF-+rR z_?P+g6QW_k#fdO39`^e$Vco{7RgAvoul&$Y^H)HV-2k8JL$Jhv7$2E!tpEn+yORJ} zD>nv9(njQ?x9?Wg!NBz8i3{NKf8Rx@_En{tcxM7506fXhF?}#u* z14t_L0$sKI5R!qPCWeY(_7pT0hBBsZ)sRwE^Wo0U8b*#@;BwBM-}g{!BB-Kyydj7HJlTROO*K3!cJuu57V6fZ&1-HVaw@b zfHK&iXjW1n6b-2#W=Js%qaD-(jenCExwqm__43z(bD7L>iK7ez!?ARkj0ja=R=mhX zZ;0;bjyH-)dVC!8n4!JRJf>_epUs6`y3Gb{y+`Qgl^l!roFs=CiCUr7)ea)>VugUF7donzb!TLw2{A*or`+5!Q2B~3%R^+O5(C_-ZY zT7d});CQYA<3F}&EdI!%Nt#y%CcDJpFnA5Yqi;@PNwtP0k=J7o$}Gy~c*?kY()m_~noTzE|X%s^d3v zSHh9^Ia`L{NpPfXj`qiuO|RM{LINnts+!%TYHrLL^b6XLd@%Pa;*UzMf+&$d* zDZQc-k`gy`f)?&qKgwd;OE6pH`)ZQk|E`i&d@`$+&;$BdZg40yvZqri7KT)c< zgV^llmKQ^%JVU#X#(AW`yC`{Sj)+S0v5d+*QGUWfhet>NscysQrAZNy4HqUj1-+)X z(pQ+5U}9t2IyXJJ&153{Ct2O@=%nC-$BwPb1>Ogk8|Pg`HUtGJSVzz3)SbwuVQo4m zX;e)8Bu@SBXnH}9&|>;))(+?tCje@`7=zz&s=;IFwdy9Z&YJ^)iEBt;qD z5<^=X61m}@Thh;sVQuIp14+d?s|ayQHazw5>p)zGT|9-p76Ulq)0HnmN>W-12W~>L z!2QP=Bzq`-p}JI2Ud$wSF?+=SQZ;QDq?&*$?tbX~7k@tt@R$DG>%ai@qExCd9opx3y*bkdsKfK_pG5slhK-^xeNc z-&|dvUS8u9TKLZma0)};`G+@r4;(Lg<#ba8ADOs$o0p#uh-`Vd6b7m8oBe{_2((e{ zRq3`I4yzPls?DC>M)92+PY;{!)6~`hB>!jI&Y|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|=" + }, { + token: "paren.lparen", + regex: "[\\(]" + }, { + token: "paren.rparen", + regex: "[\\)]" + }, { + token: "text", + regex: "\\s+" + }] + }; + this.normalizeRules(); +}; +oop.inherits(plsqlHighlightRules, TextHighlightRules); +exports.plsqlHighlightRules = plsqlHighlightRules; + +}); + +ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/folding/sql",["require","exports","module","ace/lib/oop","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var BaseFoldMode = require("./cstyle").FoldMode; +var FoldMode = exports.FoldMode = function () { }; +oop.inherits(FoldMode, BaseFoldMode); +(function () { +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/plsql",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/plsql_highlight_rules","ace/mode/folding/sql"], function(require, exports, module){/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ +"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var PLSqlHighlightRules = require("./plsql_highlight_rules").plsqlHighlightRules; +var FoldMode = require("./folding/sql").FoldMode; +var Mode = function () { + this.HighlightRules = PLSqlHighlightRules; + this.foldingRules = new FoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "--"; + this.blockComment = { start: "/*", end: "*/" }; + this.$id = "ace/mode/plsql"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/plsql"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/de8d05f488f2f27726916d6293e4a59c.js.gz b/web/dist/de8d05f488f2f27726916d6293e4a59c.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..598d89476b75b391ce349dda879f9325847c99b1 GIT binary patch literal 3829 zcmV3=@w>rP_HZ)H_EgzXz23<7F+ z9#cRO3wgxDOYRuy{4RI0r9d~c0<0Ht<_0VhNoaHRX5m(rYFQbTQb{EJTVJAKhVk=W%9l8+!37K!jJajEDS|~v&k8tOi z$#L1{u9`|9f#q|eY{{NLe7H;ifhp~{urF|-(TXs_`ZsLE$)LcGU_5Z}mXqy(9$&r9-jvY`8`($H4XaPlH9AA-nqz1>L8Mn#YFxw?N49U;}ZE{hR@8oW6$+3vI6QRDcSHU8Q7-RN`=wG#JD(A3yJHZ|7vCyk(M zHv7cDqSu7DK+bWE^-j%Zi#q1-CdhAeKh;PA5LVCp*BO8?$POAOjYG3X*vj|F0lH|O zb8`8)-!8Zr{7S^0}JHS+ok^g zS+Aue)oS<6Zuji8-|Dn0Q0+$u0+co|^&nGZr>%4eZFIVy2rtP)3BATX9+`OGB`GRf zXpk&=u!&|r4~8XSBK>7%S=&53ZXKHKrbz%DLiDlKGb>P2t49DWz4FHfmOWFvlSzO! z-EAr9Wma2LN@T6~ta0$6Mf9ie(0s3zT8R>0^C*>mX8k(Nn6RLNB*UuptrA6giUM|A z+TFUe5H`e&?Xfg@l}m;(Pkt2*&`07s%JN>9(%uq$abm0(>(ewkm6X@;Wm%M!EA0Cg z1qFir!f&ob=nw$Xy5~vDLv)h}c(`t)6^53&iz{hG_-{)qmLooK1Ki^)&e7gT+lsif zr`-M`Z4V)vhf&s%w(zVZo>H6m0p1ILhI~n#AmDZ^?a+!a9CE}}G=hebFhuZ`jul%Y z!tHPb>X6#8m3SE79*^k}1X0X&!JBkKF_YW_IAWsY*EXLK!_)&Uh=1q-Hj-l=+fzvi zhHi9mcM?bnj&dSmAt#}Q)hD4yW^!s>B3DSn`5;DokB?j#W1EE%E7k>G5?WyozzMl&lJFz<8*X1c8O0X3jFM4&Gvks}L<&ah;b{t!0MlwH z35ZhMzb1H?Iiz8@hrG1B1Z!Tp{7T&-c}3H3!!neR$TKn%9VM;@1vinyW2i-&Y8(RN z7)h8HfWA*nJ+rnc3pjktD*z-z}EEbm9#D=ax`{5PFYx@AQ{GD z7$iQrF}a3qg$}9|&y6$Nw;~uacRhFkWFz1&F2JT_{ucZXawV+_0u=#DI%+P-R-gw0 zB6lD!5J^Dqz|3$4Yu3HU^3g>-G9+8iykn@unLWfPV;~;@IwR_T6M=FYGA(NK;to~0 zL)gF<=_G*V{w%&3jyy3+ySD0HW8^vxEvSC%hEY6J3X@|`kh{Q5hVeJJ2YGCi`pFRd zPBBS@))ma&jcsd2{t$=y{z^B$=w_rFTYA<6S47O*=#E~>d+xb(=u5X|Oc@dU=i6+Fb75pG0iU;5Uy^ihIB^KeCSM5!%gm_@h1 zB3uEfGT>KA%;;Qef&rP*Oa6(t02_&g6R7}jNzP2qH~!-JQeCg)Oi`i~0fEH=qJ!s6 zAo-!Tf%HL3FnvHF>{-f1)gv5G5Be5`AL^y!zyRkKS7fpwaT_XbBd!X$xp_ns^~m&b zO=U#0Kt}YHoI7?Leks!>BH)Q`q9N6x;GO!)_|Pr{OzwjVfj|t&3sg(ygjPXQyATbY z(m@{)-5ri@G)R!m0r4ZQuwc@}<8z4IlDP*mNj&F-4Fe7$PpwScBV+`&jK2-VcpULq zCa~CKhWeI5lD_faQf96HtVZE`S+lABEz!nmhW$wcKDNF6UcSJ?(e9Fb7GMW(P_(&{o|E%3RZ z<}$hAAdgIU30lQEsltGgzShAKh>mE9YVtBj3y2eoBndgt=EBg){I~p2`TGJ_1hHfP zZe%4%>GfLVt}UR`6#$eKE4e{C%?gHxyp~uKzQ8q47&-8W;?sm1l$`)MSD=Ept+CQP z&4(rIB#~rNRux;%!?c#l^Fp~0sLmJfvcDL4G@xMb@dI5wl9wm>|3Q|Y91NHg# z&c(aIz}YUpdyW5tfq{o=JnqT8w{mY! zKHHOT(0K$wGZct{;i={>=?@0wi$|jkAAq*<7_^kc?i5+Hy@KsRM~GZ72(W!X1^A7t z4OSU(0;AZ}8OWuu!8j@x?89mWdp*od&ohnUom;`%-L0)#%-gbx4rRx}Lv=c-+fjT& z=dF)Eja7Su{K;&Fk=h}>dEl|^L-xY!+u<%PzYe9Tsu*fmL++#Yeh->X=;(53%e7fF4;u3V|K^I@8?F53aUp@_{0josFaAhkpbMio|QKM8G7$! zqy=2LK9J|1dQMHT!R;|=`x9()R{u%QKNBN=(TpB|~ zem);WgDPGPs)PCx5?x>(!;SW7Ti(nVR=DQN8daKz$LIOEuq&n;JCKf!^+#eX7Cpmlqq2OA&ywEC2!fp=E!8^(=Ffp-3g~R(99O2vf!7 z1fI%=l&jQQ){_yQHNKxO41E$(V=pV~bZd;{KB{N9ky5r&#NIx7s&S@x?zhVt+sT{ZZBd}g8%lAMdTJITKox~r z0qy5AwM3jwV^HGs>P5g^LE#^m3dWl1*NY6%ssh4nCbaZ&c{b{$4S0R)T94#;QHaYq z>aM0P%(1+^P1xV0lUD8JK|+}u)&pdcSyToKZ-746%!0_{F>XkW?T2EXZ~a2fM1x76fZkF%iv_Z#gNB@u7cA~G|Q$Mp?IUf2ePjWV&&!me#^>7B-VNX4L zc&g~tG2EZ|wlV*_;ls&dMgRB)^2axjKfZzd@eSmUZy(>H;Sd z)*ZjB-ISxR6= 0 && position.row < docLines.length && + position.column >= 0 && position.column <= docLines[position.row].length; +} +function validateDelta(docLines, delta) { + if (delta.action != "insert" && delta.action != "remove") + throwDeltaError(delta, "delta.action must be 'insert' or 'remove'"); + if (!(delta.lines instanceof Array)) + throwDeltaError(delta, "delta.lines must be an Array"); + if (!delta.start || !delta.end) + throwDeltaError(delta, "delta.start/end must be an present"); + var start = delta.start; + if (!positionInDocument(docLines, delta.start)) + throwDeltaError(delta, "delta.start must be contained in document"); + var end = delta.end; + if (delta.action == "remove" && !positionInDocument(docLines, end)) + throwDeltaError(delta, "delta.end must contained in document for 'remove' actions"); + var numRangeRows = end.row - start.row; + var numRangeLastLineChars = (end.column - (numRangeRows == 0 ? start.column : 0)); + if (numRangeRows != delta.lines.length - 1 || delta.lines[numRangeRows].length != numRangeLastLineChars) + throwDeltaError(delta, "delta.range must match delta lines"); +} +exports.applyDelta = function (docLines, delta, doNotValidate) { + var row = delta.start.row; + var startColumn = delta.start.column; + var line = docLines[row] || ""; + switch (delta.action) { + case "insert": + var lines = delta.lines; + if (lines.length === 1) { + docLines[row] = line.substring(0, startColumn) + delta.lines[0] + line.substring(startColumn); + } + else { + var args = [row, 1].concat(delta.lines); + docLines.splice.apply(docLines, args); + docLines[row] = line.substring(0, startColumn) + docLines[row]; + docLines[row + delta.lines.length - 1] += line.substring(startColumn); + } + break; + case "remove": + var endColumn = delta.end.column; + var endRow = delta.end.row; + if (row === endRow) { + docLines[row] = line.substring(0, startColumn) + line.substring(endColumn); + } + else { + docLines.splice(row, endRow - row + 1, line.substring(0, startColumn) + docLines[endRow].substring(endColumn)); + } + break; + } +}; + +}); + +ace.define("ace/lib/event_emitter",[], function(require, exports, module){"use strict"; +var EventEmitter = {}; +var stopPropagation = function () { this.propagationStopped = true; }; +var preventDefault = function () { this.defaultPrevented = true; }; +EventEmitter._emit = + EventEmitter._dispatchEvent = function (eventName, e) { + this._eventRegistry || (this._eventRegistry = {}); + this._defaultHandlers || (this._defaultHandlers = {}); + var listeners = this._eventRegistry[eventName] || []; + var defaultHandler = this._defaultHandlers[eventName]; + if (!listeners.length && !defaultHandler) + return; + if (typeof e != "object" || !e) + e = {}; + if (!e.type) + e.type = eventName; + if (!e.stopPropagation) + e.stopPropagation = stopPropagation; + if (!e.preventDefault) + e.preventDefault = preventDefault; + listeners = listeners.slice(); + for (var i = 0; i < listeners.length; i++) { + listeners[i](e, this); + if (e.propagationStopped) + break; + } + if (defaultHandler && !e.defaultPrevented) + return defaultHandler(e, this); + }; +EventEmitter._signal = function (eventName, e) { + var listeners = (this._eventRegistry || {})[eventName]; + if (!listeners) + return; + listeners = listeners.slice(); + for (var i = 0; i < listeners.length; i++) + listeners[i](e, this); +}; +EventEmitter.once = function (eventName, callback) { + var _self = this; + this.on(eventName, function newCallback() { + _self.off(eventName, newCallback); + callback.apply(null, arguments); + }); + if (!callback) { + return new Promise(function (resolve) { + callback = resolve; + }); + } +}; +EventEmitter.setDefaultHandler = function (eventName, callback) { + var handlers = this._defaultHandlers; + if (!handlers) + handlers = this._defaultHandlers = { _disabled_: {} }; + if (handlers[eventName]) { + var old = handlers[eventName]; + var disabled = handlers._disabled_[eventName]; + if (!disabled) + handlers._disabled_[eventName] = disabled = []; + disabled.push(old); + var i = disabled.indexOf(callback); + if (i != -1) + disabled.splice(i, 1); + } + handlers[eventName] = callback; +}; +EventEmitter.removeDefaultHandler = function (eventName, callback) { + var handlers = this._defaultHandlers; + if (!handlers) + return; + var disabled = handlers._disabled_[eventName]; + if (handlers[eventName] == callback) { + if (disabled) + this.setDefaultHandler(eventName, disabled.pop()); + } + else if (disabled) { + var i = disabled.indexOf(callback); + if (i != -1) + disabled.splice(i, 1); + } +}; +EventEmitter.on = + EventEmitter.addEventListener = function (eventName, callback, capturing) { + this._eventRegistry = this._eventRegistry || {}; + var listeners = this._eventRegistry[eventName]; + if (!listeners) + listeners = this._eventRegistry[eventName] = []; + if (listeners.indexOf(callback) == -1) + listeners[capturing ? "unshift" : "push"](callback); + return callback; + }; +EventEmitter.off = + EventEmitter.removeListener = + EventEmitter.removeEventListener = function (eventName, callback) { + this._eventRegistry = this._eventRegistry || {}; + var listeners = this._eventRegistry[eventName]; + if (!listeners) + return; + var index = listeners.indexOf(callback); + if (index !== -1) + listeners.splice(index, 1); + }; +EventEmitter.removeAllListeners = function (eventName) { + if (!eventName) + this._eventRegistry = this._defaultHandlers = undefined; + if (this._eventRegistry) + this._eventRegistry[eventName] = undefined; + if (this._defaultHandlers) + this._defaultHandlers[eventName] = undefined; +}; +exports.EventEmitter = EventEmitter; + +}); + +ace.define("ace/range",[], function(require, exports, module){"use strict"; +var comparePoints = function (p1, p2) { + return p1.row - p2.row || p1.column - p2.column; +}; +var Range = function (startRow, startColumn, endRow, endColumn) { + this.start = { + row: startRow, + column: startColumn + }; + this.end = { + row: endRow, + column: endColumn + }; +}; +(function () { + this.isEqual = function (range) { + return this.start.row === range.start.row && + this.end.row === range.end.row && + this.start.column === range.start.column && + this.end.column === range.end.column; + }; + this.toString = function () { + return ("Range: [" + this.start.row + "/" + this.start.column + + "] -> [" + this.end.row + "/" + this.end.column + "]"); + }; + this.contains = function (row, column) { + return this.compare(row, column) == 0; + }; + this.compareRange = function (range) { + var cmp, end = range.end, start = range.start; + cmp = this.compare(end.row, end.column); + if (cmp == 1) { + cmp = this.compare(start.row, start.column); + if (cmp == 1) { + return 2; + } + else if (cmp == 0) { + return 1; + } + else { + return 0; + } + } + else if (cmp == -1) { + return -2; + } + else { + cmp = this.compare(start.row, start.column); + if (cmp == -1) { + return -1; + } + else if (cmp == 1) { + return 42; + } + else { + return 0; + } + } + }; + this.comparePoint = function (p) { + return this.compare(p.row, p.column); + }; + this.containsRange = function (range) { + return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0; + }; + this.intersects = function (range) { + var cmp = this.compareRange(range); + return (cmp == -1 || cmp == 0 || cmp == 1); + }; + this.isEnd = function (row, column) { + return this.end.row == row && this.end.column == column; + }; + this.isStart = function (row, column) { + return this.start.row == row && this.start.column == column; + }; + this.setStart = function (row, column) { + if (typeof row == "object") { + this.start.column = row.column; + this.start.row = row.row; + } + else { + this.start.row = row; + this.start.column = column; + } + }; + this.setEnd = function (row, column) { + if (typeof row == "object") { + this.end.column = row.column; + this.end.row = row.row; + } + else { + this.end.row = row; + this.end.column = column; + } + }; + this.inside = function (row, column) { + if (this.compare(row, column) == 0) { + if (this.isEnd(row, column) || this.isStart(row, column)) { + return false; + } + else { + return true; + } + } + return false; + }; + this.insideStart = function (row, column) { + if (this.compare(row, column) == 0) { + if (this.isEnd(row, column)) { + return false; + } + else { + return true; + } + } + return false; + }; + this.insideEnd = function (row, column) { + if (this.compare(row, column) == 0) { + if (this.isStart(row, column)) { + return false; + } + else { + return true; + } + } + return false; + }; + this.compare = function (row, column) { + if (!this.isMultiLine()) { + if (row === this.start.row) { + return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0); + } + } + if (row < this.start.row) + return -1; + if (row > this.end.row) + return 1; + if (this.start.row === row) + return column >= this.start.column ? 0 : -1; + if (this.end.row === row) + return column <= this.end.column ? 0 : 1; + return 0; + }; + this.compareStart = function (row, column) { + if (this.start.row == row && this.start.column == column) { + return -1; + } + else { + return this.compare(row, column); + } + }; + this.compareEnd = function (row, column) { + if (this.end.row == row && this.end.column == column) { + return 1; + } + else { + return this.compare(row, column); + } + }; + this.compareInside = function (row, column) { + if (this.end.row == row && this.end.column == column) { + return 1; + } + else if (this.start.row == row && this.start.column == column) { + return -1; + } + else { + return this.compare(row, column); + } + }; + this.clipRows = function (firstRow, lastRow) { + if (this.end.row > lastRow) + var end = { row: lastRow + 1, column: 0 }; + else if (this.end.row < firstRow) + var end = { row: firstRow, column: 0 }; + if (this.start.row > lastRow) + var start = { row: lastRow + 1, column: 0 }; + else if (this.start.row < firstRow) + var start = { row: firstRow, column: 0 }; + return Range.fromPoints(start || this.start, end || this.end); + }; + this.extend = function (row, column) { + var cmp = this.compare(row, column); + if (cmp == 0) + return this; + else if (cmp == -1) + var start = { row: row, column: column }; + else + var end = { row: row, column: column }; + return Range.fromPoints(start || this.start, end || this.end); + }; + this.isEmpty = function () { + return (this.start.row === this.end.row && this.start.column === this.end.column); + }; + this.isMultiLine = function () { + return (this.start.row !== this.end.row); + }; + this.clone = function () { + return Range.fromPoints(this.start, this.end); + }; + this.collapseRows = function () { + if (this.end.column == 0) + return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row - 1), 0); + else + return new Range(this.start.row, 0, this.end.row, 0); + }; + this.toScreenRange = function (session) { + var screenPosStart = session.documentToScreenPosition(this.start); + var screenPosEnd = session.documentToScreenPosition(this.end); + return new Range(screenPosStart.row, screenPosStart.column, screenPosEnd.row, screenPosEnd.column); + }; + this.moveBy = function (row, column) { + this.start.row += row; + this.start.column += column; + this.end.row += row; + this.end.column += column; + }; +}).call(Range.prototype); +Range.fromPoints = function (start, end) { + return new Range(start.row, start.column, end.row, end.column); +}; +Range.comparePoints = comparePoints; +Range.comparePoints = function (p1, p2) { + return p1.row - p2.row || p1.column - p2.column; +}; +exports.Range = Range; + +}); + +ace.define("ace/anchor",[], function(require, exports, module){"use strict"; +var oop = require("./lib/oop"); +var EventEmitter = require("./lib/event_emitter").EventEmitter; +var Anchor = exports.Anchor = function (doc, row, column) { + this.$onChange = this.onChange.bind(this); + this.attach(doc); + if (typeof column == "undefined") + this.setPosition(row.row, row.column); + else + this.setPosition(row, column); +}; +(function () { + oop.implement(this, EventEmitter); + this.getPosition = function () { + return this.$clipPositionToDocument(this.row, this.column); + }; + this.getDocument = function () { + return this.document; + }; + this.$insertRight = false; + this.onChange = function (delta) { + if (delta.start.row == delta.end.row && delta.start.row != this.row) + return; + if (delta.start.row > this.row) + return; + var point = $getTransformedPoint(delta, { row: this.row, column: this.column }, this.$insertRight); + this.setPosition(point.row, point.column, true); + }; + function $pointsInOrder(point1, point2, equalPointsInOrder) { + var bColIsAfter = equalPointsInOrder ? point1.column <= point2.column : point1.column < point2.column; + return (point1.row < point2.row) || (point1.row == point2.row && bColIsAfter); + } + function $getTransformedPoint(delta, point, moveIfEqual) { + var deltaIsInsert = delta.action == "insert"; + var deltaRowShift = (deltaIsInsert ? 1 : -1) * (delta.end.row - delta.start.row); + var deltaColShift = (deltaIsInsert ? 1 : -1) * (delta.end.column - delta.start.column); + var deltaStart = delta.start; + var deltaEnd = deltaIsInsert ? deltaStart : delta.end; // Collapse insert range. + if ($pointsInOrder(point, deltaStart, moveIfEqual)) { + return { + row: point.row, + column: point.column + }; + } + if ($pointsInOrder(deltaEnd, point, !moveIfEqual)) { + return { + row: point.row + deltaRowShift, + column: point.column + (point.row == deltaEnd.row ? deltaColShift : 0) + }; + } + return { + row: deltaStart.row, + column: deltaStart.column + }; + } + this.setPosition = function (row, column, noClip) { + var pos; + if (noClip) { + pos = { + row: row, + column: column + }; + } + else { + pos = this.$clipPositionToDocument(row, column); + } + if (this.row == pos.row && this.column == pos.column) + return; + var old = { + row: this.row, + column: this.column + }; + this.row = pos.row; + this.column = pos.column; + this._signal("change", { + old: old, + value: pos + }); + }; + this.detach = function () { + this.document.off("change", this.$onChange); + }; + this.attach = function (doc) { + this.document = doc || this.document; + this.document.on("change", this.$onChange); + }; + this.$clipPositionToDocument = function (row, column) { + var pos = {}; + if (row >= this.document.getLength()) { + pos.row = Math.max(0, this.document.getLength() - 1); + pos.column = this.document.getLine(pos.row).length; + } + else if (row < 0) { + pos.row = 0; + pos.column = 0; + } + else { + pos.row = row; + pos.column = Math.min(this.document.getLine(pos.row).length, Math.max(0, column)); + } + if (column < 0) + pos.column = 0; + return pos; + }; +}).call(Anchor.prototype); + +}); + +ace.define("ace/document",[], function(require, exports, module){"use strict"; +var oop = require("./lib/oop"); +var applyDelta = require("./apply_delta").applyDelta; +var EventEmitter = require("./lib/event_emitter").EventEmitter; +var Range = require("./range").Range; +var Anchor = require("./anchor").Anchor; +var Document = function (textOrLines) { + this.$lines = [""]; + if (textOrLines.length === 0) { + this.$lines = [""]; + } + else if (Array.isArray(textOrLines)) { + this.insertMergedLines({ row: 0, column: 0 }, textOrLines); + } + else { + this.insert({ row: 0, column: 0 }, textOrLines); + } +}; +(function () { + oop.implement(this, EventEmitter); + this.setValue = function (text) { + var len = this.getLength() - 1; + this.remove(new Range(0, 0, len, this.getLine(len).length)); + this.insert({ row: 0, column: 0 }, text || ""); + }; + this.getValue = function () { + return this.getAllLines().join(this.getNewLineCharacter()); + }; + this.createAnchor = function (row, column) { + return new Anchor(this, row, column); + }; + if ("aaa".split(/a/).length === 0) { + this.$split = function (text) { + return text.replace(/\r\n|\r/g, "\n").split("\n"); + }; + } + else { + this.$split = function (text) { + return text.split(/\r\n|\r|\n/); + }; + } + this.$detectNewLine = function (text) { + var match = text.match(/^.*?(\r\n|\r|\n)/m); + this.$autoNewLine = match ? match[1] : "\n"; + this._signal("changeNewLineMode"); + }; + this.getNewLineCharacter = function () { + switch (this.$newLineMode) { + case "windows": + return "\r\n"; + case "unix": + return "\n"; + default: + return this.$autoNewLine || "\n"; + } + }; + this.$autoNewLine = ""; + this.$newLineMode = "auto"; + this.setNewLineMode = function (newLineMode) { + if (this.$newLineMode === newLineMode) + return; + this.$newLineMode = newLineMode; + this._signal("changeNewLineMode"); + }; + this.getNewLineMode = function () { + return this.$newLineMode; + }; + this.isNewLine = function (text) { + return (text == "\r\n" || text == "\r" || text == "\n"); + }; + this.getLine = function (row) { + return this.$lines[row] || ""; + }; + this.getLines = function (firstRow, lastRow) { + return this.$lines.slice(firstRow, lastRow + 1); + }; + this.getAllLines = function () { + return this.getLines(0, this.getLength()); + }; + this.getLength = function () { + return this.$lines.length; + }; + this.getTextRange = function (range) { + return this.getLinesForRange(range).join(this.getNewLineCharacter()); + }; + this.getLinesForRange = function (range) { + var lines; + if (range.start.row === range.end.row) { + lines = [this.getLine(range.start.row).substring(range.start.column, range.end.column)]; + } + else { + lines = this.getLines(range.start.row, range.end.row); + lines[0] = (lines[0] || "").substring(range.start.column); + var l = lines.length - 1; + if (range.end.row - range.start.row == l) + lines[l] = lines[l].substring(0, range.end.column); + } + return lines; + }; + this.insertLines = function (row, lines) { + console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."); + return this.insertFullLines(row, lines); + }; + this.removeLines = function (firstRow, lastRow) { + console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."); + return this.removeFullLines(firstRow, lastRow); + }; + this.insertNewLine = function (position) { + console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."); + return this.insertMergedLines(position, ["", ""]); + }; + this.insert = function (position, text) { + if (this.getLength() <= 1) + this.$detectNewLine(text); + return this.insertMergedLines(position, this.$split(text)); + }; + this.insertInLine = function (position, text) { + var start = this.clippedPos(position.row, position.column); + var end = this.pos(position.row, position.column + text.length); + this.applyDelta({ + start: start, + end: end, + action: "insert", + lines: [text] + }, true); + return this.clonePos(end); + }; + this.clippedPos = function (row, column) { + var length = this.getLength(); + if (row === undefined) { + row = length; + } + else if (row < 0) { + row = 0; + } + else if (row >= length) { + row = length - 1; + column = undefined; + } + var line = this.getLine(row); + if (column == undefined) + column = line.length; + column = Math.min(Math.max(column, 0), line.length); + return { row: row, column: column }; + }; + this.clonePos = function (pos) { + return { row: pos.row, column: pos.column }; + }; + this.pos = function (row, column) { + return { row: row, column: column }; + }; + this.$clipPosition = function (position) { + var length = this.getLength(); + if (position.row >= length) { + position.row = Math.max(0, length - 1); + position.column = this.getLine(length - 1).length; + } + else { + position.row = Math.max(0, position.row); + position.column = Math.min(Math.max(position.column, 0), this.getLine(position.row).length); + } + return position; + }; + this.insertFullLines = function (row, lines) { + row = Math.min(Math.max(row, 0), this.getLength()); + var column = 0; + if (row < this.getLength()) { + lines = lines.concat([""]); + column = 0; + } + else { + lines = [""].concat(lines); + row--; + column = this.$lines[row].length; + } + this.insertMergedLines({ row: row, column: column }, lines); + }; + this.insertMergedLines = function (position, lines) { + var start = this.clippedPos(position.row, position.column); + var end = { + row: start.row + lines.length - 1, + column: (lines.length == 1 ? start.column : 0) + lines[lines.length - 1].length + }; + this.applyDelta({ + start: start, + end: end, + action: "insert", + lines: lines + }); + return this.clonePos(end); + }; + this.remove = function (range) { + var start = this.clippedPos(range.start.row, range.start.column); + var end = this.clippedPos(range.end.row, range.end.column); + this.applyDelta({ + start: start, + end: end, + action: "remove", + lines: this.getLinesForRange({ start: start, end: end }) + }); + return this.clonePos(start); + }; + this.removeInLine = function (row, startColumn, endColumn) { + var start = this.clippedPos(row, startColumn); + var end = this.clippedPos(row, endColumn); + this.applyDelta({ + start: start, + end: end, + action: "remove", + lines: this.getLinesForRange({ start: start, end: end }) + }, true); + return this.clonePos(start); + }; + this.removeFullLines = function (firstRow, lastRow) { + firstRow = Math.min(Math.max(0, firstRow), this.getLength() - 1); + lastRow = Math.min(Math.max(0, lastRow), this.getLength() - 1); + var deleteFirstNewLine = lastRow == this.getLength() - 1 && firstRow > 0; + var deleteLastNewLine = lastRow < this.getLength() - 1; + var startRow = (deleteFirstNewLine ? firstRow - 1 : firstRow); + var startCol = (deleteFirstNewLine ? this.getLine(startRow).length : 0); + var endRow = (deleteLastNewLine ? lastRow + 1 : lastRow); + var endCol = (deleteLastNewLine ? 0 : this.getLine(endRow).length); + var range = new Range(startRow, startCol, endRow, endCol); + var deletedLines = this.$lines.slice(firstRow, lastRow + 1); + this.applyDelta({ + start: range.start, + end: range.end, + action: "remove", + lines: this.getLinesForRange(range) + }); + return deletedLines; + }; + this.removeNewLine = function (row) { + if (row < this.getLength() - 1 && row >= 0) { + this.applyDelta({ + start: this.pos(row, this.getLine(row).length), + end: this.pos(row + 1, 0), + action: "remove", + lines: ["", ""] + }); + } + }; + this.replace = function (range, text) { + if (!(range instanceof Range)) + range = Range.fromPoints(range.start, range.end); + if (text.length === 0 && range.isEmpty()) + return range.start; + if (text == this.getTextRange(range)) + return range.end; + this.remove(range); + var end; + if (text) { + end = this.insert(range.start, text); + } + else { + end = range.start; + } + return end; + }; + this.applyDeltas = function (deltas) { + for (var i = 0; i < deltas.length; i++) { + this.applyDelta(deltas[i]); + } + }; + this.revertDeltas = function (deltas) { + for (var i = deltas.length - 1; i >= 0; i--) { + this.revertDelta(deltas[i]); + } + }; + this.applyDelta = function (delta, doNotValidate) { + var isInsert = delta.action == "insert"; + if (isInsert ? delta.lines.length <= 1 && !delta.lines[0] + : !Range.comparePoints(delta.start, delta.end)) { + return; + } + if (isInsert && delta.lines.length > 20000) { + this.$splitAndapplyLargeDelta(delta, 20000); + } + else { + applyDelta(this.$lines, delta, doNotValidate); + this._signal("change", delta); + } + }; + this.$safeApplyDelta = function (delta) { + var docLength = this.$lines.length; + if (delta.action == "remove" && delta.start.row < docLength && delta.end.row < docLength + || delta.action == "insert" && delta.start.row <= docLength) { + this.applyDelta(delta); + } + }; + this.$splitAndapplyLargeDelta = function (delta, MAX) { + var lines = delta.lines; + var l = lines.length - MAX + 1; + var row = delta.start.row; + var column = delta.start.column; + for (var from = 0, to = 0; from < l; from = to) { + to += MAX - 1; + var chunk = lines.slice(from, to); + chunk.push(""); + this.applyDelta({ + start: this.pos(row + from, column), + end: this.pos(row + to, column = 0), + action: delta.action, + lines: chunk + }, true); + } + delta.lines = lines.slice(from); + delta.start.row = row + from; + delta.start.column = column; + this.applyDelta(delta, true); + }; + this.revertDelta = function (delta) { + this.$safeApplyDelta({ + start: this.clonePos(delta.start), + end: this.clonePos(delta.end), + action: (delta.action == "insert" ? "remove" : "insert"), + lines: delta.lines.slice() + }); + }; + this.indexToPosition = function (index, startRow) { + var lines = this.$lines || this.getAllLines(); + var newlineLength = this.getNewLineCharacter().length; + for (var i = startRow || 0, l = lines.length; i < l; i++) { + index -= lines[i].length + newlineLength; + if (index < 0) + return { row: i, column: index + lines[i].length + newlineLength }; + } + return { row: l - 1, column: index + lines[l - 1].length + newlineLength }; + }; + this.positionToIndex = function (pos, startRow) { + var lines = this.$lines || this.getAllLines(); + var newlineLength = this.getNewLineCharacter().length; + var index = 0; + var row = Math.min(pos.row, lines.length); + for (var i = startRow || 0; i < row; ++i) + index += lines[i].length + newlineLength; + return index + pos.column; + }; +}).call(Document.prototype); +exports.Document = Document; + +}); + +ace.define("ace/lib/lang",[], function(require, exports, module){"use strict"; +exports.last = function (a) { + return a[a.length - 1]; +}; +exports.stringReverse = function (string) { + return string.split("").reverse().join(""); +}; +exports.stringRepeat = function (string, count) { + var result = ''; + while (count > 0) { + if (count & 1) + result += string; + if (count >>= 1) + string += string; + } + return result; +}; +var trimBeginRegexp = /^\s\s*/; +var trimEndRegexp = /\s\s*$/; +exports.stringTrimLeft = function (string) { + return string.replace(trimBeginRegexp, ''); +}; +exports.stringTrimRight = function (string) { + return string.replace(trimEndRegexp, ''); +}; +exports.copyObject = function (obj) { + var copy = {}; + for (var key in obj) { + copy[key] = obj[key]; + } + return copy; +}; +exports.copyArray = function (array) { + var copy = []; + for (var i = 0, l = array.length; i < l; i++) { + if (array[i] && typeof array[i] == "object") + copy[i] = this.copyObject(array[i]); + else + copy[i] = array[i]; + } + return copy; +}; +exports.deepCopy = function deepCopy(obj) { + if (typeof obj !== "object" || !obj) + return obj; + var copy; + if (Array.isArray(obj)) { + copy = []; + for (var key = 0; key < obj.length; key++) { + copy[key] = deepCopy(obj[key]); + } + return copy; + } + if (Object.prototype.toString.call(obj) !== "[object Object]") + return obj; + copy = {}; + for (var key in obj) + copy[key] = deepCopy(obj[key]); + return copy; +}; +exports.arrayToMap = function (arr) { + var map = {}; + for (var i = 0; i < arr.length; i++) { + map[arr[i]] = 1; + } + return map; +}; +exports.createMap = function (props) { + var map = Object.create(null); + for (var i in props) { + map[i] = props[i]; + } + return map; +}; +exports.arrayRemove = function (array, value) { + for (var i = 0; i <= array.length; i++) { + if (value === array[i]) { + array.splice(i, 1); + } + } +}; +exports.escapeRegExp = function (str) { + return str.replace(/([.*+?^${}()|[\]\/\\])/g, '\\$1'); +}; +exports.escapeHTML = function (str) { + return ("" + str).replace(/&/g, "&").replace(/"/g, """).replace(/'/g, "'").replace(/= doc.$lines.length) { + err = new Error("Invalid delta"); + err.data = { + path: _self.$path, + linesLength: doc.$lines.length, + start: d.start, + end: d.end + }; + throw err; + } + + doc.applyDelta(d, true); + } + } + if (_self.$timeout) + return deferredUpdate.schedule(_self.$timeout); + _self.onUpdate(); + }); +}; + +(function() { + + this.$timeout = 500; + + this.setTimeout = function(timeout) { + this.$timeout = timeout; + }; + + this.setValue = function(value) { + this.doc.setValue(value); + this.deferredUpdate.schedule(this.$timeout); + }; + + this.getValue = function(callbackId) { + this.sender.callback(this.doc.getValue(), callbackId); + }; + + this.onUpdate = function() { + }; + + this.isPending = function() { + return this.deferredUpdate.isPending(); + }; + +}).call(Mirror.prototype); + +}); + +ace.define("ace/mode/javascript/jshint",[], function(require, exports, module) { +module.exports = (function outer (modules, cache, entry) { + var previousRequire = typeof require == "function" && require; + function newRequire(name, jumped){ + if(!cache[name]) { + if(!modules[name]) { + var currentRequire = typeof require == "function" && require; + if (!jumped && currentRequire) return currentRequire(name, true); + if (previousRequire) return previousRequire(name, true); + var err = new Error('Cannot find module \'' + name + '\''); + err.code = 'MODULE_NOT_FOUND'; + throw err; + } + var m = cache[name] = {exports:{}}; + modules[name][0].call(m.exports, function(x){ + var id = modules[name][1][x]; + return newRequire(id ? id : x); + },m,m.exports,outer,modules,cache,entry); + } + return cache[name].exports; + } + for(var i=0;i= 65 && i <= 90 || // A-Z + i === 95 || // _ + i >= 97 && i <= 122; // a-z +} + +var identifierPartTable = []; + +for (var i = 0; i < 128; i++) { + identifierPartTable[i] = + identifierStartTable[i] || // $, _, A-Z, a-z + i >= 48 && i <= 57; // 0-9 +} + +module.exports = { + asciiIdentifierStartTable: identifierStartTable, + asciiIdentifierPartTable: identifierPartTable +}; + +},{}],"/../../../jshint/data/es5-identifier-names.js":[function(_dereq_,module,exports){ +module.exports = /^(?:[\$A-Z_a-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u0525\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0621-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971\u0972\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D28\u0D2A-\u0D39\u0D3D\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC\u0EDD\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8B\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10D0-\u10FA\u10FC\u1100-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F0\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u2094\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2D00-\u2D25\u2D30-\u2D65\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31B7\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCB\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA65F\uA662-\uA66E\uA67F-\uA697\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B\uA78C\uA7FB-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA2D\uFA30-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC])(?:[\$0-9A-Z_a-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u0525\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0621-\u065E\u0660-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0900-\u0939\u093C-\u094E\u0950-\u0955\u0958-\u0963\u0966-\u096F\u0971\u0972\u0979-\u097F\u0981-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C01-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58\u0C59\u0C60-\u0C63\u0C66-\u0C6F\u0C82\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0D02\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D28\u0D2A-\u0D39\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D60-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC\u0EDD\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F8B\u0F90-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10D0-\u10FA\u10FC\u1100-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135F\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F0\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17B3\u17B6-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191C\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BAA\u1BAE-\u1BB9\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF2\u1D00-\u1DE6\u1DFD-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u2094\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF1\u2D00-\u2D25\u2D30-\u2D65\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31B7\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCB\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA65F\uA662-\uA66F\uA67C\uA67D\uA67F-\uA697\uA6A0-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B\uA78C\uA7FB-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A\uAA7B\uAA80-\uAAC2\uAADB-\uAADD\uABC0-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA2D\uFA30-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE26\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC])*$/; +},{}],"/../../../jshint/data/non-ascii-identifier-part-only.js":[function(_dereq_,module,exports){ +var str = '183,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,903,1155,1156,1157,1158,1159,1425,1426,1427,1428,1429,1430,1431,1432,1433,1434,1435,1436,1437,1438,1439,1440,1441,1442,1443,1444,1445,1446,1447,1448,1449,1450,1451,1452,1453,1454,1455,1456,1457,1458,1459,1460,1461,1462,1463,1464,1465,1466,1467,1468,1469,1471,1473,1474,1476,1477,1479,1552,1553,1554,1555,1556,1557,1558,1559,1560,1561,1562,1611,1612,1613,1614,1615,1616,1617,1618,1619,1620,1621,1622,1623,1624,1625,1626,1627,1628,1629,1630,1631,1632,1633,1634,1635,1636,1637,1638,1639,1640,1641,1648,1750,1751,1752,1753,1754,1755,1756,1759,1760,1761,1762,1763,1764,1767,1768,1770,1771,1772,1773,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1809,1840,1841,1842,1843,1844,1845,1846,1847,1848,1849,1850,1851,1852,1853,1854,1855,1856,1857,1858,1859,1860,1861,1862,1863,1864,1865,1866,1958,1959,1960,1961,1962,1963,1964,1965,1966,1967,1968,1984,1985,1986,1987,1988,1989,1990,1991,1992,1993,2027,2028,2029,2030,2031,2032,2033,2034,2035,2045,2070,2071,2072,2073,2075,2076,2077,2078,2079,2080,2081,2082,2083,2085,2086,2087,2089,2090,2091,2092,2093,2137,2138,2139,2259,2260,2261,2262,2263,2264,2265,2266,2267,2268,2269,2270,2271,2272,2273,2275,2276,2277,2278,2279,2280,2281,2282,2283,2284,2285,2286,2287,2288,2289,2290,2291,2292,2293,2294,2295,2296,2297,2298,2299,2300,2301,2302,2303,2304,2305,2306,2307,2362,2363,2364,2366,2367,2368,2369,2370,2371,2372,2373,2374,2375,2376,2377,2378,2379,2380,2381,2382,2383,2385,2386,2387,2388,2389,2390,2391,2402,2403,2406,2407,2408,2409,2410,2411,2412,2413,2414,2415,2433,2434,2435,2492,2494,2495,2496,2497,2498,2499,2500,2503,2504,2507,2508,2509,2519,2530,2531,2534,2535,2536,2537,2538,2539,2540,2541,2542,2543,2558,2561,2562,2563,2620,2622,2623,2624,2625,2626,2631,2632,2635,2636,2637,2641,2662,2663,2664,2665,2666,2667,2668,2669,2670,2671,2672,2673,2677,2689,2690,2691,2748,2750,2751,2752,2753,2754,2755,2756,2757,2759,2760,2761,2763,2764,2765,2786,2787,2790,2791,2792,2793,2794,2795,2796,2797,2798,2799,2810,2811,2812,2813,2814,2815,2817,2818,2819,2876,2878,2879,2880,2881,2882,2883,2884,2887,2888,2891,2892,2893,2902,2903,2914,2915,2918,2919,2920,2921,2922,2923,2924,2925,2926,2927,2946,3006,3007,3008,3009,3010,3014,3015,3016,3018,3019,3020,3021,3031,3046,3047,3048,3049,3050,3051,3052,3053,3054,3055,3072,3073,3074,3075,3076,3134,3135,3136,3137,3138,3139,3140,3142,3143,3144,3146,3147,3148,3149,3157,3158,3170,3171,3174,3175,3176,3177,3178,3179,3180,3181,3182,3183,3201,3202,3203,3260,3262,3263,3264,3265,3266,3267,3268,3270,3271,3272,3274,3275,3276,3277,3285,3286,3298,3299,3302,3303,3304,3305,3306,3307,3308,3309,3310,3311,3328,3329,3330,3331,3387,3388,3390,3391,3392,3393,3394,3395,3396,3398,3399,3400,3402,3403,3404,3405,3415,3426,3427,3430,3431,3432,3433,3434,3435,3436,3437,3438,3439,3458,3459,3530,3535,3536,3537,3538,3539,3540,3542,3544,3545,3546,3547,3548,3549,3550,3551,3558,3559,3560,3561,3562,3563,3564,3565,3566,3567,3570,3571,3633,3636,3637,3638,3639,3640,3641,3642,3655,3656,3657,3658,3659,3660,3661,3662,3664,3665,3666,3667,3668,3669,3670,3671,3672,3673,3761,3764,3765,3766,3767,3768,3769,3771,3772,3784,3785,3786,3787,3788,3789,3792,3793,3794,3795,3796,3797,3798,3799,3800,3801,3864,3865,3872,3873,3874,3875,3876,3877,3878,3879,3880,3881,3893,3895,3897,3902,3903,3953,3954,3955,3956,3957,3958,3959,3960,3961,3962,3963,3964,3965,3966,3967,3968,3969,3970,3971,3972,3974,3975,3981,3982,3983,3984,3985,3986,3987,3988,3989,3990,3991,3993,3994,3995,3996,3997,3998,3999,4000,4001,4002,4003,4004,4005,4006,4007,4008,4009,4010,4011,4012,4013,4014,4015,4016,4017,4018,4019,4020,4021,4022,4023,4024,4025,4026,4027,4028,4038,4139,4140,4141,4142,4143,4144,4145,4146,4147,4148,4149,4150,4151,4152,4153,4154,4155,4156,4157,4158,4160,4161,4162,4163,4164,4165,4166,4167,4168,4169,4182,4183,4184,4185,4190,4191,4192,4194,4195,4196,4199,4200,4201,4202,4203,4204,4205,4209,4210,4211,4212,4226,4227,4228,4229,4230,4231,4232,4233,4234,4235,4236,4237,4239,4240,4241,4242,4243,4244,4245,4246,4247,4248,4249,4250,4251,4252,4253,4957,4958,4959,4969,4970,4971,4972,4973,4974,4975,4976,4977,5906,5907,5908,5938,5939,5940,5970,5971,6002,6003,6068,6069,6070,6071,6072,6073,6074,6075,6076,6077,6078,6079,6080,6081,6082,6083,6084,6085,6086,6087,6088,6089,6090,6091,6092,6093,6094,6095,6096,6097,6098,6099,6109,6112,6113,6114,6115,6116,6117,6118,6119,6120,6121,6155,6156,6157,6160,6161,6162,6163,6164,6165,6166,6167,6168,6169,6313,6432,6433,6434,6435,6436,6437,6438,6439,6440,6441,6442,6443,6448,6449,6450,6451,6452,6453,6454,6455,6456,6457,6458,6459,6470,6471,6472,6473,6474,6475,6476,6477,6478,6479,6608,6609,6610,6611,6612,6613,6614,6615,6616,6617,6618,6679,6680,6681,6682,6683,6741,6742,6743,6744,6745,6746,6747,6748,6749,6750,6752,6753,6754,6755,6756,6757,6758,6759,6760,6761,6762,6763,6764,6765,6766,6767,6768,6769,6770,6771,6772,6773,6774,6775,6776,6777,6778,6779,6780,6783,6784,6785,6786,6787,6788,6789,6790,6791,6792,6793,6800,6801,6802,6803,6804,6805,6806,6807,6808,6809,6832,6833,6834,6835,6836,6837,6838,6839,6840,6841,6842,6843,6844,6845,6912,6913,6914,6915,6916,6964,6965,6966,6967,6968,6969,6970,6971,6972,6973,6974,6975,6976,6977,6978,6979,6980,6992,6993,6994,6995,6996,6997,6998,6999,7000,7001,7019,7020,7021,7022,7023,7024,7025,7026,7027,7040,7041,7042,7073,7074,7075,7076,7077,7078,7079,7080,7081,7082,7083,7084,7085,7088,7089,7090,7091,7092,7093,7094,7095,7096,7097,7142,7143,7144,7145,7146,7147,7148,7149,7150,7151,7152,7153,7154,7155,7204,7205,7206,7207,7208,7209,7210,7211,7212,7213,7214,7215,7216,7217,7218,7219,7220,7221,7222,7223,7232,7233,7234,7235,7236,7237,7238,7239,7240,7241,7248,7249,7250,7251,7252,7253,7254,7255,7256,7257,7376,7377,7378,7380,7381,7382,7383,7384,7385,7386,7387,7388,7389,7390,7391,7392,7393,7394,7395,7396,7397,7398,7399,7400,7405,7410,7411,7412,7415,7416,7417,7616,7617,7618,7619,7620,7621,7622,7623,7624,7625,7626,7627,7628,7629,7630,7631,7632,7633,7634,7635,7636,7637,7638,7639,7640,7641,7642,7643,7644,7645,7646,7647,7648,7649,7650,7651,7652,7653,7654,7655,7656,7657,7658,7659,7660,7661,7662,7663,7664,7665,7666,7667,7668,7669,7670,7671,7672,7673,7675,7676,7677,7678,7679,8204,8205,8255,8256,8276,8400,8401,8402,8403,8404,8405,8406,8407,8408,8409,8410,8411,8412,8417,8421,8422,8423,8424,8425,8426,8427,8428,8429,8430,8431,8432,11503,11504,11505,11647,11744,11745,11746,11747,11748,11749,11750,11751,11752,11753,11754,11755,11756,11757,11758,11759,11760,11761,11762,11763,11764,11765,11766,11767,11768,11769,11770,11771,11772,11773,11774,11775,12330,12331,12332,12333,12334,12335,12441,12442,42528,42529,42530,42531,42532,42533,42534,42535,42536,42537,42607,42612,42613,42614,42615,42616,42617,42618,42619,42620,42621,42654,42655,42736,42737,43010,43014,43019,43043,43044,43045,43046,43047,43136,43137,43188,43189,43190,43191,43192,43193,43194,43195,43196,43197,43198,43199,43200,43201,43202,43203,43204,43205,43216,43217,43218,43219,43220,43221,43222,43223,43224,43225,43232,43233,43234,43235,43236,43237,43238,43239,43240,43241,43242,43243,43244,43245,43246,43247,43248,43249,43263,43264,43265,43266,43267,43268,43269,43270,43271,43272,43273,43302,43303,43304,43305,43306,43307,43308,43309,43335,43336,43337,43338,43339,43340,43341,43342,43343,43344,43345,43346,43347,43392,43393,43394,43395,43443,43444,43445,43446,43447,43448,43449,43450,43451,43452,43453,43454,43455,43456,43472,43473,43474,43475,43476,43477,43478,43479,43480,43481,43493,43504,43505,43506,43507,43508,43509,43510,43511,43512,43513,43561,43562,43563,43564,43565,43566,43567,43568,43569,43570,43571,43572,43573,43574,43587,43596,43597,43600,43601,43602,43603,43604,43605,43606,43607,43608,43609,43643,43644,43645,43696,43698,43699,43700,43703,43704,43710,43711,43713,43755,43756,43757,43758,43759,43765,43766,44003,44004,44005,44006,44007,44008,44009,44010,44012,44013,44016,44017,44018,44019,44020,44021,44022,44023,44024,44025,64286,65024,65025,65026,65027,65028,65029,65030,65031,65032,65033,65034,65035,65036,65037,65038,65039,65056,65057,65058,65059,65060,65061,65062,65063,65064,65065,65066,65067,65068,65069,65070,65071,65075,65076,65101,65102,65103,65296,65297,65298,65299,65300,65301,65302,65303,65304,65305,65343'; +var arr = str.split(',').map(function(code) { + return parseInt(code, 10); +}); +module.exports = arr; +},{}],"/../../../jshint/data/non-ascii-identifier-start.js":[function(_dereq_,module,exports){ +var str = '170,181,186,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,710,711,712,713,714,715,716,717,718,719,720,721,736,737,738,739,740,748,750,880,881,882,883,884,886,887,890,891,892,893,895,902,904,905,906,908,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1162,1163,1164,1165,1166,1167,1168,1169,1170,1171,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,1182,1183,1184,1185,1186,1187,1188,1189,1190,1191,1192,1193,1194,1195,1196,1197,1198,1199,1200,1201,1202,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,1217,1218,1219,1220,1221,1222,1223,1224,1225,1226,1227,1228,1229,1230,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,1246,1247,1248,1249,1250,1251,1252,1253,1254,1255,1256,1257,1258,1259,1260,1261,1262,1263,1264,1265,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,1276,1277,1278,1279,1280,1281,1282,1283,1284,1285,1286,1287,1288,1289,1290,1291,1292,1293,1294,1295,1296,1297,1298,1299,1300,1301,1302,1303,1304,1305,1306,1307,1308,1309,1310,1311,1312,1313,1314,1315,1316,1317,1318,1319,1320,1321,1322,1323,1324,1325,1326,1327,1329,1330,1331,1332,1333,1334,1335,1336,1337,1338,1339,1340,1341,1342,1343,1344,1345,1346,1347,1348,1349,1350,1351,1352,1353,1354,1355,1356,1357,1358,1359,1360,1361,1362,1363,1364,1365,1366,1369,1376,1377,1378,1379,1380,1381,1382,1383,1384,1385,1386,1387,1388,1389,1390,1391,1392,1393,1394,1395,1396,1397,1398,1399,1400,1401,1402,1403,1404,1405,1406,1407,1408,1409,1410,1411,1412,1413,1414,1415,1416,1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,1519,1520,1521,1522,1568,1569,1570,1571,1572,1573,1574,1575,1576,1577,1578,1579,1580,1581,1582,1583,1584,1585,1586,1587,1588,1589,1590,1591,1592,1593,1594,1595,1596,1597,1598,1599,1600,1601,1602,1603,1604,1605,1606,1607,1608,1609,1610,1646,1647,1649,1650,1651,1652,1653,1654,1655,1656,1657,1658,1659,1660,1661,1662,1663,1664,1665,1666,1667,1668,1669,1670,1671,1672,1673,1674,1675,1676,1677,1678,1679,1680,1681,1682,1683,1684,1685,1686,1687,1688,1689,1690,1691,1692,1693,1694,1695,1696,1697,1698,1699,1700,1701,1702,1703,1704,1705,1706,1707,1708,1709,1710,1711,1712,1713,1714,1715,1716,1717,1718,1719,1720,1721,1722,1723,1724,1725,1726,1727,1728,1729,1730,1731,1732,1733,1734,1735,1736,1737,1738,1739,1740,1741,1742,1743,1744,1745,1746,1747,1749,1765,1766,1774,1775,1786,1787,1788,1791,1808,1810,1811,1812,1813,1814,1815,1816,1817,1818,1819,1820,1821,1822,1823,1824,1825,1826,1827,1828,1829,1830,1831,1832,1833,1834,1835,1836,1837,1838,1839,1869,1870,1871,1872,1873,1874,1875,1876,1877,1878,1879,1880,1881,1882,1883,1884,1885,1886,1887,1888,1889,1890,1891,1892,1893,1894,1895,1896,1897,1898,1899,1900,1901,1902,1903,1904,1905,1906,1907,1908,1909,1910,1911,1912,1913,1914,1915,1916,1917,1918,1919,1920,1921,1922,1923,1924,1925,1926,1927,1928,1929,1930,1931,1932,1933,1934,1935,1936,1937,1938,1939,1940,1941,1942,1943,1944,1945,1946,1947,1948,1949,1950,1951,1952,1953,1954,1955,1956,1957,1969,1994,1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021,2022,2023,2024,2025,2026,2036,2037,2042,2048,2049,2050,2051,2052,2053,2054,2055,2056,2057,2058,2059,2060,2061,2062,2063,2064,2065,2066,2067,2068,2069,2074,2084,2088,2112,2113,2114,2115,2116,2117,2118,2119,2120,2121,2122,2123,2124,2125,2126,2127,2128,2129,2130,2131,2132,2133,2134,2135,2136,2144,2145,2146,2147,2148,2149,2150,2151,2152,2153,2154,2208,2209,2210,2211,2212,2213,2214,2215,2216,2217,2218,2219,2220,2221,2222,2223,2224,2225,2226,2227,2228,2230,2231,2232,2233,2234,2235,2236,2237,2308,2309,2310,2311,2312,2313,2314,2315,2316,2317,2318,2319,2320,2321,2322,2323,2324,2325,2326,2327,2328,2329,2330,2331,2332,2333,2334,2335,2336,2337,2338,2339,2340,2341,2342,2343,2344,2345,2346,2347,2348,2349,2350,2351,2352,2353,2354,2355,2356,2357,2358,2359,2360,2361,2365,2384,2392,2393,2394,2395,2396,2397,2398,2399,2400,2401,2417,2418,2419,2420,2421,2422,2423,2424,2425,2426,2427,2428,2429,2430,2431,2432,2437,2438,2439,2440,2441,2442,2443,2444,2447,2448,2451,2452,2453,2454,2455,2456,2457,2458,2459,2460,2461,2462,2463,2464,2465,2466,2467,2468,2469,2470,2471,2472,2474,2475,2476,2477,2478,2479,2480,2482,2486,2487,2488,2489,2493,2510,2524,2525,2527,2528,2529,2544,2545,2556,2565,2566,2567,2568,2569,2570,2575,2576,2579,2580,2581,2582,2583,2584,2585,2586,2587,2588,2589,2590,2591,2592,2593,2594,2595,2596,2597,2598,2599,2600,2602,2603,2604,2605,2606,2607,2608,2610,2611,2613,2614,2616,2617,2649,2650,2651,2652,2654,2674,2675,2676,2693,2694,2695,2696,2697,2698,2699,2700,2701,2703,2704,2705,2707,2708,2709,2710,2711,2712,2713,2714,2715,2716,2717,2718,2719,2720,2721,2722,2723,2724,2725,2726,2727,2728,2730,2731,2732,2733,2734,2735,2736,2738,2739,2741,2742,2743,2744,2745,2749,2768,2784,2785,2809,2821,2822,2823,2824,2825,2826,2827,2828,2831,2832,2835,2836,2837,2838,2839,2840,2841,2842,2843,2844,2845,2846,2847,2848,2849,2850,2851,2852,2853,2854,2855,2856,2858,2859,2860,2861,2862,2863,2864,2866,2867,2869,2870,2871,2872,2873,2877,2908,2909,2911,2912,2913,2929,2947,2949,2950,2951,2952,2953,2954,2958,2959,2960,2962,2963,2964,2965,2969,2970,2972,2974,2975,2979,2980,2984,2985,2986,2990,2991,2992,2993,2994,2995,2996,2997,2998,2999,3000,3001,3024,3077,3078,3079,3080,3081,3082,3083,3084,3086,3087,3088,3090,3091,3092,3093,3094,3095,3096,3097,3098,3099,3100,3101,3102,3103,3104,3105,3106,3107,3108,3109,3110,3111,3112,3114,3115,3116,3117,3118,3119,3120,3121,3122,3123,3124,3125,3126,3127,3128,3129,3133,3160,3161,3162,3168,3169,3200,3205,3206,3207,3208,3209,3210,3211,3212,3214,3215,3216,3218,3219,3220,3221,3222,3223,3224,3225,3226,3227,3228,3229,3230,3231,3232,3233,3234,3235,3236,3237,3238,3239,3240,3242,3243,3244,3245,3246,3247,3248,3249,3250,3251,3253,3254,3255,3256,3257,3261,3294,3296,3297,3313,3314,3333,3334,3335,3336,3337,3338,3339,3340,3342,3343,3344,3346,3347,3348,3349,3350,3351,3352,3353,3354,3355,3356,3357,3358,3359,3360,3361,3362,3363,3364,3365,3366,3367,3368,3369,3370,3371,3372,3373,3374,3375,3376,3377,3378,3379,3380,3381,3382,3383,3384,3385,3386,3389,3406,3412,3413,3414,3423,3424,3425,3450,3451,3452,3453,3454,3455,3461,3462,3463,3464,3465,3466,3467,3468,3469,3470,3471,3472,3473,3474,3475,3476,3477,3478,3482,3483,3484,3485,3486,3487,3488,3489,3490,3491,3492,3493,3494,3495,3496,3497,3498,3499,3500,3501,3502,3503,3504,3505,3507,3508,3509,3510,3511,3512,3513,3514,3515,3517,3520,3521,3522,3523,3524,3525,3526,3585,3586,3587,3588,3589,3590,3591,3592,3593,3594,3595,3596,3597,3598,3599,3600,3601,3602,3603,3604,3605,3606,3607,3608,3609,3610,3611,3612,3613,3614,3615,3616,3617,3618,3619,3620,3621,3622,3623,3624,3625,3626,3627,3628,3629,3630,3631,3632,3634,3635,3648,3649,3650,3651,3652,3653,3654,3713,3714,3716,3719,3720,3722,3725,3732,3733,3734,3735,3737,3738,3739,3740,3741,3742,3743,3745,3746,3747,3749,3751,3754,3755,3757,3758,3759,3760,3762,3763,3773,3776,3777,3778,3779,3780,3782,3804,3805,3806,3807,3840,3904,3905,3906,3907,3908,3909,3910,3911,3913,3914,3915,3916,3917,3918,3919,3920,3921,3922,3923,3924,3925,3926,3927,3928,3929,3930,3931,3932,3933,3934,3935,3936,3937,3938,3939,3940,3941,3942,3943,3944,3945,3946,3947,3948,3976,3977,3978,3979,3980,4096,4097,4098,4099,4100,4101,4102,4103,4104,4105,4106,4107,4108,4109,4110,4111,4112,4113,4114,4115,4116,4117,4118,4119,4120,4121,4122,4123,4124,4125,4126,4127,4128,4129,4130,4131,4132,4133,4134,4135,4136,4137,4138,4159,4176,4177,4178,4179,4180,4181,4186,4187,4188,4189,4193,4197,4198,4206,4207,4208,4213,4214,4215,4216,4217,4218,4219,4220,4221,4222,4223,4224,4225,4238,4256,4257,4258,4259,4260,4261,4262,4263,4264,4265,4266,4267,4268,4269,4270,4271,4272,4273,4274,4275,4276,4277,4278,4279,4280,4281,4282,4283,4284,4285,4286,4287,4288,4289,4290,4291,4292,4293,4295,4301,4304,4305,4306,4307,4308,4309,4310,4311,4312,4313,4314,4315,4316,4317,4318,4319,4320,4321,4322,4323,4324,4325,4326,4327,4328,4329,4330,4331,4332,4333,4334,4335,4336,4337,4338,4339,4340,4341,4342,4343,4344,4345,4346,4348,4349,4350,4351,4352,4353,4354,4355,4356,4357,4358,4359,4360,4361,4362,4363,4364,4365,4366,4367,4368,4369,4370,4371,4372,4373,4374,4375,4376,4377,4378,4379,4380,4381,4382,4383,4384,4385,4386,4387,4388,4389,4390,4391,4392,4393,4394,4395,4396,4397,4398,4399,4400,4401,4402,4403,4404,4405,4406,4407,4408,4409,4410,4411,4412,4413,4414,4415,4416,4417,4418,4419,4420,4421,4422,4423,4424,4425,4426,4427,4428,4429,4430,4431,4432,4433,4434,4435,4436,4437,4438,4439,4440,4441,4442,4443,4444,4445,4446,4447,4448,4449,4450,4451,4452,4453,4454,4455,4456,4457,4458,4459,4460,4461,4462,4463,4464,4465,4466,4467,4468,4469,4470,4471,4472,4473,4474,4475,4476,4477,4478,4479,4480,4481,4482,4483,4484,4485,4486,4487,4488,4489,4490,4491,4492,4493,4494,4495,4496,4497,4498,4499,4500,4501,4502,4503,4504,4505,4506,4507,4508,4509,4510,4511,4512,4513,4514,4515,4516,4517,4518,4519,4520,4521,4522,4523,4524,4525,4526,4527,4528,4529,4530,4531,4532,4533,4534,4535,4536,4537,4538,4539,4540,4541,4542,4543,4544,4545,4546,4547,4548,4549,4550,4551,4552,4553,4554,4555,4556,4557,4558,4559,4560,4561,4562,4563,4564,4565,4566,4567,4568,4569,4570,4571,4572,4573,4574,4575,4576,4577,4578,4579,4580,4581,4582,4583,4584,4585,4586,4587,4588,4589,4590,4591,4592,4593,4594,4595,4596,4597,4598,4599,4600,4601,4602,4603,4604,4605,4606,4607,4608,4609,4610,4611,4612,4613,4614,4615,4616,4617,4618,4619,4620,4621,4622,4623,4624,4625,4626,4627,4628,4629,4630,4631,4632,4633,4634,4635,4636,4637,4638,4639,4640,4641,4642,4643,4644,4645,4646,4647,4648,4649,4650,4651,4652,4653,4654,4655,4656,4657,4658,4659,4660,4661,4662,4663,4664,4665,4666,4667,4668,4669,4670,4671,4672,4673,4674,4675,4676,4677,4678,4679,4680,4682,4683,4684,4685,4688,4689,4690,4691,4692,4693,4694,4696,4698,4699,4700,4701,4704,4705,4706,4707,4708,4709,4710,4711,4712,4713,4714,4715,4716,4717,4718,4719,4720,4721,4722,4723,4724,4725,4726,4727,4728,4729,4730,4731,4732,4733,4734,4735,4736,4737,4738,4739,4740,4741,4742,4743,4744,4746,4747,4748,4749,4752,4753,4754,4755,4756,4757,4758,4759,4760,4761,4762,4763,4764,4765,4766,4767,4768,4769,4770,4771,4772,4773,4774,4775,4776,4777,4778,4779,4780,4781,4782,4783,4784,4786,4787,4788,4789,4792,4793,4794,4795,4796,4797,4798,4800,4802,4803,4804,4805,4808,4809,4810,4811,4812,4813,4814,4815,4816,4817,4818,4819,4820,4821,4822,4824,4825,4826,4827,4828,4829,4830,4831,4832,4833,4834,4835,4836,4837,4838,4839,4840,4841,4842,4843,4844,4845,4846,4847,4848,4849,4850,4851,4852,4853,4854,4855,4856,4857,4858,4859,4860,4861,4862,4863,4864,4865,4866,4867,4868,4869,4870,4871,4872,4873,4874,4875,4876,4877,4878,4879,4880,4882,4883,4884,4885,4888,4889,4890,4891,4892,4893,4894,4895,4896,4897,4898,4899,4900,4901,4902,4903,4904,4905,4906,4907,4908,4909,4910,4911,4912,4913,4914,4915,4916,4917,4918,4919,4920,4921,4922,4923,4924,4925,4926,4927,4928,4929,4930,4931,4932,4933,4934,4935,4936,4937,4938,4939,4940,4941,4942,4943,4944,4945,4946,4947,4948,4949,4950,4951,4952,4953,4954,4992,4993,4994,4995,4996,4997,4998,4999,5000,5001,5002,5003,5004,5005,5006,5007,5024,5025,5026,5027,5028,5029,5030,5031,5032,5033,5034,5035,5036,5037,5038,5039,5040,5041,5042,5043,5044,5045,5046,5047,5048,5049,5050,5051,5052,5053,5054,5055,5056,5057,5058,5059,5060,5061,5062,5063,5064,5065,5066,5067,5068,5069,5070,5071,5072,5073,5074,5075,5076,5077,5078,5079,5080,5081,5082,5083,5084,5085,5086,5087,5088,5089,5090,5091,5092,5093,5094,5095,5096,5097,5098,5099,5100,5101,5102,5103,5104,5105,5106,5107,5108,5109,5112,5113,5114,5115,5116,5117,5121,5122,5123,5124,5125,5126,5127,5128,5129,5130,5131,5132,5133,5134,5135,5136,5137,5138,5139,5140,5141,5142,5143,5144,5145,5146,5147,5148,5149,5150,5151,5152,5153,5154,5155,5156,5157,5158,5159,5160,5161,5162,5163,5164,5165,5166,5167,5168,5169,5170,5171,5172,5173,5174,5175,5176,5177,5178,5179,5180,5181,5182,5183,5184,5185,5186,5187,5188,5189,5190,5191,5192,5193,5194,5195,5196,5197,5198,5199,5200,5201,5202,5203,5204,5205,5206,5207,5208,5209,5210,5211,5212,5213,5214,5215,5216,5217,5218,5219,5220,5221,5222,5223,5224,5225,5226,5227,5228,5229,5230,5231,5232,5233,5234,5235,5236,5237,5238,5239,5240,5241,5242,5243,5244,5245,5246,5247,5248,5249,5250,5251,5252,5253,5254,5255,5256,5257,5258,5259,5260,5261,5262,5263,5264,5265,5266,5267,5268,5269,5270,5271,5272,5273,5274,5275,5276,5277,5278,5279,5280,5281,5282,5283,5284,5285,5286,5287,5288,5289,5290,5291,5292,5293,5294,5295,5296,5297,5298,5299,5300,5301,5302,5303,5304,5305,5306,5307,5308,5309,5310,5311,5312,5313,5314,5315,5316,5317,5318,5319,5320,5321,5322,5323,5324,5325,5326,5327,5328,5329,5330,5331,5332,5333,5334,5335,5336,5337,5338,5339,5340,5341,5342,5343,5344,5345,5346,5347,5348,5349,5350,5351,5352,5353,5354,5355,5356,5357,5358,5359,5360,5361,5362,5363,5364,5365,5366,5367,5368,5369,5370,5371,5372,5373,5374,5375,5376,5377,5378,5379,5380,5381,5382,5383,5384,5385,5386,5387,5388,5389,5390,5391,5392,5393,5394,5395,5396,5397,5398,5399,5400,5401,5402,5403,5404,5405,5406,5407,5408,5409,5410,5411,5412,5413,5414,5415,5416,5417,5418,5419,5420,5421,5422,5423,5424,5425,5426,5427,5428,5429,5430,5431,5432,5433,5434,5435,5436,5437,5438,5439,5440,5441,5442,5443,5444,5445,5446,5447,5448,5449,5450,5451,5452,5453,5454,5455,5456,5457,5458,5459,5460,5461,5462,5463,5464,5465,5466,5467,5468,5469,5470,5471,5472,5473,5474,5475,5476,5477,5478,5479,5480,5481,5482,5483,5484,5485,5486,5487,5488,5489,5490,5491,5492,5493,5494,5495,5496,5497,5498,5499,5500,5501,5502,5503,5504,5505,5506,5507,5508,5509,5510,5511,5512,5513,5514,5515,5516,5517,5518,5519,5520,5521,5522,5523,5524,5525,5526,5527,5528,5529,5530,5531,5532,5533,5534,5535,5536,5537,5538,5539,5540,5541,5542,5543,5544,5545,5546,5547,5548,5549,5550,5551,5552,5553,5554,5555,5556,5557,5558,5559,5560,5561,5562,5563,5564,5565,5566,5567,5568,5569,5570,5571,5572,5573,5574,5575,5576,5577,5578,5579,5580,5581,5582,5583,5584,5585,5586,5587,5588,5589,5590,5591,5592,5593,5594,5595,5596,5597,5598,5599,5600,5601,5602,5603,5604,5605,5606,5607,5608,5609,5610,5611,5612,5613,5614,5615,5616,5617,5618,5619,5620,5621,5622,5623,5624,5625,5626,5627,5628,5629,5630,5631,5632,5633,5634,5635,5636,5637,5638,5639,5640,5641,5642,5643,5644,5645,5646,5647,5648,5649,5650,5651,5652,5653,5654,5655,5656,5657,5658,5659,5660,5661,5662,5663,5664,5665,5666,5667,5668,5669,5670,5671,5672,5673,5674,5675,5676,5677,5678,5679,5680,5681,5682,5683,5684,5685,5686,5687,5688,5689,5690,5691,5692,5693,5694,5695,5696,5697,5698,5699,5700,5701,5702,5703,5704,5705,5706,5707,5708,5709,5710,5711,5712,5713,5714,5715,5716,5717,5718,5719,5720,5721,5722,5723,5724,5725,5726,5727,5728,5729,5730,5731,5732,5733,5734,5735,5736,5737,5738,5739,5740,5743,5744,5745,5746,5747,5748,5749,5750,5751,5752,5753,5754,5755,5756,5757,5758,5759,5761,5762,5763,5764,5765,5766,5767,5768,5769,5770,5771,5772,5773,5774,5775,5776,5777,5778,5779,5780,5781,5782,5783,5784,5785,5786,5792,5793,5794,5795,5796,5797,5798,5799,5800,5801,5802,5803,5804,5805,5806,5807,5808,5809,5810,5811,5812,5813,5814,5815,5816,5817,5818,5819,5820,5821,5822,5823,5824,5825,5826,5827,5828,5829,5830,5831,5832,5833,5834,5835,5836,5837,5838,5839,5840,5841,5842,5843,5844,5845,5846,5847,5848,5849,5850,5851,5852,5853,5854,5855,5856,5857,5858,5859,5860,5861,5862,5863,5864,5865,5866,5870,5871,5872,5873,5874,5875,5876,5877,5878,5879,5880,5888,5889,5890,5891,5892,5893,5894,5895,5896,5897,5898,5899,5900,5902,5903,5904,5905,5920,5921,5922,5923,5924,5925,5926,5927,5928,5929,5930,5931,5932,5933,5934,5935,5936,5937,5952,5953,5954,5955,5956,5957,5958,5959,5960,5961,5962,5963,5964,5965,5966,5967,5968,5969,5984,5985,5986,5987,5988,5989,5990,5991,5992,5993,5994,5995,5996,5998,5999,6000,6016,6017,6018,6019,6020,6021,6022,6023,6024,6025,6026,6027,6028,6029,6030,6031,6032,6033,6034,6035,6036,6037,6038,6039,6040,6041,6042,6043,6044,6045,6046,6047,6048,6049,6050,6051,6052,6053,6054,6055,6056,6057,6058,6059,6060,6061,6062,6063,6064,6065,6066,6067,6103,6108,6176,6177,6178,6179,6180,6181,6182,6183,6184,6185,6186,6187,6188,6189,6190,6191,6192,6193,6194,6195,6196,6197,6198,6199,6200,6201,6202,6203,6204,6205,6206,6207,6208,6209,6210,6211,6212,6213,6214,6215,6216,6217,6218,6219,6220,6221,6222,6223,6224,6225,6226,6227,6228,6229,6230,6231,6232,6233,6234,6235,6236,6237,6238,6239,6240,6241,6242,6243,6244,6245,6246,6247,6248,6249,6250,6251,6252,6253,6254,6255,6256,6257,6258,6259,6260,6261,6262,6263,6264,6272,6273,6274,6275,6276,6277,6278,6279,6280,6281,6282,6283,6284,6285,6286,6287,6288,6289,6290,6291,6292,6293,6294,6295,6296,6297,6298,6299,6300,6301,6302,6303,6304,6305,6306,6307,6308,6309,6310,6311,6312,6314,6320,6321,6322,6323,6324,6325,6326,6327,6328,6329,6330,6331,6332,6333,6334,6335,6336,6337,6338,6339,6340,6341,6342,6343,6344,6345,6346,6347,6348,6349,6350,6351,6352,6353,6354,6355,6356,6357,6358,6359,6360,6361,6362,6363,6364,6365,6366,6367,6368,6369,6370,6371,6372,6373,6374,6375,6376,6377,6378,6379,6380,6381,6382,6383,6384,6385,6386,6387,6388,6389,6400,6401,6402,6403,6404,6405,6406,6407,6408,6409,6410,6411,6412,6413,6414,6415,6416,6417,6418,6419,6420,6421,6422,6423,6424,6425,6426,6427,6428,6429,6430,6480,6481,6482,6483,6484,6485,6486,6487,6488,6489,6490,6491,6492,6493,6494,6495,6496,6497,6498,6499,6500,6501,6502,6503,6504,6505,6506,6507,6508,6509,6512,6513,6514,6515,6516,6528,6529,6530,6531,6532,6533,6534,6535,6536,6537,6538,6539,6540,6541,6542,6543,6544,6545,6546,6547,6548,6549,6550,6551,6552,6553,6554,6555,6556,6557,6558,6559,6560,6561,6562,6563,6564,6565,6566,6567,6568,6569,6570,6571,6576,6577,6578,6579,6580,6581,6582,6583,6584,6585,6586,6587,6588,6589,6590,6591,6592,6593,6594,6595,6596,6597,6598,6599,6600,6601,6656,6657,6658,6659,6660,6661,6662,6663,6664,6665,6666,6667,6668,6669,6670,6671,6672,6673,6674,6675,6676,6677,6678,6688,6689,6690,6691,6692,6693,6694,6695,6696,6697,6698,6699,6700,6701,6702,6703,6704,6705,6706,6707,6708,6709,6710,6711,6712,6713,6714,6715,6716,6717,6718,6719,6720,6721,6722,6723,6724,6725,6726,6727,6728,6729,6730,6731,6732,6733,6734,6735,6736,6737,6738,6739,6740,6823,6917,6918,6919,6920,6921,6922,6923,6924,6925,6926,6927,6928,6929,6930,6931,6932,6933,6934,6935,6936,6937,6938,6939,6940,6941,6942,6943,6944,6945,6946,6947,6948,6949,6950,6951,6952,6953,6954,6955,6956,6957,6958,6959,6960,6961,6962,6963,6981,6982,6983,6984,6985,6986,6987,7043,7044,7045,7046,7047,7048,7049,7050,7051,7052,7053,7054,7055,7056,7057,7058,7059,7060,7061,7062,7063,7064,7065,7066,7067,7068,7069,7070,7071,7072,7086,7087,7098,7099,7100,7101,7102,7103,7104,7105,7106,7107,7108,7109,7110,7111,7112,7113,7114,7115,7116,7117,7118,7119,7120,7121,7122,7123,7124,7125,7126,7127,7128,7129,7130,7131,7132,7133,7134,7135,7136,7137,7138,7139,7140,7141,7168,7169,7170,7171,7172,7173,7174,7175,7176,7177,7178,7179,7180,7181,7182,7183,7184,7185,7186,7187,7188,7189,7190,7191,7192,7193,7194,7195,7196,7197,7198,7199,7200,7201,7202,7203,7245,7246,7247,7258,7259,7260,7261,7262,7263,7264,7265,7266,7267,7268,7269,7270,7271,7272,7273,7274,7275,7276,7277,7278,7279,7280,7281,7282,7283,7284,7285,7286,7287,7288,7289,7290,7291,7292,7293,7296,7297,7298,7299,7300,7301,7302,7303,7304,7312,7313,7314,7315,7316,7317,7318,7319,7320,7321,7322,7323,7324,7325,7326,7327,7328,7329,7330,7331,7332,7333,7334,7335,7336,7337,7338,7339,7340,7341,7342,7343,7344,7345,7346,7347,7348,7349,7350,7351,7352,7353,7354,7357,7358,7359,7401,7402,7403,7404,7406,7407,7408,7409,7413,7414,7424,7425,7426,7427,7428,7429,7430,7431,7432,7433,7434,7435,7436,7437,7438,7439,7440,7441,7442,7443,7444,7445,7446,7447,7448,7449,7450,7451,7452,7453,7454,7455,7456,7457,7458,7459,7460,7461,7462,7463,7464,7465,7466,7467,7468,7469,7470,7471,7472,7473,7474,7475,7476,7477,7478,7479,7480,7481,7482,7483,7484,7485,7486,7487,7488,7489,7490,7491,7492,7493,7494,7495,7496,7497,7498,7499,7500,7501,7502,7503,7504,7505,7506,7507,7508,7509,7510,7511,7512,7513,7514,7515,7516,7517,7518,7519,7520,7521,7522,7523,7524,7525,7526,7527,7528,7529,7530,7531,7532,7533,7534,7535,7536,7537,7538,7539,7540,7541,7542,7543,7544,7545,7546,7547,7548,7549,7550,7551,7552,7553,7554,7555,7556,7557,7558,7559,7560,7561,7562,7563,7564,7565,7566,7567,7568,7569,7570,7571,7572,7573,7574,7575,7576,7577,7578,7579,7580,7581,7582,7583,7584,7585,7586,7587,7588,7589,7590,7591,7592,7593,7594,7595,7596,7597,7598,7599,7600,7601,7602,7603,7604,7605,7606,7607,7608,7609,7610,7611,7612,7613,7614,7615,7680,7681,7682,7683,7684,7685,7686,7687,7688,7689,7690,7691,7692,7693,7694,7695,7696,7697,7698,7699,7700,7701,7702,7703,7704,7705,7706,7707,7708,7709,7710,7711,7712,7713,7714,7715,7716,7717,7718,7719,7720,7721,7722,7723,7724,7725,7726,7727,7728,7729,7730,7731,7732,7733,7734,7735,7736,7737,7738,7739,7740,7741,7742,7743,7744,7745,7746,7747,7748,7749,7750,7751,7752,7753,7754,7755,7756,7757,7758,7759,7760,7761,7762,7763,7764,7765,7766,7767,7768,7769,7770,7771,7772,7773,7774,7775,7776,7777,7778,7779,7780,7781,7782,7783,7784,7785,7786,7787,7788,7789,7790,7791,7792,7793,7794,7795,7796,7797,7798,7799,7800,7801,7802,7803,7804,7805,7806,7807,7808,7809,7810,7811,7812,7813,7814,7815,7816,7817,7818,7819,7820,7821,7822,7823,7824,7825,7826,7827,7828,7829,7830,7831,7832,7833,7834,7835,7836,7837,7838,7839,7840,7841,7842,7843,7844,7845,7846,7847,7848,7849,7850,7851,7852,7853,7854,7855,7856,7857,7858,7859,7860,7861,7862,7863,7864,7865,7866,7867,7868,7869,7870,7871,7872,7873,7874,7875,7876,7877,7878,7879,7880,7881,7882,7883,7884,7885,7886,7887,7888,7889,7890,7891,7892,7893,7894,7895,7896,7897,7898,7899,7900,7901,7902,7903,7904,7905,7906,7907,7908,7909,7910,7911,7912,7913,7914,7915,7916,7917,7918,7919,7920,7921,7922,7923,7924,7925,7926,7927,7928,7929,7930,7931,7932,7933,7934,7935,7936,7937,7938,7939,7940,7941,7942,7943,7944,7945,7946,7947,7948,7949,7950,7951,7952,7953,7954,7955,7956,7957,7960,7961,7962,7963,7964,7965,7968,7969,7970,7971,7972,7973,7974,7975,7976,7977,7978,7979,7980,7981,7982,7983,7984,7985,7986,7987,7988,7989,7990,7991,7992,7993,7994,7995,7996,7997,7998,7999,8000,8001,8002,8003,8004,8005,8008,8009,8010,8011,8012,8013,8016,8017,8018,8019,8020,8021,8022,8023,8025,8027,8029,8031,8032,8033,8034,8035,8036,8037,8038,8039,8040,8041,8042,8043,8044,8045,8046,8047,8048,8049,8050,8051,8052,8053,8054,8055,8056,8057,8058,8059,8060,8061,8064,8065,8066,8067,8068,8069,8070,8071,8072,8073,8074,8075,8076,8077,8078,8079,8080,8081,8082,8083,8084,8085,8086,8087,8088,8089,8090,8091,8092,8093,8094,8095,8096,8097,8098,8099,8100,8101,8102,8103,8104,8105,8106,8107,8108,8109,8110,8111,8112,8113,8114,8115,8116,8118,8119,8120,8121,8122,8123,8124,8126,8130,8131,8132,8134,8135,8136,8137,8138,8139,8140,8144,8145,8146,8147,8150,8151,8152,8153,8154,8155,8160,8161,8162,8163,8164,8165,8166,8167,8168,8169,8170,8171,8172,8178,8179,8180,8182,8183,8184,8185,8186,8187,8188,8305,8319,8336,8337,8338,8339,8340,8341,8342,8343,8344,8345,8346,8347,8348,8450,8455,8458,8459,8460,8461,8462,8463,8464,8465,8466,8467,8469,8472,8473,8474,8475,8476,8477,8484,8486,8488,8490,8491,8492,8493,8494,8495,8496,8497,8498,8499,8500,8501,8502,8503,8504,8505,8508,8509,8510,8511,8517,8518,8519,8520,8521,8526,8544,8545,8546,8547,8548,8549,8550,8551,8552,8553,8554,8555,8556,8557,8558,8559,8560,8561,8562,8563,8564,8565,8566,8567,8568,8569,8570,8571,8572,8573,8574,8575,8576,8577,8578,8579,8580,8581,8582,8583,8584,11264,11265,11266,11267,11268,11269,11270,11271,11272,11273,11274,11275,11276,11277,11278,11279,11280,11281,11282,11283,11284,11285,11286,11287,11288,11289,11290,11291,11292,11293,11294,11295,11296,11297,11298,11299,11300,11301,11302,11303,11304,11305,11306,11307,11308,11309,11310,11312,11313,11314,11315,11316,11317,11318,11319,11320,11321,11322,11323,11324,11325,11326,11327,11328,11329,11330,11331,11332,11333,11334,11335,11336,11337,11338,11339,11340,11341,11342,11343,11344,11345,11346,11347,11348,11349,11350,11351,11352,11353,11354,11355,11356,11357,11358,11360,11361,11362,11363,11364,11365,11366,11367,11368,11369,11370,11371,11372,11373,11374,11375,11376,11377,11378,11379,11380,11381,11382,11383,11384,11385,11386,11387,11388,11389,11390,11391,11392,11393,11394,11395,11396,11397,11398,11399,11400,11401,11402,11403,11404,11405,11406,11407,11408,11409,11410,11411,11412,11413,11414,11415,11416,11417,11418,11419,11420,11421,11422,11423,11424,11425,11426,11427,11428,11429,11430,11431,11432,11433,11434,11435,11436,11437,11438,11439,11440,11441,11442,11443,11444,11445,11446,11447,11448,11449,11450,11451,11452,11453,11454,11455,11456,11457,11458,11459,11460,11461,11462,11463,11464,11465,11466,11467,11468,11469,11470,11471,11472,11473,11474,11475,11476,11477,11478,11479,11480,11481,11482,11483,11484,11485,11486,11487,11488,11489,11490,11491,11492,11499,11500,11501,11502,11506,11507,11520,11521,11522,11523,11524,11525,11526,11527,11528,11529,11530,11531,11532,11533,11534,11535,11536,11537,11538,11539,11540,11541,11542,11543,11544,11545,11546,11547,11548,11549,11550,11551,11552,11553,11554,11555,11556,11557,11559,11565,11568,11569,11570,11571,11572,11573,11574,11575,11576,11577,11578,11579,11580,11581,11582,11583,11584,11585,11586,11587,11588,11589,11590,11591,11592,11593,11594,11595,11596,11597,11598,11599,11600,11601,11602,11603,11604,11605,11606,11607,11608,11609,11610,11611,11612,11613,11614,11615,11616,11617,11618,11619,11620,11621,11622,11623,11631,11648,11649,11650,11651,11652,11653,11654,11655,11656,11657,11658,11659,11660,11661,11662,11663,11664,11665,11666,11667,11668,11669,11670,11680,11681,11682,11683,11684,11685,11686,11688,11689,11690,11691,11692,11693,11694,11696,11697,11698,11699,11700,11701,11702,11704,11705,11706,11707,11708,11709,11710,11712,11713,11714,11715,11716,11717,11718,11720,11721,11722,11723,11724,11725,11726,11728,11729,11730,11731,11732,11733,11734,11736,11737,11738,11739,11740,11741,11742,12293,12294,12295,12321,12322,12323,12324,12325,12326,12327,12328,12329,12337,12338,12339,12340,12341,12344,12345,12346,12347,12348,12353,12354,12355,12356,12357,12358,12359,12360,12361,12362,12363,12364,12365,12366,12367,12368,12369,12370,12371,12372,12373,12374,12375,12376,12377,12378,12379,12380,12381,12382,12383,12384,12385,12386,12387,12388,12389,12390,12391,12392,12393,12394,12395,12396,12397,12398,12399,12400,12401,12402,12403,12404,12405,12406,12407,12408,12409,12410,12411,12412,12413,12414,12415,12416,12417,12418,12419,12420,12421,12422,12423,12424,12425,12426,12427,12428,12429,12430,12431,12432,12433,12434,12435,12436,12437,12438,12443,12444,12445,12446,12447,12449,12450,12451,12452,12453,12454,12455,12456,12457,12458,12459,12460,12461,12462,12463,12464,12465,12466,12467,12468,12469,12470,12471,12472,12473,12474,12475,12476,12477,12478,12479,12480,12481,12482,12483,12484,12485,12486,12487,12488,12489,12490,12491,12492,12493,12494,12495,12496,12497,12498,12499,12500,12501,12502,12503,12504,12505,12506,12507,12508,12509,12510,12511,12512,12513,12514,12515,12516,12517,12518,12519,12520,12521,12522,12523,12524,12525,12526,12527,12528,12529,12530,12531,12532,12533,12534,12535,12536,12537,12538,12540,12541,12542,12543,12549,12550,12551,12552,12553,12554,12555,12556,12557,12558,12559,12560,12561,12562,12563,12564,12565,12566,12567,12568,12569,12570,12571,12572,12573,12574,12575,12576,12577,12578,12579,12580,12581,12582,12583,12584,12585,12586,12587,12588,12589,12590,12591,12593,12594,12595,12596,12597,12598,12599,12600,12601,12602,12603,12604,12605,12606,12607,12608,12609,12610,12611,12612,12613,12614,12615,12616,12617,12618,12619,12620,12621,12622,12623,12624,12625,12626,12627,12628,12629,12630,12631,12632,12633,12634,12635,12636,12637,12638,12639,12640,12641,12642,12643,12644,12645,12646,12647,12648,12649,12650,12651,12652,12653,12654,12655,12656,12657,12658,12659,12660,12661,12662,12663,12664,12665,12666,12667,12668,12669,12670,12671,12672,12673,12674,12675,12676,12677,12678,12679,12680,12681,12682,12683,12684,12685,12686,12704,12705,12706,12707,12708,12709,12710,12711,12712,12713,12714,12715,12716,12717,12718,12719,12720,12721,12722,12723,12724,12725,12726,12727,12728,12729,12730,12784,12785,12786,12787,12788,12789,12790,12791,12792,12793,12794,12795,12796,12797,12798,12799,13312,13313,13314,13315,13316,13317,13318,13319,13320,13321,13322,13323,13324,13325,13326,13327,13328,13329,13330,13331,13332,13333,13334,13335,13336,13337,13338,13339,13340,13341,13342,13343,13344,13345,13346,13347,13348,13349,13350,13351,13352,13353,13354,13355,13356,13357,13358,13359,13360,13361,13362,13363,13364,13365,13366,13367,13368,13369,13370,13371,13372,13373,13374,13375,13376,13377,13378,13379,13380,13381,13382,13383,13384,13385,13386,13387,13388,13389,13390,13391,13392,13393,13394,13395,13396,13397,13398,13399,13400,13401,13402,13403,13404,13405,13406,13407,13408,13409,13410,13411,13412,13413,13414,13415,13416,13417,13418,13419,13420,13421,13422,13423,13424,13425,13426,13427,13428,13429,13430,13431,13432,13433,13434,13435,13436,13437,13438,13439,13440,13441,13442,13443,13444,13445,13446,13447,13448,13449,13450,13451,13452,13453,13454,13455,13456,13457,13458,13459,13460,13461,13462,13463,13464,13465,13466,13467,13468,13469,13470,13471,13472,13473,13474,13475,13476,13477,13478,13479,13480,13481,13482,13483,13484,13485,13486,13487,13488,13489,13490,13491,13492,13493,13494,13495,13496,13497,13498,13499,13500,13501,13502,13503,13504,13505,13506,13507,13508,13509,13510,13511,13512,13513,13514,13515,13516,13517,13518,13519,13520,13521,13522,13523,13524,13525,13526,13527,13528,13529,13530,13531,13532,13533,13534,13535,13536,13537,13538,13539,13540,13541,13542,13543,13544,13545,13546,13547,13548,13549,13550,13551,13552,13553,13554,13555,13556,13557,13558,13559,13560,13561,13562,13563,13564,13565,13566,13567,13568,13569,13570,13571,13572,13573,13574,13575,13576,13577,13578,13579,13580,13581,13582,13583,13584,13585,13586,13587,13588,13589,13590,13591,13592,13593,13594,13595,13596,13597,13598,13599,13600,13601,13602,13603,13604,13605,13606,13607,13608,13609,13610,13611,13612,13613,13614,13615,13616,13617,13618,13619,13620,13621,13622,13623,13624,13625,13626,13627,13628,13629,13630,13631,13632,13633,13634,13635,13636,13637,13638,13639,13640,13641,13642,13643,13644,13645,13646,13647,13648,13649,13650,13651,13652,13653,13654,13655,13656,13657,13658,13659,13660,13661,13662,13663,13664,13665,13666,13667,13668,13669,13670,13671,13672,13673,13674,13675,13676,13677,13678,13679,13680,13681,13682,13683,13684,13685,13686,13687,13688,13689,13690,13691,13692,13693,13694,13695,13696,13697,13698,13699,13700,13701,13702,13703,13704,13705,13706,13707,13708,13709,13710,13711,13712,13713,13714,13715,13716,13717,13718,13719,13720,13721,13722,13723,13724,13725,13726,13727,13728,13729,13730,13731,13732,13733,13734,13735,13736,13737,13738,13739,13740,13741,13742,13743,13744,13745,13746,13747,13748,13749,13750,13751,13752,13753,13754,13755,13756,13757,13758,13759,13760,13761,13762,13763,13764,13765,13766,13767,13768,13769,13770,13771,13772,13773,13774,13775,13776,13777,13778,13779,13780,13781,13782,13783,13784,13785,13786,13787,13788,13789,13790,13791,13792,13793,13794,13795,13796,13797,13798,13799,13800,13801,13802,13803,13804,13805,13806,13807,13808,13809,13810,13811,13812,13813,13814,13815,13816,13817,13818,13819,13820,13821,13822,13823,13824,13825,13826,13827,13828,13829,13830,13831,13832,13833,13834,13835,13836,13837,13838,13839,13840,13841,13842,13843,13844,13845,13846,13847,13848,13849,13850,13851,13852,13853,13854,13855,13856,13857,13858,13859,13860,13861,13862,13863,13864,13865,13866,13867,13868,13869,13870,13871,13872,13873,13874,13875,13876,13877,13878,13879,13880,13881,13882,13883,13884,13885,13886,13887,13888,13889,13890,13891,13892,13893,13894,13895,13896,13897,13898,13899,13900,13901,13902,13903,13904,13905,13906,13907,13908,13909,13910,13911,13912,13913,13914,13915,13916,13917,13918,13919,13920,13921,13922,13923,13924,13925,13926,13927,13928,13929,13930,13931,13932,13933,13934,13935,13936,13937,13938,13939,13940,13941,13942,13943,13944,13945,13946,13947,13948,13949,13950,13951,13952,13953,13954,13955,13956,13957,13958,13959,13960,13961,13962,13963,13964,13965,13966,13967,13968,13969,13970,13971,13972,13973,13974,13975,13976,13977,13978,13979,13980,13981,13982,13983,13984,13985,13986,13987,13988,13989,13990,13991,13992,13993,13994,13995,13996,13997,13998,13999,14000,14001,14002,14003,14004,14005,14006,14007,14008,14009,14010,14011,14012,14013,14014,14015,14016,14017,14018,14019,14020,14021,14022,14023,14024,14025,14026,14027,14028,14029,14030,14031,14032,14033,14034,14035,14036,14037,14038,14039,14040,14041,14042,14043,14044,14045,14046,14047,14048,14049,14050,14051,14052,14053,14054,14055,14056,14057,14058,14059,14060,14061,14062,14063,14064,14065,14066,14067,14068,14069,14070,14071,14072,14073,14074,14075,14076,14077,14078,14079,14080,14081,14082,14083,14084,14085,14086,14087,14088,14089,14090,14091,14092,14093,14094,14095,14096,14097,14098,14099,14100,14101,14102,14103,14104,14105,14106,14107,14108,14109,14110,14111,14112,14113,14114,14115,14116,14117,14118,14119,14120,14121,14122,14123,14124,14125,14126,14127,14128,14129,14130,14131,14132,14133,14134,14135,14136,14137,14138,14139,14140,14141,14142,14143,14144,14145,14146,14147,14148,14149,14150,14151,14152,14153,14154,14155,14156,14157,14158,14159,14160,14161,14162,14163,14164,14165,14166,14167,14168,14169,14170,14171,14172,14173,14174,14175,14176,14177,14178,14179,14180,14181,14182,14183,14184,14185,14186,14187,14188,14189,14190,14191,14192,14193,14194,14195,14196,14197,14198,14199,14200,14201,14202,14203,14204,14205,14206,14207,14208,14209,14210,14211,14212,14213,14214,14215,14216,14217,14218,14219,14220,14221,14222,14223,14224,14225,14226,14227,14228,14229,14230,14231,14232,14233,14234,14235,14236,14237,14238,14239,14240,14241,14242,14243,14244,14245,14246,14247,14248,14249,14250,14251,14252,14253,14254,14255,14256,14257,14258,14259,14260,14261,14262,14263,14264,14265,14266,14267,14268,14269,14270,14271,14272,14273,14274,14275,14276,14277,14278,14279,14280,14281,14282,14283,14284,14285,14286,14287,14288,14289,14290,14291,14292,14293,14294,14295,14296,14297,14298,14299,14300,14301,14302,14303,14304,14305,14306,14307,14308,14309,14310,14311,14312,14313,14314,14315,14316,14317,14318,14319,14320,14321,14322,14323,14324,14325,14326,14327,14328,14329,14330,14331,14332,14333,14334,14335,14336,14337,14338,14339,14340,14341,14342,14343,14344,14345,14346,14347,14348,14349,14350,14351,14352,14353,14354,14355,14356,14357,14358,14359,14360,14361,14362,14363,14364,14365,14366,14367,14368,14369,14370,14371,14372,14373,14374,14375,14376,14377,14378,14379,14380,14381,14382,14383,14384,14385,14386,14387,14388,14389,14390,14391,14392,14393,14394,14395,14396,14397,14398,14399,14400,14401,14402,14403,14404,14405,14406,14407,14408,14409,14410,14411,14412,14413,14414,14415,14416,14417,14418,14419,14420,14421,14422,14423,14424,14425,14426,14427,14428,14429,14430,14431,14432,14433,14434,14435,14436,14437,14438,14439,14440,14441,14442,14443,14444,14445,14446,14447,14448,14449,14450,14451,14452,14453,14454,14455,14456,14457,14458,14459,14460,14461,14462,14463,14464,14465,14466,14467,14468,14469,14470,14471,14472,14473,14474,14475,14476,14477,14478,14479,14480,14481,14482,14483,14484,14485,14486,14487,14488,14489,14490,14491,14492,14493,14494,14495,14496,14497,14498,14499,14500,14501,14502,14503,14504,14505,14506,14507,14508,14509,14510,14511,14512,14513,14514,14515,14516,14517,14518,14519,14520,14521,14522,14523,14524,14525,14526,14527,14528,14529,14530,14531,14532,14533,14534,14535,14536,14537,14538,14539,14540,14541,14542,14543,14544,14545,14546,14547,14548,14549,14550,14551,14552,14553,14554,14555,14556,14557,14558,14559,14560,14561,14562,14563,14564,14565,14566,14567,14568,14569,14570,14571,14572,14573,14574,14575,14576,14577,14578,14579,14580,14581,14582,14583,14584,14585,14586,14587,14588,14589,14590,14591,14592,14593,14594,14595,14596,14597,14598,14599,14600,14601,14602,14603,14604,14605,14606,14607,14608,14609,14610,14611,14612,14613,14614,14615,14616,14617,14618,14619,14620,14621,14622,14623,14624,14625,14626,14627,14628,14629,14630,14631,14632,14633,14634,14635,14636,14637,14638,14639,14640,14641,14642,14643,14644,14645,14646,14647,14648,14649,14650,14651,14652,14653,14654,14655,14656,14657,14658,14659,14660,14661,14662,14663,14664,14665,14666,14667,14668,14669,14670,14671,14672,14673,14674,14675,14676,14677,14678,14679,14680,14681,14682,14683,14684,14685,14686,14687,14688,14689,14690,14691,14692,14693,14694,14695,14696,14697,14698,14699,14700,14701,14702,14703,14704,14705,14706,14707,14708,14709,14710,14711,14712,14713,14714,14715,14716,14717,14718,14719,14720,14721,14722,14723,14724,14725,14726,14727,14728,14729,14730,14731,14732,14733,14734,14735,14736,14737,14738,14739,14740,14741,14742,14743,14744,14745,14746,14747,14748,14749,14750,14751,14752,14753,14754,14755,14756,14757,14758,14759,14760,14761,14762,14763,14764,14765,14766,14767,14768,14769,14770,14771,14772,14773,14774,14775,14776,14777,14778,14779,14780,14781,14782,14783,14784,14785,14786,14787,14788,14789,14790,14791,14792,14793,14794,14795,14796,14797,14798,14799,14800,14801,14802,14803,14804,14805,14806,14807,14808,14809,14810,14811,14812,14813,14814,14815,14816,14817,14818,14819,14820,14821,14822,14823,14824,14825,14826,14827,14828,14829,14830,14831,14832,14833,14834,14835,14836,14837,14838,14839,14840,14841,14842,14843,14844,14845,14846,14847,14848,14849,14850,14851,14852,14853,14854,14855,14856,14857,14858,14859,14860,14861,14862,14863,14864,14865,14866,14867,14868,14869,14870,14871,14872,14873,14874,14875,14876,14877,14878,14879,14880,14881,14882,14883,14884,14885,14886,14887,14888,14889,14890,14891,14892,14893,14894,14895,14896,14897,14898,14899,14900,14901,14902,14903,14904,14905,14906,14907,14908,14909,14910,14911,14912,14913,14914,14915,14916,14917,14918,14919,14920,14921,14922,14923,14924,14925,14926,14927,14928,14929,14930,14931,14932,14933,14934,14935,14936,14937,14938,14939,14940,14941,14942,14943,14944,14945,14946,14947,14948,14949,14950,14951,14952,14953,14954,14955,14956,14957,14958,14959,14960,14961,14962,14963,14964,14965,14966,14967,14968,14969,14970,14971,14972,14973,14974,14975,14976,14977,14978,14979,14980,14981,14982,14983,14984,14985,14986,14987,14988,14989,14990,14991,14992,14993,14994,14995,14996,14997,14998,14999,15000,15001,15002,15003,15004,15005,15006,15007,15008,15009,15010,15011,15012,15013,15014,15015,15016,15017,15018,15019,15020,15021,15022,15023,15024,15025,15026,15027,15028,15029,15030,15031,15032,15033,15034,15035,15036,15037,15038,15039,15040,15041,15042,15043,15044,15045,15046,15047,15048,15049,15050,15051,15052,15053,15054,15055,15056,15057,15058,15059,15060,15061,15062,15063,15064,15065,15066,15067,15068,15069,15070,15071,15072,15073,15074,15075,15076,15077,15078,15079,15080,15081,15082,15083,15084,15085,15086,15087,15088,15089,15090,15091,15092,15093,15094,15095,15096,15097,15098,15099,15100,15101,15102,15103,15104,15105,15106,15107,15108,15109,15110,15111,15112,15113,15114,15115,15116,15117,15118,15119,15120,15121,15122,15123,15124,15125,15126,15127,15128,15129,15130,15131,15132,15133,15134,15135,15136,15137,15138,15139,15140,15141,15142,15143,15144,15145,15146,15147,15148,15149,15150,15151,15152,15153,15154,15155,15156,15157,15158,15159,15160,15161,15162,15163,15164,15165,15166,15167,15168,15169,15170,15171,15172,15173,15174,15175,15176,15177,15178,15179,15180,15181,15182,15183,15184,15185,15186,15187,15188,15189,15190,15191,15192,15193,15194,15195,15196,15197,15198,15199,15200,15201,15202,15203,15204,15205,15206,15207,15208,15209,15210,15211,15212,15213,15214,15215,15216,15217,15218,15219,15220,15221,15222,15223,15224,15225,15226,15227,15228,15229,15230,15231,15232,15233,15234,15235,15236,15237,15238,15239,15240,15241,15242,15243,15244,15245,15246,15247,15248,15249,15250,15251,15252,15253,15254,15255,15256,15257,15258,15259,15260,15261,15262,15263,15264,15265,15266,15267,15268,15269,15270,15271,15272,15273,15274,15275,15276,15277,15278,15279,15280,15281,15282,15283,15284,15285,15286,15287,15288,15289,15290,15291,15292,15293,15294,15295,15296,15297,15298,15299,15300,15301,15302,15303,15304,15305,15306,15307,15308,15309,15310,15311,15312,15313,15314,15315,15316,15317,15318,15319,15320,15321,15322,15323,15324,15325,15326,15327,15328,15329,15330,15331,15332,15333,15334,15335,15336,15337,15338,15339,15340,15341,15342,15343,15344,15345,15346,15347,15348,15349,15350,15351,15352,15353,15354,15355,15356,15357,15358,15359,15360,15361,15362,15363,15364,15365,15366,15367,15368,15369,15370,15371,15372,15373,15374,15375,15376,15377,15378,15379,15380,15381,15382,15383,15384,15385,15386,15387,15388,15389,15390,15391,15392,15393,15394,15395,15396,15397,15398,15399,15400,15401,15402,15403,15404,15405,15406,15407,15408,15409,15410,15411,15412,15413,15414,15415,15416,15417,15418,15419,15420,15421,15422,15423,15424,15425,15426,15427,15428,15429,15430,15431,15432,15433,15434,15435,15436,15437,15438,15439,15440,15441,15442,15443,15444,15445,15446,15447,15448,15449,15450,15451,15452,15453,15454,15455,15456,15457,15458,15459,15460,15461,15462,15463,15464,15465,15466,15467,15468,15469,15470,15471,15472,15473,15474,15475,15476,15477,15478,15479,15480,15481,15482,15483,15484,15485,15486,15487,15488,15489,15490,15491,15492,15493,15494,15495,15496,15497,15498,15499,15500,15501,15502,15503,15504,15505,15506,15507,15508,15509,15510,15511,15512,15513,15514,15515,15516,15517,15518,15519,15520,15521,15522,15523,15524,15525,15526,15527,15528,15529,15530,15531,15532,15533,15534,15535,15536,15537,15538,15539,15540,15541,15542,15543,15544,15545,15546,15547,15548,15549,15550,15551,15552,15553,15554,15555,15556,15557,15558,15559,15560,15561,15562,15563,15564,15565,15566,15567,15568,15569,15570,15571,15572,15573,15574,15575,15576,15577,15578,15579,15580,15581,15582,15583,15584,15585,15586,15587,15588,15589,15590,15591,15592,15593,15594,15595,15596,15597,15598,15599,15600,15601,15602,15603,15604,15605,15606,15607,15608,15609,15610,15611,15612,15613,15614,15615,15616,15617,15618,15619,15620,15621,15622,15623,15624,15625,15626,15627,15628,15629,15630,15631,15632,15633,15634,15635,15636,15637,15638,15639,15640,15641,15642,15643,15644,15645,15646,15647,15648,15649,15650,15651,15652,15653,15654,15655,15656,15657,15658,15659,15660,15661,15662,15663,15664,15665,15666,15667,15668,15669,15670,15671,15672,15673,15674,15675,15676,15677,15678,15679,15680,15681,15682,15683,15684,15685,15686,15687,15688,15689,15690,15691,15692,15693,15694,15695,15696,15697,15698,15699,15700,15701,15702,15703,15704,15705,15706,15707,15708,15709,15710,15711,15712,15713,15714,15715,15716,15717,15718,15719,15720,15721,15722,15723,15724,15725,15726,15727,15728,15729,15730,15731,15732,15733,15734,15735,15736,15737,15738,15739,15740,15741,15742,15743,15744,15745,15746,15747,15748,15749,15750,15751,15752,15753,15754,15755,15756,15757,15758,15759,15760,15761,15762,15763,15764,15765,15766,15767,15768,15769,15770,15771,15772,15773,15774,15775,15776,15777,15778,15779,15780,15781,15782,15783,15784,15785,15786,15787,15788,15789,15790,15791,15792,15793,15794,15795,15796,15797,15798,15799,15800,15801,15802,15803,15804,15805,15806,15807,15808,15809,15810,15811,15812,15813,15814,15815,15816,15817,15818,15819,15820,15821,15822,15823,15824,15825,15826,15827,15828,15829,15830,15831,15832,15833,15834,15835,15836,15837,15838,15839,15840,15841,15842,15843,15844,15845,15846,15847,15848,15849,15850,15851,15852,15853,15854,15855,15856,15857,15858,15859,15860,15861,15862,15863,15864,15865,15866,15867,15868,15869,15870,15871,15872,15873,15874,15875,15876,15877,15878,15879,15880,15881,15882,15883,15884,15885,15886,15887,15888,15889,15890,15891,15892,15893,15894,15895,15896,15897,15898,15899,15900,15901,15902,15903,15904,15905,15906,15907,15908,15909,15910,15911,15912,15913,15914,15915,15916,15917,15918,15919,15920,15921,15922,15923,15924,15925,15926,15927,15928,15929,15930,15931,15932,15933,15934,15935,15936,15937,15938,15939,15940,15941,15942,15943,15944,15945,15946,15947,15948,15949,15950,15951,15952,15953,15954,15955,15956,15957,15958,15959,15960,15961,15962,15963,15964,15965,15966,15967,15968,15969,15970,15971,15972,15973,15974,15975,15976,15977,15978,15979,15980,15981,15982,15983,15984,15985,15986,15987,15988,15989,15990,15991,15992,15993,15994,15995,15996,15997,15998,15999,16000,16001,16002,16003,16004,16005,16006,16007,16008,16009,16010,16011,16012,16013,16014,16015,16016,16017,16018,16019,16020,16021,16022,16023,16024,16025,16026,16027,16028,16029,16030,16031,16032,16033,16034,16035,16036,16037,16038,16039,16040,16041,16042,16043,16044,16045,16046,16047,16048,16049,16050,16051,16052,16053,16054,16055,16056,16057,16058,16059,16060,16061,16062,16063,16064,16065,16066,16067,16068,16069,16070,16071,16072,16073,16074,16075,16076,16077,16078,16079,16080,16081,16082,16083,16084,16085,16086,16087,16088,16089,16090,16091,16092,16093,16094,16095,16096,16097,16098,16099,16100,16101,16102,16103,16104,16105,16106,16107,16108,16109,16110,16111,16112,16113,16114,16115,16116,16117,16118,16119,16120,16121,16122,16123,16124,16125,16126,16127,16128,16129,16130,16131,16132,16133,16134,16135,16136,16137,16138,16139,16140,16141,16142,16143,16144,16145,16146,16147,16148,16149,16150,16151,16152,16153,16154,16155,16156,16157,16158,16159,16160,16161,16162,16163,16164,16165,16166,16167,16168,16169,16170,16171,16172,16173,16174,16175,16176,16177,16178,16179,16180,16181,16182,16183,16184,16185,16186,16187,16188,16189,16190,16191,16192,16193,16194,16195,16196,16197,16198,16199,16200,16201,16202,16203,16204,16205,16206,16207,16208,16209,16210,16211,16212,16213,16214,16215,16216,16217,16218,16219,16220,16221,16222,16223,16224,16225,16226,16227,16228,16229,16230,16231,16232,16233,16234,16235,16236,16237,16238,16239,16240,16241,16242,16243,16244,16245,16246,16247,16248,16249,16250,16251,16252,16253,16254,16255,16256,16257,16258,16259,16260,16261,16262,16263,16264,16265,16266,16267,16268,16269,16270,16271,16272,16273,16274,16275,16276,16277,16278,16279,16280,16281,16282,16283,16284,16285,16286,16287,16288,16289,16290,16291,16292,16293,16294,16295,16296,16297,16298,16299,16300,16301,16302,16303,16304,16305,16306,16307,16308,16309,16310,16311,16312,16313,16314,16315,16316,16317,16318,16319,16320,16321,16322,16323,16324,16325,16326,16327,16328,16329,16330,16331,16332,16333,16334,16335,16336,16337,16338,16339,16340,16341,16342,16343,16344,16345,16346,16347,16348,16349,16350,16351,16352,16353,16354,16355,16356,16357,16358,16359,16360,16361,16362,16363,16364,16365,16366,16367,16368,16369,16370,16371,16372,16373,16374,16375,16376,16377,16378,16379,16380,16381,16382,16383,16384,16385,16386,16387,16388,16389,16390,16391,16392,16393,16394,16395,16396,16397,16398,16399,16400,16401,16402,16403,16404,16405,16406,16407,16408,16409,16410,16411,16412,16413,16414,16415,16416,16417,16418,16419,16420,16421,16422,16423,16424,16425,16426,16427,16428,16429,16430,16431,16432,16433,16434,16435,16436,16437,16438,16439,16440,16441,16442,16443,16444,16445,16446,16447,16448,16449,16450,16451,16452,16453,16454,16455,16456,16457,16458,16459,16460,16461,16462,16463,16464,16465,16466,16467,16468,16469,16470,16471,16472,16473,16474,16475,16476,16477,16478,16479,16480,16481,16482,16483,16484,16485,16486,16487,16488,16489,16490,16491,16492,16493,16494,16495,16496,16497,16498,16499,16500,16501,16502,16503,16504,16505,16506,16507,16508,16509,16510,16511,16512,16513,16514,16515,16516,16517,16518,16519,16520,16521,16522,16523,16524,16525,16526,16527,16528,16529,16530,16531,16532,16533,16534,16535,16536,16537,16538,16539,16540,16541,16542,16543,16544,16545,16546,16547,16548,16549,16550,16551,16552,16553,16554,16555,16556,16557,16558,16559,16560,16561,16562,16563,16564,16565,16566,16567,16568,16569,16570,16571,16572,16573,16574,16575,16576,16577,16578,16579,16580,16581,16582,16583,16584,16585,16586,16587,16588,16589,16590,16591,16592,16593,16594,16595,16596,16597,16598,16599,16600,16601,16602,16603,16604,16605,16606,16607,16608,16609,16610,16611,16612,16613,16614,16615,16616,16617,16618,16619,16620,16621,16622,16623,16624,16625,16626,16627,16628,16629,16630,16631,16632,16633,16634,16635,16636,16637,16638,16639,16640,16641,16642,16643,16644,16645,16646,16647,16648,16649,16650,16651,16652,16653,16654,16655,16656,16657,16658,16659,16660,16661,16662,16663,16664,16665,16666,16667,16668,16669,16670,16671,16672,16673,16674,16675,16676,16677,16678,16679,16680,16681,16682,16683,16684,16685,16686,16687,16688,16689,16690,16691,16692,16693,16694,16695,16696,16697,16698,16699,16700,16701,16702,16703,16704,16705,16706,16707,16708,16709,16710,16711,16712,16713,16714,16715,16716,16717,16718,16719,16720,16721,16722,16723,16724,16725,16726,16727,16728,16729,16730,16731,16732,16733,16734,16735,16736,16737,16738,16739,16740,16741,16742,16743,16744,16745,16746,16747,16748,16749,16750,16751,16752,16753,16754,16755,16756,16757,16758,16759,16760,16761,16762,16763,16764,16765,16766,16767,16768,16769,16770,16771,16772,16773,16774,16775,16776,16777,16778,16779,16780,16781,16782,16783,16784,16785,16786,16787,16788,16789,16790,16791,16792,16793,16794,16795,16796,16797,16798,16799,16800,16801,16802,16803,16804,16805,16806,16807,16808,16809,16810,16811,16812,16813,16814,16815,16816,16817,16818,16819,16820,16821,16822,16823,16824,16825,16826,16827,16828,16829,16830,16831,16832,16833,16834,16835,16836,16837,16838,16839,16840,16841,16842,16843,16844,16845,16846,16847,16848,16849,16850,16851,16852,16853,16854,16855,16856,16857,16858,16859,16860,16861,16862,16863,16864,16865,16866,16867,16868,16869,16870,16871,16872,16873,16874,16875,16876,16877,16878,16879,16880,16881,16882,16883,16884,16885,16886,16887,16888,16889,16890,16891,16892,16893,16894,16895,16896,16897,16898,16899,16900,16901,16902,16903,16904,16905,16906,16907,16908,16909,16910,16911,16912,16913,16914,16915,16916,16917,16918,16919,16920,16921,16922,16923,16924,16925,16926,16927,16928,16929,16930,16931,16932,16933,16934,16935,16936,16937,16938,16939,16940,16941,16942,16943,16944,16945,16946,16947,16948,16949,16950,16951,16952,16953,16954,16955,16956,16957,16958,16959,16960,16961,16962,16963,16964,16965,16966,16967,16968,16969,16970,16971,16972,16973,16974,16975,16976,16977,16978,16979,16980,16981,16982,16983,16984,16985,16986,16987,16988,16989,16990,16991,16992,16993,16994,16995,16996,16997,16998,16999,17000,17001,17002,17003,17004,17005,17006,17007,17008,17009,17010,17011,17012,17013,17014,17015,17016,17017,17018,17019,17020,17021,17022,17023,17024,17025,17026,17027,17028,17029,17030,17031,17032,17033,17034,17035,17036,17037,17038,17039,17040,17041,17042,17043,17044,17045,17046,17047,17048,17049,17050,17051,17052,17053,17054,17055,17056,17057,17058,17059,17060,17061,17062,17063,17064,17065,17066,17067,17068,17069,17070,17071,17072,17073,17074,17075,17076,17077,17078,17079,17080,17081,17082,17083,17084,17085,17086,17087,17088,17089,17090,17091,17092,17093,17094,17095,17096,17097,17098,17099,17100,17101,17102,17103,17104,17105,17106,17107,17108,17109,17110,17111,17112,17113,17114,17115,17116,17117,17118,17119,17120,17121,17122,17123,17124,17125,17126,17127,17128,17129,17130,17131,17132,17133,17134,17135,17136,17137,17138,17139,17140,17141,17142,17143,17144,17145,17146,17147,17148,17149,17150,17151,17152,17153,17154,17155,17156,17157,17158,17159,17160,17161,17162,17163,17164,17165,17166,17167,17168,17169,17170,17171,17172,17173,17174,17175,17176,17177,17178,17179,17180,17181,17182,17183,17184,17185,17186,17187,17188,17189,17190,17191,17192,17193,17194,17195,17196,17197,17198,17199,17200,17201,17202,17203,17204,17205,17206,17207,17208,17209,17210,17211,17212,17213,17214,17215,17216,17217,17218,17219,17220,17221,17222,17223,17224,17225,17226,17227,17228,17229,17230,17231,17232,17233,17234,17235,17236,17237,17238,17239,17240,17241,17242,17243,17244,17245,17246,17247,17248,17249,17250,17251,17252,17253,17254,17255,17256,17257,17258,17259,17260,17261,17262,17263,17264,17265,17266,17267,17268,17269,17270,17271,17272,17273,17274,17275,17276,17277,17278,17279,17280,17281,17282,17283,17284,17285,17286,17287,17288,17289,17290,17291,17292,17293,17294,17295,17296,17297,17298,17299,17300,17301,17302,17303,17304,17305,17306,17307,17308,17309,17310,17311,17312,17313,17314,17315,17316,17317,17318,17319,17320,17321,17322,17323,17324,17325,17326,17327,17328,17329,17330,17331,17332,17333,17334,17335,17336,17337,17338,17339,17340,17341,17342,17343,17344,17345,17346,17347,17348,17349,17350,17351,17352,17353,17354,17355,17356,17357,17358,17359,17360,17361,17362,17363,17364,17365,17366,17367,17368,17369,17370,17371,17372,17373,17374,17375,17376,17377,17378,17379,17380,17381,17382,17383,17384,17385,17386,17387,17388,17389,17390,17391,17392,17393,17394,17395,17396,17397,17398,17399,17400,17401,17402,17403,17404,17405,17406,17407,17408,17409,17410,17411,17412,17413,17414,17415,17416,17417,17418,17419,17420,17421,17422,17423,17424,17425,17426,17427,17428,17429,17430,17431,17432,17433,17434,17435,17436,17437,17438,17439,17440,17441,17442,17443,17444,17445,17446,17447,17448,17449,17450,17451,17452,17453,17454,17455,17456,17457,17458,17459,17460,17461,17462,17463,17464,17465,17466,17467,17468,17469,17470,17471,17472,17473,17474,17475,17476,17477,17478,17479,17480,17481,17482,17483,17484,17485,17486,17487,17488,17489,17490,17491,17492,17493,17494,17495,17496,17497,17498,17499,17500,17501,17502,17503,17504,17505,17506,17507,17508,17509,17510,17511,17512,17513,17514,17515,17516,17517,17518,17519,17520,17521,17522,17523,17524,17525,17526,17527,17528,17529,17530,17531,17532,17533,17534,17535,17536,17537,17538,17539,17540,17541,17542,17543,17544,17545,17546,17547,17548,17549,17550,17551,17552,17553,17554,17555,17556,17557,17558,17559,17560,17561,17562,17563,17564,17565,17566,17567,17568,17569,17570,17571,17572,17573,17574,17575,17576,17577,17578,17579,17580,17581,17582,17583,17584,17585,17586,17587,17588,17589,17590,17591,17592,17593,17594,17595,17596,17597,17598,17599,17600,17601,17602,17603,17604,17605,17606,17607,17608,17609,17610,17611,17612,17613,17614,17615,17616,17617,17618,17619,17620,17621,17622,17623,17624,17625,17626,17627,17628,17629,17630,17631,17632,17633,17634,17635,17636,17637,17638,17639,17640,17641,17642,17643,17644,17645,17646,17647,17648,17649,17650,17651,17652,17653,17654,17655,17656,17657,17658,17659,17660,17661,17662,17663,17664,17665,17666,17667,17668,17669,17670,17671,17672,17673,17674,17675,17676,17677,17678,17679,17680,17681,17682,17683,17684,17685,17686,17687,17688,17689,17690,17691,17692,17693,17694,17695,17696,17697,17698,17699,17700,17701,17702,17703,17704,17705,17706,17707,17708,17709,17710,17711,17712,17713,17714,17715,17716,17717,17718,17719,17720,17721,17722,17723,17724,17725,17726,17727,17728,17729,17730,17731,17732,17733,17734,17735,17736,17737,17738,17739,17740,17741,17742,17743,17744,17745,17746,17747,17748,17749,17750,17751,17752,17753,17754,17755,17756,17757,17758,17759,17760,17761,17762,17763,17764,17765,17766,17767,17768,17769,17770,17771,17772,17773,17774,17775,17776,17777,17778,17779,17780,17781,17782,17783,17784,17785,17786,17787,17788,17789,17790,17791,17792,17793,17794,17795,17796,17797,17798,17799,17800,17801,17802,17803,17804,17805,17806,17807,17808,17809,17810,17811,17812,17813,17814,17815,17816,17817,17818,17819,17820,17821,17822,17823,17824,17825,17826,17827,17828,17829,17830,17831,17832,17833,17834,17835,17836,17837,17838,17839,17840,17841,17842,17843,17844,17845,17846,17847,17848,17849,17850,17851,17852,17853,17854,17855,17856,17857,17858,17859,17860,17861,17862,17863,17864,17865,17866,17867,17868,17869,17870,17871,17872,17873,17874,17875,17876,17877,17878,17879,17880,17881,17882,17883,17884,17885,17886,17887,17888,17889,17890,17891,17892,17893,17894,17895,17896,17897,17898,17899,17900,17901,17902,17903,17904,17905,17906,17907,17908,17909,17910,17911,17912,17913,17914,17915,17916,17917,17918,17919,17920,17921,17922,17923,17924,17925,17926,17927,17928,17929,17930,17931,17932,17933,17934,17935,17936,17937,17938,17939,17940,17941,17942,17943,17944,17945,17946,17947,17948,17949,17950,17951,17952,17953,17954,17955,17956,17957,17958,17959,17960,17961,17962,17963,17964,17965,17966,17967,17968,17969,17970,17971,17972,17973,17974,17975,17976,17977,17978,17979,17980,17981,17982,17983,17984,17985,17986,17987,17988,17989,17990,17991,17992,17993,17994,17995,17996,17997,17998,17999,18000,18001,18002,18003,18004,18005,18006,18007,18008,18009,18010,18011,18012,18013,18014,18015,18016,18017,18018,18019,18020,18021,18022,18023,18024,18025,18026,18027,18028,18029,18030,18031,18032,18033,18034,18035,18036,18037,18038,18039,18040,18041,18042,18043,18044,18045,18046,18047,18048,18049,18050,18051,18052,18053,18054,18055,18056,18057,18058,18059,18060,18061,18062,18063,18064,18065,18066,18067,18068,18069,18070,18071,18072,18073,18074,18075,18076,18077,18078,18079,18080,18081,18082,18083,18084,18085,18086,18087,18088,18089,18090,18091,18092,18093,18094,18095,18096,18097,18098,18099,18100,18101,18102,18103,18104,18105,18106,18107,18108,18109,18110,18111,18112,18113,18114,18115,18116,18117,18118,18119,18120,18121,18122,18123,18124,18125,18126,18127,18128,18129,18130,18131,18132,18133,18134,18135,18136,18137,18138,18139,18140,18141,18142,18143,18144,18145,18146,18147,18148,18149,18150,18151,18152,18153,18154,18155,18156,18157,18158,18159,18160,18161,18162,18163,18164,18165,18166,18167,18168,18169,18170,18171,18172,18173,18174,18175,18176,18177,18178,18179,18180,18181,18182,18183,18184,18185,18186,18187,18188,18189,18190,18191,18192,18193,18194,18195,18196,18197,18198,18199,18200,18201,18202,18203,18204,18205,18206,18207,18208,18209,18210,18211,18212,18213,18214,18215,18216,18217,18218,18219,18220,18221,18222,18223,18224,18225,18226,18227,18228,18229,18230,18231,18232,18233,18234,18235,18236,18237,18238,18239,18240,18241,18242,18243,18244,18245,18246,18247,18248,18249,18250,18251,18252,18253,18254,18255,18256,18257,18258,18259,18260,18261,18262,18263,18264,18265,18266,18267,18268,18269,18270,18271,18272,18273,18274,18275,18276,18277,18278,18279,18280,18281,18282,18283,18284,18285,18286,18287,18288,18289,18290,18291,18292,18293,18294,18295,18296,18297,18298,18299,18300,18301,18302,18303,18304,18305,18306,18307,18308,18309,18310,18311,18312,18313,18314,18315,18316,18317,18318,18319,18320,18321,18322,18323,18324,18325,18326,18327,18328,18329,18330,18331,18332,18333,18334,18335,18336,18337,18338,18339,18340,18341,18342,18343,18344,18345,18346,18347,18348,18349,18350,18351,18352,18353,18354,18355,18356,18357,18358,18359,18360,18361,18362,18363,18364,18365,18366,18367,18368,18369,18370,18371,18372,18373,18374,18375,18376,18377,18378,18379,18380,18381,18382,18383,18384,18385,18386,18387,18388,18389,18390,18391,18392,18393,18394,18395,18396,18397,18398,18399,18400,18401,18402,18403,18404,18405,18406,18407,18408,18409,18410,18411,18412,18413,18414,18415,18416,18417,18418,18419,18420,18421,18422,18423,18424,18425,18426,18427,18428,18429,18430,18431,18432,18433,18434,18435,18436,18437,18438,18439,18440,18441,18442,18443,18444,18445,18446,18447,18448,18449,18450,18451,18452,18453,18454,18455,18456,18457,18458,18459,18460,18461,18462,18463,18464,18465,18466,18467,18468,18469,18470,18471,18472,18473,18474,18475,18476,18477,18478,18479,18480,18481,18482,18483,18484,18485,18486,18487,18488,18489,18490,18491,18492,18493,18494,18495,18496,18497,18498,18499,18500,18501,18502,18503,18504,18505,18506,18507,18508,18509,18510,18511,18512,18513,18514,18515,18516,18517,18518,18519,18520,18521,18522,18523,18524,18525,18526,18527,18528,18529,18530,18531,18532,18533,18534,18535,18536,18537,18538,18539,18540,18541,18542,18543,18544,18545,18546,18547,18548,18549,18550,18551,18552,18553,18554,18555,18556,18557,18558,18559,18560,18561,18562,18563,18564,18565,18566,18567,18568,18569,18570,18571,18572,18573,18574,18575,18576,18577,18578,18579,18580,18581,18582,18583,18584,18585,18586,18587,18588,18589,18590,18591,18592,18593,18594,18595,18596,18597,18598,18599,18600,18601,18602,18603,18604,18605,18606,18607,18608,18609,18610,18611,18612,18613,18614,18615,18616,18617,18618,18619,18620,18621,18622,18623,18624,18625,18626,18627,18628,18629,18630,18631,18632,18633,18634,18635,18636,18637,18638,18639,18640,18641,18642,18643,18644,18645,18646,18647,18648,18649,18650,18651,18652,18653,18654,18655,18656,18657,18658,18659,18660,18661,18662,18663,18664,18665,18666,18667,18668,18669,18670,18671,18672,18673,18674,18675,18676,18677,18678,18679,18680,18681,18682,18683,18684,18685,18686,18687,18688,18689,18690,18691,18692,18693,18694,18695,18696,18697,18698,18699,18700,18701,18702,18703,18704,18705,18706,18707,18708,18709,18710,18711,18712,18713,18714,18715,18716,18717,18718,18719,18720,18721,18722,18723,18724,18725,18726,18727,18728,18729,18730,18731,18732,18733,18734,18735,18736,18737,18738,18739,18740,18741,18742,18743,18744,18745,18746,18747,18748,18749,18750,18751,18752,18753,18754,18755,18756,18757,18758,18759,18760,18761,18762,18763,18764,18765,18766,18767,18768,18769,18770,18771,18772,18773,18774,18775,18776,18777,18778,18779,18780,18781,18782,18783,18784,18785,18786,18787,18788,18789,18790,18791,18792,18793,18794,18795,18796,18797,18798,18799,18800,18801,18802,18803,18804,18805,18806,18807,18808,18809,18810,18811,18812,18813,18814,18815,18816,18817,18818,18819,18820,18821,18822,18823,18824,18825,18826,18827,18828,18829,18830,18831,18832,18833,18834,18835,18836,18837,18838,18839,18840,18841,18842,18843,18844,18845,18846,18847,18848,18849,18850,18851,18852,18853,18854,18855,18856,18857,18858,18859,18860,18861,18862,18863,18864,18865,18866,18867,18868,18869,18870,18871,18872,18873,18874,18875,18876,18877,18878,18879,18880,18881,18882,18883,18884,18885,18886,18887,18888,18889,18890,18891,18892,18893,18894,18895,18896,18897,18898,18899,18900,18901,18902,18903,18904,18905,18906,18907,18908,18909,18910,18911,18912,18913,18914,18915,18916,18917,18918,18919,18920,18921,18922,18923,18924,18925,18926,18927,18928,18929,18930,18931,18932,18933,18934,18935,18936,18937,18938,18939,18940,18941,18942,18943,18944,18945,18946,18947,18948,18949,18950,18951,18952,18953,18954,18955,18956,18957,18958,18959,18960,18961,18962,18963,18964,18965,18966,18967,18968,18969,18970,18971,18972,18973,18974,18975,18976,18977,18978,18979,18980,18981,18982,18983,18984,18985,18986,18987,18988,18989,18990,18991,18992,18993,18994,18995,18996,18997,18998,18999,19000,19001,19002,19003,19004,19005,19006,19007,19008,19009,19010,19011,19012,19013,19014,19015,19016,19017,19018,19019,19020,19021,19022,19023,19024,19025,19026,19027,19028,19029,19030,19031,19032,19033,19034,19035,19036,19037,19038,19039,19040,19041,19042,19043,19044,19045,19046,19047,19048,19049,19050,19051,19052,19053,19054,19055,19056,19057,19058,19059,19060,19061,19062,19063,19064,19065,19066,19067,19068,19069,19070,19071,19072,19073,19074,19075,19076,19077,19078,19079,19080,19081,19082,19083,19084,19085,19086,19087,19088,19089,19090,19091,19092,19093,19094,19095,19096,19097,19098,19099,19100,19101,19102,19103,19104,19105,19106,19107,19108,19109,19110,19111,19112,19113,19114,19115,19116,19117,19118,19119,19120,19121,19122,19123,19124,19125,19126,19127,19128,19129,19130,19131,19132,19133,19134,19135,19136,19137,19138,19139,19140,19141,19142,19143,19144,19145,19146,19147,19148,19149,19150,19151,19152,19153,19154,19155,19156,19157,19158,19159,19160,19161,19162,19163,19164,19165,19166,19167,19168,19169,19170,19171,19172,19173,19174,19175,19176,19177,19178,19179,19180,19181,19182,19183,19184,19185,19186,19187,19188,19189,19190,19191,19192,19193,19194,19195,19196,19197,19198,19199,19200,19201,19202,19203,19204,19205,19206,19207,19208,19209,19210,19211,19212,19213,19214,19215,19216,19217,19218,19219,19220,19221,19222,19223,19224,19225,19226,19227,19228,19229,19230,19231,19232,19233,19234,19235,19236,19237,19238,19239,19240,19241,19242,19243,19244,19245,19246,19247,19248,19249,19250,19251,19252,19253,19254,19255,19256,19257,19258,19259,19260,19261,19262,19263,19264,19265,19266,19267,19268,19269,19270,19271,19272,19273,19274,19275,19276,19277,19278,19279,19280,19281,19282,19283,19284,19285,19286,19287,19288,19289,19290,19291,19292,19293,19294,19295,19296,19297,19298,19299,19300,19301,19302,19303,19304,19305,19306,19307,19308,19309,19310,19311,19312,19313,19314,19315,19316,19317,19318,19319,19320,19321,19322,19323,19324,19325,19326,19327,19328,19329,19330,19331,19332,19333,19334,19335,19336,19337,19338,19339,19340,19341,19342,19343,19344,19345,19346,19347,19348,19349,19350,19351,19352,19353,19354,19355,19356,19357,19358,19359,19360,19361,19362,19363,19364,19365,19366,19367,19368,19369,19370,19371,19372,19373,19374,19375,19376,19377,19378,19379,19380,19381,19382,19383,19384,19385,19386,19387,19388,19389,19390,19391,19392,19393,19394,19395,19396,19397,19398,19399,19400,19401,19402,19403,19404,19405,19406,19407,19408,19409,19410,19411,19412,19413,19414,19415,19416,19417,19418,19419,19420,19421,19422,19423,19424,19425,19426,19427,19428,19429,19430,19431,19432,19433,19434,19435,19436,19437,19438,19439,19440,19441,19442,19443,19444,19445,19446,19447,19448,19449,19450,19451,19452,19453,19454,19455,19456,19457,19458,19459,19460,19461,19462,19463,19464,19465,19466,19467,19468,19469,19470,19471,19472,19473,19474,19475,19476,19477,19478,19479,19480,19481,19482,19483,19484,19485,19486,19487,19488,19489,19490,19491,19492,19493,19494,19495,19496,19497,19498,19499,19500,19501,19502,19503,19504,19505,19506,19507,19508,19509,19510,19511,19512,19513,19514,19515,19516,19517,19518,19519,19520,19521,19522,19523,19524,19525,19526,19527,19528,19529,19530,19531,19532,19533,19534,19535,19536,19537,19538,19539,19540,19541,19542,19543,19544,19545,19546,19547,19548,19549,19550,19551,19552,19553,19554,19555,19556,19557,19558,19559,19560,19561,19562,19563,19564,19565,19566,19567,19568,19569,19570,19571,19572,19573,19574,19575,19576,19577,19578,19579,19580,19581,19582,19583,19584,19585,19586,19587,19588,19589,19590,19591,19592,19593,19594,19595,19596,19597,19598,19599,19600,19601,19602,19603,19604,19605,19606,19607,19608,19609,19610,19611,19612,19613,19614,19615,19616,19617,19618,19619,19620,19621,19622,19623,19624,19625,19626,19627,19628,19629,19630,19631,19632,19633,19634,19635,19636,19637,19638,19639,19640,19641,19642,19643,19644,19645,19646,19647,19648,19649,19650,19651,19652,19653,19654,19655,19656,19657,19658,19659,19660,19661,19662,19663,19664,19665,19666,19667,19668,19669,19670,19671,19672,19673,19674,19675,19676,19677,19678,19679,19680,19681,19682,19683,19684,19685,19686,19687,19688,19689,19690,19691,19692,19693,19694,19695,19696,19697,19698,19699,19700,19701,19702,19703,19704,19705,19706,19707,19708,19709,19710,19711,19712,19713,19714,19715,19716,19717,19718,19719,19720,19721,19722,19723,19724,19725,19726,19727,19728,19729,19730,19731,19732,19733,19734,19735,19736,19737,19738,19739,19740,19741,19742,19743,19744,19745,19746,19747,19748,19749,19750,19751,19752,19753,19754,19755,19756,19757,19758,19759,19760,19761,19762,19763,19764,19765,19766,19767,19768,19769,19770,19771,19772,19773,19774,19775,19776,19777,19778,19779,19780,19781,19782,19783,19784,19785,19786,19787,19788,19789,19790,19791,19792,19793,19794,19795,19796,19797,19798,19799,19800,19801,19802,19803,19804,19805,19806,19807,19808,19809,19810,19811,19812,19813,19814,19815,19816,19817,19818,19819,19820,19821,19822,19823,19824,19825,19826,19827,19828,19829,19830,19831,19832,19833,19834,19835,19836,19837,19838,19839,19840,19841,19842,19843,19844,19845,19846,19847,19848,19849,19850,19851,19852,19853,19854,19855,19856,19857,19858,19859,19860,19861,19862,19863,19864,19865,19866,19867,19868,19869,19870,19871,19872,19873,19874,19875,19876,19877,19878,19879,19880,19881,19882,19883,19884,19885,19886,19887,19888,19889,19890,19891,19892,19893,19968,19969,19970,19971,19972,19973,19974,19975,19976,19977,19978,19979,19980,19981,19982,19983,19984,19985,19986,19987,19988,19989,19990,19991,19992,19993,19994,19995,19996,19997,19998,19999,20000,20001,20002,20003,20004,20005,20006,20007,20008,20009,20010,20011,20012,20013,20014,20015,20016,20017,20018,20019,20020,20021,20022,20023,20024,20025,20026,20027,20028,20029,20030,20031,20032,20033,20034,20035,20036,20037,20038,20039,20040,20041,20042,20043,20044,20045,20046,20047,20048,20049,20050,20051,20052,20053,20054,20055,20056,20057,20058,20059,20060,20061,20062,20063,20064,20065,20066,20067,20068,20069,20070,20071,20072,20073,20074,20075,20076,20077,20078,20079,20080,20081,20082,20083,20084,20085,20086,20087,20088,20089,20090,20091,20092,20093,20094,20095,20096,20097,20098,20099,20100,20101,20102,20103,20104,20105,20106,20107,20108,20109,20110,20111,20112,20113,20114,20115,20116,20117,20118,20119,20120,20121,20122,20123,20124,20125,20126,20127,20128,20129,20130,20131,20132,20133,20134,20135,20136,20137,20138,20139,20140,20141,20142,20143,20144,20145,20146,20147,20148,20149,20150,20151,20152,20153,20154,20155,20156,20157,20158,20159,20160,20161,20162,20163,20164,20165,20166,20167,20168,20169,20170,20171,20172,20173,20174,20175,20176,20177,20178,20179,20180,20181,20182,20183,20184,20185,20186,20187,20188,20189,20190,20191,20192,20193,20194,20195,20196,20197,20198,20199,20200,20201,20202,20203,20204,20205,20206,20207,20208,20209,20210,20211,20212,20213,20214,20215,20216,20217,20218,20219,20220,20221,20222,20223,20224,20225,20226,20227,20228,20229,20230,20231,20232,20233,20234,20235,20236,20237,20238,20239,20240,20241,20242,20243,20244,20245,20246,20247,20248,20249,20250,20251,20252,20253,20254,20255,20256,20257,20258,20259,20260,20261,20262,20263,20264,20265,20266,20267,20268,20269,20270,20271,20272,20273,20274,20275,20276,20277,20278,20279,20280,20281,20282,20283,20284,20285,20286,20287,20288,20289,20290,20291,20292,20293,20294,20295,20296,20297,20298,20299,20300,20301,20302,20303,20304,20305,20306,20307,20308,20309,20310,20311,20312,20313,20314,20315,20316,20317,20318,20319,20320,20321,20322,20323,20324,20325,20326,20327,20328,20329,20330,20331,20332,20333,20334,20335,20336,20337,20338,20339,20340,20341,20342,20343,20344,20345,20346,20347,20348,20349,20350,20351,20352,20353,20354,20355,20356,20357,20358,20359,20360,20361,20362,20363,20364,20365,20366,20367,20368,20369,20370,20371,20372,20373,20374,20375,20376,20377,20378,20379,20380,20381,20382,20383,20384,20385,20386,20387,20388,20389,20390,20391,20392,20393,20394,20395,20396,20397,20398,20399,20400,20401,20402,20403,20404,20405,20406,20407,20408,20409,20410,20411,20412,20413,20414,20415,20416,20417,20418,20419,20420,20421,20422,20423,20424,20425,20426,20427,20428,20429,20430,20431,20432,20433,20434,20435,20436,20437,20438,20439,20440,20441,20442,20443,20444,20445,20446,20447,20448,20449,20450,20451,20452,20453,20454,20455,20456,20457,20458,20459,20460,20461,20462,20463,20464,20465,20466,20467,20468,20469,20470,20471,20472,20473,20474,20475,20476,20477,20478,20479,20480,20481,20482,20483,20484,20485,20486,20487,20488,20489,20490,20491,20492,20493,20494,20495,20496,20497,20498,20499,20500,20501,20502,20503,20504,20505,20506,20507,20508,20509,20510,20511,20512,20513,20514,20515,20516,20517,20518,20519,20520,20521,20522,20523,20524,20525,20526,20527,20528,20529,20530,20531,20532,20533,20534,20535,20536,20537,20538,20539,20540,20541,20542,20543,20544,20545,20546,20547,20548,20549,20550,20551,20552,20553,20554,20555,20556,20557,20558,20559,20560,20561,20562,20563,20564,20565,20566,20567,20568,20569,20570,20571,20572,20573,20574,20575,20576,20577,20578,20579,20580,20581,20582,20583,20584,20585,20586,20587,20588,20589,20590,20591,20592,20593,20594,20595,20596,20597,20598,20599,20600,20601,20602,20603,20604,20605,20606,20607,20608,20609,20610,20611,20612,20613,20614,20615,20616,20617,20618,20619,20620,20621,20622,20623,20624,20625,20626,20627,20628,20629,20630,20631,20632,20633,20634,20635,20636,20637,20638,20639,20640,20641,20642,20643,20644,20645,20646,20647,20648,20649,20650,20651,20652,20653,20654,20655,20656,20657,20658,20659,20660,20661,20662,20663,20664,20665,20666,20667,20668,20669,20670,20671,20672,20673,20674,20675,20676,20677,20678,20679,20680,20681,20682,20683,20684,20685,20686,20687,20688,20689,20690,20691,20692,20693,20694,20695,20696,20697,20698,20699,20700,20701,20702,20703,20704,20705,20706,20707,20708,20709,20710,20711,20712,20713,20714,20715,20716,20717,20718,20719,20720,20721,20722,20723,20724,20725,20726,20727,20728,20729,20730,20731,20732,20733,20734,20735,20736,20737,20738,20739,20740,20741,20742,20743,20744,20745,20746,20747,20748,20749,20750,20751,20752,20753,20754,20755,20756,20757,20758,20759,20760,20761,20762,20763,20764,20765,20766,20767,20768,20769,20770,20771,20772,20773,20774,20775,20776,20777,20778,20779,20780,20781,20782,20783,20784,20785,20786,20787,20788,20789,20790,20791,20792,20793,20794,20795,20796,20797,20798,20799,20800,20801,20802,20803,20804,20805,20806,20807,20808,20809,20810,20811,20812,20813,20814,20815,20816,20817,20818,20819,20820,20821,20822,20823,20824,20825,20826,20827,20828,20829,20830,20831,20832,20833,20834,20835,20836,20837,20838,20839,20840,20841,20842,20843,20844,20845,20846,20847,20848,20849,20850,20851,20852,20853,20854,20855,20856,20857,20858,20859,20860,20861,20862,20863,20864,20865,20866,20867,20868,20869,20870,20871,20872,20873,20874,20875,20876,20877,20878,20879,20880,20881,20882,20883,20884,20885,20886,20887,20888,20889,20890,20891,20892,20893,20894,20895,20896,20897,20898,20899,20900,20901,20902,20903,20904,20905,20906,20907,20908,20909,20910,20911,20912,20913,20914,20915,20916,20917,20918,20919,20920,20921,20922,20923,20924,20925,20926,20927,20928,20929,20930,20931,20932,20933,20934,20935,20936,20937,20938,20939,20940,20941,20942,20943,20944,20945,20946,20947,20948,20949,20950,20951,20952,20953,20954,20955,20956,20957,20958,20959,20960,20961,20962,20963,20964,20965,20966,20967,20968,20969,20970,20971,20972,20973,20974,20975,20976,20977,20978,20979,20980,20981,20982,20983,20984,20985,20986,20987,20988,20989,20990,20991,20992,20993,20994,20995,20996,20997,20998,20999,21000,21001,21002,21003,21004,21005,21006,21007,21008,21009,21010,21011,21012,21013,21014,21015,21016,21017,21018,21019,21020,21021,21022,21023,21024,21025,21026,21027,21028,21029,21030,21031,21032,21033,21034,21035,21036,21037,21038,21039,21040,21041,21042,21043,21044,21045,21046,21047,21048,21049,21050,21051,21052,21053,21054,21055,21056,21057,21058,21059,21060,21061,21062,21063,21064,21065,21066,21067,21068,21069,21070,21071,21072,21073,21074,21075,21076,21077,21078,21079,21080,21081,21082,21083,21084,21085,21086,21087,21088,21089,21090,21091,21092,21093,21094,21095,21096,21097,21098,21099,21100,21101,21102,21103,21104,21105,21106,21107,21108,21109,21110,21111,21112,21113,21114,21115,21116,21117,21118,21119,21120,21121,21122,21123,21124,21125,21126,21127,21128,21129,21130,21131,21132,21133,21134,21135,21136,21137,21138,21139,21140,21141,21142,21143,21144,21145,21146,21147,21148,21149,21150,21151,21152,21153,21154,21155,21156,21157,21158,21159,21160,21161,21162,21163,21164,21165,21166,21167,21168,21169,21170,21171,21172,21173,21174,21175,21176,21177,21178,21179,21180,21181,21182,21183,21184,21185,21186,21187,21188,21189,21190,21191,21192,21193,21194,21195,21196,21197,21198,21199,21200,21201,21202,21203,21204,21205,21206,21207,21208,21209,21210,21211,21212,21213,21214,21215,21216,21217,21218,21219,21220,21221,21222,21223,21224,21225,21226,21227,21228,21229,21230,21231,21232,21233,21234,21235,21236,21237,21238,21239,21240,21241,21242,21243,21244,21245,21246,21247,21248,21249,21250,21251,21252,21253,21254,21255,21256,21257,21258,21259,21260,21261,21262,21263,21264,21265,21266,21267,21268,21269,21270,21271,21272,21273,21274,21275,21276,21277,21278,21279,21280,21281,21282,21283,21284,21285,21286,21287,21288,21289,21290,21291,21292,21293,21294,21295,21296,21297,21298,21299,21300,21301,21302,21303,21304,21305,21306,21307,21308,21309,21310,21311,21312,21313,21314,21315,21316,21317,21318,21319,21320,21321,21322,21323,21324,21325,21326,21327,21328,21329,21330,21331,21332,21333,21334,21335,21336,21337,21338,21339,21340,21341,21342,21343,21344,21345,21346,21347,21348,21349,21350,21351,21352,21353,21354,21355,21356,21357,21358,21359,21360,21361,21362,21363,21364,21365,21366,21367,21368,21369,21370,21371,21372,21373,21374,21375,21376,21377,21378,21379,21380,21381,21382,21383,21384,21385,21386,21387,21388,21389,21390,21391,21392,21393,21394,21395,21396,21397,21398,21399,21400,21401,21402,21403,21404,21405,21406,21407,21408,21409,21410,21411,21412,21413,21414,21415,21416,21417,21418,21419,21420,21421,21422,21423,21424,21425,21426,21427,21428,21429,21430,21431,21432,21433,21434,21435,21436,21437,21438,21439,21440,21441,21442,21443,21444,21445,21446,21447,21448,21449,21450,21451,21452,21453,21454,21455,21456,21457,21458,21459,21460,21461,21462,21463,21464,21465,21466,21467,21468,21469,21470,21471,21472,21473,21474,21475,21476,21477,21478,21479,21480,21481,21482,21483,21484,21485,21486,21487,21488,21489,21490,21491,21492,21493,21494,21495,21496,21497,21498,21499,21500,21501,21502,21503,21504,21505,21506,21507,21508,21509,21510,21511,21512,21513,21514,21515,21516,21517,21518,21519,21520,21521,21522,21523,21524,21525,21526,21527,21528,21529,21530,21531,21532,21533,21534,21535,21536,21537,21538,21539,21540,21541,21542,21543,21544,21545,21546,21547,21548,21549,21550,21551,21552,21553,21554,21555,21556,21557,21558,21559,21560,21561,21562,21563,21564,21565,21566,21567,21568,21569,21570,21571,21572,21573,21574,21575,21576,21577,21578,21579,21580,21581,21582,21583,21584,21585,21586,21587,21588,21589,21590,21591,21592,21593,21594,21595,21596,21597,21598,21599,21600,21601,21602,21603,21604,21605,21606,21607,21608,21609,21610,21611,21612,21613,21614,21615,21616,21617,21618,21619,21620,21621,21622,21623,21624,21625,21626,21627,21628,21629,21630,21631,21632,21633,21634,21635,21636,21637,21638,21639,21640,21641,21642,21643,21644,21645,21646,21647,21648,21649,21650,21651,21652,21653,21654,21655,21656,21657,21658,21659,21660,21661,21662,21663,21664,21665,21666,21667,21668,21669,21670,21671,21672,21673,21674,21675,21676,21677,21678,21679,21680,21681,21682,21683,21684,21685,21686,21687,21688,21689,21690,21691,21692,21693,21694,21695,21696,21697,21698,21699,21700,21701,21702,21703,21704,21705,21706,21707,21708,21709,21710,21711,21712,21713,21714,21715,21716,21717,21718,21719,21720,21721,21722,21723,21724,21725,21726,21727,21728,21729,21730,21731,21732,21733,21734,21735,21736,21737,21738,21739,21740,21741,21742,21743,21744,21745,21746,21747,21748,21749,21750,21751,21752,21753,21754,21755,21756,21757,21758,21759,21760,21761,21762,21763,21764,21765,21766,21767,21768,21769,21770,21771,21772,21773,21774,21775,21776,21777,21778,21779,21780,21781,21782,21783,21784,21785,21786,21787,21788,21789,21790,21791,21792,21793,21794,21795,21796,21797,21798,21799,21800,21801,21802,21803,21804,21805,21806,21807,21808,21809,21810,21811,21812,21813,21814,21815,21816,21817,21818,21819,21820,21821,21822,21823,21824,21825,21826,21827,21828,21829,21830,21831,21832,21833,21834,21835,21836,21837,21838,21839,21840,21841,21842,21843,21844,21845,21846,21847,21848,21849,21850,21851,21852,21853,21854,21855,21856,21857,21858,21859,21860,21861,21862,21863,21864,21865,21866,21867,21868,21869,21870,21871,21872,21873,21874,21875,21876,21877,21878,21879,21880,21881,21882,21883,21884,21885,21886,21887,21888,21889,21890,21891,21892,21893,21894,21895,21896,21897,21898,21899,21900,21901,21902,21903,21904,21905,21906,21907,21908,21909,21910,21911,21912,21913,21914,21915,21916,21917,21918,21919,21920,21921,21922,21923,21924,21925,21926,21927,21928,21929,21930,21931,21932,21933,21934,21935,21936,21937,21938,21939,21940,21941,21942,21943,21944,21945,21946,21947,21948,21949,21950,21951,21952,21953,21954,21955,21956,21957,21958,21959,21960,21961,21962,21963,21964,21965,21966,21967,21968,21969,21970,21971,21972,21973,21974,21975,21976,21977,21978,21979,21980,21981,21982,21983,21984,21985,21986,21987,21988,21989,21990,21991,21992,21993,21994,21995,21996,21997,21998,21999,22000,22001,22002,22003,22004,22005,22006,22007,22008,22009,22010,22011,22012,22013,22014,22015,22016,22017,22018,22019,22020,22021,22022,22023,22024,22025,22026,22027,22028,22029,22030,22031,22032,22033,22034,22035,22036,22037,22038,22039,22040,22041,22042,22043,22044,22045,22046,22047,22048,22049,22050,22051,22052,22053,22054,22055,22056,22057,22058,22059,22060,22061,22062,22063,22064,22065,22066,22067,22068,22069,22070,22071,22072,22073,22074,22075,22076,22077,22078,22079,22080,22081,22082,22083,22084,22085,22086,22087,22088,22089,22090,22091,22092,22093,22094,22095,22096,22097,22098,22099,22100,22101,22102,22103,22104,22105,22106,22107,22108,22109,22110,22111,22112,22113,22114,22115,22116,22117,22118,22119,22120,22121,22122,22123,22124,22125,22126,22127,22128,22129,22130,22131,22132,22133,22134,22135,22136,22137,22138,22139,22140,22141,22142,22143,22144,22145,22146,22147,22148,22149,22150,22151,22152,22153,22154,22155,22156,22157,22158,22159,22160,22161,22162,22163,22164,22165,22166,22167,22168,22169,22170,22171,22172,22173,22174,22175,22176,22177,22178,22179,22180,22181,22182,22183,22184,22185,22186,22187,22188,22189,22190,22191,22192,22193,22194,22195,22196,22197,22198,22199,22200,22201,22202,22203,22204,22205,22206,22207,22208,22209,22210,22211,22212,22213,22214,22215,22216,22217,22218,22219,22220,22221,22222,22223,22224,22225,22226,22227,22228,22229,22230,22231,22232,22233,22234,22235,22236,22237,22238,22239,22240,22241,22242,22243,22244,22245,22246,22247,22248,22249,22250,22251,22252,22253,22254,22255,22256,22257,22258,22259,22260,22261,22262,22263,22264,22265,22266,22267,22268,22269,22270,22271,22272,22273,22274,22275,22276,22277,22278,22279,22280,22281,22282,22283,22284,22285,22286,22287,22288,22289,22290,22291,22292,22293,22294,22295,22296,22297,22298,22299,22300,22301,22302,22303,22304,22305,22306,22307,22308,22309,22310,22311,22312,22313,22314,22315,22316,22317,22318,22319,22320,22321,22322,22323,22324,22325,22326,22327,22328,22329,22330,22331,22332,22333,22334,22335,22336,22337,22338,22339,22340,22341,22342,22343,22344,22345,22346,22347,22348,22349,22350,22351,22352,22353,22354,22355,22356,22357,22358,22359,22360,22361,22362,22363,22364,22365,22366,22367,22368,22369,22370,22371,22372,22373,22374,22375,22376,22377,22378,22379,22380,22381,22382,22383,22384,22385,22386,22387,22388,22389,22390,22391,22392,22393,22394,22395,22396,22397,22398,22399,22400,22401,22402,22403,22404,22405,22406,22407,22408,22409,22410,22411,22412,22413,22414,22415,22416,22417,22418,22419,22420,22421,22422,22423,22424,22425,22426,22427,22428,22429,22430,22431,22432,22433,22434,22435,22436,22437,22438,22439,22440,22441,22442,22443,22444,22445,22446,22447,22448,22449,22450,22451,22452,22453,22454,22455,22456,22457,22458,22459,22460,22461,22462,22463,22464,22465,22466,22467,22468,22469,22470,22471,22472,22473,22474,22475,22476,22477,22478,22479,22480,22481,22482,22483,22484,22485,22486,22487,22488,22489,22490,22491,22492,22493,22494,22495,22496,22497,22498,22499,22500,22501,22502,22503,22504,22505,22506,22507,22508,22509,22510,22511,22512,22513,22514,22515,22516,22517,22518,22519,22520,22521,22522,22523,22524,22525,22526,22527,22528,22529,22530,22531,22532,22533,22534,22535,22536,22537,22538,22539,22540,22541,22542,22543,22544,22545,22546,22547,22548,22549,22550,22551,22552,22553,22554,22555,22556,22557,22558,22559,22560,22561,22562,22563,22564,22565,22566,22567,22568,22569,22570,22571,22572,22573,22574,22575,22576,22577,22578,22579,22580,22581,22582,22583,22584,22585,22586,22587,22588,22589,22590,22591,22592,22593,22594,22595,22596,22597,22598,22599,22600,22601,22602,22603,22604,22605,22606,22607,22608,22609,22610,22611,22612,22613,22614,22615,22616,22617,22618,22619,22620,22621,22622,22623,22624,22625,22626,22627,22628,22629,22630,22631,22632,22633,22634,22635,22636,22637,22638,22639,22640,22641,22642,22643,22644,22645,22646,22647,22648,22649,22650,22651,22652,22653,22654,22655,22656,22657,22658,22659,22660,22661,22662,22663,22664,22665,22666,22667,22668,22669,22670,22671,22672,22673,22674,22675,22676,22677,22678,22679,22680,22681,22682,22683,22684,22685,22686,22687,22688,22689,22690,22691,22692,22693,22694,22695,22696,22697,22698,22699,22700,22701,22702,22703,22704,22705,22706,22707,22708,22709,22710,22711,22712,22713,22714,22715,22716,22717,22718,22719,22720,22721,22722,22723,22724,22725,22726,22727,22728,22729,22730,22731,22732,22733,22734,22735,22736,22737,22738,22739,22740,22741,22742,22743,22744,22745,22746,22747,22748,22749,22750,22751,22752,22753,22754,22755,22756,22757,22758,22759,22760,22761,22762,22763,22764,22765,22766,22767,22768,22769,22770,22771,22772,22773,22774,22775,22776,22777,22778,22779,22780,22781,22782,22783,22784,22785,22786,22787,22788,22789,22790,22791,22792,22793,22794,22795,22796,22797,22798,22799,22800,22801,22802,22803,22804,22805,22806,22807,22808,22809,22810,22811,22812,22813,22814,22815,22816,22817,22818,22819,22820,22821,22822,22823,22824,22825,22826,22827,22828,22829,22830,22831,22832,22833,22834,22835,22836,22837,22838,22839,22840,22841,22842,22843,22844,22845,22846,22847,22848,22849,22850,22851,22852,22853,22854,22855,22856,22857,22858,22859,22860,22861,22862,22863,22864,22865,22866,22867,22868,22869,22870,22871,22872,22873,22874,22875,22876,22877,22878,22879,22880,22881,22882,22883,22884,22885,22886,22887,22888,22889,22890,22891,22892,22893,22894,22895,22896,22897,22898,22899,22900,22901,22902,22903,22904,22905,22906,22907,22908,22909,22910,22911,22912,22913,22914,22915,22916,22917,22918,22919,22920,22921,22922,22923,22924,22925,22926,22927,22928,22929,22930,22931,22932,22933,22934,22935,22936,22937,22938,22939,22940,22941,22942,22943,22944,22945,22946,22947,22948,22949,22950,22951,22952,22953,22954,22955,22956,22957,22958,22959,22960,22961,22962,22963,22964,22965,22966,22967,22968,22969,22970,22971,22972,22973,22974,22975,22976,22977,22978,22979,22980,22981,22982,22983,22984,22985,22986,22987,22988,22989,22990,22991,22992,22993,22994,22995,22996,22997,22998,22999,23000,23001,23002,23003,23004,23005,23006,23007,23008,23009,23010,23011,23012,23013,23014,23015,23016,23017,23018,23019,23020,23021,23022,23023,23024,23025,23026,23027,23028,23029,23030,23031,23032,23033,23034,23035,23036,23037,23038,23039,23040,23041,23042,23043,23044,23045,23046,23047,23048,23049,23050,23051,23052,23053,23054,23055,23056,23057,23058,23059,23060,23061,23062,23063,23064,23065,23066,23067,23068,23069,23070,23071,23072,23073,23074,23075,23076,23077,23078,23079,23080,23081,23082,23083,23084,23085,23086,23087,23088,23089,23090,23091,23092,23093,23094,23095,23096,23097,23098,23099,23100,23101,23102,23103,23104,23105,23106,23107,23108,23109,23110,23111,23112,23113,23114,23115,23116,23117,23118,23119,23120,23121,23122,23123,23124,23125,23126,23127,23128,23129,23130,23131,23132,23133,23134,23135,23136,23137,23138,23139,23140,23141,23142,23143,23144,23145,23146,23147,23148,23149,23150,23151,23152,23153,23154,23155,23156,23157,23158,23159,23160,23161,23162,23163,23164,23165,23166,23167,23168,23169,23170,23171,23172,23173,23174,23175,23176,23177,23178,23179,23180,23181,23182,23183,23184,23185,23186,23187,23188,23189,23190,23191,23192,23193,23194,23195,23196,23197,23198,23199,23200,23201,23202,23203,23204,23205,23206,23207,23208,23209,23210,23211,23212,23213,23214,23215,23216,23217,23218,23219,23220,23221,23222,23223,23224,23225,23226,23227,23228,23229,23230,23231,23232,23233,23234,23235,23236,23237,23238,23239,23240,23241,23242,23243,23244,23245,23246,23247,23248,23249,23250,23251,23252,23253,23254,23255,23256,23257,23258,23259,23260,23261,23262,23263,23264,23265,23266,23267,23268,23269,23270,23271,23272,23273,23274,23275,23276,23277,23278,23279,23280,23281,23282,23283,23284,23285,23286,23287,23288,23289,23290,23291,23292,23293,23294,23295,23296,23297,23298,23299,23300,23301,23302,23303,23304,23305,23306,23307,23308,23309,23310,23311,23312,23313,23314,23315,23316,23317,23318,23319,23320,23321,23322,23323,23324,23325,23326,23327,23328,23329,23330,23331,23332,23333,23334,23335,23336,23337,23338,23339,23340,23341,23342,23343,23344,23345,23346,23347,23348,23349,23350,23351,23352,23353,23354,23355,23356,23357,23358,23359,23360,23361,23362,23363,23364,23365,23366,23367,23368,23369,23370,23371,23372,23373,23374,23375,23376,23377,23378,23379,23380,23381,23382,23383,23384,23385,23386,23387,23388,23389,23390,23391,23392,23393,23394,23395,23396,23397,23398,23399,23400,23401,23402,23403,23404,23405,23406,23407,23408,23409,23410,23411,23412,23413,23414,23415,23416,23417,23418,23419,23420,23421,23422,23423,23424,23425,23426,23427,23428,23429,23430,23431,23432,23433,23434,23435,23436,23437,23438,23439,23440,23441,23442,23443,23444,23445,23446,23447,23448,23449,23450,23451,23452,23453,23454,23455,23456,23457,23458,23459,23460,23461,23462,23463,23464,23465,23466,23467,23468,23469,23470,23471,23472,23473,23474,23475,23476,23477,23478,23479,23480,23481,23482,23483,23484,23485,23486,23487,23488,23489,23490,23491,23492,23493,23494,23495,23496,23497,23498,23499,23500,23501,23502,23503,23504,23505,23506,23507,23508,23509,23510,23511,23512,23513,23514,23515,23516,23517,23518,23519,23520,23521,23522,23523,23524,23525,23526,23527,23528,23529,23530,23531,23532,23533,23534,23535,23536,23537,23538,23539,23540,23541,23542,23543,23544,23545,23546,23547,23548,23549,23550,23551,23552,23553,23554,23555,23556,23557,23558,23559,23560,23561,23562,23563,23564,23565,23566,23567,23568,23569,23570,23571,23572,23573,23574,23575,23576,23577,23578,23579,23580,23581,23582,23583,23584,23585,23586,23587,23588,23589,23590,23591,23592,23593,23594,23595,23596,23597,23598,23599,23600,23601,23602,23603,23604,23605,23606,23607,23608,23609,23610,23611,23612,23613,23614,23615,23616,23617,23618,23619,23620,23621,23622,23623,23624,23625,23626,23627,23628,23629,23630,23631,23632,23633,23634,23635,23636,23637,23638,23639,23640,23641,23642,23643,23644,23645,23646,23647,23648,23649,23650,23651,23652,23653,23654,23655,23656,23657,23658,23659,23660,23661,23662,23663,23664,23665,23666,23667,23668,23669,23670,23671,23672,23673,23674,23675,23676,23677,23678,23679,23680,23681,23682,23683,23684,23685,23686,23687,23688,23689,23690,23691,23692,23693,23694,23695,23696,23697,23698,23699,23700,23701,23702,23703,23704,23705,23706,23707,23708,23709,23710,23711,23712,23713,23714,23715,23716,23717,23718,23719,23720,23721,23722,23723,23724,23725,23726,23727,23728,23729,23730,23731,23732,23733,23734,23735,23736,23737,23738,23739,23740,23741,23742,23743,23744,23745,23746,23747,23748,23749,23750,23751,23752,23753,23754,23755,23756,23757,23758,23759,23760,23761,23762,23763,23764,23765,23766,23767,23768,23769,23770,23771,23772,23773,23774,23775,23776,23777,23778,23779,23780,23781,23782,23783,23784,23785,23786,23787,23788,23789,23790,23791,23792,23793,23794,23795,23796,23797,23798,23799,23800,23801,23802,23803,23804,23805,23806,23807,23808,23809,23810,23811,23812,23813,23814,23815,23816,23817,23818,23819,23820,23821,23822,23823,23824,23825,23826,23827,23828,23829,23830,23831,23832,23833,23834,23835,23836,23837,23838,23839,23840,23841,23842,23843,23844,23845,23846,23847,23848,23849,23850,23851,23852,23853,23854,23855,23856,23857,23858,23859,23860,23861,23862,23863,23864,23865,23866,23867,23868,23869,23870,23871,23872,23873,23874,23875,23876,23877,23878,23879,23880,23881,23882,23883,23884,23885,23886,23887,23888,23889,23890,23891,23892,23893,23894,23895,23896,23897,23898,23899,23900,23901,23902,23903,23904,23905,23906,23907,23908,23909,23910,23911,23912,23913,23914,23915,23916,23917,23918,23919,23920,23921,23922,23923,23924,23925,23926,23927,23928,23929,23930,23931,23932,23933,23934,23935,23936,23937,23938,23939,23940,23941,23942,23943,23944,23945,23946,23947,23948,23949,23950,23951,23952,23953,23954,23955,23956,23957,23958,23959,23960,23961,23962,23963,23964,23965,23966,23967,23968,23969,23970,23971,23972,23973,23974,23975,23976,23977,23978,23979,23980,23981,23982,23983,23984,23985,23986,23987,23988,23989,23990,23991,23992,23993,23994,23995,23996,23997,23998,23999,24000,24001,24002,24003,24004,24005,24006,24007,24008,24009,24010,24011,24012,24013,24014,24015,24016,24017,24018,24019,24020,24021,24022,24023,24024,24025,24026,24027,24028,24029,24030,24031,24032,24033,24034,24035,24036,24037,24038,24039,24040,24041,24042,24043,24044,24045,24046,24047,24048,24049,24050,24051,24052,24053,24054,24055,24056,24057,24058,24059,24060,24061,24062,24063,24064,24065,24066,24067,24068,24069,24070,24071,24072,24073,24074,24075,24076,24077,24078,24079,24080,24081,24082,24083,24084,24085,24086,24087,24088,24089,24090,24091,24092,24093,24094,24095,24096,24097,24098,24099,24100,24101,24102,24103,24104,24105,24106,24107,24108,24109,24110,24111,24112,24113,24114,24115,24116,24117,24118,24119,24120,24121,24122,24123,24124,24125,24126,24127,24128,24129,24130,24131,24132,24133,24134,24135,24136,24137,24138,24139,24140,24141,24142,24143,24144,24145,24146,24147,24148,24149,24150,24151,24152,24153,24154,24155,24156,24157,24158,24159,24160,24161,24162,24163,24164,24165,24166,24167,24168,24169,24170,24171,24172,24173,24174,24175,24176,24177,24178,24179,24180,24181,24182,24183,24184,24185,24186,24187,24188,24189,24190,24191,24192,24193,24194,24195,24196,24197,24198,24199,24200,24201,24202,24203,24204,24205,24206,24207,24208,24209,24210,24211,24212,24213,24214,24215,24216,24217,24218,24219,24220,24221,24222,24223,24224,24225,24226,24227,24228,24229,24230,24231,24232,24233,24234,24235,24236,24237,24238,24239,24240,24241,24242,24243,24244,24245,24246,24247,24248,24249,24250,24251,24252,24253,24254,24255,24256,24257,24258,24259,24260,24261,24262,24263,24264,24265,24266,24267,24268,24269,24270,24271,24272,24273,24274,24275,24276,24277,24278,24279,24280,24281,24282,24283,24284,24285,24286,24287,24288,24289,24290,24291,24292,24293,24294,24295,24296,24297,24298,24299,24300,24301,24302,24303,24304,24305,24306,24307,24308,24309,24310,24311,24312,24313,24314,24315,24316,24317,24318,24319,24320,24321,24322,24323,24324,24325,24326,24327,24328,24329,24330,24331,24332,24333,24334,24335,24336,24337,24338,24339,24340,24341,24342,24343,24344,24345,24346,24347,24348,24349,24350,24351,24352,24353,24354,24355,24356,24357,24358,24359,24360,24361,24362,24363,24364,24365,24366,24367,24368,24369,24370,24371,24372,24373,24374,24375,24376,24377,24378,24379,24380,24381,24382,24383,24384,24385,24386,24387,24388,24389,24390,24391,24392,24393,24394,24395,24396,24397,24398,24399,24400,24401,24402,24403,24404,24405,24406,24407,24408,24409,24410,24411,24412,24413,24414,24415,24416,24417,24418,24419,24420,24421,24422,24423,24424,24425,24426,24427,24428,24429,24430,24431,24432,24433,24434,24435,24436,24437,24438,24439,24440,24441,24442,24443,24444,24445,24446,24447,24448,24449,24450,24451,24452,24453,24454,24455,24456,24457,24458,24459,24460,24461,24462,24463,24464,24465,24466,24467,24468,24469,24470,24471,24472,24473,24474,24475,24476,24477,24478,24479,24480,24481,24482,24483,24484,24485,24486,24487,24488,24489,24490,24491,24492,24493,24494,24495,24496,24497,24498,24499,24500,24501,24502,24503,24504,24505,24506,24507,24508,24509,24510,24511,24512,24513,24514,24515,24516,24517,24518,24519,24520,24521,24522,24523,24524,24525,24526,24527,24528,24529,24530,24531,24532,24533,24534,24535,24536,24537,24538,24539,24540,24541,24542,24543,24544,24545,24546,24547,24548,24549,24550,24551,24552,24553,24554,24555,24556,24557,24558,24559,24560,24561,24562,24563,24564,24565,24566,24567,24568,24569,24570,24571,24572,24573,24574,24575,24576,24577,24578,24579,24580,24581,24582,24583,24584,24585,24586,24587,24588,24589,24590,24591,24592,24593,24594,24595,24596,24597,24598,24599,24600,24601,24602,24603,24604,24605,24606,24607,24608,24609,24610,24611,24612,24613,24614,24615,24616,24617,24618,24619,24620,24621,24622,24623,24624,24625,24626,24627,24628,24629,24630,24631,24632,24633,24634,24635,24636,24637,24638,24639,24640,24641,24642,24643,24644,24645,24646,24647,24648,24649,24650,24651,24652,24653,24654,24655,24656,24657,24658,24659,24660,24661,24662,24663,24664,24665,24666,24667,24668,24669,24670,24671,24672,24673,24674,24675,24676,24677,24678,24679,24680,24681,24682,24683,24684,24685,24686,24687,24688,24689,24690,24691,24692,24693,24694,24695,24696,24697,24698,24699,24700,24701,24702,24703,24704,24705,24706,24707,24708,24709,24710,24711,24712,24713,24714,24715,24716,24717,24718,24719,24720,24721,24722,24723,24724,24725,24726,24727,24728,24729,24730,24731,24732,24733,24734,24735,24736,24737,24738,24739,24740,24741,24742,24743,24744,24745,24746,24747,24748,24749,24750,24751,24752,24753,24754,24755,24756,24757,24758,24759,24760,24761,24762,24763,24764,24765,24766,24767,24768,24769,24770,24771,24772,24773,24774,24775,24776,24777,24778,24779,24780,24781,24782,24783,24784,24785,24786,24787,24788,24789,24790,24791,24792,24793,24794,24795,24796,24797,24798,24799,24800,24801,24802,24803,24804,24805,24806,24807,24808,24809,24810,24811,24812,24813,24814,24815,24816,24817,24818,24819,24820,24821,24822,24823,24824,24825,24826,24827,24828,24829,24830,24831,24832,24833,24834,24835,24836,24837,24838,24839,24840,24841,24842,24843,24844,24845,24846,24847,24848,24849,24850,24851,24852,24853,24854,24855,24856,24857,24858,24859,24860,24861,24862,24863,24864,24865,24866,24867,24868,24869,24870,24871,24872,24873,24874,24875,24876,24877,24878,24879,24880,24881,24882,24883,24884,24885,24886,24887,24888,24889,24890,24891,24892,24893,24894,24895,24896,24897,24898,24899,24900,24901,24902,24903,24904,24905,24906,24907,24908,24909,24910,24911,24912,24913,24914,24915,24916,24917,24918,24919,24920,24921,24922,24923,24924,24925,24926,24927,24928,24929,24930,24931,24932,24933,24934,24935,24936,24937,24938,24939,24940,24941,24942,24943,24944,24945,24946,24947,24948,24949,24950,24951,24952,24953,24954,24955,24956,24957,24958,24959,24960,24961,24962,24963,24964,24965,24966,24967,24968,24969,24970,24971,24972,24973,24974,24975,24976,24977,24978,24979,24980,24981,24982,24983,24984,24985,24986,24987,24988,24989,24990,24991,24992,24993,24994,24995,24996,24997,24998,24999,25000,25001,25002,25003,25004,25005,25006,25007,25008,25009,25010,25011,25012,25013,25014,25015,25016,25017,25018,25019,25020,25021,25022,25023,25024,25025,25026,25027,25028,25029,25030,25031,25032,25033,25034,25035,25036,25037,25038,25039,25040,25041,25042,25043,25044,25045,25046,25047,25048,25049,25050,25051,25052,25053,25054,25055,25056,25057,25058,25059,25060,25061,25062,25063,25064,25065,25066,25067,25068,25069,25070,25071,25072,25073,25074,25075,25076,25077,25078,25079,25080,25081,25082,25083,25084,25085,25086,25087,25088,25089,25090,25091,25092,25093,25094,25095,25096,25097,25098,25099,25100,25101,25102,25103,25104,25105,25106,25107,25108,25109,25110,25111,25112,25113,25114,25115,25116,25117,25118,25119,25120,25121,25122,25123,25124,25125,25126,25127,25128,25129,25130,25131,25132,25133,25134,25135,25136,25137,25138,25139,25140,25141,25142,25143,25144,25145,25146,25147,25148,25149,25150,25151,25152,25153,25154,25155,25156,25157,25158,25159,25160,25161,25162,25163,25164,25165,25166,25167,25168,25169,25170,25171,25172,25173,25174,25175,25176,25177,25178,25179,25180,25181,25182,25183,25184,25185,25186,25187,25188,25189,25190,25191,25192,25193,25194,25195,25196,25197,25198,25199,25200,25201,25202,25203,25204,25205,25206,25207,25208,25209,25210,25211,25212,25213,25214,25215,25216,25217,25218,25219,25220,25221,25222,25223,25224,25225,25226,25227,25228,25229,25230,25231,25232,25233,25234,25235,25236,25237,25238,25239,25240,25241,25242,25243,25244,25245,25246,25247,25248,25249,25250,25251,25252,25253,25254,25255,25256,25257,25258,25259,25260,25261,25262,25263,25264,25265,25266,25267,25268,25269,25270,25271,25272,25273,25274,25275,25276,25277,25278,25279,25280,25281,25282,25283,25284,25285,25286,25287,25288,25289,25290,25291,25292,25293,25294,25295,25296,25297,25298,25299,25300,25301,25302,25303,25304,25305,25306,25307,25308,25309,25310,25311,25312,25313,25314,25315,25316,25317,25318,25319,25320,25321,25322,25323,25324,25325,25326,25327,25328,25329,25330,25331,25332,25333,25334,25335,25336,25337,25338,25339,25340,25341,25342,25343,25344,25345,25346,25347,25348,25349,25350,25351,25352,25353,25354,25355,25356,25357,25358,25359,25360,25361,25362,25363,25364,25365,25366,25367,25368,25369,25370,25371,25372,25373,25374,25375,25376,25377,25378,25379,25380,25381,25382,25383,25384,25385,25386,25387,25388,25389,25390,25391,25392,25393,25394,25395,25396,25397,25398,25399,25400,25401,25402,25403,25404,25405,25406,25407,25408,25409,25410,25411,25412,25413,25414,25415,25416,25417,25418,25419,25420,25421,25422,25423,25424,25425,25426,25427,25428,25429,25430,25431,25432,25433,25434,25435,25436,25437,25438,25439,25440,25441,25442,25443,25444,25445,25446,25447,25448,25449,25450,25451,25452,25453,25454,25455,25456,25457,25458,25459,25460,25461,25462,25463,25464,25465,25466,25467,25468,25469,25470,25471,25472,25473,25474,25475,25476,25477,25478,25479,25480,25481,25482,25483,25484,25485,25486,25487,25488,25489,25490,25491,25492,25493,25494,25495,25496,25497,25498,25499,25500,25501,25502,25503,25504,25505,25506,25507,25508,25509,25510,25511,25512,25513,25514,25515,25516,25517,25518,25519,25520,25521,25522,25523,25524,25525,25526,25527,25528,25529,25530,25531,25532,25533,25534,25535,25536,25537,25538,25539,25540,25541,25542,25543,25544,25545,25546,25547,25548,25549,25550,25551,25552,25553,25554,25555,25556,25557,25558,25559,25560,25561,25562,25563,25564,25565,25566,25567,25568,25569,25570,25571,25572,25573,25574,25575,25576,25577,25578,25579,25580,25581,25582,25583,25584,25585,25586,25587,25588,25589,25590,25591,25592,25593,25594,25595,25596,25597,25598,25599,25600,25601,25602,25603,25604,25605,25606,25607,25608,25609,25610,25611,25612,25613,25614,25615,25616,25617,25618,25619,25620,25621,25622,25623,25624,25625,25626,25627,25628,25629,25630,25631,25632,25633,25634,25635,25636,25637,25638,25639,25640,25641,25642,25643,25644,25645,25646,25647,25648,25649,25650,25651,25652,25653,25654,25655,25656,25657,25658,25659,25660,25661,25662,25663,25664,25665,25666,25667,25668,25669,25670,25671,25672,25673,25674,25675,25676,25677,25678,25679,25680,25681,25682,25683,25684,25685,25686,25687,25688,25689,25690,25691,25692,25693,25694,25695,25696,25697,25698,25699,25700,25701,25702,25703,25704,25705,25706,25707,25708,25709,25710,25711,25712,25713,25714,25715,25716,25717,25718,25719,25720,25721,25722,25723,25724,25725,25726,25727,25728,25729,25730,25731,25732,25733,25734,25735,25736,25737,25738,25739,25740,25741,25742,25743,25744,25745,25746,25747,25748,25749,25750,25751,25752,25753,25754,25755,25756,25757,25758,25759,25760,25761,25762,25763,25764,25765,25766,25767,25768,25769,25770,25771,25772,25773,25774,25775,25776,25777,25778,25779,25780,25781,25782,25783,25784,25785,25786,25787,25788,25789,25790,25791,25792,25793,25794,25795,25796,25797,25798,25799,25800,25801,25802,25803,25804,25805,25806,25807,25808,25809,25810,25811,25812,25813,25814,25815,25816,25817,25818,25819,25820,25821,25822,25823,25824,25825,25826,25827,25828,25829,25830,25831,25832,25833,25834,25835,25836,25837,25838,25839,25840,25841,25842,25843,25844,25845,25846,25847,25848,25849,25850,25851,25852,25853,25854,25855,25856,25857,25858,25859,25860,25861,25862,25863,25864,25865,25866,25867,25868,25869,25870,25871,25872,25873,25874,25875,25876,25877,25878,25879,25880,25881,25882,25883,25884,25885,25886,25887,25888,25889,25890,25891,25892,25893,25894,25895,25896,25897,25898,25899,25900,25901,25902,25903,25904,25905,25906,25907,25908,25909,25910,25911,25912,25913,25914,25915,25916,25917,25918,25919,25920,25921,25922,25923,25924,25925,25926,25927,25928,25929,25930,25931,25932,25933,25934,25935,25936,25937,25938,25939,25940,25941,25942,25943,25944,25945,25946,25947,25948,25949,25950,25951,25952,25953,25954,25955,25956,25957,25958,25959,25960,25961,25962,25963,25964,25965,25966,25967,25968,25969,25970,25971,25972,25973,25974,25975,25976,25977,25978,25979,25980,25981,25982,25983,25984,25985,25986,25987,25988,25989,25990,25991,25992,25993,25994,25995,25996,25997,25998,25999,26000,26001,26002,26003,26004,26005,26006,26007,26008,26009,26010,26011,26012,26013,26014,26015,26016,26017,26018,26019,26020,26021,26022,26023,26024,26025,26026,26027,26028,26029,26030,26031,26032,26033,26034,26035,26036,26037,26038,26039,26040,26041,26042,26043,26044,26045,26046,26047,26048,26049,26050,26051,26052,26053,26054,26055,26056,26057,26058,26059,26060,26061,26062,26063,26064,26065,26066,26067,26068,26069,26070,26071,26072,26073,26074,26075,26076,26077,26078,26079,26080,26081,26082,26083,26084,26085,26086,26087,26088,26089,26090,26091,26092,26093,26094,26095,26096,26097,26098,26099,26100,26101,26102,26103,26104,26105,26106,26107,26108,26109,26110,26111,26112,26113,26114,26115,26116,26117,26118,26119,26120,26121,26122,26123,26124,26125,26126,26127,26128,26129,26130,26131,26132,26133,26134,26135,26136,26137,26138,26139,26140,26141,26142,26143,26144,26145,26146,26147,26148,26149,26150,26151,26152,26153,26154,26155,26156,26157,26158,26159,26160,26161,26162,26163,26164,26165,26166,26167,26168,26169,26170,26171,26172,26173,26174,26175,26176,26177,26178,26179,26180,26181,26182,26183,26184,26185,26186,26187,26188,26189,26190,26191,26192,26193,26194,26195,26196,26197,26198,26199,26200,26201,26202,26203,26204,26205,26206,26207,26208,26209,26210,26211,26212,26213,26214,26215,26216,26217,26218,26219,26220,26221,26222,26223,26224,26225,26226,26227,26228,26229,26230,26231,26232,26233,26234,26235,26236,26237,26238,26239,26240,26241,26242,26243,26244,26245,26246,26247,26248,26249,26250,26251,26252,26253,26254,26255,26256,26257,26258,26259,26260,26261,26262,26263,26264,26265,26266,26267,26268,26269,26270,26271,26272,26273,26274,26275,26276,26277,26278,26279,26280,26281,26282,26283,26284,26285,26286,26287,26288,26289,26290,26291,26292,26293,26294,26295,26296,26297,26298,26299,26300,26301,26302,26303,26304,26305,26306,26307,26308,26309,26310,26311,26312,26313,26314,26315,26316,26317,26318,26319,26320,26321,26322,26323,26324,26325,26326,26327,26328,26329,26330,26331,26332,26333,26334,26335,26336,26337,26338,26339,26340,26341,26342,26343,26344,26345,26346,26347,26348,26349,26350,26351,26352,26353,26354,26355,26356,26357,26358,26359,26360,26361,26362,26363,26364,26365,26366,26367,26368,26369,26370,26371,26372,26373,26374,26375,26376,26377,26378,26379,26380,26381,26382,26383,26384,26385,26386,26387,26388,26389,26390,26391,26392,26393,26394,26395,26396,26397,26398,26399,26400,26401,26402,26403,26404,26405,26406,26407,26408,26409,26410,26411,26412,26413,26414,26415,26416,26417,26418,26419,26420,26421,26422,26423,26424,26425,26426,26427,26428,26429,26430,26431,26432,26433,26434,26435,26436,26437,26438,26439,26440,26441,26442,26443,26444,26445,26446,26447,26448,26449,26450,26451,26452,26453,26454,26455,26456,26457,26458,26459,26460,26461,26462,26463,26464,26465,26466,26467,26468,26469,26470,26471,26472,26473,26474,26475,26476,26477,26478,26479,26480,26481,26482,26483,26484,26485,26486,26487,26488,26489,26490,26491,26492,26493,26494,26495,26496,26497,26498,26499,26500,26501,26502,26503,26504,26505,26506,26507,26508,26509,26510,26511,26512,26513,26514,26515,26516,26517,26518,26519,26520,26521,26522,26523,26524,26525,26526,26527,26528,26529,26530,26531,26532,26533,26534,26535,26536,26537,26538,26539,26540,26541,26542,26543,26544,26545,26546,26547,26548,26549,26550,26551,26552,26553,26554,26555,26556,26557,26558,26559,26560,26561,26562,26563,26564,26565,26566,26567,26568,26569,26570,26571,26572,26573,26574,26575,26576,26577,26578,26579,26580,26581,26582,26583,26584,26585,26586,26587,26588,26589,26590,26591,26592,26593,26594,26595,26596,26597,26598,26599,26600,26601,26602,26603,26604,26605,26606,26607,26608,26609,26610,26611,26612,26613,26614,26615,26616,26617,26618,26619,26620,26621,26622,26623,26624,26625,26626,26627,26628,26629,26630,26631,26632,26633,26634,26635,26636,26637,26638,26639,26640,26641,26642,26643,26644,26645,26646,26647,26648,26649,26650,26651,26652,26653,26654,26655,26656,26657,26658,26659,26660,26661,26662,26663,26664,26665,26666,26667,26668,26669,26670,26671,26672,26673,26674,26675,26676,26677,26678,26679,26680,26681,26682,26683,26684,26685,26686,26687,26688,26689,26690,26691,26692,26693,26694,26695,26696,26697,26698,26699,26700,26701,26702,26703,26704,26705,26706,26707,26708,26709,26710,26711,26712,26713,26714,26715,26716,26717,26718,26719,26720,26721,26722,26723,26724,26725,26726,26727,26728,26729,26730,26731,26732,26733,26734,26735,26736,26737,26738,26739,26740,26741,26742,26743,26744,26745,26746,26747,26748,26749,26750,26751,26752,26753,26754,26755,26756,26757,26758,26759,26760,26761,26762,26763,26764,26765,26766,26767,26768,26769,26770,26771,26772,26773,26774,26775,26776,26777,26778,26779,26780,26781,26782,26783,26784,26785,26786,26787,26788,26789,26790,26791,26792,26793,26794,26795,26796,26797,26798,26799,26800,26801,26802,26803,26804,26805,26806,26807,26808,26809,26810,26811,26812,26813,26814,26815,26816,26817,26818,26819,26820,26821,26822,26823,26824,26825,26826,26827,26828,26829,26830,26831,26832,26833,26834,26835,26836,26837,26838,26839,26840,26841,26842,26843,26844,26845,26846,26847,26848,26849,26850,26851,26852,26853,26854,26855,26856,26857,26858,26859,26860,26861,26862,26863,26864,26865,26866,26867,26868,26869,26870,26871,26872,26873,26874,26875,26876,26877,26878,26879,26880,26881,26882,26883,26884,26885,26886,26887,26888,26889,26890,26891,26892,26893,26894,26895,26896,26897,26898,26899,26900,26901,26902,26903,26904,26905,26906,26907,26908,26909,26910,26911,26912,26913,26914,26915,26916,26917,26918,26919,26920,26921,26922,26923,26924,26925,26926,26927,26928,26929,26930,26931,26932,26933,26934,26935,26936,26937,26938,26939,26940,26941,26942,26943,26944,26945,26946,26947,26948,26949,26950,26951,26952,26953,26954,26955,26956,26957,26958,26959,26960,26961,26962,26963,26964,26965,26966,26967,26968,26969,26970,26971,26972,26973,26974,26975,26976,26977,26978,26979,26980,26981,26982,26983,26984,26985,26986,26987,26988,26989,26990,26991,26992,26993,26994,26995,26996,26997,26998,26999,27000,27001,27002,27003,27004,27005,27006,27007,27008,27009,27010,27011,27012,27013,27014,27015,27016,27017,27018,27019,27020,27021,27022,27023,27024,27025,27026,27027,27028,27029,27030,27031,27032,27033,27034,27035,27036,27037,27038,27039,27040,27041,27042,27043,27044,27045,27046,27047,27048,27049,27050,27051,27052,27053,27054,27055,27056,27057,27058,27059,27060,27061,27062,27063,27064,27065,27066,27067,27068,27069,27070,27071,27072,27073,27074,27075,27076,27077,27078,27079,27080,27081,27082,27083,27084,27085,27086,27087,27088,27089,27090,27091,27092,27093,27094,27095,27096,27097,27098,27099,27100,27101,27102,27103,27104,27105,27106,27107,27108,27109,27110,27111,27112,27113,27114,27115,27116,27117,27118,27119,27120,27121,27122,27123,27124,27125,27126,27127,27128,27129,27130,27131,27132,27133,27134,27135,27136,27137,27138,27139,27140,27141,27142,27143,27144,27145,27146,27147,27148,27149,27150,27151,27152,27153,27154,27155,27156,27157,27158,27159,27160,27161,27162,27163,27164,27165,27166,27167,27168,27169,27170,27171,27172,27173,27174,27175,27176,27177,27178,27179,27180,27181,27182,27183,27184,27185,27186,27187,27188,27189,27190,27191,27192,27193,27194,27195,27196,27197,27198,27199,27200,27201,27202,27203,27204,27205,27206,27207,27208,27209,27210,27211,27212,27213,27214,27215,27216,27217,27218,27219,27220,27221,27222,27223,27224,27225,27226,27227,27228,27229,27230,27231,27232,27233,27234,27235,27236,27237,27238,27239,27240,27241,27242,27243,27244,27245,27246,27247,27248,27249,27250,27251,27252,27253,27254,27255,27256,27257,27258,27259,27260,27261,27262,27263,27264,27265,27266,27267,27268,27269,27270,27271,27272,27273,27274,27275,27276,27277,27278,27279,27280,27281,27282,27283,27284,27285,27286,27287,27288,27289,27290,27291,27292,27293,27294,27295,27296,27297,27298,27299,27300,27301,27302,27303,27304,27305,27306,27307,27308,27309,27310,27311,27312,27313,27314,27315,27316,27317,27318,27319,27320,27321,27322,27323,27324,27325,27326,27327,27328,27329,27330,27331,27332,27333,27334,27335,27336,27337,27338,27339,27340,27341,27342,27343,27344,27345,27346,27347,27348,27349,27350,27351,27352,27353,27354,27355,27356,27357,27358,27359,27360,27361,27362,27363,27364,27365,27366,27367,27368,27369,27370,27371,27372,27373,27374,27375,27376,27377,27378,27379,27380,27381,27382,27383,27384,27385,27386,27387,27388,27389,27390,27391,27392,27393,27394,27395,27396,27397,27398,27399,27400,27401,27402,27403,27404,27405,27406,27407,27408,27409,27410,27411,27412,27413,27414,27415,27416,27417,27418,27419,27420,27421,27422,27423,27424,27425,27426,27427,27428,27429,27430,27431,27432,27433,27434,27435,27436,27437,27438,27439,27440,27441,27442,27443,27444,27445,27446,27447,27448,27449,27450,27451,27452,27453,27454,27455,27456,27457,27458,27459,27460,27461,27462,27463,27464,27465,27466,27467,27468,27469,27470,27471,27472,27473,27474,27475,27476,27477,27478,27479,27480,27481,27482,27483,27484,27485,27486,27487,27488,27489,27490,27491,27492,27493,27494,27495,27496,27497,27498,27499,27500,27501,27502,27503,27504,27505,27506,27507,27508,27509,27510,27511,27512,27513,27514,27515,27516,27517,27518,27519,27520,27521,27522,27523,27524,27525,27526,27527,27528,27529,27530,27531,27532,27533,27534,27535,27536,27537,27538,27539,27540,27541,27542,27543,27544,27545,27546,27547,27548,27549,27550,27551,27552,27553,27554,27555,27556,27557,27558,27559,27560,27561,27562,27563,27564,27565,27566,27567,27568,27569,27570,27571,27572,27573,27574,27575,27576,27577,27578,27579,27580,27581,27582,27583,27584,27585,27586,27587,27588,27589,27590,27591,27592,27593,27594,27595,27596,27597,27598,27599,27600,27601,27602,27603,27604,27605,27606,27607,27608,27609,27610,27611,27612,27613,27614,27615,27616,27617,27618,27619,27620,27621,27622,27623,27624,27625,27626,27627,27628,27629,27630,27631,27632,27633,27634,27635,27636,27637,27638,27639,27640,27641,27642,27643,27644,27645,27646,27647,27648,27649,27650,27651,27652,27653,27654,27655,27656,27657,27658,27659,27660,27661,27662,27663,27664,27665,27666,27667,27668,27669,27670,27671,27672,27673,27674,27675,27676,27677,27678,27679,27680,27681,27682,27683,27684,27685,27686,27687,27688,27689,27690,27691,27692,27693,27694,27695,27696,27697,27698,27699,27700,27701,27702,27703,27704,27705,27706,27707,27708,27709,27710,27711,27712,27713,27714,27715,27716,27717,27718,27719,27720,27721,27722,27723,27724,27725,27726,27727,27728,27729,27730,27731,27732,27733,27734,27735,27736,27737,27738,27739,27740,27741,27742,27743,27744,27745,27746,27747,27748,27749,27750,27751,27752,27753,27754,27755,27756,27757,27758,27759,27760,27761,27762,27763,27764,27765,27766,27767,27768,27769,27770,27771,27772,27773,27774,27775,27776,27777,27778,27779,27780,27781,27782,27783,27784,27785,27786,27787,27788,27789,27790,27791,27792,27793,27794,27795,27796,27797,27798,27799,27800,27801,27802,27803,27804,27805,27806,27807,27808,27809,27810,27811,27812,27813,27814,27815,27816,27817,27818,27819,27820,27821,27822,27823,27824,27825,27826,27827,27828,27829,27830,27831,27832,27833,27834,27835,27836,27837,27838,27839,27840,27841,27842,27843,27844,27845,27846,27847,27848,27849,27850,27851,27852,27853,27854,27855,27856,27857,27858,27859,27860,27861,27862,27863,27864,27865,27866,27867,27868,27869,27870,27871,27872,27873,27874,27875,27876,27877,27878,27879,27880,27881,27882,27883,27884,27885,27886,27887,27888,27889,27890,27891,27892,27893,27894,27895,27896,27897,27898,27899,27900,27901,27902,27903,27904,27905,27906,27907,27908,27909,27910,27911,27912,27913,27914,27915,27916,27917,27918,27919,27920,27921,27922,27923,27924,27925,27926,27927,27928,27929,27930,27931,27932,27933,27934,27935,27936,27937,27938,27939,27940,27941,27942,27943,27944,27945,27946,27947,27948,27949,27950,27951,27952,27953,27954,27955,27956,27957,27958,27959,27960,27961,27962,27963,27964,27965,27966,27967,27968,27969,27970,27971,27972,27973,27974,27975,27976,27977,27978,27979,27980,27981,27982,27983,27984,27985,27986,27987,27988,27989,27990,27991,27992,27993,27994,27995,27996,27997,27998,27999,28000,28001,28002,28003,28004,28005,28006,28007,28008,28009,28010,28011,28012,28013,28014,28015,28016,28017,28018,28019,28020,28021,28022,28023,28024,28025,28026,28027,28028,28029,28030,28031,28032,28033,28034,28035,28036,28037,28038,28039,28040,28041,28042,28043,28044,28045,28046,28047,28048,28049,28050,28051,28052,28053,28054,28055,28056,28057,28058,28059,28060,28061,28062,28063,28064,28065,28066,28067,28068,28069,28070,28071,28072,28073,28074,28075,28076,28077,28078,28079,28080,28081,28082,28083,28084,28085,28086,28087,28088,28089,28090,28091,28092,28093,28094,28095,28096,28097,28098,28099,28100,28101,28102,28103,28104,28105,28106,28107,28108,28109,28110,28111,28112,28113,28114,28115,28116,28117,28118,28119,28120,28121,28122,28123,28124,28125,28126,28127,28128,28129,28130,28131,28132,28133,28134,28135,28136,28137,28138,28139,28140,28141,28142,28143,28144,28145,28146,28147,28148,28149,28150,28151,28152,28153,28154,28155,28156,28157,28158,28159,28160,28161,28162,28163,28164,28165,28166,28167,28168,28169,28170,28171,28172,28173,28174,28175,28176,28177,28178,28179,28180,28181,28182,28183,28184,28185,28186,28187,28188,28189,28190,28191,28192,28193,28194,28195,28196,28197,28198,28199,28200,28201,28202,28203,28204,28205,28206,28207,28208,28209,28210,28211,28212,28213,28214,28215,28216,28217,28218,28219,28220,28221,28222,28223,28224,28225,28226,28227,28228,28229,28230,28231,28232,28233,28234,28235,28236,28237,28238,28239,28240,28241,28242,28243,28244,28245,28246,28247,28248,28249,28250,28251,28252,28253,28254,28255,28256,28257,28258,28259,28260,28261,28262,28263,28264,28265,28266,28267,28268,28269,28270,28271,28272,28273,28274,28275,28276,28277,28278,28279,28280,28281,28282,28283,28284,28285,28286,28287,28288,28289,28290,28291,28292,28293,28294,28295,28296,28297,28298,28299,28300,28301,28302,28303,28304,28305,28306,28307,28308,28309,28310,28311,28312,28313,28314,28315,28316,28317,28318,28319,28320,28321,28322,28323,28324,28325,28326,28327,28328,28329,28330,28331,28332,28333,28334,28335,28336,28337,28338,28339,28340,28341,28342,28343,28344,28345,28346,28347,28348,28349,28350,28351,28352,28353,28354,28355,28356,28357,28358,28359,28360,28361,28362,28363,28364,28365,28366,28367,28368,28369,28370,28371,28372,28373,28374,28375,28376,28377,28378,28379,28380,28381,28382,28383,28384,28385,28386,28387,28388,28389,28390,28391,28392,28393,28394,28395,28396,28397,28398,28399,28400,28401,28402,28403,28404,28405,28406,28407,28408,28409,28410,28411,28412,28413,28414,28415,28416,28417,28418,28419,28420,28421,28422,28423,28424,28425,28426,28427,28428,28429,28430,28431,28432,28433,28434,28435,28436,28437,28438,28439,28440,28441,28442,28443,28444,28445,28446,28447,28448,28449,28450,28451,28452,28453,28454,28455,28456,28457,28458,28459,28460,28461,28462,28463,28464,28465,28466,28467,28468,28469,28470,28471,28472,28473,28474,28475,28476,28477,28478,28479,28480,28481,28482,28483,28484,28485,28486,28487,28488,28489,28490,28491,28492,28493,28494,28495,28496,28497,28498,28499,28500,28501,28502,28503,28504,28505,28506,28507,28508,28509,28510,28511,28512,28513,28514,28515,28516,28517,28518,28519,28520,28521,28522,28523,28524,28525,28526,28527,28528,28529,28530,28531,28532,28533,28534,28535,28536,28537,28538,28539,28540,28541,28542,28543,28544,28545,28546,28547,28548,28549,28550,28551,28552,28553,28554,28555,28556,28557,28558,28559,28560,28561,28562,28563,28564,28565,28566,28567,28568,28569,28570,28571,28572,28573,28574,28575,28576,28577,28578,28579,28580,28581,28582,28583,28584,28585,28586,28587,28588,28589,28590,28591,28592,28593,28594,28595,28596,28597,28598,28599,28600,28601,28602,28603,28604,28605,28606,28607,28608,28609,28610,28611,28612,28613,28614,28615,28616,28617,28618,28619,28620,28621,28622,28623,28624,28625,28626,28627,28628,28629,28630,28631,28632,28633,28634,28635,28636,28637,28638,28639,28640,28641,28642,28643,28644,28645,28646,28647,28648,28649,28650,28651,28652,28653,28654,28655,28656,28657,28658,28659,28660,28661,28662,28663,28664,28665,28666,28667,28668,28669,28670,28671,28672,28673,28674,28675,28676,28677,28678,28679,28680,28681,28682,28683,28684,28685,28686,28687,28688,28689,28690,28691,28692,28693,28694,28695,28696,28697,28698,28699,28700,28701,28702,28703,28704,28705,28706,28707,28708,28709,28710,28711,28712,28713,28714,28715,28716,28717,28718,28719,28720,28721,28722,28723,28724,28725,28726,28727,28728,28729,28730,28731,28732,28733,28734,28735,28736,28737,28738,28739,28740,28741,28742,28743,28744,28745,28746,28747,28748,28749,28750,28751,28752,28753,28754,28755,28756,28757,28758,28759,28760,28761,28762,28763,28764,28765,28766,28767,28768,28769,28770,28771,28772,28773,28774,28775,28776,28777,28778,28779,28780,28781,28782,28783,28784,28785,28786,28787,28788,28789,28790,28791,28792,28793,28794,28795,28796,28797,28798,28799,28800,28801,28802,28803,28804,28805,28806,28807,28808,28809,28810,28811,28812,28813,28814,28815,28816,28817,28818,28819,28820,28821,28822,28823,28824,28825,28826,28827,28828,28829,28830,28831,28832,28833,28834,28835,28836,28837,28838,28839,28840,28841,28842,28843,28844,28845,28846,28847,28848,28849,28850,28851,28852,28853,28854,28855,28856,28857,28858,28859,28860,28861,28862,28863,28864,28865,28866,28867,28868,28869,28870,28871,28872,28873,28874,28875,28876,28877,28878,28879,28880,28881,28882,28883,28884,28885,28886,28887,28888,28889,28890,28891,28892,28893,28894,28895,28896,28897,28898,28899,28900,28901,28902,28903,28904,28905,28906,28907,28908,28909,28910,28911,28912,28913,28914,28915,28916,28917,28918,28919,28920,28921,28922,28923,28924,28925,28926,28927,28928,28929,28930,28931,28932,28933,28934,28935,28936,28937,28938,28939,28940,28941,28942,28943,28944,28945,28946,28947,28948,28949,28950,28951,28952,28953,28954,28955,28956,28957,28958,28959,28960,28961,28962,28963,28964,28965,28966,28967,28968,28969,28970,28971,28972,28973,28974,28975,28976,28977,28978,28979,28980,28981,28982,28983,28984,28985,28986,28987,28988,28989,28990,28991,28992,28993,28994,28995,28996,28997,28998,28999,29000,29001,29002,29003,29004,29005,29006,29007,29008,29009,29010,29011,29012,29013,29014,29015,29016,29017,29018,29019,29020,29021,29022,29023,29024,29025,29026,29027,29028,29029,29030,29031,29032,29033,29034,29035,29036,29037,29038,29039,29040,29041,29042,29043,29044,29045,29046,29047,29048,29049,29050,29051,29052,29053,29054,29055,29056,29057,29058,29059,29060,29061,29062,29063,29064,29065,29066,29067,29068,29069,29070,29071,29072,29073,29074,29075,29076,29077,29078,29079,29080,29081,29082,29083,29084,29085,29086,29087,29088,29089,29090,29091,29092,29093,29094,29095,29096,29097,29098,29099,29100,29101,29102,29103,29104,29105,29106,29107,29108,29109,29110,29111,29112,29113,29114,29115,29116,29117,29118,29119,29120,29121,29122,29123,29124,29125,29126,29127,29128,29129,29130,29131,29132,29133,29134,29135,29136,29137,29138,29139,29140,29141,29142,29143,29144,29145,29146,29147,29148,29149,29150,29151,29152,29153,29154,29155,29156,29157,29158,29159,29160,29161,29162,29163,29164,29165,29166,29167,29168,29169,29170,29171,29172,29173,29174,29175,29176,29177,29178,29179,29180,29181,29182,29183,29184,29185,29186,29187,29188,29189,29190,29191,29192,29193,29194,29195,29196,29197,29198,29199,29200,29201,29202,29203,29204,29205,29206,29207,29208,29209,29210,29211,29212,29213,29214,29215,29216,29217,29218,29219,29220,29221,29222,29223,29224,29225,29226,29227,29228,29229,29230,29231,29232,29233,29234,29235,29236,29237,29238,29239,29240,29241,29242,29243,29244,29245,29246,29247,29248,29249,29250,29251,29252,29253,29254,29255,29256,29257,29258,29259,29260,29261,29262,29263,29264,29265,29266,29267,29268,29269,29270,29271,29272,29273,29274,29275,29276,29277,29278,29279,29280,29281,29282,29283,29284,29285,29286,29287,29288,29289,29290,29291,29292,29293,29294,29295,29296,29297,29298,29299,29300,29301,29302,29303,29304,29305,29306,29307,29308,29309,29310,29311,29312,29313,29314,29315,29316,29317,29318,29319,29320,29321,29322,29323,29324,29325,29326,29327,29328,29329,29330,29331,29332,29333,29334,29335,29336,29337,29338,29339,29340,29341,29342,29343,29344,29345,29346,29347,29348,29349,29350,29351,29352,29353,29354,29355,29356,29357,29358,29359,29360,29361,29362,29363,29364,29365,29366,29367,29368,29369,29370,29371,29372,29373,29374,29375,29376,29377,29378,29379,29380,29381,29382,29383,29384,29385,29386,29387,29388,29389,29390,29391,29392,29393,29394,29395,29396,29397,29398,29399,29400,29401,29402,29403,29404,29405,29406,29407,29408,29409,29410,29411,29412,29413,29414,29415,29416,29417,29418,29419,29420,29421,29422,29423,29424,29425,29426,29427,29428,29429,29430,29431,29432,29433,29434,29435,29436,29437,29438,29439,29440,29441,29442,29443,29444,29445,29446,29447,29448,29449,29450,29451,29452,29453,29454,29455,29456,29457,29458,29459,29460,29461,29462,29463,29464,29465,29466,29467,29468,29469,29470,29471,29472,29473,29474,29475,29476,29477,29478,29479,29480,29481,29482,29483,29484,29485,29486,29487,29488,29489,29490,29491,29492,29493,29494,29495,29496,29497,29498,29499,29500,29501,29502,29503,29504,29505,29506,29507,29508,29509,29510,29511,29512,29513,29514,29515,29516,29517,29518,29519,29520,29521,29522,29523,29524,29525,29526,29527,29528,29529,29530,29531,29532,29533,29534,29535,29536,29537,29538,29539,29540,29541,29542,29543,29544,29545,29546,29547,29548,29549,29550,29551,29552,29553,29554,29555,29556,29557,29558,29559,29560,29561,29562,29563,29564,29565,29566,29567,29568,29569,29570,29571,29572,29573,29574,29575,29576,29577,29578,29579,29580,29581,29582,29583,29584,29585,29586,29587,29588,29589,29590,29591,29592,29593,29594,29595,29596,29597,29598,29599,29600,29601,29602,29603,29604,29605,29606,29607,29608,29609,29610,29611,29612,29613,29614,29615,29616,29617,29618,29619,29620,29621,29622,29623,29624,29625,29626,29627,29628,29629,29630,29631,29632,29633,29634,29635,29636,29637,29638,29639,29640,29641,29642,29643,29644,29645,29646,29647,29648,29649,29650,29651,29652,29653,29654,29655,29656,29657,29658,29659,29660,29661,29662,29663,29664,29665,29666,29667,29668,29669,29670,29671,29672,29673,29674,29675,29676,29677,29678,29679,29680,29681,29682,29683,29684,29685,29686,29687,29688,29689,29690,29691,29692,29693,29694,29695,29696,29697,29698,29699,29700,29701,29702,29703,29704,29705,29706,29707,29708,29709,29710,29711,29712,29713,29714,29715,29716,29717,29718,29719,29720,29721,29722,29723,29724,29725,29726,29727,29728,29729,29730,29731,29732,29733,29734,29735,29736,29737,29738,29739,29740,29741,29742,29743,29744,29745,29746,29747,29748,29749,29750,29751,29752,29753,29754,29755,29756,29757,29758,29759,29760,29761,29762,29763,29764,29765,29766,29767,29768,29769,29770,29771,29772,29773,29774,29775,29776,29777,29778,29779,29780,29781,29782,29783,29784,29785,29786,29787,29788,29789,29790,29791,29792,29793,29794,29795,29796,29797,29798,29799,29800,29801,29802,29803,29804,29805,29806,29807,29808,29809,29810,29811,29812,29813,29814,29815,29816,29817,29818,29819,29820,29821,29822,29823,29824,29825,29826,29827,29828,29829,29830,29831,29832,29833,29834,29835,29836,29837,29838,29839,29840,29841,29842,29843,29844,29845,29846,29847,29848,29849,29850,29851,29852,29853,29854,29855,29856,29857,29858,29859,29860,29861,29862,29863,29864,29865,29866,29867,29868,29869,29870,29871,29872,29873,29874,29875,29876,29877,29878,29879,29880,29881,29882,29883,29884,29885,29886,29887,29888,29889,29890,29891,29892,29893,29894,29895,29896,29897,29898,29899,29900,29901,29902,29903,29904,29905,29906,29907,29908,29909,29910,29911,29912,29913,29914,29915,29916,29917,29918,29919,29920,29921,29922,29923,29924,29925,29926,29927,29928,29929,29930,29931,29932,29933,29934,29935,29936,29937,29938,29939,29940,29941,29942,29943,29944,29945,29946,29947,29948,29949,29950,29951,29952,29953,29954,29955,29956,29957,29958,29959,29960,29961,29962,29963,29964,29965,29966,29967,29968,29969,29970,29971,29972,29973,29974,29975,29976,29977,29978,29979,29980,29981,29982,29983,29984,29985,29986,29987,29988,29989,29990,29991,29992,29993,29994,29995,29996,29997,29998,29999,30000,30001,30002,30003,30004,30005,30006,30007,30008,30009,30010,30011,30012,30013,30014,30015,30016,30017,30018,30019,30020,30021,30022,30023,30024,30025,30026,30027,30028,30029,30030,30031,30032,30033,30034,30035,30036,30037,30038,30039,30040,30041,30042,30043,30044,30045,30046,30047,30048,30049,30050,30051,30052,30053,30054,30055,30056,30057,30058,30059,30060,30061,30062,30063,30064,30065,30066,30067,30068,30069,30070,30071,30072,30073,30074,30075,30076,30077,30078,30079,30080,30081,30082,30083,30084,30085,30086,30087,30088,30089,30090,30091,30092,30093,30094,30095,30096,30097,30098,30099,30100,30101,30102,30103,30104,30105,30106,30107,30108,30109,30110,30111,30112,30113,30114,30115,30116,30117,30118,30119,30120,30121,30122,30123,30124,30125,30126,30127,30128,30129,30130,30131,30132,30133,30134,30135,30136,30137,30138,30139,30140,30141,30142,30143,30144,30145,30146,30147,30148,30149,30150,30151,30152,30153,30154,30155,30156,30157,30158,30159,30160,30161,30162,30163,30164,30165,30166,30167,30168,30169,30170,30171,30172,30173,30174,30175,30176,30177,30178,30179,30180,30181,30182,30183,30184,30185,30186,30187,30188,30189,30190,30191,30192,30193,30194,30195,30196,30197,30198,30199,30200,30201,30202,30203,30204,30205,30206,30207,30208,30209,30210,30211,30212,30213,30214,30215,30216,30217,30218,30219,30220,30221,30222,30223,30224,30225,30226,30227,30228,30229,30230,30231,30232,30233,30234,30235,30236,30237,30238,30239,30240,30241,30242,30243,30244,30245,30246,30247,30248,30249,30250,30251,30252,30253,30254,30255,30256,30257,30258,30259,30260,30261,30262,30263,30264,30265,30266,30267,30268,30269,30270,30271,30272,30273,30274,30275,30276,30277,30278,30279,30280,30281,30282,30283,30284,30285,30286,30287,30288,30289,30290,30291,30292,30293,30294,30295,30296,30297,30298,30299,30300,30301,30302,30303,30304,30305,30306,30307,30308,30309,30310,30311,30312,30313,30314,30315,30316,30317,30318,30319,30320,30321,30322,30323,30324,30325,30326,30327,30328,30329,30330,30331,30332,30333,30334,30335,30336,30337,30338,30339,30340,30341,30342,30343,30344,30345,30346,30347,30348,30349,30350,30351,30352,30353,30354,30355,30356,30357,30358,30359,30360,30361,30362,30363,30364,30365,30366,30367,30368,30369,30370,30371,30372,30373,30374,30375,30376,30377,30378,30379,30380,30381,30382,30383,30384,30385,30386,30387,30388,30389,30390,30391,30392,30393,30394,30395,30396,30397,30398,30399,30400,30401,30402,30403,30404,30405,30406,30407,30408,30409,30410,30411,30412,30413,30414,30415,30416,30417,30418,30419,30420,30421,30422,30423,30424,30425,30426,30427,30428,30429,30430,30431,30432,30433,30434,30435,30436,30437,30438,30439,30440,30441,30442,30443,30444,30445,30446,30447,30448,30449,30450,30451,30452,30453,30454,30455,30456,30457,30458,30459,30460,30461,30462,30463,30464,30465,30466,30467,30468,30469,30470,30471,30472,30473,30474,30475,30476,30477,30478,30479,30480,30481,30482,30483,30484,30485,30486,30487,30488,30489,30490,30491,30492,30493,30494,30495,30496,30497,30498,30499,30500,30501,30502,30503,30504,30505,30506,30507,30508,30509,30510,30511,30512,30513,30514,30515,30516,30517,30518,30519,30520,30521,30522,30523,30524,30525,30526,30527,30528,30529,30530,30531,30532,30533,30534,30535,30536,30537,30538,30539,30540,30541,30542,30543,30544,30545,30546,30547,30548,30549,30550,30551,30552,30553,30554,30555,30556,30557,30558,30559,30560,30561,30562,30563,30564,30565,30566,30567,30568,30569,30570,30571,30572,30573,30574,30575,30576,30577,30578,30579,30580,30581,30582,30583,30584,30585,30586,30587,30588,30589,30590,30591,30592,30593,30594,30595,30596,30597,30598,30599,30600,30601,30602,30603,30604,30605,30606,30607,30608,30609,30610,30611,30612,30613,30614,30615,30616,30617,30618,30619,30620,30621,30622,30623,30624,30625,30626,30627,30628,30629,30630,30631,30632,30633,30634,30635,30636,30637,30638,30639,30640,30641,30642,30643,30644,30645,30646,30647,30648,30649,30650,30651,30652,30653,30654,30655,30656,30657,30658,30659,30660,30661,30662,30663,30664,30665,30666,30667,30668,30669,30670,30671,30672,30673,30674,30675,30676,30677,30678,30679,30680,30681,30682,30683,30684,30685,30686,30687,30688,30689,30690,30691,30692,30693,30694,30695,30696,30697,30698,30699,30700,30701,30702,30703,30704,30705,30706,30707,30708,30709,30710,30711,30712,30713,30714,30715,30716,30717,30718,30719,30720,30721,30722,30723,30724,30725,30726,30727,30728,30729,30730,30731,30732,30733,30734,30735,30736,30737,30738,30739,30740,30741,30742,30743,30744,30745,30746,30747,30748,30749,30750,30751,30752,30753,30754,30755,30756,30757,30758,30759,30760,30761,30762,30763,30764,30765,30766,30767,30768,30769,30770,30771,30772,30773,30774,30775,30776,30777,30778,30779,30780,30781,30782,30783,30784,30785,30786,30787,30788,30789,30790,30791,30792,30793,30794,30795,30796,30797,30798,30799,30800,30801,30802,30803,30804,30805,30806,30807,30808,30809,30810,30811,30812,30813,30814,30815,30816,30817,30818,30819,30820,30821,30822,30823,30824,30825,30826,30827,30828,30829,30830,30831,30832,30833,30834,30835,30836,30837,30838,30839,30840,30841,30842,30843,30844,30845,30846,30847,30848,30849,30850,30851,30852,30853,30854,30855,30856,30857,30858,30859,30860,30861,30862,30863,30864,30865,30866,30867,30868,30869,30870,30871,30872,30873,30874,30875,30876,30877,30878,30879,30880,30881,30882,30883,30884,30885,30886,30887,30888,30889,30890,30891,30892,30893,30894,30895,30896,30897,30898,30899,30900,30901,30902,30903,30904,30905,30906,30907,30908,30909,30910,30911,30912,30913,30914,30915,30916,30917,30918,30919,30920,30921,30922,30923,30924,30925,30926,30927,30928,30929,30930,30931,30932,30933,30934,30935,30936,30937,30938,30939,30940,30941,30942,30943,30944,30945,30946,30947,30948,30949,30950,30951,30952,30953,30954,30955,30956,30957,30958,30959,30960,30961,30962,30963,30964,30965,30966,30967,30968,30969,30970,30971,30972,30973,30974,30975,30976,30977,30978,30979,30980,30981,30982,30983,30984,30985,30986,30987,30988,30989,30990,30991,30992,30993,30994,30995,30996,30997,30998,30999,31000,31001,31002,31003,31004,31005,31006,31007,31008,31009,31010,31011,31012,31013,31014,31015,31016,31017,31018,31019,31020,31021,31022,31023,31024,31025,31026,31027,31028,31029,31030,31031,31032,31033,31034,31035,31036,31037,31038,31039,31040,31041,31042,31043,31044,31045,31046,31047,31048,31049,31050,31051,31052,31053,31054,31055,31056,31057,31058,31059,31060,31061,31062,31063,31064,31065,31066,31067,31068,31069,31070,31071,31072,31073,31074,31075,31076,31077,31078,31079,31080,31081,31082,31083,31084,31085,31086,31087,31088,31089,31090,31091,31092,31093,31094,31095,31096,31097,31098,31099,31100,31101,31102,31103,31104,31105,31106,31107,31108,31109,31110,31111,31112,31113,31114,31115,31116,31117,31118,31119,31120,31121,31122,31123,31124,31125,31126,31127,31128,31129,31130,31131,31132,31133,31134,31135,31136,31137,31138,31139,31140,31141,31142,31143,31144,31145,31146,31147,31148,31149,31150,31151,31152,31153,31154,31155,31156,31157,31158,31159,31160,31161,31162,31163,31164,31165,31166,31167,31168,31169,31170,31171,31172,31173,31174,31175,31176,31177,31178,31179,31180,31181,31182,31183,31184,31185,31186,31187,31188,31189,31190,31191,31192,31193,31194,31195,31196,31197,31198,31199,31200,31201,31202,31203,31204,31205,31206,31207,31208,31209,31210,31211,31212,31213,31214,31215,31216,31217,31218,31219,31220,31221,31222,31223,31224,31225,31226,31227,31228,31229,31230,31231,31232,31233,31234,31235,31236,31237,31238,31239,31240,31241,31242,31243,31244,31245,31246,31247,31248,31249,31250,31251,31252,31253,31254,31255,31256,31257,31258,31259,31260,31261,31262,31263,31264,31265,31266,31267,31268,31269,31270,31271,31272,31273,31274,31275,31276,31277,31278,31279,31280,31281,31282,31283,31284,31285,31286,31287,31288,31289,31290,31291,31292,31293,31294,31295,31296,31297,31298,31299,31300,31301,31302,31303,31304,31305,31306,31307,31308,31309,31310,31311,31312,31313,31314,31315,31316,31317,31318,31319,31320,31321,31322,31323,31324,31325,31326,31327,31328,31329,31330,31331,31332,31333,31334,31335,31336,31337,31338,31339,31340,31341,31342,31343,31344,31345,31346,31347,31348,31349,31350,31351,31352,31353,31354,31355,31356,31357,31358,31359,31360,31361,31362,31363,31364,31365,31366,31367,31368,31369,31370,31371,31372,31373,31374,31375,31376,31377,31378,31379,31380,31381,31382,31383,31384,31385,31386,31387,31388,31389,31390,31391,31392,31393,31394,31395,31396,31397,31398,31399,31400,31401,31402,31403,31404,31405,31406,31407,31408,31409,31410,31411,31412,31413,31414,31415,31416,31417,31418,31419,31420,31421,31422,31423,31424,31425,31426,31427,31428,31429,31430,31431,31432,31433,31434,31435,31436,31437,31438,31439,31440,31441,31442,31443,31444,31445,31446,31447,31448,31449,31450,31451,31452,31453,31454,31455,31456,31457,31458,31459,31460,31461,31462,31463,31464,31465,31466,31467,31468,31469,31470,31471,31472,31473,31474,31475,31476,31477,31478,31479,31480,31481,31482,31483,31484,31485,31486,31487,31488,31489,31490,31491,31492,31493,31494,31495,31496,31497,31498,31499,31500,31501,31502,31503,31504,31505,31506,31507,31508,31509,31510,31511,31512,31513,31514,31515,31516,31517,31518,31519,31520,31521,31522,31523,31524,31525,31526,31527,31528,31529,31530,31531,31532,31533,31534,31535,31536,31537,31538,31539,31540,31541,31542,31543,31544,31545,31546,31547,31548,31549,31550,31551,31552,31553,31554,31555,31556,31557,31558,31559,31560,31561,31562,31563,31564,31565,31566,31567,31568,31569,31570,31571,31572,31573,31574,31575,31576,31577,31578,31579,31580,31581,31582,31583,31584,31585,31586,31587,31588,31589,31590,31591,31592,31593,31594,31595,31596,31597,31598,31599,31600,31601,31602,31603,31604,31605,31606,31607,31608,31609,31610,31611,31612,31613,31614,31615,31616,31617,31618,31619,31620,31621,31622,31623,31624,31625,31626,31627,31628,31629,31630,31631,31632,31633,31634,31635,31636,31637,31638,31639,31640,31641,31642,31643,31644,31645,31646,31647,31648,31649,31650,31651,31652,31653,31654,31655,31656,31657,31658,31659,31660,31661,31662,31663,31664,31665,31666,31667,31668,31669,31670,31671,31672,31673,31674,31675,31676,31677,31678,31679,31680,31681,31682,31683,31684,31685,31686,31687,31688,31689,31690,31691,31692,31693,31694,31695,31696,31697,31698,31699,31700,31701,31702,31703,31704,31705,31706,31707,31708,31709,31710,31711,31712,31713,31714,31715,31716,31717,31718,31719,31720,31721,31722,31723,31724,31725,31726,31727,31728,31729,31730,31731,31732,31733,31734,31735,31736,31737,31738,31739,31740,31741,31742,31743,31744,31745,31746,31747,31748,31749,31750,31751,31752,31753,31754,31755,31756,31757,31758,31759,31760,31761,31762,31763,31764,31765,31766,31767,31768,31769,31770,31771,31772,31773,31774,31775,31776,31777,31778,31779,31780,31781,31782,31783,31784,31785,31786,31787,31788,31789,31790,31791,31792,31793,31794,31795,31796,31797,31798,31799,31800,31801,31802,31803,31804,31805,31806,31807,31808,31809,31810,31811,31812,31813,31814,31815,31816,31817,31818,31819,31820,31821,31822,31823,31824,31825,31826,31827,31828,31829,31830,31831,31832,31833,31834,31835,31836,31837,31838,31839,31840,31841,31842,31843,31844,31845,31846,31847,31848,31849,31850,31851,31852,31853,31854,31855,31856,31857,31858,31859,31860,31861,31862,31863,31864,31865,31866,31867,31868,31869,31870,31871,31872,31873,31874,31875,31876,31877,31878,31879,31880,31881,31882,31883,31884,31885,31886,31887,31888,31889,31890,31891,31892,31893,31894,31895,31896,31897,31898,31899,31900,31901,31902,31903,31904,31905,31906,31907,31908,31909,31910,31911,31912,31913,31914,31915,31916,31917,31918,31919,31920,31921,31922,31923,31924,31925,31926,31927,31928,31929,31930,31931,31932,31933,31934,31935,31936,31937,31938,31939,31940,31941,31942,31943,31944,31945,31946,31947,31948,31949,31950,31951,31952,31953,31954,31955,31956,31957,31958,31959,31960,31961,31962,31963,31964,31965,31966,31967,31968,31969,31970,31971,31972,31973,31974,31975,31976,31977,31978,31979,31980,31981,31982,31983,31984,31985,31986,31987,31988,31989,31990,31991,31992,31993,31994,31995,31996,31997,31998,31999,32000,32001,32002,32003,32004,32005,32006,32007,32008,32009,32010,32011,32012,32013,32014,32015,32016,32017,32018,32019,32020,32021,32022,32023,32024,32025,32026,32027,32028,32029,32030,32031,32032,32033,32034,32035,32036,32037,32038,32039,32040,32041,32042,32043,32044,32045,32046,32047,32048,32049,32050,32051,32052,32053,32054,32055,32056,32057,32058,32059,32060,32061,32062,32063,32064,32065,32066,32067,32068,32069,32070,32071,32072,32073,32074,32075,32076,32077,32078,32079,32080,32081,32082,32083,32084,32085,32086,32087,32088,32089,32090,32091,32092,32093,32094,32095,32096,32097,32098,32099,32100,32101,32102,32103,32104,32105,32106,32107,32108,32109,32110,32111,32112,32113,32114,32115,32116,32117,32118,32119,32120,32121,32122,32123,32124,32125,32126,32127,32128,32129,32130,32131,32132,32133,32134,32135,32136,32137,32138,32139,32140,32141,32142,32143,32144,32145,32146,32147,32148,32149,32150,32151,32152,32153,32154,32155,32156,32157,32158,32159,32160,32161,32162,32163,32164,32165,32166,32167,32168,32169,32170,32171,32172,32173,32174,32175,32176,32177,32178,32179,32180,32181,32182,32183,32184,32185,32186,32187,32188,32189,32190,32191,32192,32193,32194,32195,32196,32197,32198,32199,32200,32201,32202,32203,32204,32205,32206,32207,32208,32209,32210,32211,32212,32213,32214,32215,32216,32217,32218,32219,32220,32221,32222,32223,32224,32225,32226,32227,32228,32229,32230,32231,32232,32233,32234,32235,32236,32237,32238,32239,32240,32241,32242,32243,32244,32245,32246,32247,32248,32249,32250,32251,32252,32253,32254,32255,32256,32257,32258,32259,32260,32261,32262,32263,32264,32265,32266,32267,32268,32269,32270,32271,32272,32273,32274,32275,32276,32277,32278,32279,32280,32281,32282,32283,32284,32285,32286,32287,32288,32289,32290,32291,32292,32293,32294,32295,32296,32297,32298,32299,32300,32301,32302,32303,32304,32305,32306,32307,32308,32309,32310,32311,32312,32313,32314,32315,32316,32317,32318,32319,32320,32321,32322,32323,32324,32325,32326,32327,32328,32329,32330,32331,32332,32333,32334,32335,32336,32337,32338,32339,32340,32341,32342,32343,32344,32345,32346,32347,32348,32349,32350,32351,32352,32353,32354,32355,32356,32357,32358,32359,32360,32361,32362,32363,32364,32365,32366,32367,32368,32369,32370,32371,32372,32373,32374,32375,32376,32377,32378,32379,32380,32381,32382,32383,32384,32385,32386,32387,32388,32389,32390,32391,32392,32393,32394,32395,32396,32397,32398,32399,32400,32401,32402,32403,32404,32405,32406,32407,32408,32409,32410,32411,32412,32413,32414,32415,32416,32417,32418,32419,32420,32421,32422,32423,32424,32425,32426,32427,32428,32429,32430,32431,32432,32433,32434,32435,32436,32437,32438,32439,32440,32441,32442,32443,32444,32445,32446,32447,32448,32449,32450,32451,32452,32453,32454,32455,32456,32457,32458,32459,32460,32461,32462,32463,32464,32465,32466,32467,32468,32469,32470,32471,32472,32473,32474,32475,32476,32477,32478,32479,32480,32481,32482,32483,32484,32485,32486,32487,32488,32489,32490,32491,32492,32493,32494,32495,32496,32497,32498,32499,32500,32501,32502,32503,32504,32505,32506,32507,32508,32509,32510,32511,32512,32513,32514,32515,32516,32517,32518,32519,32520,32521,32522,32523,32524,32525,32526,32527,32528,32529,32530,32531,32532,32533,32534,32535,32536,32537,32538,32539,32540,32541,32542,32543,32544,32545,32546,32547,32548,32549,32550,32551,32552,32553,32554,32555,32556,32557,32558,32559,32560,32561,32562,32563,32564,32565,32566,32567,32568,32569,32570,32571,32572,32573,32574,32575,32576,32577,32578,32579,32580,32581,32582,32583,32584,32585,32586,32587,32588,32589,32590,32591,32592,32593,32594,32595,32596,32597,32598,32599,32600,32601,32602,32603,32604,32605,32606,32607,32608,32609,32610,32611,32612,32613,32614,32615,32616,32617,32618,32619,32620,32621,32622,32623,32624,32625,32626,32627,32628,32629,32630,32631,32632,32633,32634,32635,32636,32637,32638,32639,32640,32641,32642,32643,32644,32645,32646,32647,32648,32649,32650,32651,32652,32653,32654,32655,32656,32657,32658,32659,32660,32661,32662,32663,32664,32665,32666,32667,32668,32669,32670,32671,32672,32673,32674,32675,32676,32677,32678,32679,32680,32681,32682,32683,32684,32685,32686,32687,32688,32689,32690,32691,32692,32693,32694,32695,32696,32697,32698,32699,32700,32701,32702,32703,32704,32705,32706,32707,32708,32709,32710,32711,32712,32713,32714,32715,32716,32717,32718,32719,32720,32721,32722,32723,32724,32725,32726,32727,32728,32729,32730,32731,32732,32733,32734,32735,32736,32737,32738,32739,32740,32741,32742,32743,32744,32745,32746,32747,32748,32749,32750,32751,32752,32753,32754,32755,32756,32757,32758,32759,32760,32761,32762,32763,32764,32765,32766,32767,32768,32769,32770,32771,32772,32773,32774,32775,32776,32777,32778,32779,32780,32781,32782,32783,32784,32785,32786,32787,32788,32789,32790,32791,32792,32793,32794,32795,32796,32797,32798,32799,32800,32801,32802,32803,32804,32805,32806,32807,32808,32809,32810,32811,32812,32813,32814,32815,32816,32817,32818,32819,32820,32821,32822,32823,32824,32825,32826,32827,32828,32829,32830,32831,32832,32833,32834,32835,32836,32837,32838,32839,32840,32841,32842,32843,32844,32845,32846,32847,32848,32849,32850,32851,32852,32853,32854,32855,32856,32857,32858,32859,32860,32861,32862,32863,32864,32865,32866,32867,32868,32869,32870,32871,32872,32873,32874,32875,32876,32877,32878,32879,32880,32881,32882,32883,32884,32885,32886,32887,32888,32889,32890,32891,32892,32893,32894,32895,32896,32897,32898,32899,32900,32901,32902,32903,32904,32905,32906,32907,32908,32909,32910,32911,32912,32913,32914,32915,32916,32917,32918,32919,32920,32921,32922,32923,32924,32925,32926,32927,32928,32929,32930,32931,32932,32933,32934,32935,32936,32937,32938,32939,32940,32941,32942,32943,32944,32945,32946,32947,32948,32949,32950,32951,32952,32953,32954,32955,32956,32957,32958,32959,32960,32961,32962,32963,32964,32965,32966,32967,32968,32969,32970,32971,32972,32973,32974,32975,32976,32977,32978,32979,32980,32981,32982,32983,32984,32985,32986,32987,32988,32989,32990,32991,32992,32993,32994,32995,32996,32997,32998,32999,33000,33001,33002,33003,33004,33005,33006,33007,33008,33009,33010,33011,33012,33013,33014,33015,33016,33017,33018,33019,33020,33021,33022,33023,33024,33025,33026,33027,33028,33029,33030,33031,33032,33033,33034,33035,33036,33037,33038,33039,33040,33041,33042,33043,33044,33045,33046,33047,33048,33049,33050,33051,33052,33053,33054,33055,33056,33057,33058,33059,33060,33061,33062,33063,33064,33065,33066,33067,33068,33069,33070,33071,33072,33073,33074,33075,33076,33077,33078,33079,33080,33081,33082,33083,33084,33085,33086,33087,33088,33089,33090,33091,33092,33093,33094,33095,33096,33097,33098,33099,33100,33101,33102,33103,33104,33105,33106,33107,33108,33109,33110,33111,33112,33113,33114,33115,33116,33117,33118,33119,33120,33121,33122,33123,33124,33125,33126,33127,33128,33129,33130,33131,33132,33133,33134,33135,33136,33137,33138,33139,33140,33141,33142,33143,33144,33145,33146,33147,33148,33149,33150,33151,33152,33153,33154,33155,33156,33157,33158,33159,33160,33161,33162,33163,33164,33165,33166,33167,33168,33169,33170,33171,33172,33173,33174,33175,33176,33177,33178,33179,33180,33181,33182,33183,33184,33185,33186,33187,33188,33189,33190,33191,33192,33193,33194,33195,33196,33197,33198,33199,33200,33201,33202,33203,33204,33205,33206,33207,33208,33209,33210,33211,33212,33213,33214,33215,33216,33217,33218,33219,33220,33221,33222,33223,33224,33225,33226,33227,33228,33229,33230,33231,33232,33233,33234,33235,33236,33237,33238,33239,33240,33241,33242,33243,33244,33245,33246,33247,33248,33249,33250,33251,33252,33253,33254,33255,33256,33257,33258,33259,33260,33261,33262,33263,33264,33265,33266,33267,33268,33269,33270,33271,33272,33273,33274,33275,33276,33277,33278,33279,33280,33281,33282,33283,33284,33285,33286,33287,33288,33289,33290,33291,33292,33293,33294,33295,33296,33297,33298,33299,33300,33301,33302,33303,33304,33305,33306,33307,33308,33309,33310,33311,33312,33313,33314,33315,33316,33317,33318,33319,33320,33321,33322,33323,33324,33325,33326,33327,33328,33329,33330,33331,33332,33333,33334,33335,33336,33337,33338,33339,33340,33341,33342,33343,33344,33345,33346,33347,33348,33349,33350,33351,33352,33353,33354,33355,33356,33357,33358,33359,33360,33361,33362,33363,33364,33365,33366,33367,33368,33369,33370,33371,33372,33373,33374,33375,33376,33377,33378,33379,33380,33381,33382,33383,33384,33385,33386,33387,33388,33389,33390,33391,33392,33393,33394,33395,33396,33397,33398,33399,33400,33401,33402,33403,33404,33405,33406,33407,33408,33409,33410,33411,33412,33413,33414,33415,33416,33417,33418,33419,33420,33421,33422,33423,33424,33425,33426,33427,33428,33429,33430,33431,33432,33433,33434,33435,33436,33437,33438,33439,33440,33441,33442,33443,33444,33445,33446,33447,33448,33449,33450,33451,33452,33453,33454,33455,33456,33457,33458,33459,33460,33461,33462,33463,33464,33465,33466,33467,33468,33469,33470,33471,33472,33473,33474,33475,33476,33477,33478,33479,33480,33481,33482,33483,33484,33485,33486,33487,33488,33489,33490,33491,33492,33493,33494,33495,33496,33497,33498,33499,33500,33501,33502,33503,33504,33505,33506,33507,33508,33509,33510,33511,33512,33513,33514,33515,33516,33517,33518,33519,33520,33521,33522,33523,33524,33525,33526,33527,33528,33529,33530,33531,33532,33533,33534,33535,33536,33537,33538,33539,33540,33541,33542,33543,33544,33545,33546,33547,33548,33549,33550,33551,33552,33553,33554,33555,33556,33557,33558,33559,33560,33561,33562,33563,33564,33565,33566,33567,33568,33569,33570,33571,33572,33573,33574,33575,33576,33577,33578,33579,33580,33581,33582,33583,33584,33585,33586,33587,33588,33589,33590,33591,33592,33593,33594,33595,33596,33597,33598,33599,33600,33601,33602,33603,33604,33605,33606,33607,33608,33609,33610,33611,33612,33613,33614,33615,33616,33617,33618,33619,33620,33621,33622,33623,33624,33625,33626,33627,33628,33629,33630,33631,33632,33633,33634,33635,33636,33637,33638,33639,33640,33641,33642,33643,33644,33645,33646,33647,33648,33649,33650,33651,33652,33653,33654,33655,33656,33657,33658,33659,33660,33661,33662,33663,33664,33665,33666,33667,33668,33669,33670,33671,33672,33673,33674,33675,33676,33677,33678,33679,33680,33681,33682,33683,33684,33685,33686,33687,33688,33689,33690,33691,33692,33693,33694,33695,33696,33697,33698,33699,33700,33701,33702,33703,33704,33705,33706,33707,33708,33709,33710,33711,33712,33713,33714,33715,33716,33717,33718,33719,33720,33721,33722,33723,33724,33725,33726,33727,33728,33729,33730,33731,33732,33733,33734,33735,33736,33737,33738,33739,33740,33741,33742,33743,33744,33745,33746,33747,33748,33749,33750,33751,33752,33753,33754,33755,33756,33757,33758,33759,33760,33761,33762,33763,33764,33765,33766,33767,33768,33769,33770,33771,33772,33773,33774,33775,33776,33777,33778,33779,33780,33781,33782,33783,33784,33785,33786,33787,33788,33789,33790,33791,33792,33793,33794,33795,33796,33797,33798,33799,33800,33801,33802,33803,33804,33805,33806,33807,33808,33809,33810,33811,33812,33813,33814,33815,33816,33817,33818,33819,33820,33821,33822,33823,33824,33825,33826,33827,33828,33829,33830,33831,33832,33833,33834,33835,33836,33837,33838,33839,33840,33841,33842,33843,33844,33845,33846,33847,33848,33849,33850,33851,33852,33853,33854,33855,33856,33857,33858,33859,33860,33861,33862,33863,33864,33865,33866,33867,33868,33869,33870,33871,33872,33873,33874,33875,33876,33877,33878,33879,33880,33881,33882,33883,33884,33885,33886,33887,33888,33889,33890,33891,33892,33893,33894,33895,33896,33897,33898,33899,33900,33901,33902,33903,33904,33905,33906,33907,33908,33909,33910,33911,33912,33913,33914,33915,33916,33917,33918,33919,33920,33921,33922,33923,33924,33925,33926,33927,33928,33929,33930,33931,33932,33933,33934,33935,33936,33937,33938,33939,33940,33941,33942,33943,33944,33945,33946,33947,33948,33949,33950,33951,33952,33953,33954,33955,33956,33957,33958,33959,33960,33961,33962,33963,33964,33965,33966,33967,33968,33969,33970,33971,33972,33973,33974,33975,33976,33977,33978,33979,33980,33981,33982,33983,33984,33985,33986,33987,33988,33989,33990,33991,33992,33993,33994,33995,33996,33997,33998,33999,34000,34001,34002,34003,34004,34005,34006,34007,34008,34009,34010,34011,34012,34013,34014,34015,34016,34017,34018,34019,34020,34021,34022,34023,34024,34025,34026,34027,34028,34029,34030,34031,34032,34033,34034,34035,34036,34037,34038,34039,34040,34041,34042,34043,34044,34045,34046,34047,34048,34049,34050,34051,34052,34053,34054,34055,34056,34057,34058,34059,34060,34061,34062,34063,34064,34065,34066,34067,34068,34069,34070,34071,34072,34073,34074,34075,34076,34077,34078,34079,34080,34081,34082,34083,34084,34085,34086,34087,34088,34089,34090,34091,34092,34093,34094,34095,34096,34097,34098,34099,34100,34101,34102,34103,34104,34105,34106,34107,34108,34109,34110,34111,34112,34113,34114,34115,34116,34117,34118,34119,34120,34121,34122,34123,34124,34125,34126,34127,34128,34129,34130,34131,34132,34133,34134,34135,34136,34137,34138,34139,34140,34141,34142,34143,34144,34145,34146,34147,34148,34149,34150,34151,34152,34153,34154,34155,34156,34157,34158,34159,34160,34161,34162,34163,34164,34165,34166,34167,34168,34169,34170,34171,34172,34173,34174,34175,34176,34177,34178,34179,34180,34181,34182,34183,34184,34185,34186,34187,34188,34189,34190,34191,34192,34193,34194,34195,34196,34197,34198,34199,34200,34201,34202,34203,34204,34205,34206,34207,34208,34209,34210,34211,34212,34213,34214,34215,34216,34217,34218,34219,34220,34221,34222,34223,34224,34225,34226,34227,34228,34229,34230,34231,34232,34233,34234,34235,34236,34237,34238,34239,34240,34241,34242,34243,34244,34245,34246,34247,34248,34249,34250,34251,34252,34253,34254,34255,34256,34257,34258,34259,34260,34261,34262,34263,34264,34265,34266,34267,34268,34269,34270,34271,34272,34273,34274,34275,34276,34277,34278,34279,34280,34281,34282,34283,34284,34285,34286,34287,34288,34289,34290,34291,34292,34293,34294,34295,34296,34297,34298,34299,34300,34301,34302,34303,34304,34305,34306,34307,34308,34309,34310,34311,34312,34313,34314,34315,34316,34317,34318,34319,34320,34321,34322,34323,34324,34325,34326,34327,34328,34329,34330,34331,34332,34333,34334,34335,34336,34337,34338,34339,34340,34341,34342,34343,34344,34345,34346,34347,34348,34349,34350,34351,34352,34353,34354,34355,34356,34357,34358,34359,34360,34361,34362,34363,34364,34365,34366,34367,34368,34369,34370,34371,34372,34373,34374,34375,34376,34377,34378,34379,34380,34381,34382,34383,34384,34385,34386,34387,34388,34389,34390,34391,34392,34393,34394,34395,34396,34397,34398,34399,34400,34401,34402,34403,34404,34405,34406,34407,34408,34409,34410,34411,34412,34413,34414,34415,34416,34417,34418,34419,34420,34421,34422,34423,34424,34425,34426,34427,34428,34429,34430,34431,34432,34433,34434,34435,34436,34437,34438,34439,34440,34441,34442,34443,34444,34445,34446,34447,34448,34449,34450,34451,34452,34453,34454,34455,34456,34457,34458,34459,34460,34461,34462,34463,34464,34465,34466,34467,34468,34469,34470,34471,34472,34473,34474,34475,34476,34477,34478,34479,34480,34481,34482,34483,34484,34485,34486,34487,34488,34489,34490,34491,34492,34493,34494,34495,34496,34497,34498,34499,34500,34501,34502,34503,34504,34505,34506,34507,34508,34509,34510,34511,34512,34513,34514,34515,34516,34517,34518,34519,34520,34521,34522,34523,34524,34525,34526,34527,34528,34529,34530,34531,34532,34533,34534,34535,34536,34537,34538,34539,34540,34541,34542,34543,34544,34545,34546,34547,34548,34549,34550,34551,34552,34553,34554,34555,34556,34557,34558,34559,34560,34561,34562,34563,34564,34565,34566,34567,34568,34569,34570,34571,34572,34573,34574,34575,34576,34577,34578,34579,34580,34581,34582,34583,34584,34585,34586,34587,34588,34589,34590,34591,34592,34593,34594,34595,34596,34597,34598,34599,34600,34601,34602,34603,34604,34605,34606,34607,34608,34609,34610,34611,34612,34613,34614,34615,34616,34617,34618,34619,34620,34621,34622,34623,34624,34625,34626,34627,34628,34629,34630,34631,34632,34633,34634,34635,34636,34637,34638,34639,34640,34641,34642,34643,34644,34645,34646,34647,34648,34649,34650,34651,34652,34653,34654,34655,34656,34657,34658,34659,34660,34661,34662,34663,34664,34665,34666,34667,34668,34669,34670,34671,34672,34673,34674,34675,34676,34677,34678,34679,34680,34681,34682,34683,34684,34685,34686,34687,34688,34689,34690,34691,34692,34693,34694,34695,34696,34697,34698,34699,34700,34701,34702,34703,34704,34705,34706,34707,34708,34709,34710,34711,34712,34713,34714,34715,34716,34717,34718,34719,34720,34721,34722,34723,34724,34725,34726,34727,34728,34729,34730,34731,34732,34733,34734,34735,34736,34737,34738,34739,34740,34741,34742,34743,34744,34745,34746,34747,34748,34749,34750,34751,34752,34753,34754,34755,34756,34757,34758,34759,34760,34761,34762,34763,34764,34765,34766,34767,34768,34769,34770,34771,34772,34773,34774,34775,34776,34777,34778,34779,34780,34781,34782,34783,34784,34785,34786,34787,34788,34789,34790,34791,34792,34793,34794,34795,34796,34797,34798,34799,34800,34801,34802,34803,34804,34805,34806,34807,34808,34809,34810,34811,34812,34813,34814,34815,34816,34817,34818,34819,34820,34821,34822,34823,34824,34825,34826,34827,34828,34829,34830,34831,34832,34833,34834,34835,34836,34837,34838,34839,34840,34841,34842,34843,34844,34845,34846,34847,34848,34849,34850,34851,34852,34853,34854,34855,34856,34857,34858,34859,34860,34861,34862,34863,34864,34865,34866,34867,34868,34869,34870,34871,34872,34873,34874,34875,34876,34877,34878,34879,34880,34881,34882,34883,34884,34885,34886,34887,34888,34889,34890,34891,34892,34893,34894,34895,34896,34897,34898,34899,34900,34901,34902,34903,34904,34905,34906,34907,34908,34909,34910,34911,34912,34913,34914,34915,34916,34917,34918,34919,34920,34921,34922,34923,34924,34925,34926,34927,34928,34929,34930,34931,34932,34933,34934,34935,34936,34937,34938,34939,34940,34941,34942,34943,34944,34945,34946,34947,34948,34949,34950,34951,34952,34953,34954,34955,34956,34957,34958,34959,34960,34961,34962,34963,34964,34965,34966,34967,34968,34969,34970,34971,34972,34973,34974,34975,34976,34977,34978,34979,34980,34981,34982,34983,34984,34985,34986,34987,34988,34989,34990,34991,34992,34993,34994,34995,34996,34997,34998,34999,35000,35001,35002,35003,35004,35005,35006,35007,35008,35009,35010,35011,35012,35013,35014,35015,35016,35017,35018,35019,35020,35021,35022,35023,35024,35025,35026,35027,35028,35029,35030,35031,35032,35033,35034,35035,35036,35037,35038,35039,35040,35041,35042,35043,35044,35045,35046,35047,35048,35049,35050,35051,35052,35053,35054,35055,35056,35057,35058,35059,35060,35061,35062,35063,35064,35065,35066,35067,35068,35069,35070,35071,35072,35073,35074,35075,35076,35077,35078,35079,35080,35081,35082,35083,35084,35085,35086,35087,35088,35089,35090,35091,35092,35093,35094,35095,35096,35097,35098,35099,35100,35101,35102,35103,35104,35105,35106,35107,35108,35109,35110,35111,35112,35113,35114,35115,35116,35117,35118,35119,35120,35121,35122,35123,35124,35125,35126,35127,35128,35129,35130,35131,35132,35133,35134,35135,35136,35137,35138,35139,35140,35141,35142,35143,35144,35145,35146,35147,35148,35149,35150,35151,35152,35153,35154,35155,35156,35157,35158,35159,35160,35161,35162,35163,35164,35165,35166,35167,35168,35169,35170,35171,35172,35173,35174,35175,35176,35177,35178,35179,35180,35181,35182,35183,35184,35185,35186,35187,35188,35189,35190,35191,35192,35193,35194,35195,35196,35197,35198,35199,35200,35201,35202,35203,35204,35205,35206,35207,35208,35209,35210,35211,35212,35213,35214,35215,35216,35217,35218,35219,35220,35221,35222,35223,35224,35225,35226,35227,35228,35229,35230,35231,35232,35233,35234,35235,35236,35237,35238,35239,35240,35241,35242,35243,35244,35245,35246,35247,35248,35249,35250,35251,35252,35253,35254,35255,35256,35257,35258,35259,35260,35261,35262,35263,35264,35265,35266,35267,35268,35269,35270,35271,35272,35273,35274,35275,35276,35277,35278,35279,35280,35281,35282,35283,35284,35285,35286,35287,35288,35289,35290,35291,35292,35293,35294,35295,35296,35297,35298,35299,35300,35301,35302,35303,35304,35305,35306,35307,35308,35309,35310,35311,35312,35313,35314,35315,35316,35317,35318,35319,35320,35321,35322,35323,35324,35325,35326,35327,35328,35329,35330,35331,35332,35333,35334,35335,35336,35337,35338,35339,35340,35341,35342,35343,35344,35345,35346,35347,35348,35349,35350,35351,35352,35353,35354,35355,35356,35357,35358,35359,35360,35361,35362,35363,35364,35365,35366,35367,35368,35369,35370,35371,35372,35373,35374,35375,35376,35377,35378,35379,35380,35381,35382,35383,35384,35385,35386,35387,35388,35389,35390,35391,35392,35393,35394,35395,35396,35397,35398,35399,35400,35401,35402,35403,35404,35405,35406,35407,35408,35409,35410,35411,35412,35413,35414,35415,35416,35417,35418,35419,35420,35421,35422,35423,35424,35425,35426,35427,35428,35429,35430,35431,35432,35433,35434,35435,35436,35437,35438,35439,35440,35441,35442,35443,35444,35445,35446,35447,35448,35449,35450,35451,35452,35453,35454,35455,35456,35457,35458,35459,35460,35461,35462,35463,35464,35465,35466,35467,35468,35469,35470,35471,35472,35473,35474,35475,35476,35477,35478,35479,35480,35481,35482,35483,35484,35485,35486,35487,35488,35489,35490,35491,35492,35493,35494,35495,35496,35497,35498,35499,35500,35501,35502,35503,35504,35505,35506,35507,35508,35509,35510,35511,35512,35513,35514,35515,35516,35517,35518,35519,35520,35521,35522,35523,35524,35525,35526,35527,35528,35529,35530,35531,35532,35533,35534,35535,35536,35537,35538,35539,35540,35541,35542,35543,35544,35545,35546,35547,35548,35549,35550,35551,35552,35553,35554,35555,35556,35557,35558,35559,35560,35561,35562,35563,35564,35565,35566,35567,35568,35569,35570,35571,35572,35573,35574,35575,35576,35577,35578,35579,35580,35581,35582,35583,35584,35585,35586,35587,35588,35589,35590,35591,35592,35593,35594,35595,35596,35597,35598,35599,35600,35601,35602,35603,35604,35605,35606,35607,35608,35609,35610,35611,35612,35613,35614,35615,35616,35617,35618,35619,35620,35621,35622,35623,35624,35625,35626,35627,35628,35629,35630,35631,35632,35633,35634,35635,35636,35637,35638,35639,35640,35641,35642,35643,35644,35645,35646,35647,35648,35649,35650,35651,35652,35653,35654,35655,35656,35657,35658,35659,35660,35661,35662,35663,35664,35665,35666,35667,35668,35669,35670,35671,35672,35673,35674,35675,35676,35677,35678,35679,35680,35681,35682,35683,35684,35685,35686,35687,35688,35689,35690,35691,35692,35693,35694,35695,35696,35697,35698,35699,35700,35701,35702,35703,35704,35705,35706,35707,35708,35709,35710,35711,35712,35713,35714,35715,35716,35717,35718,35719,35720,35721,35722,35723,35724,35725,35726,35727,35728,35729,35730,35731,35732,35733,35734,35735,35736,35737,35738,35739,35740,35741,35742,35743,35744,35745,35746,35747,35748,35749,35750,35751,35752,35753,35754,35755,35756,35757,35758,35759,35760,35761,35762,35763,35764,35765,35766,35767,35768,35769,35770,35771,35772,35773,35774,35775,35776,35777,35778,35779,35780,35781,35782,35783,35784,35785,35786,35787,35788,35789,35790,35791,35792,35793,35794,35795,35796,35797,35798,35799,35800,35801,35802,35803,35804,35805,35806,35807,35808,35809,35810,35811,35812,35813,35814,35815,35816,35817,35818,35819,35820,35821,35822,35823,35824,35825,35826,35827,35828,35829,35830,35831,35832,35833,35834,35835,35836,35837,35838,35839,35840,35841,35842,35843,35844,35845,35846,35847,35848,35849,35850,35851,35852,35853,35854,35855,35856,35857,35858,35859,35860,35861,35862,35863,35864,35865,35866,35867,35868,35869,35870,35871,35872,35873,35874,35875,35876,35877,35878,35879,35880,35881,35882,35883,35884,35885,35886,35887,35888,35889,35890,35891,35892,35893,35894,35895,35896,35897,35898,35899,35900,35901,35902,35903,35904,35905,35906,35907,35908,35909,35910,35911,35912,35913,35914,35915,35916,35917,35918,35919,35920,35921,35922,35923,35924,35925,35926,35927,35928,35929,35930,35931,35932,35933,35934,35935,35936,35937,35938,35939,35940,35941,35942,35943,35944,35945,35946,35947,35948,35949,35950,35951,35952,35953,35954,35955,35956,35957,35958,35959,35960,35961,35962,35963,35964,35965,35966,35967,35968,35969,35970,35971,35972,35973,35974,35975,35976,35977,35978,35979,35980,35981,35982,35983,35984,35985,35986,35987,35988,35989,35990,35991,35992,35993,35994,35995,35996,35997,35998,35999,36000,36001,36002,36003,36004,36005,36006,36007,36008,36009,36010,36011,36012,36013,36014,36015,36016,36017,36018,36019,36020,36021,36022,36023,36024,36025,36026,36027,36028,36029,36030,36031,36032,36033,36034,36035,36036,36037,36038,36039,36040,36041,36042,36043,36044,36045,36046,36047,36048,36049,36050,36051,36052,36053,36054,36055,36056,36057,36058,36059,36060,36061,36062,36063,36064,36065,36066,36067,36068,36069,36070,36071,36072,36073,36074,36075,36076,36077,36078,36079,36080,36081,36082,36083,36084,36085,36086,36087,36088,36089,36090,36091,36092,36093,36094,36095,36096,36097,36098,36099,36100,36101,36102,36103,36104,36105,36106,36107,36108,36109,36110,36111,36112,36113,36114,36115,36116,36117,36118,36119,36120,36121,36122,36123,36124,36125,36126,36127,36128,36129,36130,36131,36132,36133,36134,36135,36136,36137,36138,36139,36140,36141,36142,36143,36144,36145,36146,36147,36148,36149,36150,36151,36152,36153,36154,36155,36156,36157,36158,36159,36160,36161,36162,36163,36164,36165,36166,36167,36168,36169,36170,36171,36172,36173,36174,36175,36176,36177,36178,36179,36180,36181,36182,36183,36184,36185,36186,36187,36188,36189,36190,36191,36192,36193,36194,36195,36196,36197,36198,36199,36200,36201,36202,36203,36204,36205,36206,36207,36208,36209,36210,36211,36212,36213,36214,36215,36216,36217,36218,36219,36220,36221,36222,36223,36224,36225,36226,36227,36228,36229,36230,36231,36232,36233,36234,36235,36236,36237,36238,36239,36240,36241,36242,36243,36244,36245,36246,36247,36248,36249,36250,36251,36252,36253,36254,36255,36256,36257,36258,36259,36260,36261,36262,36263,36264,36265,36266,36267,36268,36269,36270,36271,36272,36273,36274,36275,36276,36277,36278,36279,36280,36281,36282,36283,36284,36285,36286,36287,36288,36289,36290,36291,36292,36293,36294,36295,36296,36297,36298,36299,36300,36301,36302,36303,36304,36305,36306,36307,36308,36309,36310,36311,36312,36313,36314,36315,36316,36317,36318,36319,36320,36321,36322,36323,36324,36325,36326,36327,36328,36329,36330,36331,36332,36333,36334,36335,36336,36337,36338,36339,36340,36341,36342,36343,36344,36345,36346,36347,36348,36349,36350,36351,36352,36353,36354,36355,36356,36357,36358,36359,36360,36361,36362,36363,36364,36365,36366,36367,36368,36369,36370,36371,36372,36373,36374,36375,36376,36377,36378,36379,36380,36381,36382,36383,36384,36385,36386,36387,36388,36389,36390,36391,36392,36393,36394,36395,36396,36397,36398,36399,36400,36401,36402,36403,36404,36405,36406,36407,36408,36409,36410,36411,36412,36413,36414,36415,36416,36417,36418,36419,36420,36421,36422,36423,36424,36425,36426,36427,36428,36429,36430,36431,36432,36433,36434,36435,36436,36437,36438,36439,36440,36441,36442,36443,36444,36445,36446,36447,36448,36449,36450,36451,36452,36453,36454,36455,36456,36457,36458,36459,36460,36461,36462,36463,36464,36465,36466,36467,36468,36469,36470,36471,36472,36473,36474,36475,36476,36477,36478,36479,36480,36481,36482,36483,36484,36485,36486,36487,36488,36489,36490,36491,36492,36493,36494,36495,36496,36497,36498,36499,36500,36501,36502,36503,36504,36505,36506,36507,36508,36509,36510,36511,36512,36513,36514,36515,36516,36517,36518,36519,36520,36521,36522,36523,36524,36525,36526,36527,36528,36529,36530,36531,36532,36533,36534,36535,36536,36537,36538,36539,36540,36541,36542,36543,36544,36545,36546,36547,36548,36549,36550,36551,36552,36553,36554,36555,36556,36557,36558,36559,36560,36561,36562,36563,36564,36565,36566,36567,36568,36569,36570,36571,36572,36573,36574,36575,36576,36577,36578,36579,36580,36581,36582,36583,36584,36585,36586,36587,36588,36589,36590,36591,36592,36593,36594,36595,36596,36597,36598,36599,36600,36601,36602,36603,36604,36605,36606,36607,36608,36609,36610,36611,36612,36613,36614,36615,36616,36617,36618,36619,36620,36621,36622,36623,36624,36625,36626,36627,36628,36629,36630,36631,36632,36633,36634,36635,36636,36637,36638,36639,36640,36641,36642,36643,36644,36645,36646,36647,36648,36649,36650,36651,36652,36653,36654,36655,36656,36657,36658,36659,36660,36661,36662,36663,36664,36665,36666,36667,36668,36669,36670,36671,36672,36673,36674,36675,36676,36677,36678,36679,36680,36681,36682,36683,36684,36685,36686,36687,36688,36689,36690,36691,36692,36693,36694,36695,36696,36697,36698,36699,36700,36701,36702,36703,36704,36705,36706,36707,36708,36709,36710,36711,36712,36713,36714,36715,36716,36717,36718,36719,36720,36721,36722,36723,36724,36725,36726,36727,36728,36729,36730,36731,36732,36733,36734,36735,36736,36737,36738,36739,36740,36741,36742,36743,36744,36745,36746,36747,36748,36749,36750,36751,36752,36753,36754,36755,36756,36757,36758,36759,36760,36761,36762,36763,36764,36765,36766,36767,36768,36769,36770,36771,36772,36773,36774,36775,36776,36777,36778,36779,36780,36781,36782,36783,36784,36785,36786,36787,36788,36789,36790,36791,36792,36793,36794,36795,36796,36797,36798,36799,36800,36801,36802,36803,36804,36805,36806,36807,36808,36809,36810,36811,36812,36813,36814,36815,36816,36817,36818,36819,36820,36821,36822,36823,36824,36825,36826,36827,36828,36829,36830,36831,36832,36833,36834,36835,36836,36837,36838,36839,36840,36841,36842,36843,36844,36845,36846,36847,36848,36849,36850,36851,36852,36853,36854,36855,36856,36857,36858,36859,36860,36861,36862,36863,36864,36865,36866,36867,36868,36869,36870,36871,36872,36873,36874,36875,36876,36877,36878,36879,36880,36881,36882,36883,36884,36885,36886,36887,36888,36889,36890,36891,36892,36893,36894,36895,36896,36897,36898,36899,36900,36901,36902,36903,36904,36905,36906,36907,36908,36909,36910,36911,36912,36913,36914,36915,36916,36917,36918,36919,36920,36921,36922,36923,36924,36925,36926,36927,36928,36929,36930,36931,36932,36933,36934,36935,36936,36937,36938,36939,36940,36941,36942,36943,36944,36945,36946,36947,36948,36949,36950,36951,36952,36953,36954,36955,36956,36957,36958,36959,36960,36961,36962,36963,36964,36965,36966,36967,36968,36969,36970,36971,36972,36973,36974,36975,36976,36977,36978,36979,36980,36981,36982,36983,36984,36985,36986,36987,36988,36989,36990,36991,36992,36993,36994,36995,36996,36997,36998,36999,37000,37001,37002,37003,37004,37005,37006,37007,37008,37009,37010,37011,37012,37013,37014,37015,37016,37017,37018,37019,37020,37021,37022,37023,37024,37025,37026,37027,37028,37029,37030,37031,37032,37033,37034,37035,37036,37037,37038,37039,37040,37041,37042,37043,37044,37045,37046,37047,37048,37049,37050,37051,37052,37053,37054,37055,37056,37057,37058,37059,37060,37061,37062,37063,37064,37065,37066,37067,37068,37069,37070,37071,37072,37073,37074,37075,37076,37077,37078,37079,37080,37081,37082,37083,37084,37085,37086,37087,37088,37089,37090,37091,37092,37093,37094,37095,37096,37097,37098,37099,37100,37101,37102,37103,37104,37105,37106,37107,37108,37109,37110,37111,37112,37113,37114,37115,37116,37117,37118,37119,37120,37121,37122,37123,37124,37125,37126,37127,37128,37129,37130,37131,37132,37133,37134,37135,37136,37137,37138,37139,37140,37141,37142,37143,37144,37145,37146,37147,37148,37149,37150,37151,37152,37153,37154,37155,37156,37157,37158,37159,37160,37161,37162,37163,37164,37165,37166,37167,37168,37169,37170,37171,37172,37173,37174,37175,37176,37177,37178,37179,37180,37181,37182,37183,37184,37185,37186,37187,37188,37189,37190,37191,37192,37193,37194,37195,37196,37197,37198,37199,37200,37201,37202,37203,37204,37205,37206,37207,37208,37209,37210,37211,37212,37213,37214,37215,37216,37217,37218,37219,37220,37221,37222,37223,37224,37225,37226,37227,37228,37229,37230,37231,37232,37233,37234,37235,37236,37237,37238,37239,37240,37241,37242,37243,37244,37245,37246,37247,37248,37249,37250,37251,37252,37253,37254,37255,37256,37257,37258,37259,37260,37261,37262,37263,37264,37265,37266,37267,37268,37269,37270,37271,37272,37273,37274,37275,37276,37277,37278,37279,37280,37281,37282,37283,37284,37285,37286,37287,37288,37289,37290,37291,37292,37293,37294,37295,37296,37297,37298,37299,37300,37301,37302,37303,37304,37305,37306,37307,37308,37309,37310,37311,37312,37313,37314,37315,37316,37317,37318,37319,37320,37321,37322,37323,37324,37325,37326,37327,37328,37329,37330,37331,37332,37333,37334,37335,37336,37337,37338,37339,37340,37341,37342,37343,37344,37345,37346,37347,37348,37349,37350,37351,37352,37353,37354,37355,37356,37357,37358,37359,37360,37361,37362,37363,37364,37365,37366,37367,37368,37369,37370,37371,37372,37373,37374,37375,37376,37377,37378,37379,37380,37381,37382,37383,37384,37385,37386,37387,37388,37389,37390,37391,37392,37393,37394,37395,37396,37397,37398,37399,37400,37401,37402,37403,37404,37405,37406,37407,37408,37409,37410,37411,37412,37413,37414,37415,37416,37417,37418,37419,37420,37421,37422,37423,37424,37425,37426,37427,37428,37429,37430,37431,37432,37433,37434,37435,37436,37437,37438,37439,37440,37441,37442,37443,37444,37445,37446,37447,37448,37449,37450,37451,37452,37453,37454,37455,37456,37457,37458,37459,37460,37461,37462,37463,37464,37465,37466,37467,37468,37469,37470,37471,37472,37473,37474,37475,37476,37477,37478,37479,37480,37481,37482,37483,37484,37485,37486,37487,37488,37489,37490,37491,37492,37493,37494,37495,37496,37497,37498,37499,37500,37501,37502,37503,37504,37505,37506,37507,37508,37509,37510,37511,37512,37513,37514,37515,37516,37517,37518,37519,37520,37521,37522,37523,37524,37525,37526,37527,37528,37529,37530,37531,37532,37533,37534,37535,37536,37537,37538,37539,37540,37541,37542,37543,37544,37545,37546,37547,37548,37549,37550,37551,37552,37553,37554,37555,37556,37557,37558,37559,37560,37561,37562,37563,37564,37565,37566,37567,37568,37569,37570,37571,37572,37573,37574,37575,37576,37577,37578,37579,37580,37581,37582,37583,37584,37585,37586,37587,37588,37589,37590,37591,37592,37593,37594,37595,37596,37597,37598,37599,37600,37601,37602,37603,37604,37605,37606,37607,37608,37609,37610,37611,37612,37613,37614,37615,37616,37617,37618,37619,37620,37621,37622,37623,37624,37625,37626,37627,37628,37629,37630,37631,37632,37633,37634,37635,37636,37637,37638,37639,37640,37641,37642,37643,37644,37645,37646,37647,37648,37649,37650,37651,37652,37653,37654,37655,37656,37657,37658,37659,37660,37661,37662,37663,37664,37665,37666,37667,37668,37669,37670,37671,37672,37673,37674,37675,37676,37677,37678,37679,37680,37681,37682,37683,37684,37685,37686,37687,37688,37689,37690,37691,37692,37693,37694,37695,37696,37697,37698,37699,37700,37701,37702,37703,37704,37705,37706,37707,37708,37709,37710,37711,37712,37713,37714,37715,37716,37717,37718,37719,37720,37721,37722,37723,37724,37725,37726,37727,37728,37729,37730,37731,37732,37733,37734,37735,37736,37737,37738,37739,37740,37741,37742,37743,37744,37745,37746,37747,37748,37749,37750,37751,37752,37753,37754,37755,37756,37757,37758,37759,37760,37761,37762,37763,37764,37765,37766,37767,37768,37769,37770,37771,37772,37773,37774,37775,37776,37777,37778,37779,37780,37781,37782,37783,37784,37785,37786,37787,37788,37789,37790,37791,37792,37793,37794,37795,37796,37797,37798,37799,37800,37801,37802,37803,37804,37805,37806,37807,37808,37809,37810,37811,37812,37813,37814,37815,37816,37817,37818,37819,37820,37821,37822,37823,37824,37825,37826,37827,37828,37829,37830,37831,37832,37833,37834,37835,37836,37837,37838,37839,37840,37841,37842,37843,37844,37845,37846,37847,37848,37849,37850,37851,37852,37853,37854,37855,37856,37857,37858,37859,37860,37861,37862,37863,37864,37865,37866,37867,37868,37869,37870,37871,37872,37873,37874,37875,37876,37877,37878,37879,37880,37881,37882,37883,37884,37885,37886,37887,37888,37889,37890,37891,37892,37893,37894,37895,37896,37897,37898,37899,37900,37901,37902,37903,37904,37905,37906,37907,37908,37909,37910,37911,37912,37913,37914,37915,37916,37917,37918,37919,37920,37921,37922,37923,37924,37925,37926,37927,37928,37929,37930,37931,37932,37933,37934,37935,37936,37937,37938,37939,37940,37941,37942,37943,37944,37945,37946,37947,37948,37949,37950,37951,37952,37953,37954,37955,37956,37957,37958,37959,37960,37961,37962,37963,37964,37965,37966,37967,37968,37969,37970,37971,37972,37973,37974,37975,37976,37977,37978,37979,37980,37981,37982,37983,37984,37985,37986,37987,37988,37989,37990,37991,37992,37993,37994,37995,37996,37997,37998,37999,38000,38001,38002,38003,38004,38005,38006,38007,38008,38009,38010,38011,38012,38013,38014,38015,38016,38017,38018,38019,38020,38021,38022,38023,38024,38025,38026,38027,38028,38029,38030,38031,38032,38033,38034,38035,38036,38037,38038,38039,38040,38041,38042,38043,38044,38045,38046,38047,38048,38049,38050,38051,38052,38053,38054,38055,38056,38057,38058,38059,38060,38061,38062,38063,38064,38065,38066,38067,38068,38069,38070,38071,38072,38073,38074,38075,38076,38077,38078,38079,38080,38081,38082,38083,38084,38085,38086,38087,38088,38089,38090,38091,38092,38093,38094,38095,38096,38097,38098,38099,38100,38101,38102,38103,38104,38105,38106,38107,38108,38109,38110,38111,38112,38113,38114,38115,38116,38117,38118,38119,38120,38121,38122,38123,38124,38125,38126,38127,38128,38129,38130,38131,38132,38133,38134,38135,38136,38137,38138,38139,38140,38141,38142,38143,38144,38145,38146,38147,38148,38149,38150,38151,38152,38153,38154,38155,38156,38157,38158,38159,38160,38161,38162,38163,38164,38165,38166,38167,38168,38169,38170,38171,38172,38173,38174,38175,38176,38177,38178,38179,38180,38181,38182,38183,38184,38185,38186,38187,38188,38189,38190,38191,38192,38193,38194,38195,38196,38197,38198,38199,38200,38201,38202,38203,38204,38205,38206,38207,38208,38209,38210,38211,38212,38213,38214,38215,38216,38217,38218,38219,38220,38221,38222,38223,38224,38225,38226,38227,38228,38229,38230,38231,38232,38233,38234,38235,38236,38237,38238,38239,38240,38241,38242,38243,38244,38245,38246,38247,38248,38249,38250,38251,38252,38253,38254,38255,38256,38257,38258,38259,38260,38261,38262,38263,38264,38265,38266,38267,38268,38269,38270,38271,38272,38273,38274,38275,38276,38277,38278,38279,38280,38281,38282,38283,38284,38285,38286,38287,38288,38289,38290,38291,38292,38293,38294,38295,38296,38297,38298,38299,38300,38301,38302,38303,38304,38305,38306,38307,38308,38309,38310,38311,38312,38313,38314,38315,38316,38317,38318,38319,38320,38321,38322,38323,38324,38325,38326,38327,38328,38329,38330,38331,38332,38333,38334,38335,38336,38337,38338,38339,38340,38341,38342,38343,38344,38345,38346,38347,38348,38349,38350,38351,38352,38353,38354,38355,38356,38357,38358,38359,38360,38361,38362,38363,38364,38365,38366,38367,38368,38369,38370,38371,38372,38373,38374,38375,38376,38377,38378,38379,38380,38381,38382,38383,38384,38385,38386,38387,38388,38389,38390,38391,38392,38393,38394,38395,38396,38397,38398,38399,38400,38401,38402,38403,38404,38405,38406,38407,38408,38409,38410,38411,38412,38413,38414,38415,38416,38417,38418,38419,38420,38421,38422,38423,38424,38425,38426,38427,38428,38429,38430,38431,38432,38433,38434,38435,38436,38437,38438,38439,38440,38441,38442,38443,38444,38445,38446,38447,38448,38449,38450,38451,38452,38453,38454,38455,38456,38457,38458,38459,38460,38461,38462,38463,38464,38465,38466,38467,38468,38469,38470,38471,38472,38473,38474,38475,38476,38477,38478,38479,38480,38481,38482,38483,38484,38485,38486,38487,38488,38489,38490,38491,38492,38493,38494,38495,38496,38497,38498,38499,38500,38501,38502,38503,38504,38505,38506,38507,38508,38509,38510,38511,38512,38513,38514,38515,38516,38517,38518,38519,38520,38521,38522,38523,38524,38525,38526,38527,38528,38529,38530,38531,38532,38533,38534,38535,38536,38537,38538,38539,38540,38541,38542,38543,38544,38545,38546,38547,38548,38549,38550,38551,38552,38553,38554,38555,38556,38557,38558,38559,38560,38561,38562,38563,38564,38565,38566,38567,38568,38569,38570,38571,38572,38573,38574,38575,38576,38577,38578,38579,38580,38581,38582,38583,38584,38585,38586,38587,38588,38589,38590,38591,38592,38593,38594,38595,38596,38597,38598,38599,38600,38601,38602,38603,38604,38605,38606,38607,38608,38609,38610,38611,38612,38613,38614,38615,38616,38617,38618,38619,38620,38621,38622,38623,38624,38625,38626,38627,38628,38629,38630,38631,38632,38633,38634,38635,38636,38637,38638,38639,38640,38641,38642,38643,38644,38645,38646,38647,38648,38649,38650,38651,38652,38653,38654,38655,38656,38657,38658,38659,38660,38661,38662,38663,38664,38665,38666,38667,38668,38669,38670,38671,38672,38673,38674,38675,38676,38677,38678,38679,38680,38681,38682,38683,38684,38685,38686,38687,38688,38689,38690,38691,38692,38693,38694,38695,38696,38697,38698,38699,38700,38701,38702,38703,38704,38705,38706,38707,38708,38709,38710,38711,38712,38713,38714,38715,38716,38717,38718,38719,38720,38721,38722,38723,38724,38725,38726,38727,38728,38729,38730,38731,38732,38733,38734,38735,38736,38737,38738,38739,38740,38741,38742,38743,38744,38745,38746,38747,38748,38749,38750,38751,38752,38753,38754,38755,38756,38757,38758,38759,38760,38761,38762,38763,38764,38765,38766,38767,38768,38769,38770,38771,38772,38773,38774,38775,38776,38777,38778,38779,38780,38781,38782,38783,38784,38785,38786,38787,38788,38789,38790,38791,38792,38793,38794,38795,38796,38797,38798,38799,38800,38801,38802,38803,38804,38805,38806,38807,38808,38809,38810,38811,38812,38813,38814,38815,38816,38817,38818,38819,38820,38821,38822,38823,38824,38825,38826,38827,38828,38829,38830,38831,38832,38833,38834,38835,38836,38837,38838,38839,38840,38841,38842,38843,38844,38845,38846,38847,38848,38849,38850,38851,38852,38853,38854,38855,38856,38857,38858,38859,38860,38861,38862,38863,38864,38865,38866,38867,38868,38869,38870,38871,38872,38873,38874,38875,38876,38877,38878,38879,38880,38881,38882,38883,38884,38885,38886,38887,38888,38889,38890,38891,38892,38893,38894,38895,38896,38897,38898,38899,38900,38901,38902,38903,38904,38905,38906,38907,38908,38909,38910,38911,38912,38913,38914,38915,38916,38917,38918,38919,38920,38921,38922,38923,38924,38925,38926,38927,38928,38929,38930,38931,38932,38933,38934,38935,38936,38937,38938,38939,38940,38941,38942,38943,38944,38945,38946,38947,38948,38949,38950,38951,38952,38953,38954,38955,38956,38957,38958,38959,38960,38961,38962,38963,38964,38965,38966,38967,38968,38969,38970,38971,38972,38973,38974,38975,38976,38977,38978,38979,38980,38981,38982,38983,38984,38985,38986,38987,38988,38989,38990,38991,38992,38993,38994,38995,38996,38997,38998,38999,39000,39001,39002,39003,39004,39005,39006,39007,39008,39009,39010,39011,39012,39013,39014,39015,39016,39017,39018,39019,39020,39021,39022,39023,39024,39025,39026,39027,39028,39029,39030,39031,39032,39033,39034,39035,39036,39037,39038,39039,39040,39041,39042,39043,39044,39045,39046,39047,39048,39049,39050,39051,39052,39053,39054,39055,39056,39057,39058,39059,39060,39061,39062,39063,39064,39065,39066,39067,39068,39069,39070,39071,39072,39073,39074,39075,39076,39077,39078,39079,39080,39081,39082,39083,39084,39085,39086,39087,39088,39089,39090,39091,39092,39093,39094,39095,39096,39097,39098,39099,39100,39101,39102,39103,39104,39105,39106,39107,39108,39109,39110,39111,39112,39113,39114,39115,39116,39117,39118,39119,39120,39121,39122,39123,39124,39125,39126,39127,39128,39129,39130,39131,39132,39133,39134,39135,39136,39137,39138,39139,39140,39141,39142,39143,39144,39145,39146,39147,39148,39149,39150,39151,39152,39153,39154,39155,39156,39157,39158,39159,39160,39161,39162,39163,39164,39165,39166,39167,39168,39169,39170,39171,39172,39173,39174,39175,39176,39177,39178,39179,39180,39181,39182,39183,39184,39185,39186,39187,39188,39189,39190,39191,39192,39193,39194,39195,39196,39197,39198,39199,39200,39201,39202,39203,39204,39205,39206,39207,39208,39209,39210,39211,39212,39213,39214,39215,39216,39217,39218,39219,39220,39221,39222,39223,39224,39225,39226,39227,39228,39229,39230,39231,39232,39233,39234,39235,39236,39237,39238,39239,39240,39241,39242,39243,39244,39245,39246,39247,39248,39249,39250,39251,39252,39253,39254,39255,39256,39257,39258,39259,39260,39261,39262,39263,39264,39265,39266,39267,39268,39269,39270,39271,39272,39273,39274,39275,39276,39277,39278,39279,39280,39281,39282,39283,39284,39285,39286,39287,39288,39289,39290,39291,39292,39293,39294,39295,39296,39297,39298,39299,39300,39301,39302,39303,39304,39305,39306,39307,39308,39309,39310,39311,39312,39313,39314,39315,39316,39317,39318,39319,39320,39321,39322,39323,39324,39325,39326,39327,39328,39329,39330,39331,39332,39333,39334,39335,39336,39337,39338,39339,39340,39341,39342,39343,39344,39345,39346,39347,39348,39349,39350,39351,39352,39353,39354,39355,39356,39357,39358,39359,39360,39361,39362,39363,39364,39365,39366,39367,39368,39369,39370,39371,39372,39373,39374,39375,39376,39377,39378,39379,39380,39381,39382,39383,39384,39385,39386,39387,39388,39389,39390,39391,39392,39393,39394,39395,39396,39397,39398,39399,39400,39401,39402,39403,39404,39405,39406,39407,39408,39409,39410,39411,39412,39413,39414,39415,39416,39417,39418,39419,39420,39421,39422,39423,39424,39425,39426,39427,39428,39429,39430,39431,39432,39433,39434,39435,39436,39437,39438,39439,39440,39441,39442,39443,39444,39445,39446,39447,39448,39449,39450,39451,39452,39453,39454,39455,39456,39457,39458,39459,39460,39461,39462,39463,39464,39465,39466,39467,39468,39469,39470,39471,39472,39473,39474,39475,39476,39477,39478,39479,39480,39481,39482,39483,39484,39485,39486,39487,39488,39489,39490,39491,39492,39493,39494,39495,39496,39497,39498,39499,39500,39501,39502,39503,39504,39505,39506,39507,39508,39509,39510,39511,39512,39513,39514,39515,39516,39517,39518,39519,39520,39521,39522,39523,39524,39525,39526,39527,39528,39529,39530,39531,39532,39533,39534,39535,39536,39537,39538,39539,39540,39541,39542,39543,39544,39545,39546,39547,39548,39549,39550,39551,39552,39553,39554,39555,39556,39557,39558,39559,39560,39561,39562,39563,39564,39565,39566,39567,39568,39569,39570,39571,39572,39573,39574,39575,39576,39577,39578,39579,39580,39581,39582,39583,39584,39585,39586,39587,39588,39589,39590,39591,39592,39593,39594,39595,39596,39597,39598,39599,39600,39601,39602,39603,39604,39605,39606,39607,39608,39609,39610,39611,39612,39613,39614,39615,39616,39617,39618,39619,39620,39621,39622,39623,39624,39625,39626,39627,39628,39629,39630,39631,39632,39633,39634,39635,39636,39637,39638,39639,39640,39641,39642,39643,39644,39645,39646,39647,39648,39649,39650,39651,39652,39653,39654,39655,39656,39657,39658,39659,39660,39661,39662,39663,39664,39665,39666,39667,39668,39669,39670,39671,39672,39673,39674,39675,39676,39677,39678,39679,39680,39681,39682,39683,39684,39685,39686,39687,39688,39689,39690,39691,39692,39693,39694,39695,39696,39697,39698,39699,39700,39701,39702,39703,39704,39705,39706,39707,39708,39709,39710,39711,39712,39713,39714,39715,39716,39717,39718,39719,39720,39721,39722,39723,39724,39725,39726,39727,39728,39729,39730,39731,39732,39733,39734,39735,39736,39737,39738,39739,39740,39741,39742,39743,39744,39745,39746,39747,39748,39749,39750,39751,39752,39753,39754,39755,39756,39757,39758,39759,39760,39761,39762,39763,39764,39765,39766,39767,39768,39769,39770,39771,39772,39773,39774,39775,39776,39777,39778,39779,39780,39781,39782,39783,39784,39785,39786,39787,39788,39789,39790,39791,39792,39793,39794,39795,39796,39797,39798,39799,39800,39801,39802,39803,39804,39805,39806,39807,39808,39809,39810,39811,39812,39813,39814,39815,39816,39817,39818,39819,39820,39821,39822,39823,39824,39825,39826,39827,39828,39829,39830,39831,39832,39833,39834,39835,39836,39837,39838,39839,39840,39841,39842,39843,39844,39845,39846,39847,39848,39849,39850,39851,39852,39853,39854,39855,39856,39857,39858,39859,39860,39861,39862,39863,39864,39865,39866,39867,39868,39869,39870,39871,39872,39873,39874,39875,39876,39877,39878,39879,39880,39881,39882,39883,39884,39885,39886,39887,39888,39889,39890,39891,39892,39893,39894,39895,39896,39897,39898,39899,39900,39901,39902,39903,39904,39905,39906,39907,39908,39909,39910,39911,39912,39913,39914,39915,39916,39917,39918,39919,39920,39921,39922,39923,39924,39925,39926,39927,39928,39929,39930,39931,39932,39933,39934,39935,39936,39937,39938,39939,39940,39941,39942,39943,39944,39945,39946,39947,39948,39949,39950,39951,39952,39953,39954,39955,39956,39957,39958,39959,39960,39961,39962,39963,39964,39965,39966,39967,39968,39969,39970,39971,39972,39973,39974,39975,39976,39977,39978,39979,39980,39981,39982,39983,39984,39985,39986,39987,39988,39989,39990,39991,39992,39993,39994,39995,39996,39997,39998,39999,40000,40001,40002,40003,40004,40005,40006,40007,40008,40009,40010,40011,40012,40013,40014,40015,40016,40017,40018,40019,40020,40021,40022,40023,40024,40025,40026,40027,40028,40029,40030,40031,40032,40033,40034,40035,40036,40037,40038,40039,40040,40041,40042,40043,40044,40045,40046,40047,40048,40049,40050,40051,40052,40053,40054,40055,40056,40057,40058,40059,40060,40061,40062,40063,40064,40065,40066,40067,40068,40069,40070,40071,40072,40073,40074,40075,40076,40077,40078,40079,40080,40081,40082,40083,40084,40085,40086,40087,40088,40089,40090,40091,40092,40093,40094,40095,40096,40097,40098,40099,40100,40101,40102,40103,40104,40105,40106,40107,40108,40109,40110,40111,40112,40113,40114,40115,40116,40117,40118,40119,40120,40121,40122,40123,40124,40125,40126,40127,40128,40129,40130,40131,40132,40133,40134,40135,40136,40137,40138,40139,40140,40141,40142,40143,40144,40145,40146,40147,40148,40149,40150,40151,40152,40153,40154,40155,40156,40157,40158,40159,40160,40161,40162,40163,40164,40165,40166,40167,40168,40169,40170,40171,40172,40173,40174,40175,40176,40177,40178,40179,40180,40181,40182,40183,40184,40185,40186,40187,40188,40189,40190,40191,40192,40193,40194,40195,40196,40197,40198,40199,40200,40201,40202,40203,40204,40205,40206,40207,40208,40209,40210,40211,40212,40213,40214,40215,40216,40217,40218,40219,40220,40221,40222,40223,40224,40225,40226,40227,40228,40229,40230,40231,40232,40233,40234,40235,40236,40237,40238,40239,40240,40241,40242,40243,40244,40245,40246,40247,40248,40249,40250,40251,40252,40253,40254,40255,40256,40257,40258,40259,40260,40261,40262,40263,40264,40265,40266,40267,40268,40269,40270,40271,40272,40273,40274,40275,40276,40277,40278,40279,40280,40281,40282,40283,40284,40285,40286,40287,40288,40289,40290,40291,40292,40293,40294,40295,40296,40297,40298,40299,40300,40301,40302,40303,40304,40305,40306,40307,40308,40309,40310,40311,40312,40313,40314,40315,40316,40317,40318,40319,40320,40321,40322,40323,40324,40325,40326,40327,40328,40329,40330,40331,40332,40333,40334,40335,40336,40337,40338,40339,40340,40341,40342,40343,40344,40345,40346,40347,40348,40349,40350,40351,40352,40353,40354,40355,40356,40357,40358,40359,40360,40361,40362,40363,40364,40365,40366,40367,40368,40369,40370,40371,40372,40373,40374,40375,40376,40377,40378,40379,40380,40381,40382,40383,40384,40385,40386,40387,40388,40389,40390,40391,40392,40393,40394,40395,40396,40397,40398,40399,40400,40401,40402,40403,40404,40405,40406,40407,40408,40409,40410,40411,40412,40413,40414,40415,40416,40417,40418,40419,40420,40421,40422,40423,40424,40425,40426,40427,40428,40429,40430,40431,40432,40433,40434,40435,40436,40437,40438,40439,40440,40441,40442,40443,40444,40445,40446,40447,40448,40449,40450,40451,40452,40453,40454,40455,40456,40457,40458,40459,40460,40461,40462,40463,40464,40465,40466,40467,40468,40469,40470,40471,40472,40473,40474,40475,40476,40477,40478,40479,40480,40481,40482,40483,40484,40485,40486,40487,40488,40489,40490,40491,40492,40493,40494,40495,40496,40497,40498,40499,40500,40501,40502,40503,40504,40505,40506,40507,40508,40509,40510,40511,40512,40513,40514,40515,40516,40517,40518,40519,40520,40521,40522,40523,40524,40525,40526,40527,40528,40529,40530,40531,40532,40533,40534,40535,40536,40537,40538,40539,40540,40541,40542,40543,40544,40545,40546,40547,40548,40549,40550,40551,40552,40553,40554,40555,40556,40557,40558,40559,40560,40561,40562,40563,40564,40565,40566,40567,40568,40569,40570,40571,40572,40573,40574,40575,40576,40577,40578,40579,40580,40581,40582,40583,40584,40585,40586,40587,40588,40589,40590,40591,40592,40593,40594,40595,40596,40597,40598,40599,40600,40601,40602,40603,40604,40605,40606,40607,40608,40609,40610,40611,40612,40613,40614,40615,40616,40617,40618,40619,40620,40621,40622,40623,40624,40625,40626,40627,40628,40629,40630,40631,40632,40633,40634,40635,40636,40637,40638,40639,40640,40641,40642,40643,40644,40645,40646,40647,40648,40649,40650,40651,40652,40653,40654,40655,40656,40657,40658,40659,40660,40661,40662,40663,40664,40665,40666,40667,40668,40669,40670,40671,40672,40673,40674,40675,40676,40677,40678,40679,40680,40681,40682,40683,40684,40685,40686,40687,40688,40689,40690,40691,40692,40693,40694,40695,40696,40697,40698,40699,40700,40701,40702,40703,40704,40705,40706,40707,40708,40709,40710,40711,40712,40713,40714,40715,40716,40717,40718,40719,40720,40721,40722,40723,40724,40725,40726,40727,40728,40729,40730,40731,40732,40733,40734,40735,40736,40737,40738,40739,40740,40741,40742,40743,40744,40745,40746,40747,40748,40749,40750,40751,40752,40753,40754,40755,40756,40757,40758,40759,40760,40761,40762,40763,40764,40765,40766,40767,40768,40769,40770,40771,40772,40773,40774,40775,40776,40777,40778,40779,40780,40781,40782,40783,40784,40785,40786,40787,40788,40789,40790,40791,40792,40793,40794,40795,40796,40797,40798,40799,40800,40801,40802,40803,40804,40805,40806,40807,40808,40809,40810,40811,40812,40813,40814,40815,40816,40817,40818,40819,40820,40821,40822,40823,40824,40825,40826,40827,40828,40829,40830,40831,40832,40833,40834,40835,40836,40837,40838,40839,40840,40841,40842,40843,40844,40845,40846,40847,40848,40849,40850,40851,40852,40853,40854,40855,40856,40857,40858,40859,40860,40861,40862,40863,40864,40865,40866,40867,40868,40869,40870,40871,40872,40873,40874,40875,40876,40877,40878,40879,40880,40881,40882,40883,40884,40885,40886,40887,40888,40889,40890,40891,40892,40893,40894,40895,40896,40897,40898,40899,40900,40901,40902,40903,40904,40905,40906,40907,40908,40909,40910,40911,40912,40913,40914,40915,40916,40917,40918,40919,40920,40921,40922,40923,40924,40925,40926,40927,40928,40929,40930,40931,40932,40933,40934,40935,40936,40937,40938,40939,40940,40941,40942,40943,40960,40961,40962,40963,40964,40965,40966,40967,40968,40969,40970,40971,40972,40973,40974,40975,40976,40977,40978,40979,40980,40981,40982,40983,40984,40985,40986,40987,40988,40989,40990,40991,40992,40993,40994,40995,40996,40997,40998,40999,41000,41001,41002,41003,41004,41005,41006,41007,41008,41009,41010,41011,41012,41013,41014,41015,41016,41017,41018,41019,41020,41021,41022,41023,41024,41025,41026,41027,41028,41029,41030,41031,41032,41033,41034,41035,41036,41037,41038,41039,41040,41041,41042,41043,41044,41045,41046,41047,41048,41049,41050,41051,41052,41053,41054,41055,41056,41057,41058,41059,41060,41061,41062,41063,41064,41065,41066,41067,41068,41069,41070,41071,41072,41073,41074,41075,41076,41077,41078,41079,41080,41081,41082,41083,41084,41085,41086,41087,41088,41089,41090,41091,41092,41093,41094,41095,41096,41097,41098,41099,41100,41101,41102,41103,41104,41105,41106,41107,41108,41109,41110,41111,41112,41113,41114,41115,41116,41117,41118,41119,41120,41121,41122,41123,41124,41125,41126,41127,41128,41129,41130,41131,41132,41133,41134,41135,41136,41137,41138,41139,41140,41141,41142,41143,41144,41145,41146,41147,41148,41149,41150,41151,41152,41153,41154,41155,41156,41157,41158,41159,41160,41161,41162,41163,41164,41165,41166,41167,41168,41169,41170,41171,41172,41173,41174,41175,41176,41177,41178,41179,41180,41181,41182,41183,41184,41185,41186,41187,41188,41189,41190,41191,41192,41193,41194,41195,41196,41197,41198,41199,41200,41201,41202,41203,41204,41205,41206,41207,41208,41209,41210,41211,41212,41213,41214,41215,41216,41217,41218,41219,41220,41221,41222,41223,41224,41225,41226,41227,41228,41229,41230,41231,41232,41233,41234,41235,41236,41237,41238,41239,41240,41241,41242,41243,41244,41245,41246,41247,41248,41249,41250,41251,41252,41253,41254,41255,41256,41257,41258,41259,41260,41261,41262,41263,41264,41265,41266,41267,41268,41269,41270,41271,41272,41273,41274,41275,41276,41277,41278,41279,41280,41281,41282,41283,41284,41285,41286,41287,41288,41289,41290,41291,41292,41293,41294,41295,41296,41297,41298,41299,41300,41301,41302,41303,41304,41305,41306,41307,41308,41309,41310,41311,41312,41313,41314,41315,41316,41317,41318,41319,41320,41321,41322,41323,41324,41325,41326,41327,41328,41329,41330,41331,41332,41333,41334,41335,41336,41337,41338,41339,41340,41341,41342,41343,41344,41345,41346,41347,41348,41349,41350,41351,41352,41353,41354,41355,41356,41357,41358,41359,41360,41361,41362,41363,41364,41365,41366,41367,41368,41369,41370,41371,41372,41373,41374,41375,41376,41377,41378,41379,41380,41381,41382,41383,41384,41385,41386,41387,41388,41389,41390,41391,41392,41393,41394,41395,41396,41397,41398,41399,41400,41401,41402,41403,41404,41405,41406,41407,41408,41409,41410,41411,41412,41413,41414,41415,41416,41417,41418,41419,41420,41421,41422,41423,41424,41425,41426,41427,41428,41429,41430,41431,41432,41433,41434,41435,41436,41437,41438,41439,41440,41441,41442,41443,41444,41445,41446,41447,41448,41449,41450,41451,41452,41453,41454,41455,41456,41457,41458,41459,41460,41461,41462,41463,41464,41465,41466,41467,41468,41469,41470,41471,41472,41473,41474,41475,41476,41477,41478,41479,41480,41481,41482,41483,41484,41485,41486,41487,41488,41489,41490,41491,41492,41493,41494,41495,41496,41497,41498,41499,41500,41501,41502,41503,41504,41505,41506,41507,41508,41509,41510,41511,41512,41513,41514,41515,41516,41517,41518,41519,41520,41521,41522,41523,41524,41525,41526,41527,41528,41529,41530,41531,41532,41533,41534,41535,41536,41537,41538,41539,41540,41541,41542,41543,41544,41545,41546,41547,41548,41549,41550,41551,41552,41553,41554,41555,41556,41557,41558,41559,41560,41561,41562,41563,41564,41565,41566,41567,41568,41569,41570,41571,41572,41573,41574,41575,41576,41577,41578,41579,41580,41581,41582,41583,41584,41585,41586,41587,41588,41589,41590,41591,41592,41593,41594,41595,41596,41597,41598,41599,41600,41601,41602,41603,41604,41605,41606,41607,41608,41609,41610,41611,41612,41613,41614,41615,41616,41617,41618,41619,41620,41621,41622,41623,41624,41625,41626,41627,41628,41629,41630,41631,41632,41633,41634,41635,41636,41637,41638,41639,41640,41641,41642,41643,41644,41645,41646,41647,41648,41649,41650,41651,41652,41653,41654,41655,41656,41657,41658,41659,41660,41661,41662,41663,41664,41665,41666,41667,41668,41669,41670,41671,41672,41673,41674,41675,41676,41677,41678,41679,41680,41681,41682,41683,41684,41685,41686,41687,41688,41689,41690,41691,41692,41693,41694,41695,41696,41697,41698,41699,41700,41701,41702,41703,41704,41705,41706,41707,41708,41709,41710,41711,41712,41713,41714,41715,41716,41717,41718,41719,41720,41721,41722,41723,41724,41725,41726,41727,41728,41729,41730,41731,41732,41733,41734,41735,41736,41737,41738,41739,41740,41741,41742,41743,41744,41745,41746,41747,41748,41749,41750,41751,41752,41753,41754,41755,41756,41757,41758,41759,41760,41761,41762,41763,41764,41765,41766,41767,41768,41769,41770,41771,41772,41773,41774,41775,41776,41777,41778,41779,41780,41781,41782,41783,41784,41785,41786,41787,41788,41789,41790,41791,41792,41793,41794,41795,41796,41797,41798,41799,41800,41801,41802,41803,41804,41805,41806,41807,41808,41809,41810,41811,41812,41813,41814,41815,41816,41817,41818,41819,41820,41821,41822,41823,41824,41825,41826,41827,41828,41829,41830,41831,41832,41833,41834,41835,41836,41837,41838,41839,41840,41841,41842,41843,41844,41845,41846,41847,41848,41849,41850,41851,41852,41853,41854,41855,41856,41857,41858,41859,41860,41861,41862,41863,41864,41865,41866,41867,41868,41869,41870,41871,41872,41873,41874,41875,41876,41877,41878,41879,41880,41881,41882,41883,41884,41885,41886,41887,41888,41889,41890,41891,41892,41893,41894,41895,41896,41897,41898,41899,41900,41901,41902,41903,41904,41905,41906,41907,41908,41909,41910,41911,41912,41913,41914,41915,41916,41917,41918,41919,41920,41921,41922,41923,41924,41925,41926,41927,41928,41929,41930,41931,41932,41933,41934,41935,41936,41937,41938,41939,41940,41941,41942,41943,41944,41945,41946,41947,41948,41949,41950,41951,41952,41953,41954,41955,41956,41957,41958,41959,41960,41961,41962,41963,41964,41965,41966,41967,41968,41969,41970,41971,41972,41973,41974,41975,41976,41977,41978,41979,41980,41981,41982,41983,41984,41985,41986,41987,41988,41989,41990,41991,41992,41993,41994,41995,41996,41997,41998,41999,42000,42001,42002,42003,42004,42005,42006,42007,42008,42009,42010,42011,42012,42013,42014,42015,42016,42017,42018,42019,42020,42021,42022,42023,42024,42025,42026,42027,42028,42029,42030,42031,42032,42033,42034,42035,42036,42037,42038,42039,42040,42041,42042,42043,42044,42045,42046,42047,42048,42049,42050,42051,42052,42053,42054,42055,42056,42057,42058,42059,42060,42061,42062,42063,42064,42065,42066,42067,42068,42069,42070,42071,42072,42073,42074,42075,42076,42077,42078,42079,42080,42081,42082,42083,42084,42085,42086,42087,42088,42089,42090,42091,42092,42093,42094,42095,42096,42097,42098,42099,42100,42101,42102,42103,42104,42105,42106,42107,42108,42109,42110,42111,42112,42113,42114,42115,42116,42117,42118,42119,42120,42121,42122,42123,42124,42192,42193,42194,42195,42196,42197,42198,42199,42200,42201,42202,42203,42204,42205,42206,42207,42208,42209,42210,42211,42212,42213,42214,42215,42216,42217,42218,42219,42220,42221,42222,42223,42224,42225,42226,42227,42228,42229,42230,42231,42232,42233,42234,42235,42236,42237,42240,42241,42242,42243,42244,42245,42246,42247,42248,42249,42250,42251,42252,42253,42254,42255,42256,42257,42258,42259,42260,42261,42262,42263,42264,42265,42266,42267,42268,42269,42270,42271,42272,42273,42274,42275,42276,42277,42278,42279,42280,42281,42282,42283,42284,42285,42286,42287,42288,42289,42290,42291,42292,42293,42294,42295,42296,42297,42298,42299,42300,42301,42302,42303,42304,42305,42306,42307,42308,42309,42310,42311,42312,42313,42314,42315,42316,42317,42318,42319,42320,42321,42322,42323,42324,42325,42326,42327,42328,42329,42330,42331,42332,42333,42334,42335,42336,42337,42338,42339,42340,42341,42342,42343,42344,42345,42346,42347,42348,42349,42350,42351,42352,42353,42354,42355,42356,42357,42358,42359,42360,42361,42362,42363,42364,42365,42366,42367,42368,42369,42370,42371,42372,42373,42374,42375,42376,42377,42378,42379,42380,42381,42382,42383,42384,42385,42386,42387,42388,42389,42390,42391,42392,42393,42394,42395,42396,42397,42398,42399,42400,42401,42402,42403,42404,42405,42406,42407,42408,42409,42410,42411,42412,42413,42414,42415,42416,42417,42418,42419,42420,42421,42422,42423,42424,42425,42426,42427,42428,42429,42430,42431,42432,42433,42434,42435,42436,42437,42438,42439,42440,42441,42442,42443,42444,42445,42446,42447,42448,42449,42450,42451,42452,42453,42454,42455,42456,42457,42458,42459,42460,42461,42462,42463,42464,42465,42466,42467,42468,42469,42470,42471,42472,42473,42474,42475,42476,42477,42478,42479,42480,42481,42482,42483,42484,42485,42486,42487,42488,42489,42490,42491,42492,42493,42494,42495,42496,42497,42498,42499,42500,42501,42502,42503,42504,42505,42506,42507,42508,42512,42513,42514,42515,42516,42517,42518,42519,42520,42521,42522,42523,42524,42525,42526,42527,42538,42539,42560,42561,42562,42563,42564,42565,42566,42567,42568,42569,42570,42571,42572,42573,42574,42575,42576,42577,42578,42579,42580,42581,42582,42583,42584,42585,42586,42587,42588,42589,42590,42591,42592,42593,42594,42595,42596,42597,42598,42599,42600,42601,42602,42603,42604,42605,42606,42623,42624,42625,42626,42627,42628,42629,42630,42631,42632,42633,42634,42635,42636,42637,42638,42639,42640,42641,42642,42643,42644,42645,42646,42647,42648,42649,42650,42651,42652,42653,42656,42657,42658,42659,42660,42661,42662,42663,42664,42665,42666,42667,42668,42669,42670,42671,42672,42673,42674,42675,42676,42677,42678,42679,42680,42681,42682,42683,42684,42685,42686,42687,42688,42689,42690,42691,42692,42693,42694,42695,42696,42697,42698,42699,42700,42701,42702,42703,42704,42705,42706,42707,42708,42709,42710,42711,42712,42713,42714,42715,42716,42717,42718,42719,42720,42721,42722,42723,42724,42725,42726,42727,42728,42729,42730,42731,42732,42733,42734,42735,42775,42776,42777,42778,42779,42780,42781,42782,42783,42786,42787,42788,42789,42790,42791,42792,42793,42794,42795,42796,42797,42798,42799,42800,42801,42802,42803,42804,42805,42806,42807,42808,42809,42810,42811,42812,42813,42814,42815,42816,42817,42818,42819,42820,42821,42822,42823,42824,42825,42826,42827,42828,42829,42830,42831,42832,42833,42834,42835,42836,42837,42838,42839,42840,42841,42842,42843,42844,42845,42846,42847,42848,42849,42850,42851,42852,42853,42854,42855,42856,42857,42858,42859,42860,42861,42862,42863,42864,42865,42866,42867,42868,42869,42870,42871,42872,42873,42874,42875,42876,42877,42878,42879,42880,42881,42882,42883,42884,42885,42886,42887,42888,42891,42892,42893,42894,42895,42896,42897,42898,42899,42900,42901,42902,42903,42904,42905,42906,42907,42908,42909,42910,42911,42912,42913,42914,42915,42916,42917,42918,42919,42920,42921,42922,42923,42924,42925,42926,42927,42928,42929,42930,42931,42932,42933,42934,42935,42936,42937,42999,43000,43001,43002,43003,43004,43005,43006,43007,43008,43009,43011,43012,43013,43015,43016,43017,43018,43020,43021,43022,43023,43024,43025,43026,43027,43028,43029,43030,43031,43032,43033,43034,43035,43036,43037,43038,43039,43040,43041,43042,43072,43073,43074,43075,43076,43077,43078,43079,43080,43081,43082,43083,43084,43085,43086,43087,43088,43089,43090,43091,43092,43093,43094,43095,43096,43097,43098,43099,43100,43101,43102,43103,43104,43105,43106,43107,43108,43109,43110,43111,43112,43113,43114,43115,43116,43117,43118,43119,43120,43121,43122,43123,43138,43139,43140,43141,43142,43143,43144,43145,43146,43147,43148,43149,43150,43151,43152,43153,43154,43155,43156,43157,43158,43159,43160,43161,43162,43163,43164,43165,43166,43167,43168,43169,43170,43171,43172,43173,43174,43175,43176,43177,43178,43179,43180,43181,43182,43183,43184,43185,43186,43187,43250,43251,43252,43253,43254,43255,43259,43261,43262,43274,43275,43276,43277,43278,43279,43280,43281,43282,43283,43284,43285,43286,43287,43288,43289,43290,43291,43292,43293,43294,43295,43296,43297,43298,43299,43300,43301,43312,43313,43314,43315,43316,43317,43318,43319,43320,43321,43322,43323,43324,43325,43326,43327,43328,43329,43330,43331,43332,43333,43334,43360,43361,43362,43363,43364,43365,43366,43367,43368,43369,43370,43371,43372,43373,43374,43375,43376,43377,43378,43379,43380,43381,43382,43383,43384,43385,43386,43387,43388,43396,43397,43398,43399,43400,43401,43402,43403,43404,43405,43406,43407,43408,43409,43410,43411,43412,43413,43414,43415,43416,43417,43418,43419,43420,43421,43422,43423,43424,43425,43426,43427,43428,43429,43430,43431,43432,43433,43434,43435,43436,43437,43438,43439,43440,43441,43442,43471,43488,43489,43490,43491,43492,43494,43495,43496,43497,43498,43499,43500,43501,43502,43503,43514,43515,43516,43517,43518,43520,43521,43522,43523,43524,43525,43526,43527,43528,43529,43530,43531,43532,43533,43534,43535,43536,43537,43538,43539,43540,43541,43542,43543,43544,43545,43546,43547,43548,43549,43550,43551,43552,43553,43554,43555,43556,43557,43558,43559,43560,43584,43585,43586,43588,43589,43590,43591,43592,43593,43594,43595,43616,43617,43618,43619,43620,43621,43622,43623,43624,43625,43626,43627,43628,43629,43630,43631,43632,43633,43634,43635,43636,43637,43638,43642,43646,43647,43648,43649,43650,43651,43652,43653,43654,43655,43656,43657,43658,43659,43660,43661,43662,43663,43664,43665,43666,43667,43668,43669,43670,43671,43672,43673,43674,43675,43676,43677,43678,43679,43680,43681,43682,43683,43684,43685,43686,43687,43688,43689,43690,43691,43692,43693,43694,43695,43697,43701,43702,43705,43706,43707,43708,43709,43712,43714,43739,43740,43741,43744,43745,43746,43747,43748,43749,43750,43751,43752,43753,43754,43762,43763,43764,43777,43778,43779,43780,43781,43782,43785,43786,43787,43788,43789,43790,43793,43794,43795,43796,43797,43798,43808,43809,43810,43811,43812,43813,43814,43816,43817,43818,43819,43820,43821,43822,43824,43825,43826,43827,43828,43829,43830,43831,43832,43833,43834,43835,43836,43837,43838,43839,43840,43841,43842,43843,43844,43845,43846,43847,43848,43849,43850,43851,43852,43853,43854,43855,43856,43857,43858,43859,43860,43861,43862,43863,43864,43865,43866,43868,43869,43870,43871,43872,43873,43874,43875,43876,43877,43888,43889,43890,43891,43892,43893,43894,43895,43896,43897,43898,43899,43900,43901,43902,43903,43904,43905,43906,43907,43908,43909,43910,43911,43912,43913,43914,43915,43916,43917,43918,43919,43920,43921,43922,43923,43924,43925,43926,43927,43928,43929,43930,43931,43932,43933,43934,43935,43936,43937,43938,43939,43940,43941,43942,43943,43944,43945,43946,43947,43948,43949,43950,43951,43952,43953,43954,43955,43956,43957,43958,43959,43960,43961,43962,43963,43964,43965,43966,43967,43968,43969,43970,43971,43972,43973,43974,43975,43976,43977,43978,43979,43980,43981,43982,43983,43984,43985,43986,43987,43988,43989,43990,43991,43992,43993,43994,43995,43996,43997,43998,43999,44000,44001,44002,44032,44033,44034,44035,44036,44037,44038,44039,44040,44041,44042,44043,44044,44045,44046,44047,44048,44049,44050,44051,44052,44053,44054,44055,44056,44057,44058,44059,44060,44061,44062,44063,44064,44065,44066,44067,44068,44069,44070,44071,44072,44073,44074,44075,44076,44077,44078,44079,44080,44081,44082,44083,44084,44085,44086,44087,44088,44089,44090,44091,44092,44093,44094,44095,44096,44097,44098,44099,44100,44101,44102,44103,44104,44105,44106,44107,44108,44109,44110,44111,44112,44113,44114,44115,44116,44117,44118,44119,44120,44121,44122,44123,44124,44125,44126,44127,44128,44129,44130,44131,44132,44133,44134,44135,44136,44137,44138,44139,44140,44141,44142,44143,44144,44145,44146,44147,44148,44149,44150,44151,44152,44153,44154,44155,44156,44157,44158,44159,44160,44161,44162,44163,44164,44165,44166,44167,44168,44169,44170,44171,44172,44173,44174,44175,44176,44177,44178,44179,44180,44181,44182,44183,44184,44185,44186,44187,44188,44189,44190,44191,44192,44193,44194,44195,44196,44197,44198,44199,44200,44201,44202,44203,44204,44205,44206,44207,44208,44209,44210,44211,44212,44213,44214,44215,44216,44217,44218,44219,44220,44221,44222,44223,44224,44225,44226,44227,44228,44229,44230,44231,44232,44233,44234,44235,44236,44237,44238,44239,44240,44241,44242,44243,44244,44245,44246,44247,44248,44249,44250,44251,44252,44253,44254,44255,44256,44257,44258,44259,44260,44261,44262,44263,44264,44265,44266,44267,44268,44269,44270,44271,44272,44273,44274,44275,44276,44277,44278,44279,44280,44281,44282,44283,44284,44285,44286,44287,44288,44289,44290,44291,44292,44293,44294,44295,44296,44297,44298,44299,44300,44301,44302,44303,44304,44305,44306,44307,44308,44309,44310,44311,44312,44313,44314,44315,44316,44317,44318,44319,44320,44321,44322,44323,44324,44325,44326,44327,44328,44329,44330,44331,44332,44333,44334,44335,44336,44337,44338,44339,44340,44341,44342,44343,44344,44345,44346,44347,44348,44349,44350,44351,44352,44353,44354,44355,44356,44357,44358,44359,44360,44361,44362,44363,44364,44365,44366,44367,44368,44369,44370,44371,44372,44373,44374,44375,44376,44377,44378,44379,44380,44381,44382,44383,44384,44385,44386,44387,44388,44389,44390,44391,44392,44393,44394,44395,44396,44397,44398,44399,44400,44401,44402,44403,44404,44405,44406,44407,44408,44409,44410,44411,44412,44413,44414,44415,44416,44417,44418,44419,44420,44421,44422,44423,44424,44425,44426,44427,44428,44429,44430,44431,44432,44433,44434,44435,44436,44437,44438,44439,44440,44441,44442,44443,44444,44445,44446,44447,44448,44449,44450,44451,44452,44453,44454,44455,44456,44457,44458,44459,44460,44461,44462,44463,44464,44465,44466,44467,44468,44469,44470,44471,44472,44473,44474,44475,44476,44477,44478,44479,44480,44481,44482,44483,44484,44485,44486,44487,44488,44489,44490,44491,44492,44493,44494,44495,44496,44497,44498,44499,44500,44501,44502,44503,44504,44505,44506,44507,44508,44509,44510,44511,44512,44513,44514,44515,44516,44517,44518,44519,44520,44521,44522,44523,44524,44525,44526,44527,44528,44529,44530,44531,44532,44533,44534,44535,44536,44537,44538,44539,44540,44541,44542,44543,44544,44545,44546,44547,44548,44549,44550,44551,44552,44553,44554,44555,44556,44557,44558,44559,44560,44561,44562,44563,44564,44565,44566,44567,44568,44569,44570,44571,44572,44573,44574,44575,44576,44577,44578,44579,44580,44581,44582,44583,44584,44585,44586,44587,44588,44589,44590,44591,44592,44593,44594,44595,44596,44597,44598,44599,44600,44601,44602,44603,44604,44605,44606,44607,44608,44609,44610,44611,44612,44613,44614,44615,44616,44617,44618,44619,44620,44621,44622,44623,44624,44625,44626,44627,44628,44629,44630,44631,44632,44633,44634,44635,44636,44637,44638,44639,44640,44641,44642,44643,44644,44645,44646,44647,44648,44649,44650,44651,44652,44653,44654,44655,44656,44657,44658,44659,44660,44661,44662,44663,44664,44665,44666,44667,44668,44669,44670,44671,44672,44673,44674,44675,44676,44677,44678,44679,44680,44681,44682,44683,44684,44685,44686,44687,44688,44689,44690,44691,44692,44693,44694,44695,44696,44697,44698,44699,44700,44701,44702,44703,44704,44705,44706,44707,44708,44709,44710,44711,44712,44713,44714,44715,44716,44717,44718,44719,44720,44721,44722,44723,44724,44725,44726,44727,44728,44729,44730,44731,44732,44733,44734,44735,44736,44737,44738,44739,44740,44741,44742,44743,44744,44745,44746,44747,44748,44749,44750,44751,44752,44753,44754,44755,44756,44757,44758,44759,44760,44761,44762,44763,44764,44765,44766,44767,44768,44769,44770,44771,44772,44773,44774,44775,44776,44777,44778,44779,44780,44781,44782,44783,44784,44785,44786,44787,44788,44789,44790,44791,44792,44793,44794,44795,44796,44797,44798,44799,44800,44801,44802,44803,44804,44805,44806,44807,44808,44809,44810,44811,44812,44813,44814,44815,44816,44817,44818,44819,44820,44821,44822,44823,44824,44825,44826,44827,44828,44829,44830,44831,44832,44833,44834,44835,44836,44837,44838,44839,44840,44841,44842,44843,44844,44845,44846,44847,44848,44849,44850,44851,44852,44853,44854,44855,44856,44857,44858,44859,44860,44861,44862,44863,44864,44865,44866,44867,44868,44869,44870,44871,44872,44873,44874,44875,44876,44877,44878,44879,44880,44881,44882,44883,44884,44885,44886,44887,44888,44889,44890,44891,44892,44893,44894,44895,44896,44897,44898,44899,44900,44901,44902,44903,44904,44905,44906,44907,44908,44909,44910,44911,44912,44913,44914,44915,44916,44917,44918,44919,44920,44921,44922,44923,44924,44925,44926,44927,44928,44929,44930,44931,44932,44933,44934,44935,44936,44937,44938,44939,44940,44941,44942,44943,44944,44945,44946,44947,44948,44949,44950,44951,44952,44953,44954,44955,44956,44957,44958,44959,44960,44961,44962,44963,44964,44965,44966,44967,44968,44969,44970,44971,44972,44973,44974,44975,44976,44977,44978,44979,44980,44981,44982,44983,44984,44985,44986,44987,44988,44989,44990,44991,44992,44993,44994,44995,44996,44997,44998,44999,45000,45001,45002,45003,45004,45005,45006,45007,45008,45009,45010,45011,45012,45013,45014,45015,45016,45017,45018,45019,45020,45021,45022,45023,45024,45025,45026,45027,45028,45029,45030,45031,45032,45033,45034,45035,45036,45037,45038,45039,45040,45041,45042,45043,45044,45045,45046,45047,45048,45049,45050,45051,45052,45053,45054,45055,45056,45057,45058,45059,45060,45061,45062,45063,45064,45065,45066,45067,45068,45069,45070,45071,45072,45073,45074,45075,45076,45077,45078,45079,45080,45081,45082,45083,45084,45085,45086,45087,45088,45089,45090,45091,45092,45093,45094,45095,45096,45097,45098,45099,45100,45101,45102,45103,45104,45105,45106,45107,45108,45109,45110,45111,45112,45113,45114,45115,45116,45117,45118,45119,45120,45121,45122,45123,45124,45125,45126,45127,45128,45129,45130,45131,45132,45133,45134,45135,45136,45137,45138,45139,45140,45141,45142,45143,45144,45145,45146,45147,45148,45149,45150,45151,45152,45153,45154,45155,45156,45157,45158,45159,45160,45161,45162,45163,45164,45165,45166,45167,45168,45169,45170,45171,45172,45173,45174,45175,45176,45177,45178,45179,45180,45181,45182,45183,45184,45185,45186,45187,45188,45189,45190,45191,45192,45193,45194,45195,45196,45197,45198,45199,45200,45201,45202,45203,45204,45205,45206,45207,45208,45209,45210,45211,45212,45213,45214,45215,45216,45217,45218,45219,45220,45221,45222,45223,45224,45225,45226,45227,45228,45229,45230,45231,45232,45233,45234,45235,45236,45237,45238,45239,45240,45241,45242,45243,45244,45245,45246,45247,45248,45249,45250,45251,45252,45253,45254,45255,45256,45257,45258,45259,45260,45261,45262,45263,45264,45265,45266,45267,45268,45269,45270,45271,45272,45273,45274,45275,45276,45277,45278,45279,45280,45281,45282,45283,45284,45285,45286,45287,45288,45289,45290,45291,45292,45293,45294,45295,45296,45297,45298,45299,45300,45301,45302,45303,45304,45305,45306,45307,45308,45309,45310,45311,45312,45313,45314,45315,45316,45317,45318,45319,45320,45321,45322,45323,45324,45325,45326,45327,45328,45329,45330,45331,45332,45333,45334,45335,45336,45337,45338,45339,45340,45341,45342,45343,45344,45345,45346,45347,45348,45349,45350,45351,45352,45353,45354,45355,45356,45357,45358,45359,45360,45361,45362,45363,45364,45365,45366,45367,45368,45369,45370,45371,45372,45373,45374,45375,45376,45377,45378,45379,45380,45381,45382,45383,45384,45385,45386,45387,45388,45389,45390,45391,45392,45393,45394,45395,45396,45397,45398,45399,45400,45401,45402,45403,45404,45405,45406,45407,45408,45409,45410,45411,45412,45413,45414,45415,45416,45417,45418,45419,45420,45421,45422,45423,45424,45425,45426,45427,45428,45429,45430,45431,45432,45433,45434,45435,45436,45437,45438,45439,45440,45441,45442,45443,45444,45445,45446,45447,45448,45449,45450,45451,45452,45453,45454,45455,45456,45457,45458,45459,45460,45461,45462,45463,45464,45465,45466,45467,45468,45469,45470,45471,45472,45473,45474,45475,45476,45477,45478,45479,45480,45481,45482,45483,45484,45485,45486,45487,45488,45489,45490,45491,45492,45493,45494,45495,45496,45497,45498,45499,45500,45501,45502,45503,45504,45505,45506,45507,45508,45509,45510,45511,45512,45513,45514,45515,45516,45517,45518,45519,45520,45521,45522,45523,45524,45525,45526,45527,45528,45529,45530,45531,45532,45533,45534,45535,45536,45537,45538,45539,45540,45541,45542,45543,45544,45545,45546,45547,45548,45549,45550,45551,45552,45553,45554,45555,45556,45557,45558,45559,45560,45561,45562,45563,45564,45565,45566,45567,45568,45569,45570,45571,45572,45573,45574,45575,45576,45577,45578,45579,45580,45581,45582,45583,45584,45585,45586,45587,45588,45589,45590,45591,45592,45593,45594,45595,45596,45597,45598,45599,45600,45601,45602,45603,45604,45605,45606,45607,45608,45609,45610,45611,45612,45613,45614,45615,45616,45617,45618,45619,45620,45621,45622,45623,45624,45625,45626,45627,45628,45629,45630,45631,45632,45633,45634,45635,45636,45637,45638,45639,45640,45641,45642,45643,45644,45645,45646,45647,45648,45649,45650,45651,45652,45653,45654,45655,45656,45657,45658,45659,45660,45661,45662,45663,45664,45665,45666,45667,45668,45669,45670,45671,45672,45673,45674,45675,45676,45677,45678,45679,45680,45681,45682,45683,45684,45685,45686,45687,45688,45689,45690,45691,45692,45693,45694,45695,45696,45697,45698,45699,45700,45701,45702,45703,45704,45705,45706,45707,45708,45709,45710,45711,45712,45713,45714,45715,45716,45717,45718,45719,45720,45721,45722,45723,45724,45725,45726,45727,45728,45729,45730,45731,45732,45733,45734,45735,45736,45737,45738,45739,45740,45741,45742,45743,45744,45745,45746,45747,45748,45749,45750,45751,45752,45753,45754,45755,45756,45757,45758,45759,45760,45761,45762,45763,45764,45765,45766,45767,45768,45769,45770,45771,45772,45773,45774,45775,45776,45777,45778,45779,45780,45781,45782,45783,45784,45785,45786,45787,45788,45789,45790,45791,45792,45793,45794,45795,45796,45797,45798,45799,45800,45801,45802,45803,45804,45805,45806,45807,45808,45809,45810,45811,45812,45813,45814,45815,45816,45817,45818,45819,45820,45821,45822,45823,45824,45825,45826,45827,45828,45829,45830,45831,45832,45833,45834,45835,45836,45837,45838,45839,45840,45841,45842,45843,45844,45845,45846,45847,45848,45849,45850,45851,45852,45853,45854,45855,45856,45857,45858,45859,45860,45861,45862,45863,45864,45865,45866,45867,45868,45869,45870,45871,45872,45873,45874,45875,45876,45877,45878,45879,45880,45881,45882,45883,45884,45885,45886,45887,45888,45889,45890,45891,45892,45893,45894,45895,45896,45897,45898,45899,45900,45901,45902,45903,45904,45905,45906,45907,45908,45909,45910,45911,45912,45913,45914,45915,45916,45917,45918,45919,45920,45921,45922,45923,45924,45925,45926,45927,45928,45929,45930,45931,45932,45933,45934,45935,45936,45937,45938,45939,45940,45941,45942,45943,45944,45945,45946,45947,45948,45949,45950,45951,45952,45953,45954,45955,45956,45957,45958,45959,45960,45961,45962,45963,45964,45965,45966,45967,45968,45969,45970,45971,45972,45973,45974,45975,45976,45977,45978,45979,45980,45981,45982,45983,45984,45985,45986,45987,45988,45989,45990,45991,45992,45993,45994,45995,45996,45997,45998,45999,46000,46001,46002,46003,46004,46005,46006,46007,46008,46009,46010,46011,46012,46013,46014,46015,46016,46017,46018,46019,46020,46021,46022,46023,46024,46025,46026,46027,46028,46029,46030,46031,46032,46033,46034,46035,46036,46037,46038,46039,46040,46041,46042,46043,46044,46045,46046,46047,46048,46049,46050,46051,46052,46053,46054,46055,46056,46057,46058,46059,46060,46061,46062,46063,46064,46065,46066,46067,46068,46069,46070,46071,46072,46073,46074,46075,46076,46077,46078,46079,46080,46081,46082,46083,46084,46085,46086,46087,46088,46089,46090,46091,46092,46093,46094,46095,46096,46097,46098,46099,46100,46101,46102,46103,46104,46105,46106,46107,46108,46109,46110,46111,46112,46113,46114,46115,46116,46117,46118,46119,46120,46121,46122,46123,46124,46125,46126,46127,46128,46129,46130,46131,46132,46133,46134,46135,46136,46137,46138,46139,46140,46141,46142,46143,46144,46145,46146,46147,46148,46149,46150,46151,46152,46153,46154,46155,46156,46157,46158,46159,46160,46161,46162,46163,46164,46165,46166,46167,46168,46169,46170,46171,46172,46173,46174,46175,46176,46177,46178,46179,46180,46181,46182,46183,46184,46185,46186,46187,46188,46189,46190,46191,46192,46193,46194,46195,46196,46197,46198,46199,46200,46201,46202,46203,46204,46205,46206,46207,46208,46209,46210,46211,46212,46213,46214,46215,46216,46217,46218,46219,46220,46221,46222,46223,46224,46225,46226,46227,46228,46229,46230,46231,46232,46233,46234,46235,46236,46237,46238,46239,46240,46241,46242,46243,46244,46245,46246,46247,46248,46249,46250,46251,46252,46253,46254,46255,46256,46257,46258,46259,46260,46261,46262,46263,46264,46265,46266,46267,46268,46269,46270,46271,46272,46273,46274,46275,46276,46277,46278,46279,46280,46281,46282,46283,46284,46285,46286,46287,46288,46289,46290,46291,46292,46293,46294,46295,46296,46297,46298,46299,46300,46301,46302,46303,46304,46305,46306,46307,46308,46309,46310,46311,46312,46313,46314,46315,46316,46317,46318,46319,46320,46321,46322,46323,46324,46325,46326,46327,46328,46329,46330,46331,46332,46333,46334,46335,46336,46337,46338,46339,46340,46341,46342,46343,46344,46345,46346,46347,46348,46349,46350,46351,46352,46353,46354,46355,46356,46357,46358,46359,46360,46361,46362,46363,46364,46365,46366,46367,46368,46369,46370,46371,46372,46373,46374,46375,46376,46377,46378,46379,46380,46381,46382,46383,46384,46385,46386,46387,46388,46389,46390,46391,46392,46393,46394,46395,46396,46397,46398,46399,46400,46401,46402,46403,46404,46405,46406,46407,46408,46409,46410,46411,46412,46413,46414,46415,46416,46417,46418,46419,46420,46421,46422,46423,46424,46425,46426,46427,46428,46429,46430,46431,46432,46433,46434,46435,46436,46437,46438,46439,46440,46441,46442,46443,46444,46445,46446,46447,46448,46449,46450,46451,46452,46453,46454,46455,46456,46457,46458,46459,46460,46461,46462,46463,46464,46465,46466,46467,46468,46469,46470,46471,46472,46473,46474,46475,46476,46477,46478,46479,46480,46481,46482,46483,46484,46485,46486,46487,46488,46489,46490,46491,46492,46493,46494,46495,46496,46497,46498,46499,46500,46501,46502,46503,46504,46505,46506,46507,46508,46509,46510,46511,46512,46513,46514,46515,46516,46517,46518,46519,46520,46521,46522,46523,46524,46525,46526,46527,46528,46529,46530,46531,46532,46533,46534,46535,46536,46537,46538,46539,46540,46541,46542,46543,46544,46545,46546,46547,46548,46549,46550,46551,46552,46553,46554,46555,46556,46557,46558,46559,46560,46561,46562,46563,46564,46565,46566,46567,46568,46569,46570,46571,46572,46573,46574,46575,46576,46577,46578,46579,46580,46581,46582,46583,46584,46585,46586,46587,46588,46589,46590,46591,46592,46593,46594,46595,46596,46597,46598,46599,46600,46601,46602,46603,46604,46605,46606,46607,46608,46609,46610,46611,46612,46613,46614,46615,46616,46617,46618,46619,46620,46621,46622,46623,46624,46625,46626,46627,46628,46629,46630,46631,46632,46633,46634,46635,46636,46637,46638,46639,46640,46641,46642,46643,46644,46645,46646,46647,46648,46649,46650,46651,46652,46653,46654,46655,46656,46657,46658,46659,46660,46661,46662,46663,46664,46665,46666,46667,46668,46669,46670,46671,46672,46673,46674,46675,46676,46677,46678,46679,46680,46681,46682,46683,46684,46685,46686,46687,46688,46689,46690,46691,46692,46693,46694,46695,46696,46697,46698,46699,46700,46701,46702,46703,46704,46705,46706,46707,46708,46709,46710,46711,46712,46713,46714,46715,46716,46717,46718,46719,46720,46721,46722,46723,46724,46725,46726,46727,46728,46729,46730,46731,46732,46733,46734,46735,46736,46737,46738,46739,46740,46741,46742,46743,46744,46745,46746,46747,46748,46749,46750,46751,46752,46753,46754,46755,46756,46757,46758,46759,46760,46761,46762,46763,46764,46765,46766,46767,46768,46769,46770,46771,46772,46773,46774,46775,46776,46777,46778,46779,46780,46781,46782,46783,46784,46785,46786,46787,46788,46789,46790,46791,46792,46793,46794,46795,46796,46797,46798,46799,46800,46801,46802,46803,46804,46805,46806,46807,46808,46809,46810,46811,46812,46813,46814,46815,46816,46817,46818,46819,46820,46821,46822,46823,46824,46825,46826,46827,46828,46829,46830,46831,46832,46833,46834,46835,46836,46837,46838,46839,46840,46841,46842,46843,46844,46845,46846,46847,46848,46849,46850,46851,46852,46853,46854,46855,46856,46857,46858,46859,46860,46861,46862,46863,46864,46865,46866,46867,46868,46869,46870,46871,46872,46873,46874,46875,46876,46877,46878,46879,46880,46881,46882,46883,46884,46885,46886,46887,46888,46889,46890,46891,46892,46893,46894,46895,46896,46897,46898,46899,46900,46901,46902,46903,46904,46905,46906,46907,46908,46909,46910,46911,46912,46913,46914,46915,46916,46917,46918,46919,46920,46921,46922,46923,46924,46925,46926,46927,46928,46929,46930,46931,46932,46933,46934,46935,46936,46937,46938,46939,46940,46941,46942,46943,46944,46945,46946,46947,46948,46949,46950,46951,46952,46953,46954,46955,46956,46957,46958,46959,46960,46961,46962,46963,46964,46965,46966,46967,46968,46969,46970,46971,46972,46973,46974,46975,46976,46977,46978,46979,46980,46981,46982,46983,46984,46985,46986,46987,46988,46989,46990,46991,46992,46993,46994,46995,46996,46997,46998,46999,47000,47001,47002,47003,47004,47005,47006,47007,47008,47009,47010,47011,47012,47013,47014,47015,47016,47017,47018,47019,47020,47021,47022,47023,47024,47025,47026,47027,47028,47029,47030,47031,47032,47033,47034,47035,47036,47037,47038,47039,47040,47041,47042,47043,47044,47045,47046,47047,47048,47049,47050,47051,47052,47053,47054,47055,47056,47057,47058,47059,47060,47061,47062,47063,47064,47065,47066,47067,47068,47069,47070,47071,47072,47073,47074,47075,47076,47077,47078,47079,47080,47081,47082,47083,47084,47085,47086,47087,47088,47089,47090,47091,47092,47093,47094,47095,47096,47097,47098,47099,47100,47101,47102,47103,47104,47105,47106,47107,47108,47109,47110,47111,47112,47113,47114,47115,47116,47117,47118,47119,47120,47121,47122,47123,47124,47125,47126,47127,47128,47129,47130,47131,47132,47133,47134,47135,47136,47137,47138,47139,47140,47141,47142,47143,47144,47145,47146,47147,47148,47149,47150,47151,47152,47153,47154,47155,47156,47157,47158,47159,47160,47161,47162,47163,47164,47165,47166,47167,47168,47169,47170,47171,47172,47173,47174,47175,47176,47177,47178,47179,47180,47181,47182,47183,47184,47185,47186,47187,47188,47189,47190,47191,47192,47193,47194,47195,47196,47197,47198,47199,47200,47201,47202,47203,47204,47205,47206,47207,47208,47209,47210,47211,47212,47213,47214,47215,47216,47217,47218,47219,47220,47221,47222,47223,47224,47225,47226,47227,47228,47229,47230,47231,47232,47233,47234,47235,47236,47237,47238,47239,47240,47241,47242,47243,47244,47245,47246,47247,47248,47249,47250,47251,47252,47253,47254,47255,47256,47257,47258,47259,47260,47261,47262,47263,47264,47265,47266,47267,47268,47269,47270,47271,47272,47273,47274,47275,47276,47277,47278,47279,47280,47281,47282,47283,47284,47285,47286,47287,47288,47289,47290,47291,47292,47293,47294,47295,47296,47297,47298,47299,47300,47301,47302,47303,47304,47305,47306,47307,47308,47309,47310,47311,47312,47313,47314,47315,47316,47317,47318,47319,47320,47321,47322,47323,47324,47325,47326,47327,47328,47329,47330,47331,47332,47333,47334,47335,47336,47337,47338,47339,47340,47341,47342,47343,47344,47345,47346,47347,47348,47349,47350,47351,47352,47353,47354,47355,47356,47357,47358,47359,47360,47361,47362,47363,47364,47365,47366,47367,47368,47369,47370,47371,47372,47373,47374,47375,47376,47377,47378,47379,47380,47381,47382,47383,47384,47385,47386,47387,47388,47389,47390,47391,47392,47393,47394,47395,47396,47397,47398,47399,47400,47401,47402,47403,47404,47405,47406,47407,47408,47409,47410,47411,47412,47413,47414,47415,47416,47417,47418,47419,47420,47421,47422,47423,47424,47425,47426,47427,47428,47429,47430,47431,47432,47433,47434,47435,47436,47437,47438,47439,47440,47441,47442,47443,47444,47445,47446,47447,47448,47449,47450,47451,47452,47453,47454,47455,47456,47457,47458,47459,47460,47461,47462,47463,47464,47465,47466,47467,47468,47469,47470,47471,47472,47473,47474,47475,47476,47477,47478,47479,47480,47481,47482,47483,47484,47485,47486,47487,47488,47489,47490,47491,47492,47493,47494,47495,47496,47497,47498,47499,47500,47501,47502,47503,47504,47505,47506,47507,47508,47509,47510,47511,47512,47513,47514,47515,47516,47517,47518,47519,47520,47521,47522,47523,47524,47525,47526,47527,47528,47529,47530,47531,47532,47533,47534,47535,47536,47537,47538,47539,47540,47541,47542,47543,47544,47545,47546,47547,47548,47549,47550,47551,47552,47553,47554,47555,47556,47557,47558,47559,47560,47561,47562,47563,47564,47565,47566,47567,47568,47569,47570,47571,47572,47573,47574,47575,47576,47577,47578,47579,47580,47581,47582,47583,47584,47585,47586,47587,47588,47589,47590,47591,47592,47593,47594,47595,47596,47597,47598,47599,47600,47601,47602,47603,47604,47605,47606,47607,47608,47609,47610,47611,47612,47613,47614,47615,47616,47617,47618,47619,47620,47621,47622,47623,47624,47625,47626,47627,47628,47629,47630,47631,47632,47633,47634,47635,47636,47637,47638,47639,47640,47641,47642,47643,47644,47645,47646,47647,47648,47649,47650,47651,47652,47653,47654,47655,47656,47657,47658,47659,47660,47661,47662,47663,47664,47665,47666,47667,47668,47669,47670,47671,47672,47673,47674,47675,47676,47677,47678,47679,47680,47681,47682,47683,47684,47685,47686,47687,47688,47689,47690,47691,47692,47693,47694,47695,47696,47697,47698,47699,47700,47701,47702,47703,47704,47705,47706,47707,47708,47709,47710,47711,47712,47713,47714,47715,47716,47717,47718,47719,47720,47721,47722,47723,47724,47725,47726,47727,47728,47729,47730,47731,47732,47733,47734,47735,47736,47737,47738,47739,47740,47741,47742,47743,47744,47745,47746,47747,47748,47749,47750,47751,47752,47753,47754,47755,47756,47757,47758,47759,47760,47761,47762,47763,47764,47765,47766,47767,47768,47769,47770,47771,47772,47773,47774,47775,47776,47777,47778,47779,47780,47781,47782,47783,47784,47785,47786,47787,47788,47789,47790,47791,47792,47793,47794,47795,47796,47797,47798,47799,47800,47801,47802,47803,47804,47805,47806,47807,47808,47809,47810,47811,47812,47813,47814,47815,47816,47817,47818,47819,47820,47821,47822,47823,47824,47825,47826,47827,47828,47829,47830,47831,47832,47833,47834,47835,47836,47837,47838,47839,47840,47841,47842,47843,47844,47845,47846,47847,47848,47849,47850,47851,47852,47853,47854,47855,47856,47857,47858,47859,47860,47861,47862,47863,47864,47865,47866,47867,47868,47869,47870,47871,47872,47873,47874,47875,47876,47877,47878,47879,47880,47881,47882,47883,47884,47885,47886,47887,47888,47889,47890,47891,47892,47893,47894,47895,47896,47897,47898,47899,47900,47901,47902,47903,47904,47905,47906,47907,47908,47909,47910,47911,47912,47913,47914,47915,47916,47917,47918,47919,47920,47921,47922,47923,47924,47925,47926,47927,47928,47929,47930,47931,47932,47933,47934,47935,47936,47937,47938,47939,47940,47941,47942,47943,47944,47945,47946,47947,47948,47949,47950,47951,47952,47953,47954,47955,47956,47957,47958,47959,47960,47961,47962,47963,47964,47965,47966,47967,47968,47969,47970,47971,47972,47973,47974,47975,47976,47977,47978,47979,47980,47981,47982,47983,47984,47985,47986,47987,47988,47989,47990,47991,47992,47993,47994,47995,47996,47997,47998,47999,48000,48001,48002,48003,48004,48005,48006,48007,48008,48009,48010,48011,48012,48013,48014,48015,48016,48017,48018,48019,48020,48021,48022,48023,48024,48025,48026,48027,48028,48029,48030,48031,48032,48033,48034,48035,48036,48037,48038,48039,48040,48041,48042,48043,48044,48045,48046,48047,48048,48049,48050,48051,48052,48053,48054,48055,48056,48057,48058,48059,48060,48061,48062,48063,48064,48065,48066,48067,48068,48069,48070,48071,48072,48073,48074,48075,48076,48077,48078,48079,48080,48081,48082,48083,48084,48085,48086,48087,48088,48089,48090,48091,48092,48093,48094,48095,48096,48097,48098,48099,48100,48101,48102,48103,48104,48105,48106,48107,48108,48109,48110,48111,48112,48113,48114,48115,48116,48117,48118,48119,48120,48121,48122,48123,48124,48125,48126,48127,48128,48129,48130,48131,48132,48133,48134,48135,48136,48137,48138,48139,48140,48141,48142,48143,48144,48145,48146,48147,48148,48149,48150,48151,48152,48153,48154,48155,48156,48157,48158,48159,48160,48161,48162,48163,48164,48165,48166,48167,48168,48169,48170,48171,48172,48173,48174,48175,48176,48177,48178,48179,48180,48181,48182,48183,48184,48185,48186,48187,48188,48189,48190,48191,48192,48193,48194,48195,48196,48197,48198,48199,48200,48201,48202,48203,48204,48205,48206,48207,48208,48209,48210,48211,48212,48213,48214,48215,48216,48217,48218,48219,48220,48221,48222,48223,48224,48225,48226,48227,48228,48229,48230,48231,48232,48233,48234,48235,48236,48237,48238,48239,48240,48241,48242,48243,48244,48245,48246,48247,48248,48249,48250,48251,48252,48253,48254,48255,48256,48257,48258,48259,48260,48261,48262,48263,48264,48265,48266,48267,48268,48269,48270,48271,48272,48273,48274,48275,48276,48277,48278,48279,48280,48281,48282,48283,48284,48285,48286,48287,48288,48289,48290,48291,48292,48293,48294,48295,48296,48297,48298,48299,48300,48301,48302,48303,48304,48305,48306,48307,48308,48309,48310,48311,48312,48313,48314,48315,48316,48317,48318,48319,48320,48321,48322,48323,48324,48325,48326,48327,48328,48329,48330,48331,48332,48333,48334,48335,48336,48337,48338,48339,48340,48341,48342,48343,48344,48345,48346,48347,48348,48349,48350,48351,48352,48353,48354,48355,48356,48357,48358,48359,48360,48361,48362,48363,48364,48365,48366,48367,48368,48369,48370,48371,48372,48373,48374,48375,48376,48377,48378,48379,48380,48381,48382,48383,48384,48385,48386,48387,48388,48389,48390,48391,48392,48393,48394,48395,48396,48397,48398,48399,48400,48401,48402,48403,48404,48405,48406,48407,48408,48409,48410,48411,48412,48413,48414,48415,48416,48417,48418,48419,48420,48421,48422,48423,48424,48425,48426,48427,48428,48429,48430,48431,48432,48433,48434,48435,48436,48437,48438,48439,48440,48441,48442,48443,48444,48445,48446,48447,48448,48449,48450,48451,48452,48453,48454,48455,48456,48457,48458,48459,48460,48461,48462,48463,48464,48465,48466,48467,48468,48469,48470,48471,48472,48473,48474,48475,48476,48477,48478,48479,48480,48481,48482,48483,48484,48485,48486,48487,48488,48489,48490,48491,48492,48493,48494,48495,48496,48497,48498,48499,48500,48501,48502,48503,48504,48505,48506,48507,48508,48509,48510,48511,48512,48513,48514,48515,48516,48517,48518,48519,48520,48521,48522,48523,48524,48525,48526,48527,48528,48529,48530,48531,48532,48533,48534,48535,48536,48537,48538,48539,48540,48541,48542,48543,48544,48545,48546,48547,48548,48549,48550,48551,48552,48553,48554,48555,48556,48557,48558,48559,48560,48561,48562,48563,48564,48565,48566,48567,48568,48569,48570,48571,48572,48573,48574,48575,48576,48577,48578,48579,48580,48581,48582,48583,48584,48585,48586,48587,48588,48589,48590,48591,48592,48593,48594,48595,48596,48597,48598,48599,48600,48601,48602,48603,48604,48605,48606,48607,48608,48609,48610,48611,48612,48613,48614,48615,48616,48617,48618,48619,48620,48621,48622,48623,48624,48625,48626,48627,48628,48629,48630,48631,48632,48633,48634,48635,48636,48637,48638,48639,48640,48641,48642,48643,48644,48645,48646,48647,48648,48649,48650,48651,48652,48653,48654,48655,48656,48657,48658,48659,48660,48661,48662,48663,48664,48665,48666,48667,48668,48669,48670,48671,48672,48673,48674,48675,48676,48677,48678,48679,48680,48681,48682,48683,48684,48685,48686,48687,48688,48689,48690,48691,48692,48693,48694,48695,48696,48697,48698,48699,48700,48701,48702,48703,48704,48705,48706,48707,48708,48709,48710,48711,48712,48713,48714,48715,48716,48717,48718,48719,48720,48721,48722,48723,48724,48725,48726,48727,48728,48729,48730,48731,48732,48733,48734,48735,48736,48737,48738,48739,48740,48741,48742,48743,48744,48745,48746,48747,48748,48749,48750,48751,48752,48753,48754,48755,48756,48757,48758,48759,48760,48761,48762,48763,48764,48765,48766,48767,48768,48769,48770,48771,48772,48773,48774,48775,48776,48777,48778,48779,48780,48781,48782,48783,48784,48785,48786,48787,48788,48789,48790,48791,48792,48793,48794,48795,48796,48797,48798,48799,48800,48801,48802,48803,48804,48805,48806,48807,48808,48809,48810,48811,48812,48813,48814,48815,48816,48817,48818,48819,48820,48821,48822,48823,48824,48825,48826,48827,48828,48829,48830,48831,48832,48833,48834,48835,48836,48837,48838,48839,48840,48841,48842,48843,48844,48845,48846,48847,48848,48849,48850,48851,48852,48853,48854,48855,48856,48857,48858,48859,48860,48861,48862,48863,48864,48865,48866,48867,48868,48869,48870,48871,48872,48873,48874,48875,48876,48877,48878,48879,48880,48881,48882,48883,48884,48885,48886,48887,48888,48889,48890,48891,48892,48893,48894,48895,48896,48897,48898,48899,48900,48901,48902,48903,48904,48905,48906,48907,48908,48909,48910,48911,48912,48913,48914,48915,48916,48917,48918,48919,48920,48921,48922,48923,48924,48925,48926,48927,48928,48929,48930,48931,48932,48933,48934,48935,48936,48937,48938,48939,48940,48941,48942,48943,48944,48945,48946,48947,48948,48949,48950,48951,48952,48953,48954,48955,48956,48957,48958,48959,48960,48961,48962,48963,48964,48965,48966,48967,48968,48969,48970,48971,48972,48973,48974,48975,48976,48977,48978,48979,48980,48981,48982,48983,48984,48985,48986,48987,48988,48989,48990,48991,48992,48993,48994,48995,48996,48997,48998,48999,49000,49001,49002,49003,49004,49005,49006,49007,49008,49009,49010,49011,49012,49013,49014,49015,49016,49017,49018,49019,49020,49021,49022,49023,49024,49025,49026,49027,49028,49029,49030,49031,49032,49033,49034,49035,49036,49037,49038,49039,49040,49041,49042,49043,49044,49045,49046,49047,49048,49049,49050,49051,49052,49053,49054,49055,49056,49057,49058,49059,49060,49061,49062,49063,49064,49065,49066,49067,49068,49069,49070,49071,49072,49073,49074,49075,49076,49077,49078,49079,49080,49081,49082,49083,49084,49085,49086,49087,49088,49089,49090,49091,49092,49093,49094,49095,49096,49097,49098,49099,49100,49101,49102,49103,49104,49105,49106,49107,49108,49109,49110,49111,49112,49113,49114,49115,49116,49117,49118,49119,49120,49121,49122,49123,49124,49125,49126,49127,49128,49129,49130,49131,49132,49133,49134,49135,49136,49137,49138,49139,49140,49141,49142,49143,49144,49145,49146,49147,49148,49149,49150,49151,49152,49153,49154,49155,49156,49157,49158,49159,49160,49161,49162,49163,49164,49165,49166,49167,49168,49169,49170,49171,49172,49173,49174,49175,49176,49177,49178,49179,49180,49181,49182,49183,49184,49185,49186,49187,49188,49189,49190,49191,49192,49193,49194,49195,49196,49197,49198,49199,49200,49201,49202,49203,49204,49205,49206,49207,49208,49209,49210,49211,49212,49213,49214,49215,49216,49217,49218,49219,49220,49221,49222,49223,49224,49225,49226,49227,49228,49229,49230,49231,49232,49233,49234,49235,49236,49237,49238,49239,49240,49241,49242,49243,49244,49245,49246,49247,49248,49249,49250,49251,49252,49253,49254,49255,49256,49257,49258,49259,49260,49261,49262,49263,49264,49265,49266,49267,49268,49269,49270,49271,49272,49273,49274,49275,49276,49277,49278,49279,49280,49281,49282,49283,49284,49285,49286,49287,49288,49289,49290,49291,49292,49293,49294,49295,49296,49297,49298,49299,49300,49301,49302,49303,49304,49305,49306,49307,49308,49309,49310,49311,49312,49313,49314,49315,49316,49317,49318,49319,49320,49321,49322,49323,49324,49325,49326,49327,49328,49329,49330,49331,49332,49333,49334,49335,49336,49337,49338,49339,49340,49341,49342,49343,49344,49345,49346,49347,49348,49349,49350,49351,49352,49353,49354,49355,49356,49357,49358,49359,49360,49361,49362,49363,49364,49365,49366,49367,49368,49369,49370,49371,49372,49373,49374,49375,49376,49377,49378,49379,49380,49381,49382,49383,49384,49385,49386,49387,49388,49389,49390,49391,49392,49393,49394,49395,49396,49397,49398,49399,49400,49401,49402,49403,49404,49405,49406,49407,49408,49409,49410,49411,49412,49413,49414,49415,49416,49417,49418,49419,49420,49421,49422,49423,49424,49425,49426,49427,49428,49429,49430,49431,49432,49433,49434,49435,49436,49437,49438,49439,49440,49441,49442,49443,49444,49445,49446,49447,49448,49449,49450,49451,49452,49453,49454,49455,49456,49457,49458,49459,49460,49461,49462,49463,49464,49465,49466,49467,49468,49469,49470,49471,49472,49473,49474,49475,49476,49477,49478,49479,49480,49481,49482,49483,49484,49485,49486,49487,49488,49489,49490,49491,49492,49493,49494,49495,49496,49497,49498,49499,49500,49501,49502,49503,49504,49505,49506,49507,49508,49509,49510,49511,49512,49513,49514,49515,49516,49517,49518,49519,49520,49521,49522,49523,49524,49525,49526,49527,49528,49529,49530,49531,49532,49533,49534,49535,49536,49537,49538,49539,49540,49541,49542,49543,49544,49545,49546,49547,49548,49549,49550,49551,49552,49553,49554,49555,49556,49557,49558,49559,49560,49561,49562,49563,49564,49565,49566,49567,49568,49569,49570,49571,49572,49573,49574,49575,49576,49577,49578,49579,49580,49581,49582,49583,49584,49585,49586,49587,49588,49589,49590,49591,49592,49593,49594,49595,49596,49597,49598,49599,49600,49601,49602,49603,49604,49605,49606,49607,49608,49609,49610,49611,49612,49613,49614,49615,49616,49617,49618,49619,49620,49621,49622,49623,49624,49625,49626,49627,49628,49629,49630,49631,49632,49633,49634,49635,49636,49637,49638,49639,49640,49641,49642,49643,49644,49645,49646,49647,49648,49649,49650,49651,49652,49653,49654,49655,49656,49657,49658,49659,49660,49661,49662,49663,49664,49665,49666,49667,49668,49669,49670,49671,49672,49673,49674,49675,49676,49677,49678,49679,49680,49681,49682,49683,49684,49685,49686,49687,49688,49689,49690,49691,49692,49693,49694,49695,49696,49697,49698,49699,49700,49701,49702,49703,49704,49705,49706,49707,49708,49709,49710,49711,49712,49713,49714,49715,49716,49717,49718,49719,49720,49721,49722,49723,49724,49725,49726,49727,49728,49729,49730,49731,49732,49733,49734,49735,49736,49737,49738,49739,49740,49741,49742,49743,49744,49745,49746,49747,49748,49749,49750,49751,49752,49753,49754,49755,49756,49757,49758,49759,49760,49761,49762,49763,49764,49765,49766,49767,49768,49769,49770,49771,49772,49773,49774,49775,49776,49777,49778,49779,49780,49781,49782,49783,49784,49785,49786,49787,49788,49789,49790,49791,49792,49793,49794,49795,49796,49797,49798,49799,49800,49801,49802,49803,49804,49805,49806,49807,49808,49809,49810,49811,49812,49813,49814,49815,49816,49817,49818,49819,49820,49821,49822,49823,49824,49825,49826,49827,49828,49829,49830,49831,49832,49833,49834,49835,49836,49837,49838,49839,49840,49841,49842,49843,49844,49845,49846,49847,49848,49849,49850,49851,49852,49853,49854,49855,49856,49857,49858,49859,49860,49861,49862,49863,49864,49865,49866,49867,49868,49869,49870,49871,49872,49873,49874,49875,49876,49877,49878,49879,49880,49881,49882,49883,49884,49885,49886,49887,49888,49889,49890,49891,49892,49893,49894,49895,49896,49897,49898,49899,49900,49901,49902,49903,49904,49905,49906,49907,49908,49909,49910,49911,49912,49913,49914,49915,49916,49917,49918,49919,49920,49921,49922,49923,49924,49925,49926,49927,49928,49929,49930,49931,49932,49933,49934,49935,49936,49937,49938,49939,49940,49941,49942,49943,49944,49945,49946,49947,49948,49949,49950,49951,49952,49953,49954,49955,49956,49957,49958,49959,49960,49961,49962,49963,49964,49965,49966,49967,49968,49969,49970,49971,49972,49973,49974,49975,49976,49977,49978,49979,49980,49981,49982,49983,49984,49985,49986,49987,49988,49989,49990,49991,49992,49993,49994,49995,49996,49997,49998,49999,50000,50001,50002,50003,50004,50005,50006,50007,50008,50009,50010,50011,50012,50013,50014,50015,50016,50017,50018,50019,50020,50021,50022,50023,50024,50025,50026,50027,50028,50029,50030,50031,50032,50033,50034,50035,50036,50037,50038,50039,50040,50041,50042,50043,50044,50045,50046,50047,50048,50049,50050,50051,50052,50053,50054,50055,50056,50057,50058,50059,50060,50061,50062,50063,50064,50065,50066,50067,50068,50069,50070,50071,50072,50073,50074,50075,50076,50077,50078,50079,50080,50081,50082,50083,50084,50085,50086,50087,50088,50089,50090,50091,50092,50093,50094,50095,50096,50097,50098,50099,50100,50101,50102,50103,50104,50105,50106,50107,50108,50109,50110,50111,50112,50113,50114,50115,50116,50117,50118,50119,50120,50121,50122,50123,50124,50125,50126,50127,50128,50129,50130,50131,50132,50133,50134,50135,50136,50137,50138,50139,50140,50141,50142,50143,50144,50145,50146,50147,50148,50149,50150,50151,50152,50153,50154,50155,50156,50157,50158,50159,50160,50161,50162,50163,50164,50165,50166,50167,50168,50169,50170,50171,50172,50173,50174,50175,50176,50177,50178,50179,50180,50181,50182,50183,50184,50185,50186,50187,50188,50189,50190,50191,50192,50193,50194,50195,50196,50197,50198,50199,50200,50201,50202,50203,50204,50205,50206,50207,50208,50209,50210,50211,50212,50213,50214,50215,50216,50217,50218,50219,50220,50221,50222,50223,50224,50225,50226,50227,50228,50229,50230,50231,50232,50233,50234,50235,50236,50237,50238,50239,50240,50241,50242,50243,50244,50245,50246,50247,50248,50249,50250,50251,50252,50253,50254,50255,50256,50257,50258,50259,50260,50261,50262,50263,50264,50265,50266,50267,50268,50269,50270,50271,50272,50273,50274,50275,50276,50277,50278,50279,50280,50281,50282,50283,50284,50285,50286,50287,50288,50289,50290,50291,50292,50293,50294,50295,50296,50297,50298,50299,50300,50301,50302,50303,50304,50305,50306,50307,50308,50309,50310,50311,50312,50313,50314,50315,50316,50317,50318,50319,50320,50321,50322,50323,50324,50325,50326,50327,50328,50329,50330,50331,50332,50333,50334,50335,50336,50337,50338,50339,50340,50341,50342,50343,50344,50345,50346,50347,50348,50349,50350,50351,50352,50353,50354,50355,50356,50357,50358,50359,50360,50361,50362,50363,50364,50365,50366,50367,50368,50369,50370,50371,50372,50373,50374,50375,50376,50377,50378,50379,50380,50381,50382,50383,50384,50385,50386,50387,50388,50389,50390,50391,50392,50393,50394,50395,50396,50397,50398,50399,50400,50401,50402,50403,50404,50405,50406,50407,50408,50409,50410,50411,50412,50413,50414,50415,50416,50417,50418,50419,50420,50421,50422,50423,50424,50425,50426,50427,50428,50429,50430,50431,50432,50433,50434,50435,50436,50437,50438,50439,50440,50441,50442,50443,50444,50445,50446,50447,50448,50449,50450,50451,50452,50453,50454,50455,50456,50457,50458,50459,50460,50461,50462,50463,50464,50465,50466,50467,50468,50469,50470,50471,50472,50473,50474,50475,50476,50477,50478,50479,50480,50481,50482,50483,50484,50485,50486,50487,50488,50489,50490,50491,50492,50493,50494,50495,50496,50497,50498,50499,50500,50501,50502,50503,50504,50505,50506,50507,50508,50509,50510,50511,50512,50513,50514,50515,50516,50517,50518,50519,50520,50521,50522,50523,50524,50525,50526,50527,50528,50529,50530,50531,50532,50533,50534,50535,50536,50537,50538,50539,50540,50541,50542,50543,50544,50545,50546,50547,50548,50549,50550,50551,50552,50553,50554,50555,50556,50557,50558,50559,50560,50561,50562,50563,50564,50565,50566,50567,50568,50569,50570,50571,50572,50573,50574,50575,50576,50577,50578,50579,50580,50581,50582,50583,50584,50585,50586,50587,50588,50589,50590,50591,50592,50593,50594,50595,50596,50597,50598,50599,50600,50601,50602,50603,50604,50605,50606,50607,50608,50609,50610,50611,50612,50613,50614,50615,50616,50617,50618,50619,50620,50621,50622,50623,50624,50625,50626,50627,50628,50629,50630,50631,50632,50633,50634,50635,50636,50637,50638,50639,50640,50641,50642,50643,50644,50645,50646,50647,50648,50649,50650,50651,50652,50653,50654,50655,50656,50657,50658,50659,50660,50661,50662,50663,50664,50665,50666,50667,50668,50669,50670,50671,50672,50673,50674,50675,50676,50677,50678,50679,50680,50681,50682,50683,50684,50685,50686,50687,50688,50689,50690,50691,50692,50693,50694,50695,50696,50697,50698,50699,50700,50701,50702,50703,50704,50705,50706,50707,50708,50709,50710,50711,50712,50713,50714,50715,50716,50717,50718,50719,50720,50721,50722,50723,50724,50725,50726,50727,50728,50729,50730,50731,50732,50733,50734,50735,50736,50737,50738,50739,50740,50741,50742,50743,50744,50745,50746,50747,50748,50749,50750,50751,50752,50753,50754,50755,50756,50757,50758,50759,50760,50761,50762,50763,50764,50765,50766,50767,50768,50769,50770,50771,50772,50773,50774,50775,50776,50777,50778,50779,50780,50781,50782,50783,50784,50785,50786,50787,50788,50789,50790,50791,50792,50793,50794,50795,50796,50797,50798,50799,50800,50801,50802,50803,50804,50805,50806,50807,50808,50809,50810,50811,50812,50813,50814,50815,50816,50817,50818,50819,50820,50821,50822,50823,50824,50825,50826,50827,50828,50829,50830,50831,50832,50833,50834,50835,50836,50837,50838,50839,50840,50841,50842,50843,50844,50845,50846,50847,50848,50849,50850,50851,50852,50853,50854,50855,50856,50857,50858,50859,50860,50861,50862,50863,50864,50865,50866,50867,50868,50869,50870,50871,50872,50873,50874,50875,50876,50877,50878,50879,50880,50881,50882,50883,50884,50885,50886,50887,50888,50889,50890,50891,50892,50893,50894,50895,50896,50897,50898,50899,50900,50901,50902,50903,50904,50905,50906,50907,50908,50909,50910,50911,50912,50913,50914,50915,50916,50917,50918,50919,50920,50921,50922,50923,50924,50925,50926,50927,50928,50929,50930,50931,50932,50933,50934,50935,50936,50937,50938,50939,50940,50941,50942,50943,50944,50945,50946,50947,50948,50949,50950,50951,50952,50953,50954,50955,50956,50957,50958,50959,50960,50961,50962,50963,50964,50965,50966,50967,50968,50969,50970,50971,50972,50973,50974,50975,50976,50977,50978,50979,50980,50981,50982,50983,50984,50985,50986,50987,50988,50989,50990,50991,50992,50993,50994,50995,50996,50997,50998,50999,51000,51001,51002,51003,51004,51005,51006,51007,51008,51009,51010,51011,51012,51013,51014,51015,51016,51017,51018,51019,51020,51021,51022,51023,51024,51025,51026,51027,51028,51029,51030,51031,51032,51033,51034,51035,51036,51037,51038,51039,51040,51041,51042,51043,51044,51045,51046,51047,51048,51049,51050,51051,51052,51053,51054,51055,51056,51057,51058,51059,51060,51061,51062,51063,51064,51065,51066,51067,51068,51069,51070,51071,51072,51073,51074,51075,51076,51077,51078,51079,51080,51081,51082,51083,51084,51085,51086,51087,51088,51089,51090,51091,51092,51093,51094,51095,51096,51097,51098,51099,51100,51101,51102,51103,51104,51105,51106,51107,51108,51109,51110,51111,51112,51113,51114,51115,51116,51117,51118,51119,51120,51121,51122,51123,51124,51125,51126,51127,51128,51129,51130,51131,51132,51133,51134,51135,51136,51137,51138,51139,51140,51141,51142,51143,51144,51145,51146,51147,51148,51149,51150,51151,51152,51153,51154,51155,51156,51157,51158,51159,51160,51161,51162,51163,51164,51165,51166,51167,51168,51169,51170,51171,51172,51173,51174,51175,51176,51177,51178,51179,51180,51181,51182,51183,51184,51185,51186,51187,51188,51189,51190,51191,51192,51193,51194,51195,51196,51197,51198,51199,51200,51201,51202,51203,51204,51205,51206,51207,51208,51209,51210,51211,51212,51213,51214,51215,51216,51217,51218,51219,51220,51221,51222,51223,51224,51225,51226,51227,51228,51229,51230,51231,51232,51233,51234,51235,51236,51237,51238,51239,51240,51241,51242,51243,51244,51245,51246,51247,51248,51249,51250,51251,51252,51253,51254,51255,51256,51257,51258,51259,51260,51261,51262,51263,51264,51265,51266,51267,51268,51269,51270,51271,51272,51273,51274,51275,51276,51277,51278,51279,51280,51281,51282,51283,51284,51285,51286,51287,51288,51289,51290,51291,51292,51293,51294,51295,51296,51297,51298,51299,51300,51301,51302,51303,51304,51305,51306,51307,51308,51309,51310,51311,51312,51313,51314,51315,51316,51317,51318,51319,51320,51321,51322,51323,51324,51325,51326,51327,51328,51329,51330,51331,51332,51333,51334,51335,51336,51337,51338,51339,51340,51341,51342,51343,51344,51345,51346,51347,51348,51349,51350,51351,51352,51353,51354,51355,51356,51357,51358,51359,51360,51361,51362,51363,51364,51365,51366,51367,51368,51369,51370,51371,51372,51373,51374,51375,51376,51377,51378,51379,51380,51381,51382,51383,51384,51385,51386,51387,51388,51389,51390,51391,51392,51393,51394,51395,51396,51397,51398,51399,51400,51401,51402,51403,51404,51405,51406,51407,51408,51409,51410,51411,51412,51413,51414,51415,51416,51417,51418,51419,51420,51421,51422,51423,51424,51425,51426,51427,51428,51429,51430,51431,51432,51433,51434,51435,51436,51437,51438,51439,51440,51441,51442,51443,51444,51445,51446,51447,51448,51449,51450,51451,51452,51453,51454,51455,51456,51457,51458,51459,51460,51461,51462,51463,51464,51465,51466,51467,51468,51469,51470,51471,51472,51473,51474,51475,51476,51477,51478,51479,51480,51481,51482,51483,51484,51485,51486,51487,51488,51489,51490,51491,51492,51493,51494,51495,51496,51497,51498,51499,51500,51501,51502,51503,51504,51505,51506,51507,51508,51509,51510,51511,51512,51513,51514,51515,51516,51517,51518,51519,51520,51521,51522,51523,51524,51525,51526,51527,51528,51529,51530,51531,51532,51533,51534,51535,51536,51537,51538,51539,51540,51541,51542,51543,51544,51545,51546,51547,51548,51549,51550,51551,51552,51553,51554,51555,51556,51557,51558,51559,51560,51561,51562,51563,51564,51565,51566,51567,51568,51569,51570,51571,51572,51573,51574,51575,51576,51577,51578,51579,51580,51581,51582,51583,51584,51585,51586,51587,51588,51589,51590,51591,51592,51593,51594,51595,51596,51597,51598,51599,51600,51601,51602,51603,51604,51605,51606,51607,51608,51609,51610,51611,51612,51613,51614,51615,51616,51617,51618,51619,51620,51621,51622,51623,51624,51625,51626,51627,51628,51629,51630,51631,51632,51633,51634,51635,51636,51637,51638,51639,51640,51641,51642,51643,51644,51645,51646,51647,51648,51649,51650,51651,51652,51653,51654,51655,51656,51657,51658,51659,51660,51661,51662,51663,51664,51665,51666,51667,51668,51669,51670,51671,51672,51673,51674,51675,51676,51677,51678,51679,51680,51681,51682,51683,51684,51685,51686,51687,51688,51689,51690,51691,51692,51693,51694,51695,51696,51697,51698,51699,51700,51701,51702,51703,51704,51705,51706,51707,51708,51709,51710,51711,51712,51713,51714,51715,51716,51717,51718,51719,51720,51721,51722,51723,51724,51725,51726,51727,51728,51729,51730,51731,51732,51733,51734,51735,51736,51737,51738,51739,51740,51741,51742,51743,51744,51745,51746,51747,51748,51749,51750,51751,51752,51753,51754,51755,51756,51757,51758,51759,51760,51761,51762,51763,51764,51765,51766,51767,51768,51769,51770,51771,51772,51773,51774,51775,51776,51777,51778,51779,51780,51781,51782,51783,51784,51785,51786,51787,51788,51789,51790,51791,51792,51793,51794,51795,51796,51797,51798,51799,51800,51801,51802,51803,51804,51805,51806,51807,51808,51809,51810,51811,51812,51813,51814,51815,51816,51817,51818,51819,51820,51821,51822,51823,51824,51825,51826,51827,51828,51829,51830,51831,51832,51833,51834,51835,51836,51837,51838,51839,51840,51841,51842,51843,51844,51845,51846,51847,51848,51849,51850,51851,51852,51853,51854,51855,51856,51857,51858,51859,51860,51861,51862,51863,51864,51865,51866,51867,51868,51869,51870,51871,51872,51873,51874,51875,51876,51877,51878,51879,51880,51881,51882,51883,51884,51885,51886,51887,51888,51889,51890,51891,51892,51893,51894,51895,51896,51897,51898,51899,51900,51901,51902,51903,51904,51905,51906,51907,51908,51909,51910,51911,51912,51913,51914,51915,51916,51917,51918,51919,51920,51921,51922,51923,51924,51925,51926,51927,51928,51929,51930,51931,51932,51933,51934,51935,51936,51937,51938,51939,51940,51941,51942,51943,51944,51945,51946,51947,51948,51949,51950,51951,51952,51953,51954,51955,51956,51957,51958,51959,51960,51961,51962,51963,51964,51965,51966,51967,51968,51969,51970,51971,51972,51973,51974,51975,51976,51977,51978,51979,51980,51981,51982,51983,51984,51985,51986,51987,51988,51989,51990,51991,51992,51993,51994,51995,51996,51997,51998,51999,52000,52001,52002,52003,52004,52005,52006,52007,52008,52009,52010,52011,52012,52013,52014,52015,52016,52017,52018,52019,52020,52021,52022,52023,52024,52025,52026,52027,52028,52029,52030,52031,52032,52033,52034,52035,52036,52037,52038,52039,52040,52041,52042,52043,52044,52045,52046,52047,52048,52049,52050,52051,52052,52053,52054,52055,52056,52057,52058,52059,52060,52061,52062,52063,52064,52065,52066,52067,52068,52069,52070,52071,52072,52073,52074,52075,52076,52077,52078,52079,52080,52081,52082,52083,52084,52085,52086,52087,52088,52089,52090,52091,52092,52093,52094,52095,52096,52097,52098,52099,52100,52101,52102,52103,52104,52105,52106,52107,52108,52109,52110,52111,52112,52113,52114,52115,52116,52117,52118,52119,52120,52121,52122,52123,52124,52125,52126,52127,52128,52129,52130,52131,52132,52133,52134,52135,52136,52137,52138,52139,52140,52141,52142,52143,52144,52145,52146,52147,52148,52149,52150,52151,52152,52153,52154,52155,52156,52157,52158,52159,52160,52161,52162,52163,52164,52165,52166,52167,52168,52169,52170,52171,52172,52173,52174,52175,52176,52177,52178,52179,52180,52181,52182,52183,52184,52185,52186,52187,52188,52189,52190,52191,52192,52193,52194,52195,52196,52197,52198,52199,52200,52201,52202,52203,52204,52205,52206,52207,52208,52209,52210,52211,52212,52213,52214,52215,52216,52217,52218,52219,52220,52221,52222,52223,52224,52225,52226,52227,52228,52229,52230,52231,52232,52233,52234,52235,52236,52237,52238,52239,52240,52241,52242,52243,52244,52245,52246,52247,52248,52249,52250,52251,52252,52253,52254,52255,52256,52257,52258,52259,52260,52261,52262,52263,52264,52265,52266,52267,52268,52269,52270,52271,52272,52273,52274,52275,52276,52277,52278,52279,52280,52281,52282,52283,52284,52285,52286,52287,52288,52289,52290,52291,52292,52293,52294,52295,52296,52297,52298,52299,52300,52301,52302,52303,52304,52305,52306,52307,52308,52309,52310,52311,52312,52313,52314,52315,52316,52317,52318,52319,52320,52321,52322,52323,52324,52325,52326,52327,52328,52329,52330,52331,52332,52333,52334,52335,52336,52337,52338,52339,52340,52341,52342,52343,52344,52345,52346,52347,52348,52349,52350,52351,52352,52353,52354,52355,52356,52357,52358,52359,52360,52361,52362,52363,52364,52365,52366,52367,52368,52369,52370,52371,52372,52373,52374,52375,52376,52377,52378,52379,52380,52381,52382,52383,52384,52385,52386,52387,52388,52389,52390,52391,52392,52393,52394,52395,52396,52397,52398,52399,52400,52401,52402,52403,52404,52405,52406,52407,52408,52409,52410,52411,52412,52413,52414,52415,52416,52417,52418,52419,52420,52421,52422,52423,52424,52425,52426,52427,52428,52429,52430,52431,52432,52433,52434,52435,52436,52437,52438,52439,52440,52441,52442,52443,52444,52445,52446,52447,52448,52449,52450,52451,52452,52453,52454,52455,52456,52457,52458,52459,52460,52461,52462,52463,52464,52465,52466,52467,52468,52469,52470,52471,52472,52473,52474,52475,52476,52477,52478,52479,52480,52481,52482,52483,52484,52485,52486,52487,52488,52489,52490,52491,52492,52493,52494,52495,52496,52497,52498,52499,52500,52501,52502,52503,52504,52505,52506,52507,52508,52509,52510,52511,52512,52513,52514,52515,52516,52517,52518,52519,52520,52521,52522,52523,52524,52525,52526,52527,52528,52529,52530,52531,52532,52533,52534,52535,52536,52537,52538,52539,52540,52541,52542,52543,52544,52545,52546,52547,52548,52549,52550,52551,52552,52553,52554,52555,52556,52557,52558,52559,52560,52561,52562,52563,52564,52565,52566,52567,52568,52569,52570,52571,52572,52573,52574,52575,52576,52577,52578,52579,52580,52581,52582,52583,52584,52585,52586,52587,52588,52589,52590,52591,52592,52593,52594,52595,52596,52597,52598,52599,52600,52601,52602,52603,52604,52605,52606,52607,52608,52609,52610,52611,52612,52613,52614,52615,52616,52617,52618,52619,52620,52621,52622,52623,52624,52625,52626,52627,52628,52629,52630,52631,52632,52633,52634,52635,52636,52637,52638,52639,52640,52641,52642,52643,52644,52645,52646,52647,52648,52649,52650,52651,52652,52653,52654,52655,52656,52657,52658,52659,52660,52661,52662,52663,52664,52665,52666,52667,52668,52669,52670,52671,52672,52673,52674,52675,52676,52677,52678,52679,52680,52681,52682,52683,52684,52685,52686,52687,52688,52689,52690,52691,52692,52693,52694,52695,52696,52697,52698,52699,52700,52701,52702,52703,52704,52705,52706,52707,52708,52709,52710,52711,52712,52713,52714,52715,52716,52717,52718,52719,52720,52721,52722,52723,52724,52725,52726,52727,52728,52729,52730,52731,52732,52733,52734,52735,52736,52737,52738,52739,52740,52741,52742,52743,52744,52745,52746,52747,52748,52749,52750,52751,52752,52753,52754,52755,52756,52757,52758,52759,52760,52761,52762,52763,52764,52765,52766,52767,52768,52769,52770,52771,52772,52773,52774,52775,52776,52777,52778,52779,52780,52781,52782,52783,52784,52785,52786,52787,52788,52789,52790,52791,52792,52793,52794,52795,52796,52797,52798,52799,52800,52801,52802,52803,52804,52805,52806,52807,52808,52809,52810,52811,52812,52813,52814,52815,52816,52817,52818,52819,52820,52821,52822,52823,52824,52825,52826,52827,52828,52829,52830,52831,52832,52833,52834,52835,52836,52837,52838,52839,52840,52841,52842,52843,52844,52845,52846,52847,52848,52849,52850,52851,52852,52853,52854,52855,52856,52857,52858,52859,52860,52861,52862,52863,52864,52865,52866,52867,52868,52869,52870,52871,52872,52873,52874,52875,52876,52877,52878,52879,52880,52881,52882,52883,52884,52885,52886,52887,52888,52889,52890,52891,52892,52893,52894,52895,52896,52897,52898,52899,52900,52901,52902,52903,52904,52905,52906,52907,52908,52909,52910,52911,52912,52913,52914,52915,52916,52917,52918,52919,52920,52921,52922,52923,52924,52925,52926,52927,52928,52929,52930,52931,52932,52933,52934,52935,52936,52937,52938,52939,52940,52941,52942,52943,52944,52945,52946,52947,52948,52949,52950,52951,52952,52953,52954,52955,52956,52957,52958,52959,52960,52961,52962,52963,52964,52965,52966,52967,52968,52969,52970,52971,52972,52973,52974,52975,52976,52977,52978,52979,52980,52981,52982,52983,52984,52985,52986,52987,52988,52989,52990,52991,52992,52993,52994,52995,52996,52997,52998,52999,53000,53001,53002,53003,53004,53005,53006,53007,53008,53009,53010,53011,53012,53013,53014,53015,53016,53017,53018,53019,53020,53021,53022,53023,53024,53025,53026,53027,53028,53029,53030,53031,53032,53033,53034,53035,53036,53037,53038,53039,53040,53041,53042,53043,53044,53045,53046,53047,53048,53049,53050,53051,53052,53053,53054,53055,53056,53057,53058,53059,53060,53061,53062,53063,53064,53065,53066,53067,53068,53069,53070,53071,53072,53073,53074,53075,53076,53077,53078,53079,53080,53081,53082,53083,53084,53085,53086,53087,53088,53089,53090,53091,53092,53093,53094,53095,53096,53097,53098,53099,53100,53101,53102,53103,53104,53105,53106,53107,53108,53109,53110,53111,53112,53113,53114,53115,53116,53117,53118,53119,53120,53121,53122,53123,53124,53125,53126,53127,53128,53129,53130,53131,53132,53133,53134,53135,53136,53137,53138,53139,53140,53141,53142,53143,53144,53145,53146,53147,53148,53149,53150,53151,53152,53153,53154,53155,53156,53157,53158,53159,53160,53161,53162,53163,53164,53165,53166,53167,53168,53169,53170,53171,53172,53173,53174,53175,53176,53177,53178,53179,53180,53181,53182,53183,53184,53185,53186,53187,53188,53189,53190,53191,53192,53193,53194,53195,53196,53197,53198,53199,53200,53201,53202,53203,53204,53205,53206,53207,53208,53209,53210,53211,53212,53213,53214,53215,53216,53217,53218,53219,53220,53221,53222,53223,53224,53225,53226,53227,53228,53229,53230,53231,53232,53233,53234,53235,53236,53237,53238,53239,53240,53241,53242,53243,53244,53245,53246,53247,53248,53249,53250,53251,53252,53253,53254,53255,53256,53257,53258,53259,53260,53261,53262,53263,53264,53265,53266,53267,53268,53269,53270,53271,53272,53273,53274,53275,53276,53277,53278,53279,53280,53281,53282,53283,53284,53285,53286,53287,53288,53289,53290,53291,53292,53293,53294,53295,53296,53297,53298,53299,53300,53301,53302,53303,53304,53305,53306,53307,53308,53309,53310,53311,53312,53313,53314,53315,53316,53317,53318,53319,53320,53321,53322,53323,53324,53325,53326,53327,53328,53329,53330,53331,53332,53333,53334,53335,53336,53337,53338,53339,53340,53341,53342,53343,53344,53345,53346,53347,53348,53349,53350,53351,53352,53353,53354,53355,53356,53357,53358,53359,53360,53361,53362,53363,53364,53365,53366,53367,53368,53369,53370,53371,53372,53373,53374,53375,53376,53377,53378,53379,53380,53381,53382,53383,53384,53385,53386,53387,53388,53389,53390,53391,53392,53393,53394,53395,53396,53397,53398,53399,53400,53401,53402,53403,53404,53405,53406,53407,53408,53409,53410,53411,53412,53413,53414,53415,53416,53417,53418,53419,53420,53421,53422,53423,53424,53425,53426,53427,53428,53429,53430,53431,53432,53433,53434,53435,53436,53437,53438,53439,53440,53441,53442,53443,53444,53445,53446,53447,53448,53449,53450,53451,53452,53453,53454,53455,53456,53457,53458,53459,53460,53461,53462,53463,53464,53465,53466,53467,53468,53469,53470,53471,53472,53473,53474,53475,53476,53477,53478,53479,53480,53481,53482,53483,53484,53485,53486,53487,53488,53489,53490,53491,53492,53493,53494,53495,53496,53497,53498,53499,53500,53501,53502,53503,53504,53505,53506,53507,53508,53509,53510,53511,53512,53513,53514,53515,53516,53517,53518,53519,53520,53521,53522,53523,53524,53525,53526,53527,53528,53529,53530,53531,53532,53533,53534,53535,53536,53537,53538,53539,53540,53541,53542,53543,53544,53545,53546,53547,53548,53549,53550,53551,53552,53553,53554,53555,53556,53557,53558,53559,53560,53561,53562,53563,53564,53565,53566,53567,53568,53569,53570,53571,53572,53573,53574,53575,53576,53577,53578,53579,53580,53581,53582,53583,53584,53585,53586,53587,53588,53589,53590,53591,53592,53593,53594,53595,53596,53597,53598,53599,53600,53601,53602,53603,53604,53605,53606,53607,53608,53609,53610,53611,53612,53613,53614,53615,53616,53617,53618,53619,53620,53621,53622,53623,53624,53625,53626,53627,53628,53629,53630,53631,53632,53633,53634,53635,53636,53637,53638,53639,53640,53641,53642,53643,53644,53645,53646,53647,53648,53649,53650,53651,53652,53653,53654,53655,53656,53657,53658,53659,53660,53661,53662,53663,53664,53665,53666,53667,53668,53669,53670,53671,53672,53673,53674,53675,53676,53677,53678,53679,53680,53681,53682,53683,53684,53685,53686,53687,53688,53689,53690,53691,53692,53693,53694,53695,53696,53697,53698,53699,53700,53701,53702,53703,53704,53705,53706,53707,53708,53709,53710,53711,53712,53713,53714,53715,53716,53717,53718,53719,53720,53721,53722,53723,53724,53725,53726,53727,53728,53729,53730,53731,53732,53733,53734,53735,53736,53737,53738,53739,53740,53741,53742,53743,53744,53745,53746,53747,53748,53749,53750,53751,53752,53753,53754,53755,53756,53757,53758,53759,53760,53761,53762,53763,53764,53765,53766,53767,53768,53769,53770,53771,53772,53773,53774,53775,53776,53777,53778,53779,53780,53781,53782,53783,53784,53785,53786,53787,53788,53789,53790,53791,53792,53793,53794,53795,53796,53797,53798,53799,53800,53801,53802,53803,53804,53805,53806,53807,53808,53809,53810,53811,53812,53813,53814,53815,53816,53817,53818,53819,53820,53821,53822,53823,53824,53825,53826,53827,53828,53829,53830,53831,53832,53833,53834,53835,53836,53837,53838,53839,53840,53841,53842,53843,53844,53845,53846,53847,53848,53849,53850,53851,53852,53853,53854,53855,53856,53857,53858,53859,53860,53861,53862,53863,53864,53865,53866,53867,53868,53869,53870,53871,53872,53873,53874,53875,53876,53877,53878,53879,53880,53881,53882,53883,53884,53885,53886,53887,53888,53889,53890,53891,53892,53893,53894,53895,53896,53897,53898,53899,53900,53901,53902,53903,53904,53905,53906,53907,53908,53909,53910,53911,53912,53913,53914,53915,53916,53917,53918,53919,53920,53921,53922,53923,53924,53925,53926,53927,53928,53929,53930,53931,53932,53933,53934,53935,53936,53937,53938,53939,53940,53941,53942,53943,53944,53945,53946,53947,53948,53949,53950,53951,53952,53953,53954,53955,53956,53957,53958,53959,53960,53961,53962,53963,53964,53965,53966,53967,53968,53969,53970,53971,53972,53973,53974,53975,53976,53977,53978,53979,53980,53981,53982,53983,53984,53985,53986,53987,53988,53989,53990,53991,53992,53993,53994,53995,53996,53997,53998,53999,54000,54001,54002,54003,54004,54005,54006,54007,54008,54009,54010,54011,54012,54013,54014,54015,54016,54017,54018,54019,54020,54021,54022,54023,54024,54025,54026,54027,54028,54029,54030,54031,54032,54033,54034,54035,54036,54037,54038,54039,54040,54041,54042,54043,54044,54045,54046,54047,54048,54049,54050,54051,54052,54053,54054,54055,54056,54057,54058,54059,54060,54061,54062,54063,54064,54065,54066,54067,54068,54069,54070,54071,54072,54073,54074,54075,54076,54077,54078,54079,54080,54081,54082,54083,54084,54085,54086,54087,54088,54089,54090,54091,54092,54093,54094,54095,54096,54097,54098,54099,54100,54101,54102,54103,54104,54105,54106,54107,54108,54109,54110,54111,54112,54113,54114,54115,54116,54117,54118,54119,54120,54121,54122,54123,54124,54125,54126,54127,54128,54129,54130,54131,54132,54133,54134,54135,54136,54137,54138,54139,54140,54141,54142,54143,54144,54145,54146,54147,54148,54149,54150,54151,54152,54153,54154,54155,54156,54157,54158,54159,54160,54161,54162,54163,54164,54165,54166,54167,54168,54169,54170,54171,54172,54173,54174,54175,54176,54177,54178,54179,54180,54181,54182,54183,54184,54185,54186,54187,54188,54189,54190,54191,54192,54193,54194,54195,54196,54197,54198,54199,54200,54201,54202,54203,54204,54205,54206,54207,54208,54209,54210,54211,54212,54213,54214,54215,54216,54217,54218,54219,54220,54221,54222,54223,54224,54225,54226,54227,54228,54229,54230,54231,54232,54233,54234,54235,54236,54237,54238,54239,54240,54241,54242,54243,54244,54245,54246,54247,54248,54249,54250,54251,54252,54253,54254,54255,54256,54257,54258,54259,54260,54261,54262,54263,54264,54265,54266,54267,54268,54269,54270,54271,54272,54273,54274,54275,54276,54277,54278,54279,54280,54281,54282,54283,54284,54285,54286,54287,54288,54289,54290,54291,54292,54293,54294,54295,54296,54297,54298,54299,54300,54301,54302,54303,54304,54305,54306,54307,54308,54309,54310,54311,54312,54313,54314,54315,54316,54317,54318,54319,54320,54321,54322,54323,54324,54325,54326,54327,54328,54329,54330,54331,54332,54333,54334,54335,54336,54337,54338,54339,54340,54341,54342,54343,54344,54345,54346,54347,54348,54349,54350,54351,54352,54353,54354,54355,54356,54357,54358,54359,54360,54361,54362,54363,54364,54365,54366,54367,54368,54369,54370,54371,54372,54373,54374,54375,54376,54377,54378,54379,54380,54381,54382,54383,54384,54385,54386,54387,54388,54389,54390,54391,54392,54393,54394,54395,54396,54397,54398,54399,54400,54401,54402,54403,54404,54405,54406,54407,54408,54409,54410,54411,54412,54413,54414,54415,54416,54417,54418,54419,54420,54421,54422,54423,54424,54425,54426,54427,54428,54429,54430,54431,54432,54433,54434,54435,54436,54437,54438,54439,54440,54441,54442,54443,54444,54445,54446,54447,54448,54449,54450,54451,54452,54453,54454,54455,54456,54457,54458,54459,54460,54461,54462,54463,54464,54465,54466,54467,54468,54469,54470,54471,54472,54473,54474,54475,54476,54477,54478,54479,54480,54481,54482,54483,54484,54485,54486,54487,54488,54489,54490,54491,54492,54493,54494,54495,54496,54497,54498,54499,54500,54501,54502,54503,54504,54505,54506,54507,54508,54509,54510,54511,54512,54513,54514,54515,54516,54517,54518,54519,54520,54521,54522,54523,54524,54525,54526,54527,54528,54529,54530,54531,54532,54533,54534,54535,54536,54537,54538,54539,54540,54541,54542,54543,54544,54545,54546,54547,54548,54549,54550,54551,54552,54553,54554,54555,54556,54557,54558,54559,54560,54561,54562,54563,54564,54565,54566,54567,54568,54569,54570,54571,54572,54573,54574,54575,54576,54577,54578,54579,54580,54581,54582,54583,54584,54585,54586,54587,54588,54589,54590,54591,54592,54593,54594,54595,54596,54597,54598,54599,54600,54601,54602,54603,54604,54605,54606,54607,54608,54609,54610,54611,54612,54613,54614,54615,54616,54617,54618,54619,54620,54621,54622,54623,54624,54625,54626,54627,54628,54629,54630,54631,54632,54633,54634,54635,54636,54637,54638,54639,54640,54641,54642,54643,54644,54645,54646,54647,54648,54649,54650,54651,54652,54653,54654,54655,54656,54657,54658,54659,54660,54661,54662,54663,54664,54665,54666,54667,54668,54669,54670,54671,54672,54673,54674,54675,54676,54677,54678,54679,54680,54681,54682,54683,54684,54685,54686,54687,54688,54689,54690,54691,54692,54693,54694,54695,54696,54697,54698,54699,54700,54701,54702,54703,54704,54705,54706,54707,54708,54709,54710,54711,54712,54713,54714,54715,54716,54717,54718,54719,54720,54721,54722,54723,54724,54725,54726,54727,54728,54729,54730,54731,54732,54733,54734,54735,54736,54737,54738,54739,54740,54741,54742,54743,54744,54745,54746,54747,54748,54749,54750,54751,54752,54753,54754,54755,54756,54757,54758,54759,54760,54761,54762,54763,54764,54765,54766,54767,54768,54769,54770,54771,54772,54773,54774,54775,54776,54777,54778,54779,54780,54781,54782,54783,54784,54785,54786,54787,54788,54789,54790,54791,54792,54793,54794,54795,54796,54797,54798,54799,54800,54801,54802,54803,54804,54805,54806,54807,54808,54809,54810,54811,54812,54813,54814,54815,54816,54817,54818,54819,54820,54821,54822,54823,54824,54825,54826,54827,54828,54829,54830,54831,54832,54833,54834,54835,54836,54837,54838,54839,54840,54841,54842,54843,54844,54845,54846,54847,54848,54849,54850,54851,54852,54853,54854,54855,54856,54857,54858,54859,54860,54861,54862,54863,54864,54865,54866,54867,54868,54869,54870,54871,54872,54873,54874,54875,54876,54877,54878,54879,54880,54881,54882,54883,54884,54885,54886,54887,54888,54889,54890,54891,54892,54893,54894,54895,54896,54897,54898,54899,54900,54901,54902,54903,54904,54905,54906,54907,54908,54909,54910,54911,54912,54913,54914,54915,54916,54917,54918,54919,54920,54921,54922,54923,54924,54925,54926,54927,54928,54929,54930,54931,54932,54933,54934,54935,54936,54937,54938,54939,54940,54941,54942,54943,54944,54945,54946,54947,54948,54949,54950,54951,54952,54953,54954,54955,54956,54957,54958,54959,54960,54961,54962,54963,54964,54965,54966,54967,54968,54969,54970,54971,54972,54973,54974,54975,54976,54977,54978,54979,54980,54981,54982,54983,54984,54985,54986,54987,54988,54989,54990,54991,54992,54993,54994,54995,54996,54997,54998,54999,55000,55001,55002,55003,55004,55005,55006,55007,55008,55009,55010,55011,55012,55013,55014,55015,55016,55017,55018,55019,55020,55021,55022,55023,55024,55025,55026,55027,55028,55029,55030,55031,55032,55033,55034,55035,55036,55037,55038,55039,55040,55041,55042,55043,55044,55045,55046,55047,55048,55049,55050,55051,55052,55053,55054,55055,55056,55057,55058,55059,55060,55061,55062,55063,55064,55065,55066,55067,55068,55069,55070,55071,55072,55073,55074,55075,55076,55077,55078,55079,55080,55081,55082,55083,55084,55085,55086,55087,55088,55089,55090,55091,55092,55093,55094,55095,55096,55097,55098,55099,55100,55101,55102,55103,55104,55105,55106,55107,55108,55109,55110,55111,55112,55113,55114,55115,55116,55117,55118,55119,55120,55121,55122,55123,55124,55125,55126,55127,55128,55129,55130,55131,55132,55133,55134,55135,55136,55137,55138,55139,55140,55141,55142,55143,55144,55145,55146,55147,55148,55149,55150,55151,55152,55153,55154,55155,55156,55157,55158,55159,55160,55161,55162,55163,55164,55165,55166,55167,55168,55169,55170,55171,55172,55173,55174,55175,55176,55177,55178,55179,55180,55181,55182,55183,55184,55185,55186,55187,55188,55189,55190,55191,55192,55193,55194,55195,55196,55197,55198,55199,55200,55201,55202,55203,55216,55217,55218,55219,55220,55221,55222,55223,55224,55225,55226,55227,55228,55229,55230,55231,55232,55233,55234,55235,55236,55237,55238,55243,55244,55245,55246,55247,55248,55249,55250,55251,55252,55253,55254,55255,55256,55257,55258,55259,55260,55261,55262,55263,55264,55265,55266,55267,55268,55269,55270,55271,55272,55273,55274,55275,55276,55277,55278,55279,55280,55281,55282,55283,55284,55285,55286,55287,55288,55289,55290,55291,63744,63745,63746,63747,63748,63749,63750,63751,63752,63753,63754,63755,63756,63757,63758,63759,63760,63761,63762,63763,63764,63765,63766,63767,63768,63769,63770,63771,63772,63773,63774,63775,63776,63777,63778,63779,63780,63781,63782,63783,63784,63785,63786,63787,63788,63789,63790,63791,63792,63793,63794,63795,63796,63797,63798,63799,63800,63801,63802,63803,63804,63805,63806,63807,63808,63809,63810,63811,63812,63813,63814,63815,63816,63817,63818,63819,63820,63821,63822,63823,63824,63825,63826,63827,63828,63829,63830,63831,63832,63833,63834,63835,63836,63837,63838,63839,63840,63841,63842,63843,63844,63845,63846,63847,63848,63849,63850,63851,63852,63853,63854,63855,63856,63857,63858,63859,63860,63861,63862,63863,63864,63865,63866,63867,63868,63869,63870,63871,63872,63873,63874,63875,63876,63877,63878,63879,63880,63881,63882,63883,63884,63885,63886,63887,63888,63889,63890,63891,63892,63893,63894,63895,63896,63897,63898,63899,63900,63901,63902,63903,63904,63905,63906,63907,63908,63909,63910,63911,63912,63913,63914,63915,63916,63917,63918,63919,63920,63921,63922,63923,63924,63925,63926,63927,63928,63929,63930,63931,63932,63933,63934,63935,63936,63937,63938,63939,63940,63941,63942,63943,63944,63945,63946,63947,63948,63949,63950,63951,63952,63953,63954,63955,63956,63957,63958,63959,63960,63961,63962,63963,63964,63965,63966,63967,63968,63969,63970,63971,63972,63973,63974,63975,63976,63977,63978,63979,63980,63981,63982,63983,63984,63985,63986,63987,63988,63989,63990,63991,63992,63993,63994,63995,63996,63997,63998,63999,64000,64001,64002,64003,64004,64005,64006,64007,64008,64009,64010,64011,64012,64013,64014,64015,64016,64017,64018,64019,64020,64021,64022,64023,64024,64025,64026,64027,64028,64029,64030,64031,64032,64033,64034,64035,64036,64037,64038,64039,64040,64041,64042,64043,64044,64045,64046,64047,64048,64049,64050,64051,64052,64053,64054,64055,64056,64057,64058,64059,64060,64061,64062,64063,64064,64065,64066,64067,64068,64069,64070,64071,64072,64073,64074,64075,64076,64077,64078,64079,64080,64081,64082,64083,64084,64085,64086,64087,64088,64089,64090,64091,64092,64093,64094,64095,64096,64097,64098,64099,64100,64101,64102,64103,64104,64105,64106,64107,64108,64109,64112,64113,64114,64115,64116,64117,64118,64119,64120,64121,64122,64123,64124,64125,64126,64127,64128,64129,64130,64131,64132,64133,64134,64135,64136,64137,64138,64139,64140,64141,64142,64143,64144,64145,64146,64147,64148,64149,64150,64151,64152,64153,64154,64155,64156,64157,64158,64159,64160,64161,64162,64163,64164,64165,64166,64167,64168,64169,64170,64171,64172,64173,64174,64175,64176,64177,64178,64179,64180,64181,64182,64183,64184,64185,64186,64187,64188,64189,64190,64191,64192,64193,64194,64195,64196,64197,64198,64199,64200,64201,64202,64203,64204,64205,64206,64207,64208,64209,64210,64211,64212,64213,64214,64215,64216,64217,64256,64257,64258,64259,64260,64261,64262,64275,64276,64277,64278,64279,64285,64287,64288,64289,64290,64291,64292,64293,64294,64295,64296,64298,64299,64300,64301,64302,64303,64304,64305,64306,64307,64308,64309,64310,64312,64313,64314,64315,64316,64318,64320,64321,64323,64324,64326,64327,64328,64329,64330,64331,64332,64333,64334,64335,64336,64337,64338,64339,64340,64341,64342,64343,64344,64345,64346,64347,64348,64349,64350,64351,64352,64353,64354,64355,64356,64357,64358,64359,64360,64361,64362,64363,64364,64365,64366,64367,64368,64369,64370,64371,64372,64373,64374,64375,64376,64377,64378,64379,64380,64381,64382,64383,64384,64385,64386,64387,64388,64389,64390,64391,64392,64393,64394,64395,64396,64397,64398,64399,64400,64401,64402,64403,64404,64405,64406,64407,64408,64409,64410,64411,64412,64413,64414,64415,64416,64417,64418,64419,64420,64421,64422,64423,64424,64425,64426,64427,64428,64429,64430,64431,64432,64433,64467,64468,64469,64470,64471,64472,64473,64474,64475,64476,64477,64478,64479,64480,64481,64482,64483,64484,64485,64486,64487,64488,64489,64490,64491,64492,64493,64494,64495,64496,64497,64498,64499,64500,64501,64502,64503,64504,64505,64506,64507,64508,64509,64510,64511,64512,64513,64514,64515,64516,64517,64518,64519,64520,64521,64522,64523,64524,64525,64526,64527,64528,64529,64530,64531,64532,64533,64534,64535,64536,64537,64538,64539,64540,64541,64542,64543,64544,64545,64546,64547,64548,64549,64550,64551,64552,64553,64554,64555,64556,64557,64558,64559,64560,64561,64562,64563,64564,64565,64566,64567,64568,64569,64570,64571,64572,64573,64574,64575,64576,64577,64578,64579,64580,64581,64582,64583,64584,64585,64586,64587,64588,64589,64590,64591,64592,64593,64594,64595,64596,64597,64598,64599,64600,64601,64602,64603,64604,64605,64606,64607,64608,64609,64610,64611,64612,64613,64614,64615,64616,64617,64618,64619,64620,64621,64622,64623,64624,64625,64626,64627,64628,64629,64630,64631,64632,64633,64634,64635,64636,64637,64638,64639,64640,64641,64642,64643,64644,64645,64646,64647,64648,64649,64650,64651,64652,64653,64654,64655,64656,64657,64658,64659,64660,64661,64662,64663,64664,64665,64666,64667,64668,64669,64670,64671,64672,64673,64674,64675,64676,64677,64678,64679,64680,64681,64682,64683,64684,64685,64686,64687,64688,64689,64690,64691,64692,64693,64694,64695,64696,64697,64698,64699,64700,64701,64702,64703,64704,64705,64706,64707,64708,64709,64710,64711,64712,64713,64714,64715,64716,64717,64718,64719,64720,64721,64722,64723,64724,64725,64726,64727,64728,64729,64730,64731,64732,64733,64734,64735,64736,64737,64738,64739,64740,64741,64742,64743,64744,64745,64746,64747,64748,64749,64750,64751,64752,64753,64754,64755,64756,64757,64758,64759,64760,64761,64762,64763,64764,64765,64766,64767,64768,64769,64770,64771,64772,64773,64774,64775,64776,64777,64778,64779,64780,64781,64782,64783,64784,64785,64786,64787,64788,64789,64790,64791,64792,64793,64794,64795,64796,64797,64798,64799,64800,64801,64802,64803,64804,64805,64806,64807,64808,64809,64810,64811,64812,64813,64814,64815,64816,64817,64818,64819,64820,64821,64822,64823,64824,64825,64826,64827,64828,64829,64848,64849,64850,64851,64852,64853,64854,64855,64856,64857,64858,64859,64860,64861,64862,64863,64864,64865,64866,64867,64868,64869,64870,64871,64872,64873,64874,64875,64876,64877,64878,64879,64880,64881,64882,64883,64884,64885,64886,64887,64888,64889,64890,64891,64892,64893,64894,64895,64896,64897,64898,64899,64900,64901,64902,64903,64904,64905,64906,64907,64908,64909,64910,64911,64914,64915,64916,64917,64918,64919,64920,64921,64922,64923,64924,64925,64926,64927,64928,64929,64930,64931,64932,64933,64934,64935,64936,64937,64938,64939,64940,64941,64942,64943,64944,64945,64946,64947,64948,64949,64950,64951,64952,64953,64954,64955,64956,64957,64958,64959,64960,64961,64962,64963,64964,64965,64966,64967,65008,65009,65010,65011,65012,65013,65014,65015,65016,65017,65018,65019,65136,65137,65138,65139,65140,65142,65143,65144,65145,65146,65147,65148,65149,65150,65151,65152,65153,65154,65155,65156,65157,65158,65159,65160,65161,65162,65163,65164,65165,65166,65167,65168,65169,65170,65171,65172,65173,65174,65175,65176,65177,65178,65179,65180,65181,65182,65183,65184,65185,65186,65187,65188,65189,65190,65191,65192,65193,65194,65195,65196,65197,65198,65199,65200,65201,65202,65203,65204,65205,65206,65207,65208,65209,65210,65211,65212,65213,65214,65215,65216,65217,65218,65219,65220,65221,65222,65223,65224,65225,65226,65227,65228,65229,65230,65231,65232,65233,65234,65235,65236,65237,65238,65239,65240,65241,65242,65243,65244,65245,65246,65247,65248,65249,65250,65251,65252,65253,65254,65255,65256,65257,65258,65259,65260,65261,65262,65263,65264,65265,65266,65267,65268,65269,65270,65271,65272,65273,65274,65275,65276,65313,65314,65315,65316,65317,65318,65319,65320,65321,65322,65323,65324,65325,65326,65327,65328,65329,65330,65331,65332,65333,65334,65335,65336,65337,65338,65345,65346,65347,65348,65349,65350,65351,65352,65353,65354,65355,65356,65357,65358,65359,65360,65361,65362,65363,65364,65365,65366,65367,65368,65369,65370,65382,65383,65384,65385,65386,65387,65388,65389,65390,65391,65392,65393,65394,65395,65396,65397,65398,65399,65400,65401,65402,65403,65404,65405,65406,65407,65408,65409,65410,65411,65412,65413,65414,65415,65416,65417,65418,65419,65420,65421,65422,65423,65424,65425,65426,65427,65428,65429,65430,65431,65432,65433,65434,65435,65436,65437,65438,65439,65440,65441,65442,65443,65444,65445,65446,65447,65448,65449,65450,65451,65452,65453,65454,65455,65456,65457,65458,65459,65460,65461,65462,65463,65464,65465,65466,65467,65468,65469,65470,65474,65475,65476,65477,65478,65479,65482,65483,65484,65485,65486,65487,65490,65491,65492,65493,65494,65495,65498,65499,65500'; +var arr = str.split(',').map(function(code) { + return parseInt(code, 10); +}); +module.exports = arr; +},{}],"/../../../jshint/node_modules/console-browserify/index.js":[function(_dereq_,module,exports){ +(function (global){ +var util = _dereq_("util") +var assert = _dereq_("assert") +var now = _dereq_("date-now") + +var slice = Array.prototype.slice +var console +var times = {} + +if (typeof global !== "undefined" && global.console) { + console = global.console +} else if (typeof window !== "undefined" && window.console) { + console = window.console +} else { + console = {} +} + +var functions = [ + [log, "log"], + [info, "info"], + [warn, "warn"], + [error, "error"], + [time, "time"], + [timeEnd, "timeEnd"], + [trace, "trace"], + [dir, "dir"], + [consoleAssert, "assert"] +] + +for (var i = 0; i < functions.length; i++) { + var tuple = functions[i] + var f = tuple[0] + var name = tuple[1] + + if (!console[name]) { + console[name] = f + } +} + +module.exports = console + +function log() {} + +function info() { + console.log.apply(console, arguments) +} + +function warn() { + console.log.apply(console, arguments) +} + +function error() { + console.warn.apply(console, arguments) +} + +function time(label) { + times[label] = now() +} + +function timeEnd(label) { + var time = times[label] + if (!time) { + throw new Error("No such label: " + label) + } + + var duration = now() - time + console.log(label + ": " + duration + "ms") +} + +function trace() { + var err = new Error() + err.name = "Trace" + err.message = util.format.apply(null, arguments) + console.error(err.stack) +} + +function dir(object) { + console.log(util.inspect(object) + "\n") +} + +function consoleAssert(expression) { + if (!expression) { + var arr = slice.call(arguments, 1) + assert.ok(false, util.format.apply(null, arr)) + } +} + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"assert":"/node_modules/assert/assert.js","date-now":"/../../../jshint/node_modules/date-now/index.js","util":"/node_modules/util/util.js"}],"/../../../jshint/node_modules/date-now/index.js":[function(_dereq_,module,exports){ +module.exports = now + +function now() { + return new Date().getTime() +} + +},{}],"/../../../jshint/node_modules/lodash.clone/index.js":[function(_dereq_,module,exports){ +(function (global){ +var LARGE_ARRAY_SIZE = 200; +var HASH_UNDEFINED = '__lodash_hash_undefined__'; +var MAX_SAFE_INTEGER = 9007199254740991; +var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + boolTag = '[object Boolean]', + dateTag = '[object Date]', + errorTag = '[object Error]', + funcTag = '[object Function]', + genTag = '[object GeneratorFunction]', + mapTag = '[object Map]', + numberTag = '[object Number]', + objectTag = '[object Object]', + promiseTag = '[object Promise]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + symbolTag = '[object Symbol]', + weakMapTag = '[object WeakMap]'; + +var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]', + float32Tag = '[object Float32Array]', + float64Tag = '[object Float64Array]', + int8Tag = '[object Int8Array]', + int16Tag = '[object Int16Array]', + int32Tag = '[object Int32Array]', + uint8Tag = '[object Uint8Array]', + uint8ClampedTag = '[object Uint8ClampedArray]', + uint16Tag = '[object Uint16Array]', + uint32Tag = '[object Uint32Array]'; +var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; +var reFlags = /\w*$/; +var reIsHostCtor = /^\[object .+?Constructor\]$/; +var reIsUint = /^(?:0|[1-9]\d*)$/; +var cloneableTags = {}; +cloneableTags[argsTag] = cloneableTags[arrayTag] = +cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = +cloneableTags[boolTag] = cloneableTags[dateTag] = +cloneableTags[float32Tag] = cloneableTags[float64Tag] = +cloneableTags[int8Tag] = cloneableTags[int16Tag] = +cloneableTags[int32Tag] = cloneableTags[mapTag] = +cloneableTags[numberTag] = cloneableTags[objectTag] = +cloneableTags[regexpTag] = cloneableTags[setTag] = +cloneableTags[stringTag] = cloneableTags[symbolTag] = +cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = +cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true; +cloneableTags[errorTag] = cloneableTags[funcTag] = +cloneableTags[weakMapTag] = false; +var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; +var freeSelf = typeof self == 'object' && self && self.Object === Object && self; +var root = freeGlobal || freeSelf || Function('return this')(); +var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports; +var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; +var moduleExports = freeModule && freeModule.exports === freeExports; +function addMapEntry(map, pair) { + map.set(pair[0], pair[1]); + return map; +} +function addSetEntry(set, value) { + set.add(value); + return set; +} +function arrayEach(array, iteratee) { + var index = -1, + length = array ? array.length : 0; + + while (++index < length) { + if (iteratee(array[index], index, array) === false) { + break; + } + } + return array; +} +function arrayPush(array, values) { + var index = -1, + length = values.length, + offset = array.length; + + while (++index < length) { + array[offset + index] = values[index]; + } + return array; +} +function arrayReduce(array, iteratee, accumulator, initAccum) { + var index = -1, + length = array ? array.length : 0; + + if (initAccum && length) { + accumulator = array[++index]; + } + while (++index < length) { + accumulator = iteratee(accumulator, array[index], index, array); + } + return accumulator; +} +function baseTimes(n, iteratee) { + var index = -1, + result = Array(n); + + while (++index < n) { + result[index] = iteratee(index); + } + return result; +} +function getValue(object, key) { + return object == null ? undefined : object[key]; +} +function isHostObject(value) { + var result = false; + if (value != null && typeof value.toString != 'function') { + try { + result = !!(value + ''); + } catch (e) {} + } + return result; +} +function mapToArray(map) { + var index = -1, + result = Array(map.size); + + map.forEach(function(value, key) { + result[++index] = [key, value]; + }); + return result; +} +function overArg(func, transform) { + return function(arg) { + return func(transform(arg)); + }; +} +function setToArray(set) { + var index = -1, + result = Array(set.size); + + set.forEach(function(value) { + result[++index] = value; + }); + return result; +} +var arrayProto = Array.prototype, + funcProto = Function.prototype, + objectProto = Object.prototype; +var coreJsData = root['__core-js_shared__']; +var maskSrcKey = (function() { + var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); + return uid ? ('Symbol(src)_1.' + uid) : ''; +}()); +var funcToString = funcProto.toString; +var hasOwnProperty = objectProto.hasOwnProperty; +var objectToString = objectProto.toString; +var reIsNative = RegExp('^' + + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') + .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' +); +var Buffer = moduleExports ? root.Buffer : undefined, + Symbol = root.Symbol, + Uint8Array = root.Uint8Array, + getPrototype = overArg(Object.getPrototypeOf, Object), + objectCreate = Object.create, + propertyIsEnumerable = objectProto.propertyIsEnumerable, + splice = arrayProto.splice; +var nativeGetSymbols = Object.getOwnPropertySymbols, + nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined, + nativeKeys = overArg(Object.keys, Object); +var DataView = getNative(root, 'DataView'), + Map = getNative(root, 'Map'), + Promise = getNative(root, 'Promise'), + Set = getNative(root, 'Set'), + WeakMap = getNative(root, 'WeakMap'), + nativeCreate = getNative(Object, 'create'); +var dataViewCtorString = toSource(DataView), + mapCtorString = toSource(Map), + promiseCtorString = toSource(Promise), + setCtorString = toSource(Set), + weakMapCtorString = toSource(WeakMap); +var symbolProto = Symbol ? Symbol.prototype : undefined, + symbolValueOf = symbolProto ? symbolProto.valueOf : undefined; +function Hash(entries) { + var index = -1, + length = entries ? entries.length : 0; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} +function hashClear() { + this.__data__ = nativeCreate ? nativeCreate(null) : {}; +} +function hashDelete(key) { + return this.has(key) && delete this.__data__[key]; +} +function hashGet(key) { + var data = this.__data__; + if (nativeCreate) { + var result = data[key]; + return result === HASH_UNDEFINED ? undefined : result; + } + return hasOwnProperty.call(data, key) ? data[key] : undefined; +} +function hashHas(key) { + var data = this.__data__; + return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key); +} +function hashSet(key, value) { + var data = this.__data__; + data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; + return this; +} +Hash.prototype.clear = hashClear; +Hash.prototype['delete'] = hashDelete; +Hash.prototype.get = hashGet; +Hash.prototype.has = hashHas; +Hash.prototype.set = hashSet; +function ListCache(entries) { + var index = -1, + length = entries ? entries.length : 0; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} +function listCacheClear() { + this.__data__ = []; +} +function listCacheDelete(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + return false; + } + var lastIndex = data.length - 1; + if (index == lastIndex) { + data.pop(); + } else { + splice.call(data, index, 1); + } + return true; +} +function listCacheGet(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + return index < 0 ? undefined : data[index][1]; +} +function listCacheHas(key) { + return assocIndexOf(this.__data__, key) > -1; +} +function listCacheSet(key, value) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + data.push([key, value]); + } else { + data[index][1] = value; + } + return this; +} +ListCache.prototype.clear = listCacheClear; +ListCache.prototype['delete'] = listCacheDelete; +ListCache.prototype.get = listCacheGet; +ListCache.prototype.has = listCacheHas; +ListCache.prototype.set = listCacheSet; +function MapCache(entries) { + var index = -1, + length = entries ? entries.length : 0; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} +function mapCacheClear() { + this.__data__ = { + 'hash': new Hash, + 'map': new (Map || ListCache), + 'string': new Hash + }; +} +function mapCacheDelete(key) { + return getMapData(this, key)['delete'](key); +} +function mapCacheGet(key) { + return getMapData(this, key).get(key); +} +function mapCacheHas(key) { + return getMapData(this, key).has(key); +} +function mapCacheSet(key, value) { + getMapData(this, key).set(key, value); + return this; +} +MapCache.prototype.clear = mapCacheClear; +MapCache.prototype['delete'] = mapCacheDelete; +MapCache.prototype.get = mapCacheGet; +MapCache.prototype.has = mapCacheHas; +MapCache.prototype.set = mapCacheSet; +function Stack(entries) { + this.__data__ = new ListCache(entries); +} +function stackClear() { + this.__data__ = new ListCache; +} +function stackDelete(key) { + return this.__data__['delete'](key); +} +function stackGet(key) { + return this.__data__.get(key); +} +function stackHas(key) { + return this.__data__.has(key); +} +function stackSet(key, value) { + var cache = this.__data__; + if (cache instanceof ListCache) { + var pairs = cache.__data__; + if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) { + pairs.push([key, value]); + return this; + } + cache = this.__data__ = new MapCache(pairs); + } + cache.set(key, value); + return this; +} +Stack.prototype.clear = stackClear; +Stack.prototype['delete'] = stackDelete; +Stack.prototype.get = stackGet; +Stack.prototype.has = stackHas; +Stack.prototype.set = stackSet; +function arrayLikeKeys(value, inherited) { + var result = (isArray(value) || isArguments(value)) + ? baseTimes(value.length, String) + : []; + + var length = result.length, + skipIndexes = !!length; + + for (var key in value) { + if ((inherited || hasOwnProperty.call(value, key)) && + !(skipIndexes && (key == 'length' || isIndex(key, length)))) { + result.push(key); + } + } + return result; +} +function assignValue(object, key, value) { + var objValue = object[key]; + if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || + (value === undefined && !(key in object))) { + object[key] = value; + } +} +function assocIndexOf(array, key) { + var length = array.length; + while (length--) { + if (eq(array[length][0], key)) { + return length; + } + } + return -1; +} +function baseAssign(object, source) { + return object && copyObject(source, keys(source), object); +} +function baseClone(value, isDeep, isFull, customizer, key, object, stack) { + var result; + if (customizer) { + result = object ? customizer(value, key, object, stack) : customizer(value); + } + if (result !== undefined) { + return result; + } + if (!isObject(value)) { + return value; + } + var isArr = isArray(value); + if (isArr) { + result = initCloneArray(value); + if (!isDeep) { + return copyArray(value, result); + } + } else { + var tag = getTag(value), + isFunc = tag == funcTag || tag == genTag; + + if (isBuffer(value)) { + return cloneBuffer(value, isDeep); + } + if (tag == objectTag || tag == argsTag || (isFunc && !object)) { + if (isHostObject(value)) { + return object ? value : {}; + } + result = initCloneObject(isFunc ? {} : value); + if (!isDeep) { + return copySymbols(value, baseAssign(result, value)); + } + } else { + if (!cloneableTags[tag]) { + return object ? value : {}; + } + result = initCloneByTag(value, tag, baseClone, isDeep); + } + } + stack || (stack = new Stack); + var stacked = stack.get(value); + if (stacked) { + return stacked; + } + stack.set(value, result); + + if (!isArr) { + var props = isFull ? getAllKeys(value) : keys(value); + } + arrayEach(props || value, function(subValue, key) { + if (props) { + key = subValue; + subValue = value[key]; + } + assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack)); + }); + return result; +} +function baseCreate(proto) { + return isObject(proto) ? objectCreate(proto) : {}; +} +function baseGetAllKeys(object, keysFunc, symbolsFunc) { + var result = keysFunc(object); + return isArray(object) ? result : arrayPush(result, symbolsFunc(object)); +} +function baseGetTag(value) { + return objectToString.call(value); +} +function baseIsNative(value) { + if (!isObject(value) || isMasked(value)) { + return false; + } + var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor; + return pattern.test(toSource(value)); +} +function baseKeys(object) { + if (!isPrototype(object)) { + return nativeKeys(object); + } + var result = []; + for (var key in Object(object)) { + if (hasOwnProperty.call(object, key) && key != 'constructor') { + result.push(key); + } + } + return result; +} +function cloneBuffer(buffer, isDeep) { + if (isDeep) { + return buffer.slice(); + } + var result = new buffer.constructor(buffer.length); + buffer.copy(result); + return result; +} +function cloneArrayBuffer(arrayBuffer) { + var result = new arrayBuffer.constructor(arrayBuffer.byteLength); + new Uint8Array(result).set(new Uint8Array(arrayBuffer)); + return result; +} +function cloneDataView(dataView, isDeep) { + var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer; + return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength); +} +function cloneMap(map, isDeep, cloneFunc) { + var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map); + return arrayReduce(array, addMapEntry, new map.constructor); +} +function cloneRegExp(regexp) { + var result = new regexp.constructor(regexp.source, reFlags.exec(regexp)); + result.lastIndex = regexp.lastIndex; + return result; +} +function cloneSet(set, isDeep, cloneFunc) { + var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set); + return arrayReduce(array, addSetEntry, new set.constructor); +} +function cloneSymbol(symbol) { + return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {}; +} +function cloneTypedArray(typedArray, isDeep) { + var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer; + return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length); +} +function copyArray(source, array) { + var index = -1, + length = source.length; + + array || (array = Array(length)); + while (++index < length) { + array[index] = source[index]; + } + return array; +} +function copyObject(source, props, object, customizer) { + object || (object = {}); + + var index = -1, + length = props.length; + + while (++index < length) { + var key = props[index]; + + var newValue = customizer + ? customizer(object[key], source[key], key, object, source) + : undefined; + + assignValue(object, key, newValue === undefined ? source[key] : newValue); + } + return object; +} +function copySymbols(source, object) { + return copyObject(source, getSymbols(source), object); +} +function getAllKeys(object) { + return baseGetAllKeys(object, keys, getSymbols); +} +function getMapData(map, key) { + var data = map.__data__; + return isKeyable(key) + ? data[typeof key == 'string' ? 'string' : 'hash'] + : data.map; +} +function getNative(object, key) { + var value = getValue(object, key); + return baseIsNative(value) ? value : undefined; +} +var getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray; +var getTag = baseGetTag; +if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) || + (Map && getTag(new Map) != mapTag) || + (Promise && getTag(Promise.resolve()) != promiseTag) || + (Set && getTag(new Set) != setTag) || + (WeakMap && getTag(new WeakMap) != weakMapTag)) { + getTag = function(value) { + var result = objectToString.call(value), + Ctor = result == objectTag ? value.constructor : undefined, + ctorString = Ctor ? toSource(Ctor) : undefined; + + if (ctorString) { + switch (ctorString) { + case dataViewCtorString: return dataViewTag; + case mapCtorString: return mapTag; + case promiseCtorString: return promiseTag; + case setCtorString: return setTag; + case weakMapCtorString: return weakMapTag; + } + } + return result; + }; +} +function initCloneArray(array) { + var length = array.length, + result = array.constructor(length); + if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) { + result.index = array.index; + result.input = array.input; + } + return result; +} +function initCloneObject(object) { + return (typeof object.constructor == 'function' && !isPrototype(object)) + ? baseCreate(getPrototype(object)) + : {}; +} +function initCloneByTag(object, tag, cloneFunc, isDeep) { + var Ctor = object.constructor; + switch (tag) { + case arrayBufferTag: + return cloneArrayBuffer(object); + + case boolTag: + case dateTag: + return new Ctor(+object); + + case dataViewTag: + return cloneDataView(object, isDeep); + + case float32Tag: case float64Tag: + case int8Tag: case int16Tag: case int32Tag: + case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag: + return cloneTypedArray(object, isDeep); + + case mapTag: + return cloneMap(object, isDeep, cloneFunc); + + case numberTag: + case stringTag: + return new Ctor(object); + + case regexpTag: + return cloneRegExp(object); + + case setTag: + return cloneSet(object, isDeep, cloneFunc); + + case symbolTag: + return cloneSymbol(object); + } +} +function isIndex(value, length) { + length = length == null ? MAX_SAFE_INTEGER : length; + return !!length && + (typeof value == 'number' || reIsUint.test(value)) && + (value > -1 && value % 1 == 0 && value < length); +} +function isKeyable(value) { + var type = typeof value; + return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') + ? (value !== '__proto__') + : (value === null); +} +function isMasked(func) { + return !!maskSrcKey && (maskSrcKey in func); +} +function isPrototype(value) { + var Ctor = value && value.constructor, + proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto; + + return value === proto; +} +function toSource(func) { + if (func != null) { + try { + return funcToString.call(func); + } catch (e) {} + try { + return (func + ''); + } catch (e) {} + } + return ''; +} +function clone(value) { + return baseClone(value, false, true); +} +function eq(value, other) { + return value === other || (value !== value && other !== other); +} +function isArguments(value) { + return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') && + (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag); +} +var isArray = Array.isArray; +function isArrayLike(value) { + return value != null && isLength(value.length) && !isFunction(value); +} +function isArrayLikeObject(value) { + return isObjectLike(value) && isArrayLike(value); +} +var isBuffer = nativeIsBuffer || stubFalse; +function isFunction(value) { + var tag = isObject(value) ? objectToString.call(value) : ''; + return tag == funcTag || tag == genTag; +} +function isLength(value) { + return typeof value == 'number' && + value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; +} +function isObject(value) { + var type = typeof value; + return !!value && (type == 'object' || type == 'function'); +} +function isObjectLike(value) { + return !!value && typeof value == 'object'; +} +function keys(object) { + return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); +} +function stubArray() { + return []; +} +function stubFalse() { + return false; +} + +module.exports = clone; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],"/../../../jshint/node_modules/lodash.slice/index.js":[function(_dereq_,module,exports){ +var INFINITY = 1 / 0, + MAX_SAFE_INTEGER = 9007199254740991, + MAX_INTEGER = 1.7976931348623157e+308, + NAN = 0 / 0; +var funcTag = '[object Function]', + genTag = '[object GeneratorFunction]', + symbolTag = '[object Symbol]'; +var reTrim = /^\s+|\s+$/g; +var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; +var reIsBinary = /^0b[01]+$/i; +var reIsOctal = /^0o[0-7]+$/i; +var reIsUint = /^(?:0|[1-9]\d*)$/; +var freeParseInt = parseInt; +var objectProto = Object.prototype; +var objectToString = objectProto.toString; +function baseSlice(array, start, end) { + var index = -1, + length = array.length; + + if (start < 0) { + start = -start > length ? 0 : (length + start); + } + end = end > length ? length : end; + if (end < 0) { + end += length; + } + length = start > end ? 0 : ((end - start) >>> 0); + start >>>= 0; + + var result = Array(length); + while (++index < length) { + result[index] = array[index + start]; + } + return result; +} +function isIndex(value, length) { + length = length == null ? MAX_SAFE_INTEGER : length; + return !!length && + (typeof value == 'number' || reIsUint.test(value)) && + (value > -1 && value % 1 == 0 && value < length); +} +function isIterateeCall(value, index, object) { + if (!isObject(object)) { + return false; + } + var type = typeof index; + if (type == 'number' + ? (isArrayLike(object) && isIndex(index, object.length)) + : (type == 'string' && index in object) + ) { + return eq(object[index], value); + } + return false; +} +function slice(array, start, end) { + var length = array ? array.length : 0; + if (!length) { + return []; + } + if (end && typeof end != 'number' && isIterateeCall(array, start, end)) { + start = 0; + end = length; + } + else { + start = start == null ? 0 : toInteger(start); + end = end === undefined ? length : toInteger(end); + } + return baseSlice(array, start, end); +} +function eq(value, other) { + return value === other || (value !== value && other !== other); +} +function isArrayLike(value) { + return value != null && isLength(value.length) && !isFunction(value); +} +function isFunction(value) { + var tag = isObject(value) ? objectToString.call(value) : ''; + return tag == funcTag || tag == genTag; +} +function isLength(value) { + return typeof value == 'number' && + value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; +} +function isObject(value) { + var type = typeof value; + return !!value && (type == 'object' || type == 'function'); +} +function isObjectLike(value) { + return !!value && typeof value == 'object'; +} +function isSymbol(value) { + return typeof value == 'symbol' || + (isObjectLike(value) && objectToString.call(value) == symbolTag); +} +function toFinite(value) { + if (!value) { + return value === 0 ? value : 0; + } + value = toNumber(value); + if (value === INFINITY || value === -INFINITY) { + var sign = (value < 0 ? -1 : 1); + return sign * MAX_INTEGER; + } + return value === value ? value : 0; +} +function toInteger(value) { + var result = toFinite(value), + remainder = result % 1; + + return result === result ? (remainder ? result - remainder : result) : 0; +} +function toNumber(value) { + if (typeof value == 'number') { + return value; + } + if (isSymbol(value)) { + return NAN; + } + if (isObject(value)) { + var other = typeof value.valueOf == 'function' ? value.valueOf() : value; + value = isObject(other) ? (other + '') : other; + } + if (typeof value != 'string') { + return value === 0 ? value : +value; + } + value = value.replace(reTrim, ''); + var isBinary = reIsBinary.test(value); + return (isBinary || reIsOctal.test(value)) + ? freeParseInt(value.slice(2), isBinary ? 2 : 8) + : (reIsBadHex.test(value) ? NAN : +value); +} + +module.exports = slice; + +},{}],"/../../../jshint/node_modules/underscore/underscore-umd.js":[function(_dereq_,module,exports){ +(function (global){ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define('underscore', factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (function () { + var current = global._; + var exports = global._ = factory(); + exports.noConflict = function () { global._ = current; return exports; }; + }())); +}(this, (function () { + var VERSION = '1.13.4'; + var root = (typeof self == 'object' && self.self === self && self) || + (typeof global == 'object' && global.global === global && global) || + Function('return this')() || + {}; + var ArrayProto = Array.prototype, ObjProto = Object.prototype; + var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null; + var push = ArrayProto.push, + slice = ArrayProto.slice, + toString = ObjProto.toString, + hasOwnProperty = ObjProto.hasOwnProperty; + var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined', + supportsDataView = typeof DataView !== 'undefined'; + var nativeIsArray = Array.isArray, + nativeKeys = Object.keys, + nativeCreate = Object.create, + nativeIsView = supportsArrayBuffer && ArrayBuffer.isView; + var _isNaN = isNaN, + _isFinite = isFinite; + var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString'); + var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString', + 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; + var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1; + function restArguments(func, startIndex) { + startIndex = startIndex == null ? func.length - 1 : +startIndex; + return function() { + var length = Math.max(arguments.length - startIndex, 0), + rest = Array(length), + index = 0; + for (; index < length; index++) { + rest[index] = arguments[index + startIndex]; + } + switch (startIndex) { + case 0: return func.call(this, rest); + case 1: return func.call(this, arguments[0], rest); + case 2: return func.call(this, arguments[0], arguments[1], rest); + } + var args = Array(startIndex + 1); + for (index = 0; index < startIndex; index++) { + args[index] = arguments[index]; + } + args[startIndex] = rest; + return func.apply(this, args); + }; + } + function isObject(obj) { + var type = typeof obj; + return type === 'function' || (type === 'object' && !!obj); + } + function isNull(obj) { + return obj === null; + } + function isUndefined(obj) { + return obj === void 0; + } + function isBoolean(obj) { + return obj === true || obj === false || toString.call(obj) === '[object Boolean]'; + } + function isElement(obj) { + return !!(obj && obj.nodeType === 1); + } + function tagTester(name) { + var tag = '[object ' + name + ']'; + return function(obj) { + return toString.call(obj) === tag; + }; + } + + var isString = tagTester('String'); + + var isNumber = tagTester('Number'); + + var isDate = tagTester('Date'); + + var isRegExp = tagTester('RegExp'); + + var isError = tagTester('Error'); + + var isSymbol = tagTester('Symbol'); + + var isArrayBuffer = tagTester('ArrayBuffer'); + + var isFunction = tagTester('Function'); + var nodelist = root.document && root.document.childNodes; + if (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') { + isFunction = function(obj) { + return typeof obj == 'function' || false; + }; + } + + var isFunction$1 = isFunction; + + var hasObjectTag = tagTester('Object'); + var hasStringTagBug = ( + supportsDataView && hasObjectTag(new DataView(new ArrayBuffer(8))) + ), + isIE11 = (typeof Map !== 'undefined' && hasObjectTag(new Map)); + + var isDataView = tagTester('DataView'); + function ie10IsDataView(obj) { + return obj != null && isFunction$1(obj.getInt8) && isArrayBuffer(obj.buffer); + } + + var isDataView$1 = (hasStringTagBug ? ie10IsDataView : isDataView); + var isArray = nativeIsArray || tagTester('Array'); + function has$1(obj, key) { + return obj != null && hasOwnProperty.call(obj, key); + } + + var isArguments = tagTester('Arguments'); + (function() { + if (!isArguments(arguments)) { + isArguments = function(obj) { + return has$1(obj, 'callee'); + }; + } + }()); + + var isArguments$1 = isArguments; + function isFinite$1(obj) { + return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj)); + } + function isNaN$1(obj) { + return isNumber(obj) && _isNaN(obj); + } + function constant(value) { + return function() { + return value; + }; + } + function createSizePropertyCheck(getSizeProperty) { + return function(collection) { + var sizeProperty = getSizeProperty(collection); + return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX; + } + } + function shallowProperty(key) { + return function(obj) { + return obj == null ? void 0 : obj[key]; + }; + } + var getByteLength = shallowProperty('byteLength'); + var isBufferLike = createSizePropertyCheck(getByteLength); + var typedArrayPattern = /\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/; + function isTypedArray(obj) { + return nativeIsView ? (nativeIsView(obj) && !isDataView$1(obj)) : + isBufferLike(obj) && typedArrayPattern.test(toString.call(obj)); + } + + var isTypedArray$1 = supportsArrayBuffer ? isTypedArray : constant(false); + var getLength = shallowProperty('length'); + function emulatedSet(keys) { + var hash = {}; + for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true; + return { + contains: function(key) { return hash[key] === true; }, + push: function(key) { + hash[key] = true; + return keys.push(key); + } + }; + } + function collectNonEnumProps(obj, keys) { + keys = emulatedSet(keys); + var nonEnumIdx = nonEnumerableProps.length; + var constructor = obj.constructor; + var proto = (isFunction$1(constructor) && constructor.prototype) || ObjProto; + var prop = 'constructor'; + if (has$1(obj, prop) && !keys.contains(prop)) keys.push(prop); + + while (nonEnumIdx--) { + prop = nonEnumerableProps[nonEnumIdx]; + if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) { + keys.push(prop); + } + } + } + function keys(obj) { + if (!isObject(obj)) return []; + if (nativeKeys) return nativeKeys(obj); + var keys = []; + for (var key in obj) if (has$1(obj, key)) keys.push(key); + if (hasEnumBug) collectNonEnumProps(obj, keys); + return keys; + } + function isEmpty(obj) { + if (obj == null) return true; + var length = getLength(obj); + if (typeof length == 'number' && ( + isArray(obj) || isString(obj) || isArguments$1(obj) + )) return length === 0; + return getLength(keys(obj)) === 0; + } + function isMatch(object, attrs) { + var _keys = keys(attrs), length = _keys.length; + if (object == null) return !length; + var obj = Object(object); + for (var i = 0; i < length; i++) { + var key = _keys[i]; + if (attrs[key] !== obj[key] || !(key in obj)) return false; + } + return true; + } + function _$1(obj) { + if (obj instanceof _$1) return obj; + if (!(this instanceof _$1)) return new _$1(obj); + this._wrapped = obj; + } + + _$1.VERSION = VERSION; + _$1.prototype.value = function() { + return this._wrapped; + }; + _$1.prototype.valueOf = _$1.prototype.toJSON = _$1.prototype.value; + + _$1.prototype.toString = function() { + return String(this._wrapped); + }; + function toBufferView(bufferSource) { + return new Uint8Array( + bufferSource.buffer || bufferSource, + bufferSource.byteOffset || 0, + getByteLength(bufferSource) + ); + } + var tagDataView = '[object DataView]'; + function eq(a, b, aStack, bStack) { + if (a === b) return a !== 0 || 1 / a === 1 / b; + if (a == null || b == null) return false; + if (a !== a) return b !== b; + var type = typeof a; + if (type !== 'function' && type !== 'object' && typeof b != 'object') return false; + return deepEq(a, b, aStack, bStack); + } + function deepEq(a, b, aStack, bStack) { + if (a instanceof _$1) a = a._wrapped; + if (b instanceof _$1) b = b._wrapped; + var className = toString.call(a); + if (className !== toString.call(b)) return false; + if (hasStringTagBug && className == '[object Object]' && isDataView$1(a)) { + if (!isDataView$1(b)) return false; + className = tagDataView; + } + switch (className) { + case '[object RegExp]': + case '[object String]': + return '' + a === '' + b; + case '[object Number]': + if (+a !== +a) return +b !== +b; + return +a === 0 ? 1 / +a === 1 / b : +a === +b; + case '[object Date]': + case '[object Boolean]': + return +a === +b; + case '[object Symbol]': + return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b); + case '[object ArrayBuffer]': + case tagDataView: + return deepEq(toBufferView(a), toBufferView(b), aStack, bStack); + } + + var areArrays = className === '[object Array]'; + if (!areArrays && isTypedArray$1(a)) { + var byteLength = getByteLength(a); + if (byteLength !== getByteLength(b)) return false; + if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true; + areArrays = true; + } + if (!areArrays) { + if (typeof a != 'object' || typeof b != 'object') return false; + var aCtor = a.constructor, bCtor = b.constructor; + if (aCtor !== bCtor && !(isFunction$1(aCtor) && aCtor instanceof aCtor && + isFunction$1(bCtor) && bCtor instanceof bCtor) + && ('constructor' in a && 'constructor' in b)) { + return false; + } + } + aStack = aStack || []; + bStack = bStack || []; + var length = aStack.length; + while (length--) { + if (aStack[length] === a) return bStack[length] === b; + } + aStack.push(a); + bStack.push(b); + if (areArrays) { + length = a.length; + if (length !== b.length) return false; + while (length--) { + if (!eq(a[length], b[length], aStack, bStack)) return false; + } + } else { + var _keys = keys(a), key; + length = _keys.length; + if (keys(b).length !== length) return false; + while (length--) { + key = _keys[length]; + if (!(has$1(b, key) && eq(a[key], b[key], aStack, bStack))) return false; + } + } + aStack.pop(); + bStack.pop(); + return true; + } + function isEqual(a, b) { + return eq(a, b); + } + function allKeys(obj) { + if (!isObject(obj)) return []; + var keys = []; + for (var key in obj) keys.push(key); + if (hasEnumBug) collectNonEnumProps(obj, keys); + return keys; + } + function ie11fingerprint(methods) { + var length = getLength(methods); + return function(obj) { + if (obj == null) return false; + var keys = allKeys(obj); + if (getLength(keys)) return false; + for (var i = 0; i < length; i++) { + if (!isFunction$1(obj[methods[i]])) return false; + } + return methods !== weakMapMethods || !isFunction$1(obj[forEachName]); + }; + } + var forEachName = 'forEach', + hasName = 'has', + commonInit = ['clear', 'delete'], + mapTail = ['get', hasName, 'set']; + var mapMethods = commonInit.concat(forEachName, mapTail), + weakMapMethods = commonInit.concat(mapTail), + setMethods = ['add'].concat(commonInit, forEachName, hasName); + + var isMap = isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map'); + + var isWeakMap = isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap'); + + var isSet = isIE11 ? ie11fingerprint(setMethods) : tagTester('Set'); + + var isWeakSet = tagTester('WeakSet'); + function values(obj) { + var _keys = keys(obj); + var length = _keys.length; + var values = Array(length); + for (var i = 0; i < length; i++) { + values[i] = obj[_keys[i]]; + } + return values; + } + function pairs(obj) { + var _keys = keys(obj); + var length = _keys.length; + var pairs = Array(length); + for (var i = 0; i < length; i++) { + pairs[i] = [_keys[i], obj[_keys[i]]]; + } + return pairs; + } + function invert(obj) { + var result = {}; + var _keys = keys(obj); + for (var i = 0, length = _keys.length; i < length; i++) { + result[obj[_keys[i]]] = _keys[i]; + } + return result; + } + function functions(obj) { + var names = []; + for (var key in obj) { + if (isFunction$1(obj[key])) names.push(key); + } + return names.sort(); + } + function createAssigner(keysFunc, defaults) { + return function(obj) { + var length = arguments.length; + if (defaults) obj = Object(obj); + if (length < 2 || obj == null) return obj; + for (var index = 1; index < length; index++) { + var source = arguments[index], + keys = keysFunc(source), + l = keys.length; + for (var i = 0; i < l; i++) { + var key = keys[i]; + if (!defaults || obj[key] === void 0) obj[key] = source[key]; + } + } + return obj; + }; + } + var extend = createAssigner(allKeys); + var extendOwn = createAssigner(keys); + var defaults = createAssigner(allKeys, true); + function ctor() { + return function(){}; + } + function baseCreate(prototype) { + if (!isObject(prototype)) return {}; + if (nativeCreate) return nativeCreate(prototype); + var Ctor = ctor(); + Ctor.prototype = prototype; + var result = new Ctor; + Ctor.prototype = null; + return result; + } + function create(prototype, props) { + var result = baseCreate(prototype); + if (props) extendOwn(result, props); + return result; + } + function clone(obj) { + if (!isObject(obj)) return obj; + return isArray(obj) ? obj.slice() : extend({}, obj); + } + function tap(obj, interceptor) { + interceptor(obj); + return obj; + } + function toPath$1(path) { + return isArray(path) ? path : [path]; + } + _$1.toPath = toPath$1; + function toPath(path) { + return _$1.toPath(path); + } + function deepGet(obj, path) { + var length = path.length; + for (var i = 0; i < length; i++) { + if (obj == null) return void 0; + obj = obj[path[i]]; + } + return length ? obj : void 0; + } + function get(object, path, defaultValue) { + var value = deepGet(object, toPath(path)); + return isUndefined(value) ? defaultValue : value; + } + function has(obj, path) { + path = toPath(path); + var length = path.length; + for (var i = 0; i < length; i++) { + var key = path[i]; + if (!has$1(obj, key)) return false; + obj = obj[key]; + } + return !!length; + } + function identity(value) { + return value; + } + function matcher(attrs) { + attrs = extendOwn({}, attrs); + return function(obj) { + return isMatch(obj, attrs); + }; + } + function property(path) { + path = toPath(path); + return function(obj) { + return deepGet(obj, path); + }; + } + function optimizeCb(func, context, argCount) { + if (context === void 0) return func; + switch (argCount == null ? 3 : argCount) { + case 1: return function(value) { + return func.call(context, value); + }; + case 3: return function(value, index, collection) { + return func.call(context, value, index, collection); + }; + case 4: return function(accumulator, value, index, collection) { + return func.call(context, accumulator, value, index, collection); + }; + } + return function() { + return func.apply(context, arguments); + }; + } + function baseIteratee(value, context, argCount) { + if (value == null) return identity; + if (isFunction$1(value)) return optimizeCb(value, context, argCount); + if (isObject(value) && !isArray(value)) return matcher(value); + return property(value); + } + function iteratee(value, context) { + return baseIteratee(value, context, Infinity); + } + _$1.iteratee = iteratee; + function cb(value, context, argCount) { + if (_$1.iteratee !== iteratee) return _$1.iteratee(value, context); + return baseIteratee(value, context, argCount); + } + function mapObject(obj, iteratee, context) { + iteratee = cb(iteratee, context); + var _keys = keys(obj), + length = _keys.length, + results = {}; + for (var index = 0; index < length; index++) { + var currentKey = _keys[index]; + results[currentKey] = iteratee(obj[currentKey], currentKey, obj); + } + return results; + } + function noop(){} + function propertyOf(obj) { + if (obj == null) return noop; + return function(path) { + return get(obj, path); + }; + } + function times(n, iteratee, context) { + var accum = Array(Math.max(0, n)); + iteratee = optimizeCb(iteratee, context, 1); + for (var i = 0; i < n; i++) accum[i] = iteratee(i); + return accum; + } + function random(min, max) { + if (max == null) { + max = min; + min = 0; + } + return min + Math.floor(Math.random() * (max - min + 1)); + } + var now = Date.now || function() { + return new Date().getTime(); + }; + function createEscaper(map) { + var escaper = function(match) { + return map[match]; + }; + var source = '(?:' + keys(map).join('|') + ')'; + var testRegexp = RegExp(source); + var replaceRegexp = RegExp(source, 'g'); + return function(string) { + string = string == null ? '' : '' + string; + return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string; + }; + } + var escapeMap = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''', + '`': '`' + }; + var _escape = createEscaper(escapeMap); + var unescapeMap = invert(escapeMap); + var _unescape = createEscaper(unescapeMap); + var templateSettings = _$1.templateSettings = { + evaluate: /<%([\s\S]+?)%>/g, + interpolate: /<%=([\s\S]+?)%>/g, + escape: /<%-([\s\S]+?)%>/g + }; + var noMatch = /(.)^/; + var escapes = { + "'": "'", + '\\': '\\', + '\r': 'r', + '\n': 'n', + '\u2028': 'u2028', + '\u2029': 'u2029' + }; + + var escapeRegExp = /\\|'|\r|\n|\u2028|\u2029/g; + + function escapeChar(match) { + return '\\' + escapes[match]; + } + var bareIdentifier = /^\s*(\w|\$)+\s*$/; + function template(text, settings, oldSettings) { + if (!settings && oldSettings) settings = oldSettings; + settings = defaults({}, settings, _$1.templateSettings); + var matcher = RegExp([ + (settings.escape || noMatch).source, + (settings.interpolate || noMatch).source, + (settings.evaluate || noMatch).source + ].join('|') + '|$', 'g'); + var index = 0; + var source = "__p+='"; + text.replace(matcher, function(match, escape, interpolate, evaluate, offset) { + source += text.slice(index, offset).replace(escapeRegExp, escapeChar); + index = offset + match.length; + + if (escape) { + source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'"; + } else if (interpolate) { + source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'"; + } else if (evaluate) { + source += "';\n" + evaluate + "\n__p+='"; + } + return match; + }); + source += "';\n"; + + var argument = settings.variable; + if (argument) { + if (!bareIdentifier.test(argument)) throw new Error( + 'variable is not a bare identifier: ' + argument + ); + } else { + source = 'with(obj||{}){\n' + source + '}\n'; + argument = 'obj'; + } + + source = "var __t,__p='',__j=Array.prototype.join," + + "print=function(){__p+=__j.call(arguments,'');};\n" + + source + 'return __p;\n'; + + var render; + try { + render = new Function(argument, '_', source); + } catch (e) { + e.source = source; + throw e; + } + + var template = function(data) { + return render.call(this, data, _$1); + }; + template.source = 'function(' + argument + '){\n' + source + '}'; + + return template; + } + function result(obj, path, fallback) { + path = toPath(path); + var length = path.length; + if (!length) { + return isFunction$1(fallback) ? fallback.call(obj) : fallback; + } + for (var i = 0; i < length; i++) { + var prop = obj == null ? void 0 : obj[path[i]]; + if (prop === void 0) { + prop = fallback; + i = length; // Ensure we don't continue iterating. + } + obj = isFunction$1(prop) ? prop.call(obj) : prop; + } + return obj; + } + var idCounter = 0; + function uniqueId(prefix) { + var id = ++idCounter + ''; + return prefix ? prefix + id : id; + } + function chain(obj) { + var instance = _$1(obj); + instance._chain = true; + return instance; + } + function executeBound(sourceFunc, boundFunc, context, callingContext, args) { + if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args); + var self = baseCreate(sourceFunc.prototype); + var result = sourceFunc.apply(self, args); + if (isObject(result)) return result; + return self; + } + var partial = restArguments(function(func, boundArgs) { + var placeholder = partial.placeholder; + var bound = function() { + var position = 0, length = boundArgs.length; + var args = Array(length); + for (var i = 0; i < length; i++) { + args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i]; + } + while (position < arguments.length) args.push(arguments[position++]); + return executeBound(func, bound, this, this, args); + }; + return bound; + }); + + partial.placeholder = _$1; + var bind = restArguments(function(func, context, args) { + if (!isFunction$1(func)) throw new TypeError('Bind must be called on a function'); + var bound = restArguments(function(callArgs) { + return executeBound(func, bound, context, this, args.concat(callArgs)); + }); + return bound; + }); + var isArrayLike = createSizePropertyCheck(getLength); + function flatten$1(input, depth, strict, output) { + output = output || []; + if (!depth && depth !== 0) { + depth = Infinity; + } else if (depth <= 0) { + return output.concat(input); + } + var idx = output.length; + for (var i = 0, length = getLength(input); i < length; i++) { + var value = input[i]; + if (isArrayLike(value) && (isArray(value) || isArguments$1(value))) { + if (depth > 1) { + flatten$1(value, depth - 1, strict, output); + idx = output.length; + } else { + var j = 0, len = value.length; + while (j < len) output[idx++] = value[j++]; + } + } else if (!strict) { + output[idx++] = value; + } + } + return output; + } + var bindAll = restArguments(function(obj, keys) { + keys = flatten$1(keys, false, false); + var index = keys.length; + if (index < 1) throw new Error('bindAll must be passed function names'); + while (index--) { + var key = keys[index]; + obj[key] = bind(obj[key], obj); + } + return obj; + }); + function memoize(func, hasher) { + var memoize = function(key) { + var cache = memoize.cache; + var address = '' + (hasher ? hasher.apply(this, arguments) : key); + if (!has$1(cache, address)) cache[address] = func.apply(this, arguments); + return cache[address]; + }; + memoize.cache = {}; + return memoize; + } + var delay = restArguments(function(func, wait, args) { + return setTimeout(function() { + return func.apply(null, args); + }, wait); + }); + var defer = partial(delay, _$1, 1); + function throttle(func, wait, options) { + var timeout, context, args, result; + var previous = 0; + if (!options) options = {}; + + var later = function() { + previous = options.leading === false ? 0 : now(); + timeout = null; + result = func.apply(context, args); + if (!timeout) context = args = null; + }; + + var throttled = function() { + var _now = now(); + if (!previous && options.leading === false) previous = _now; + var remaining = wait - (_now - previous); + context = this; + args = arguments; + if (remaining <= 0 || remaining > wait) { + if (timeout) { + clearTimeout(timeout); + timeout = null; + } + previous = _now; + result = func.apply(context, args); + if (!timeout) context = args = null; + } else if (!timeout && options.trailing !== false) { + timeout = setTimeout(later, remaining); + } + return result; + }; + + throttled.cancel = function() { + clearTimeout(timeout); + previous = 0; + timeout = context = args = null; + }; + + return throttled; + } + function debounce(func, wait, immediate) { + var timeout, previous, args, result, context; + + var later = function() { + var passed = now() - previous; + if (wait > passed) { + timeout = setTimeout(later, wait - passed); + } else { + timeout = null; + if (!immediate) result = func.apply(context, args); + if (!timeout) args = context = null; + } + }; + + var debounced = restArguments(function(_args) { + context = this; + args = _args; + previous = now(); + if (!timeout) { + timeout = setTimeout(later, wait); + if (immediate) result = func.apply(context, args); + } + return result; + }); + + debounced.cancel = function() { + clearTimeout(timeout); + timeout = args = context = null; + }; + + return debounced; + } + function wrap(func, wrapper) { + return partial(wrapper, func); + } + function negate(predicate) { + return function() { + return !predicate.apply(this, arguments); + }; + } + function compose() { + var args = arguments; + var start = args.length - 1; + return function() { + var i = start; + var result = args[start].apply(this, arguments); + while (i--) result = args[i].call(this, result); + return result; + }; + } + function after(times, func) { + return function() { + if (--times < 1) { + return func.apply(this, arguments); + } + }; + } + function before(times, func) { + var memo; + return function() { + if (--times > 0) { + memo = func.apply(this, arguments); + } + if (times <= 1) func = null; + return memo; + }; + } + var once = partial(before, 2); + function findKey(obj, predicate, context) { + predicate = cb(predicate, context); + var _keys = keys(obj), key; + for (var i = 0, length = _keys.length; i < length; i++) { + key = _keys[i]; + if (predicate(obj[key], key, obj)) return key; + } + } + function createPredicateIndexFinder(dir) { + return function(array, predicate, context) { + predicate = cb(predicate, context); + var length = getLength(array); + var index = dir > 0 ? 0 : length - 1; + for (; index >= 0 && index < length; index += dir) { + if (predicate(array[index], index, array)) return index; + } + return -1; + }; + } + var findIndex = createPredicateIndexFinder(1); + var findLastIndex = createPredicateIndexFinder(-1); + function sortedIndex(array, obj, iteratee, context) { + iteratee = cb(iteratee, context, 1); + var value = iteratee(obj); + var low = 0, high = getLength(array); + while (low < high) { + var mid = Math.floor((low + high) / 2); + if (iteratee(array[mid]) < value) low = mid + 1; else high = mid; + } + return low; + } + function createIndexFinder(dir, predicateFind, sortedIndex) { + return function(array, item, idx) { + var i = 0, length = getLength(array); + if (typeof idx == 'number') { + if (dir > 0) { + i = idx >= 0 ? idx : Math.max(idx + length, i); + } else { + length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1; + } + } else if (sortedIndex && idx && length) { + idx = sortedIndex(array, item); + return array[idx] === item ? idx : -1; + } + if (item !== item) { + idx = predicateFind(slice.call(array, i, length), isNaN$1); + return idx >= 0 ? idx + i : -1; + } + for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) { + if (array[idx] === item) return idx; + } + return -1; + }; + } + var indexOf = createIndexFinder(1, findIndex, sortedIndex); + var lastIndexOf = createIndexFinder(-1, findLastIndex); + function find(obj, predicate, context) { + var keyFinder = isArrayLike(obj) ? findIndex : findKey; + var key = keyFinder(obj, predicate, context); + if (key !== void 0 && key !== -1) return obj[key]; + } + function findWhere(obj, attrs) { + return find(obj, matcher(attrs)); + } + function each(obj, iteratee, context) { + iteratee = optimizeCb(iteratee, context); + var i, length; + if (isArrayLike(obj)) { + for (i = 0, length = obj.length; i < length; i++) { + iteratee(obj[i], i, obj); + } + } else { + var _keys = keys(obj); + for (i = 0, length = _keys.length; i < length; i++) { + iteratee(obj[_keys[i]], _keys[i], obj); + } + } + return obj; + } + function map(obj, iteratee, context) { + iteratee = cb(iteratee, context); + var _keys = !isArrayLike(obj) && keys(obj), + length = (_keys || obj).length, + results = Array(length); + for (var index = 0; index < length; index++) { + var currentKey = _keys ? _keys[index] : index; + results[index] = iteratee(obj[currentKey], currentKey, obj); + } + return results; + } + function createReduce(dir) { + var reducer = function(obj, iteratee, memo, initial) { + var _keys = !isArrayLike(obj) && keys(obj), + length = (_keys || obj).length, + index = dir > 0 ? 0 : length - 1; + if (!initial) { + memo = obj[_keys ? _keys[index] : index]; + index += dir; + } + for (; index >= 0 && index < length; index += dir) { + var currentKey = _keys ? _keys[index] : index; + memo = iteratee(memo, obj[currentKey], currentKey, obj); + } + return memo; + }; + + return function(obj, iteratee, memo, context) { + var initial = arguments.length >= 3; + return reducer(obj, optimizeCb(iteratee, context, 4), memo, initial); + }; + } + var reduce = createReduce(1); + var reduceRight = createReduce(-1); + function filter(obj, predicate, context) { + var results = []; + predicate = cb(predicate, context); + each(obj, function(value, index, list) { + if (predicate(value, index, list)) results.push(value); + }); + return results; + } + function reject(obj, predicate, context) { + return filter(obj, negate(cb(predicate)), context); + } + function every(obj, predicate, context) { + predicate = cb(predicate, context); + var _keys = !isArrayLike(obj) && keys(obj), + length = (_keys || obj).length; + for (var index = 0; index < length; index++) { + var currentKey = _keys ? _keys[index] : index; + if (!predicate(obj[currentKey], currentKey, obj)) return false; + } + return true; + } + function some(obj, predicate, context) { + predicate = cb(predicate, context); + var _keys = !isArrayLike(obj) && keys(obj), + length = (_keys || obj).length; + for (var index = 0; index < length; index++) { + var currentKey = _keys ? _keys[index] : index; + if (predicate(obj[currentKey], currentKey, obj)) return true; + } + return false; + } + function contains(obj, item, fromIndex, guard) { + if (!isArrayLike(obj)) obj = values(obj); + if (typeof fromIndex != 'number' || guard) fromIndex = 0; + return indexOf(obj, item, fromIndex) >= 0; + } + var invoke = restArguments(function(obj, path, args) { + var contextPath, func; + if (isFunction$1(path)) { + func = path; + } else { + path = toPath(path); + contextPath = path.slice(0, -1); + path = path[path.length - 1]; + } + return map(obj, function(context) { + var method = func; + if (!method) { + if (contextPath && contextPath.length) { + context = deepGet(context, contextPath); + } + if (context == null) return void 0; + method = context[path]; + } + return method == null ? method : method.apply(context, args); + }); + }); + function pluck(obj, key) { + return map(obj, property(key)); + } + function where(obj, attrs) { + return filter(obj, matcher(attrs)); + } + function max(obj, iteratee, context) { + var result = -Infinity, lastComputed = -Infinity, + value, computed; + if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) { + obj = isArrayLike(obj) ? obj : values(obj); + for (var i = 0, length = obj.length; i < length; i++) { + value = obj[i]; + if (value != null && value > result) { + result = value; + } + } + } else { + iteratee = cb(iteratee, context); + each(obj, function(v, index, list) { + computed = iteratee(v, index, list); + if (computed > lastComputed || (computed === -Infinity && result === -Infinity)) { + result = v; + lastComputed = computed; + } + }); + } + return result; + } + function min(obj, iteratee, context) { + var result = Infinity, lastComputed = Infinity, + value, computed; + if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) { + obj = isArrayLike(obj) ? obj : values(obj); + for (var i = 0, length = obj.length; i < length; i++) { + value = obj[i]; + if (value != null && value < result) { + result = value; + } + } + } else { + iteratee = cb(iteratee, context); + each(obj, function(v, index, list) { + computed = iteratee(v, index, list); + if (computed < lastComputed || (computed === Infinity && result === Infinity)) { + result = v; + lastComputed = computed; + } + }); + } + return result; + } + var reStrSymbol = /[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g; + function toArray(obj) { + if (!obj) return []; + if (isArray(obj)) return slice.call(obj); + if (isString(obj)) { + return obj.match(reStrSymbol); + } + if (isArrayLike(obj)) return map(obj, identity); + return values(obj); + } + function sample(obj, n, guard) { + if (n == null || guard) { + if (!isArrayLike(obj)) obj = values(obj); + return obj[random(obj.length - 1)]; + } + var sample = toArray(obj); + var length = getLength(sample); + n = Math.max(Math.min(n, length), 0); + var last = length - 1; + for (var index = 0; index < n; index++) { + var rand = random(index, last); + var temp = sample[index]; + sample[index] = sample[rand]; + sample[rand] = temp; + } + return sample.slice(0, n); + } + function shuffle(obj) { + return sample(obj, Infinity); + } + function sortBy(obj, iteratee, context) { + var index = 0; + iteratee = cb(iteratee, context); + return pluck(map(obj, function(value, key, list) { + return { + value: value, + index: index++, + criteria: iteratee(value, key, list) + }; + }).sort(function(left, right) { + var a = left.criteria; + var b = right.criteria; + if (a !== b) { + if (a > b || a === void 0) return 1; + if (a < b || b === void 0) return -1; + } + return left.index - right.index; + }), 'value'); + } + function group(behavior, partition) { + return function(obj, iteratee, context) { + var result = partition ? [[], []] : {}; + iteratee = cb(iteratee, context); + each(obj, function(value, index) { + var key = iteratee(value, index, obj); + behavior(result, value, key); + }); + return result; + }; + } + var groupBy = group(function(result, value, key) { + if (has$1(result, key)) result[key].push(value); else result[key] = [value]; + }); + var indexBy = group(function(result, value, key) { + result[key] = value; + }); + var countBy = group(function(result, value, key) { + if (has$1(result, key)) result[key]++; else result[key] = 1; + }); + var partition = group(function(result, value, pass) { + result[pass ? 0 : 1].push(value); + }, true); + function size(obj) { + if (obj == null) return 0; + return isArrayLike(obj) ? obj.length : keys(obj).length; + } + function keyInObj(value, key, obj) { + return key in obj; + } + var pick = restArguments(function(obj, keys) { + var result = {}, iteratee = keys[0]; + if (obj == null) return result; + if (isFunction$1(iteratee)) { + if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]); + keys = allKeys(obj); + } else { + iteratee = keyInObj; + keys = flatten$1(keys, false, false); + obj = Object(obj); + } + for (var i = 0, length = keys.length; i < length; i++) { + var key = keys[i]; + var value = obj[key]; + if (iteratee(value, key, obj)) result[key] = value; + } + return result; + }); + var omit = restArguments(function(obj, keys) { + var iteratee = keys[0], context; + if (isFunction$1(iteratee)) { + iteratee = negate(iteratee); + if (keys.length > 1) context = keys[1]; + } else { + keys = map(flatten$1(keys, false, false), String); + iteratee = function(value, key) { + return !contains(keys, key); + }; + } + return pick(obj, iteratee, context); + }); + function initial(array, n, guard) { + return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n))); + } + function first(array, n, guard) { + if (array == null || array.length < 1) return n == null || guard ? void 0 : []; + if (n == null || guard) return array[0]; + return initial(array, array.length - n); + } + function rest(array, n, guard) { + return slice.call(array, n == null || guard ? 1 : n); + } + function last(array, n, guard) { + if (array == null || array.length < 1) return n == null || guard ? void 0 : []; + if (n == null || guard) return array[array.length - 1]; + return rest(array, Math.max(0, array.length - n)); + } + function compact(array) { + return filter(array, Boolean); + } + function flatten(array, depth) { + return flatten$1(array, depth, false); + } + var difference = restArguments(function(array, rest) { + rest = flatten$1(rest, true, true); + return filter(array, function(value){ + return !contains(rest, value); + }); + }); + var without = restArguments(function(array, otherArrays) { + return difference(array, otherArrays); + }); + function uniq(array, isSorted, iteratee, context) { + if (!isBoolean(isSorted)) { + context = iteratee; + iteratee = isSorted; + isSorted = false; + } + if (iteratee != null) iteratee = cb(iteratee, context); + var result = []; + var seen = []; + for (var i = 0, length = getLength(array); i < length; i++) { + var value = array[i], + computed = iteratee ? iteratee(value, i, array) : value; + if (isSorted && !iteratee) { + if (!i || seen !== computed) result.push(value); + seen = computed; + } else if (iteratee) { + if (!contains(seen, computed)) { + seen.push(computed); + result.push(value); + } + } else if (!contains(result, value)) { + result.push(value); + } + } + return result; + } + var union = restArguments(function(arrays) { + return uniq(flatten$1(arrays, true, true)); + }); + function intersection(array) { + var result = []; + var argsLength = arguments.length; + for (var i = 0, length = getLength(array); i < length; i++) { + var item = array[i]; + if (contains(result, item)) continue; + var j; + for (j = 1; j < argsLength; j++) { + if (!contains(arguments[j], item)) break; + } + if (j === argsLength) result.push(item); + } + return result; + } + function unzip(array) { + var length = (array && max(array, getLength).length) || 0; + var result = Array(length); + + for (var index = 0; index < length; index++) { + result[index] = pluck(array, index); + } + return result; + } + var zip = restArguments(unzip); + function object(list, values) { + var result = {}; + for (var i = 0, length = getLength(list); i < length; i++) { + if (values) { + result[list[i]] = values[i]; + } else { + result[list[i][0]] = list[i][1]; + } + } + return result; + } + function range(start, stop, step) { + if (stop == null) { + stop = start || 0; + start = 0; + } + if (!step) { + step = stop < start ? -1 : 1; + } + + var length = Math.max(Math.ceil((stop - start) / step), 0); + var range = Array(length); + + for (var idx = 0; idx < length; idx++, start += step) { + range[idx] = start; + } + + return range; + } + function chunk(array, count) { + if (count == null || count < 1) return []; + var result = []; + var i = 0, length = array.length; + while (i < length) { + result.push(slice.call(array, i, i += count)); + } + return result; + } + function chainResult(instance, obj) { + return instance._chain ? _$1(obj).chain() : obj; + } + function mixin(obj) { + each(functions(obj), function(name) { + var func = _$1[name] = obj[name]; + _$1.prototype[name] = function() { + var args = [this._wrapped]; + push.apply(args, arguments); + return chainResult(this, func.apply(_$1, args)); + }; + }); + return _$1; + } + each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { + var method = ArrayProto[name]; + _$1.prototype[name] = function() { + var obj = this._wrapped; + if (obj != null) { + method.apply(obj, arguments); + if ((name === 'shift' || name === 'splice') && obj.length === 0) { + delete obj[0]; + } + } + return chainResult(this, obj); + }; + }); + each(['concat', 'join', 'slice'], function(name) { + var method = ArrayProto[name]; + _$1.prototype[name] = function() { + var obj = this._wrapped; + if (obj != null) obj = method.apply(obj, arguments); + return chainResult(this, obj); + }; + }); + + var allExports = { + __proto__: null, + VERSION: VERSION, + restArguments: restArguments, + isObject: isObject, + isNull: isNull, + isUndefined: isUndefined, + isBoolean: isBoolean, + isElement: isElement, + isString: isString, + isNumber: isNumber, + isDate: isDate, + isRegExp: isRegExp, + isError: isError, + isSymbol: isSymbol, + isArrayBuffer: isArrayBuffer, + isDataView: isDataView$1, + isArray: isArray, + isFunction: isFunction$1, + isArguments: isArguments$1, + isFinite: isFinite$1, + isNaN: isNaN$1, + isTypedArray: isTypedArray$1, + isEmpty: isEmpty, + isMatch: isMatch, + isEqual: isEqual, + isMap: isMap, + isWeakMap: isWeakMap, + isSet: isSet, + isWeakSet: isWeakSet, + keys: keys, + allKeys: allKeys, + values: values, + pairs: pairs, + invert: invert, + functions: functions, + methods: functions, + extend: extend, + extendOwn: extendOwn, + assign: extendOwn, + defaults: defaults, + create: create, + clone: clone, + tap: tap, + get: get, + has: has, + mapObject: mapObject, + identity: identity, + constant: constant, + noop: noop, + toPath: toPath$1, + property: property, + propertyOf: propertyOf, + matcher: matcher, + matches: matcher, + times: times, + random: random, + now: now, + escape: _escape, + unescape: _unescape, + templateSettings: templateSettings, + template: template, + result: result, + uniqueId: uniqueId, + chain: chain, + iteratee: iteratee, + partial: partial, + bind: bind, + bindAll: bindAll, + memoize: memoize, + delay: delay, + defer: defer, + throttle: throttle, + debounce: debounce, + wrap: wrap, + negate: negate, + compose: compose, + after: after, + before: before, + once: once, + findKey: findKey, + findIndex: findIndex, + findLastIndex: findLastIndex, + sortedIndex: sortedIndex, + indexOf: indexOf, + lastIndexOf: lastIndexOf, + find: find, + detect: find, + findWhere: findWhere, + each: each, + forEach: each, + map: map, + collect: map, + reduce: reduce, + foldl: reduce, + inject: reduce, + reduceRight: reduceRight, + foldr: reduceRight, + filter: filter, + select: filter, + reject: reject, + every: every, + all: every, + some: some, + any: some, + contains: contains, + includes: contains, + include: contains, + invoke: invoke, + pluck: pluck, + where: where, + max: max, + min: min, + shuffle: shuffle, + sample: sample, + sortBy: sortBy, + groupBy: groupBy, + indexBy: indexBy, + countBy: countBy, + partition: partition, + toArray: toArray, + size: size, + pick: pick, + omit: omit, + first: first, + head: first, + take: first, + initial: initial, + last: last, + rest: rest, + tail: rest, + drop: rest, + compact: compact, + flatten: flatten, + without: without, + uniq: uniq, + unique: uniq, + union: union, + intersection: intersection, + difference: difference, + unzip: unzip, + transpose: unzip, + zip: zip, + object: object, + range: range, + chunk: chunk, + mixin: mixin, + 'default': _$1 + }; + var _ = mixin(allExports); + _._ = _; + + return _; + +}))); + + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],"/../../../jshint/src/jshint.js":[function(_dereq_,module,exports){ + +var _ = _dereq_("underscore"); +_.clone = _dereq_("lodash.clone"); +var events = _dereq_("events"); +var vars = _dereq_("./vars.js"); +var messages = _dereq_("./messages.js"); +var Lexer = _dereq_("./lex.js").Lexer; +var reg = _dereq_("./reg.js"); +var state = _dereq_("./state.js").state; +var style = _dereq_("./style.js"); +var options = _dereq_("./options.js"); +var scopeManager = _dereq_("./scope-manager.js"); +var prodParams = _dereq_("./prod-params.js"); +var console = _dereq_("console-browserify"); + +var JSHINT = (function() { + "use strict"; + + var api, // Extension API + bang = { + "<" : true, + "<=" : true, + "==" : true, + "===": true, + "!==": true, + "!=" : true, + ">" : true, + ">=" : true, + "+" : true, + "-" : true, + "*" : true, + "/" : true, + "%" : true + }, + + declared, // Globals that were declared using /*global ... */ syntax. + + functions, // All of the functions + + inblock, + indent, + lookahead, + lex, + member, + membersOnly, + predefined, // Global variables defined by option + + extraModules = [], + emitter = new events.EventEmitter(); + + function checkOption(name, isStable, t) { + var type, validNames; + + if (isStable) { + type = ""; + validNames = options.validNames; + } else { + type = "unstable "; + validNames = options.unstableNames; + } + + name = name.trim(); + + if (/^[+-]W\d{3}$/g.test(name)) { + return true; + } + + if (validNames.indexOf(name) === -1) { + if (t.type !== "jslint" && !_.has(options.removed, name)) { + error("E001", t, type, name); + return false; + } + } + + return true; + } + + function isString(obj) { + return Object.prototype.toString.call(obj) === "[object String]"; + } + + function isIdentifier(tkn, value) { + if (!tkn) + return false; + + if (!tkn.identifier || tkn.value !== value) + return false; + + return true; + } + function isReserved(context, token) { + if (!token.reserved) { + return false; + } + var meta = token.meta; + + if (meta && meta.isFutureReservedWord) { + if (state.inES5()) { + if (!meta.es5) { + return false; + } + + if (token.isProperty) { + return false; + } + } + } else if (meta && meta.es5 && !state.inES5()) { + return false; + } + if (meta && meta.strictOnly && state.inES5()) { + if (!state.option.strict && !state.isStrict()) { + return false; + } + } + + if (token.id === "await" && (!(context & prodParams.async) && !state.option.module)) { + return false; + } + + if (token.id === "yield" && (!(context & prodParams.yield))) { + return state.isStrict(); + } + + return true; + } + + function supplant(str, data) { + return str.replace(/\{([^{}]*)\}/g, function(a, b) { + var r = data[b]; + return typeof r === "string" || typeof r === "number" ? r : a; + }); + } + + function combine(dest, src) { + Object.keys(src).forEach(function(name) { + if (_.has(JSHINT.blacklist, name)) return; + dest[name] = src[name]; + }); + } + + function processenforceall() { + if (state.option.enforceall) { + for (var enforceopt in options.bool.enforcing) { + if (state.option[enforceopt] === undefined && + !options.noenforceall[enforceopt]) { + state.option[enforceopt] = true; + } + } + for (var relaxopt in options.bool.relaxing) { + if (state.option[relaxopt] === undefined) { + state.option[relaxopt] = false; + } + } + } + } + function applyOptions() { + var badESOpt = null; + processenforceall(); + badESOpt = state.inferEsVersion(); + if (badESOpt) { + quit("E059", state.tokens.next, "esversion", badESOpt); + } + + if (state.inES5()) { + combine(predefined, vars.ecmaIdentifiers[5]); + } + + if (state.inES6()) { + combine(predefined, vars.ecmaIdentifiers[6]); + } + + if (state.inES8()) { + combine(predefined, vars.ecmaIdentifiers[8]); + } + + if (state.inES11()) { + combine(predefined, vars.ecmaIdentifiers[11]); + } + if (state.option.strict === "global" && "globalstrict" in state.option) { + quit("E059", state.tokens.next, "strict", "globalstrict"); + } + + if (state.option.module) { + if (!state.inES6()) { + warning("W134", state.tokens.next, "module", 6); + } + } + + if (state.option.regexpu) { + if (!state.inES6()) { + warning("W134", state.tokens.next, "regexpu", 6); + } + } + + if (state.option.couch) { + combine(predefined, vars.couch); + } + + if (state.option.qunit) { + combine(predefined, vars.qunit); + } + + if (state.option.rhino) { + combine(predefined, vars.rhino); + } + + if (state.option.shelljs) { + combine(predefined, vars.shelljs); + combine(predefined, vars.node); + } + if (state.option.typed) { + combine(predefined, vars.typed); + } + + if (state.option.phantom) { + combine(predefined, vars.phantom); + } + + if (state.option.prototypejs) { + combine(predefined, vars.prototypejs); + } + + if (state.option.node) { + combine(predefined, vars.node); + combine(predefined, vars.typed); + } + + if (state.option.devel) { + combine(predefined, vars.devel); + } + + if (state.option.dojo) { + combine(predefined, vars.dojo); + } + + if (state.option.browser) { + combine(predefined, vars.browser); + combine(predefined, vars.typed); + } + + if (state.option.browserify) { + combine(predefined, vars.browser); + combine(predefined, vars.typed); + combine(predefined, vars.browserify); + } + + if (state.option.nonstandard) { + combine(predefined, vars.nonstandard); + } + + if (state.option.jasmine) { + combine(predefined, vars.jasmine); + } + + if (state.option.jquery) { + combine(predefined, vars.jquery); + } + + if (state.option.mootools) { + combine(predefined, vars.mootools); + } + + if (state.option.worker) { + combine(predefined, vars.worker); + } + + if (state.option.wsh) { + combine(predefined, vars.wsh); + } + + if (state.option.yui) { + combine(predefined, vars.yui); + } + + if (state.option.mocha) { + combine(predefined, vars.mocha); + } + } + function quit(code, token, a, b) { + var percentage = Math.floor((token.line / state.lines.length) * 100); + var message = messages.errors[code].desc; + + var exception = { + name: "JSHintError", + line: token.line, + character: token.from, + message: message + " (" + percentage + "% scanned).", + raw: message, + code: code, + a: a, + b: b + }; + + exception.reason = supplant(message, exception) + " (" + percentage + + "% scanned)."; + + throw exception; + } + + function removeIgnoredMessages() { + var ignored = state.ignoredLines; + + if (_.isEmpty(ignored)) return; + JSHINT.errors = _.reject(JSHINT.errors, function(err) { return ignored[err.line] }); + } + + function warning(code, t, a, b, c, d) { + var ch, l, w, msg; + + if (/^W\d{3}$/.test(code)) { + if (state.ignored[code]) + return; + + msg = messages.warnings[code]; + } else if (/E\d{3}/.test(code)) { + msg = messages.errors[code]; + } else if (/I\d{3}/.test(code)) { + msg = messages.info[code]; + } + + t = t || state.tokens.next || {}; + if (t.id === "(end)") { // `~ + t = state.tokens.curr; + } + + l = t.line; + ch = t.from; + + w = { + id: "(error)", + raw: msg.desc, + code: msg.code, + evidence: state.lines[l - 1] || "", + line: l, + character: ch, + scope: JSHINT.scope, + a: a, + b: b, + c: c, + d: d + }; + + w.reason = supplant(msg.desc, w); + JSHINT.errors.push(w); + + removeIgnoredMessages(); + + var errors = JSHINT.errors.filter(function(e) { return /E\d{3}/.test(e.code); }); + if (errors.length >= state.option.maxerr) { + quit("E043", t); + } + return w; + } + + function warningAt(m, l, ch, a, b, c, d) { + return warning(m, { + line: l, + from: ch + }, a, b, c, d); + } + + function error(m, t, a, b, c, d) { + warning(m, t, a, b, c, d); + } + + function errorAt(m, l, ch, a, b, c, d) { + return error(m, { + line: l, + from: ch + }, a, b, c, d); + } + function addEvalCode(elem, token) { + JSHINT.internals.push({ + id: "(internal)", + elem: elem, + token: token, + code: token.value.replace(/([^\\])(\\*)\2\\n/g, "$1\n") + }); + } + function lintingDirective(directiveToken, previous) { + var body = directiveToken.body.split(",") + .map(function(s) { return s.trim(); }); + var predef = {}; + + if (directiveToken.type === "falls through") { + previous.caseFallsThrough = true; + return; + } + + if (directiveToken.type === "globals") { + body.forEach(function(item, idx) { + var parts = item.split(":"); + var key = parts[0].trim(); + + if (key === "-" || !key.length) { + if (idx > 0 && idx === body.length - 1) { + return; + } + error("E002", directiveToken); + return; + } + + if (key.charAt(0) === "-") { + key = key.slice(1); + + JSHINT.blacklist[key] = key; + delete predefined[key]; + } else { + predef[key] = parts.length > 1 && parts[1].trim() === "true"; + } + }); + + combine(predefined, predef); + + for (var key in predef) { + if (_.has(predef, key)) { + declared[key] = directiveToken; + } + } + } + + if (directiveToken.type === "exported") { + body.forEach(function(e, idx) { + if (!e.length) { + if (idx > 0 && idx === body.length - 1) { + return; + } + error("E002", directiveToken); + return; + } + + state.funct["(scope)"].addExported(e); + }); + } + + if (directiveToken.type === "members") { + membersOnly = membersOnly || {}; + + body.forEach(function(m) { + var ch1 = m.charAt(0); + var ch2 = m.charAt(m.length - 1); + + if (ch1 === ch2 && (ch1 === "\"" || ch1 === "'")) { + m = m + .substr(1, m.length - 2) + .replace("\\\"", "\""); + } + + membersOnly[m] = false; + }); + } + + var numvals = [ + "maxstatements", + "maxparams", + "maxdepth", + "maxcomplexity", + "maxerr", + "maxlen", + "indent" + ]; + + if (directiveToken.type === "jshint" || directiveToken.type === "jslint" || + directiveToken.type === "jshint.unstable") { + body.forEach(function(item) { + var parts = item.split(":"); + var key = parts[0].trim(); + var val = parts.length > 1 ? parts[1].trim() : ""; + var numberVal; + + if (!checkOption(key, directiveToken.type !== "jshint.unstable", directiveToken)) { + return; + } + + if (numvals.indexOf(key) >= 0) { + if (val !== "false") { + numberVal = +val; + + if (typeof numberVal !== "number" || !isFinite(numberVal) || + numberVal <= 0 || Math.floor(numberVal) !== numberVal) { + error("E032", directiveToken, val); + return; + } + + state.option[key] = numberVal; + } else { + state.option[key] = key === "indent" ? 4 : false; + } + + return; + } + + if (key === "validthis") { + + if (state.funct["(global)"]) + return void error("E009"); + + if (val !== "true" && val !== "false") + return void error("E002", directiveToken); + + state.option.validthis = (val === "true"); + return; + } + + if (key === "quotmark") { + switch (val) { + case "true": + case "false": + state.option.quotmark = (val === "true"); + break; + case "double": + case "single": + state.option.quotmark = val; + break; + default: + error("E002", directiveToken); + } + return; + } + + if (key === "shadow") { + switch (val) { + case "true": + state.option.shadow = true; + break; + case "outer": + state.option.shadow = "outer"; + break; + case "false": + case "inner": + state.option.shadow = "inner"; + break; + default: + error("E002", directiveToken); + } + return; + } + + if (key === "unused") { + switch (val) { + case "true": + state.option.unused = true; + break; + case "false": + state.option.unused = false; + break; + case "vars": + case "strict": + state.option.unused = val; + break; + default: + error("E002", directiveToken); + } + return; + } + + if (key === "latedef") { + switch (val) { + case "true": + state.option.latedef = true; + break; + case "false": + state.option.latedef = false; + break; + case "nofunc": + state.option.latedef = "nofunc"; + break; + default: + error("E002", directiveToken); + } + return; + } + + if (key === "ignore") { + switch (val) { + case "line": + state.ignoredLines[directiveToken.line] = true; + removeIgnoredMessages(); + break; + default: + error("E002", directiveToken); + } + return; + } + + if (key === "strict") { + switch (val) { + case "true": + state.option.strict = true; + break; + case "false": + state.option.strict = false; + break; + case "global": + case "implied": + state.option.strict = val; + break; + default: + error("E002", directiveToken); + } + return; + } + + if (key === "module") { + if (!hasParsedCode(state.funct)) { + error("E055", directiveToken, "module"); + } + } + + if (key === "esversion") { + switch (val) { + case "3": + case "5": + case "6": + case "7": + case "8": + case "9": + case "10": + case "11": + state.option.moz = false; + state.option.esversion = +val; + break; + case "2015": + case "2016": + case "2017": + case "2018": + case "2019": + case "2020": + state.option.moz = false; + state.option.esversion = +val - 2009; + break; + default: + error("E002", directiveToken); + } + if (!hasParsedCode(state.funct)) { + error("E055", directiveToken, "esversion"); + } + return; + } + + var match = /^([+-])(W\d{3})$/g.exec(key); + if (match) { + state.ignored[match[2]] = (match[1] === "-"); + return; + } + + var tn; + if (val === "true" || val === "false") { + if (directiveToken.type === "jslint") { + tn = options.renamed[key] || key; + state.option[tn] = (val === "true"); + + if (options.inverted[tn] !== undefined) { + state.option[tn] = !state.option[tn]; + } + } else if (directiveToken.type === "jshint.unstable") { + state.option.unstable[key] = (val === "true"); + } else { + state.option[key] = (val === "true"); + } + + return; + } + + error("E002", directiveToken); + }); + + applyOptions(); + } + } + function peek(p) { + var i = p || 0, j = lookahead.length, t; + + if (i < j) { + return lookahead[i]; + } + + while (j <= i) { + t = lex.token(); + if (!t) { + if (!lookahead.length) { + return state.tokens.next; + } + + return lookahead[j - 1]; + } + + lookahead[j] = t; + j += 1; + } + + return t; + } + + function peekIgnoreEOL() { + var i = 0; + var t; + do { + t = peek(i++); + } while (t.id === "(endline)"); + return t; + } + function advance(expected, relatedToken) { + var nextToken = state.tokens.next; + + if (expected && nextToken.id !== expected) { + if (relatedToken) { + if (nextToken.id === "(end)") { + error("E019", relatedToken, relatedToken.id); + } else { + error("E020", nextToken, expected, relatedToken.id, + relatedToken.line, nextToken.value); + } + } else if (nextToken.type !== "(identifier)" || nextToken.value !== expected) { + error("E021", nextToken, expected, nextToken.value); + } + } + + state.tokens.prev = state.tokens.curr; + state.tokens.curr = state.tokens.next; + for (;;) { + state.tokens.next = lookahead.shift() || lex.token(); + + if (!state.tokens.next) { // No more tokens left, give up + quit("E041", state.tokens.curr); + } + + if (state.tokens.next.id === "(end)" || state.tokens.next.id === "(error)") { + return; + } + + if (state.tokens.next.check) { + state.tokens.next.check(); + } + + if (state.tokens.next.isSpecial) { + lintingDirective(state.tokens.next, state.tokens.curr); + } else { + if (state.tokens.next.id !== "(endline)") { + break; + } + } + } + } + function isOperator(token) { + return token.first || token.right || token.left || token.id === "yield" || token.id === "await"; + } + + function isEndOfExpr(context, curr, next) { + if (arguments.length <= 1) { + curr = state.tokens.curr; + next = state.tokens.next; + } + + if (next.id === "in" && context & prodParams.noin) { + return true; + } + + if (next.id === ";" || next.id === "}" || next.id === ":") { + return true; + } + + if (next.infix === curr.infix || + (curr.id === "yield" && curr.rbp < next.rbp)) { + return !sameLine(curr, next); + } + + return false; + } + function expression(context, rbp) { + var left, isArray = false, isObject = false; + var initial = context & prodParams.initial; + var curr; + + context &= ~prodParams.initial; + + state.nameStack.push(); + + if (state.tokens.next.id === "(end)") + error("E006", state.tokens.curr); + + advance(); + + if (initial) { + state.funct["(verb)"] = state.tokens.curr.value; + state.tokens.curr.beginsStmt = true; + } + + curr = state.tokens.curr; + + if (initial && curr.fud && (!curr.useFud || curr.useFud(context))) { + left = state.tokens.curr.fud(context); + } else { + if (state.tokens.curr.nud) { + left = state.tokens.curr.nud(context, rbp); + } else { + error("E030", state.tokens.curr, state.tokens.curr.id); + } + + while (rbp < state.tokens.next.lbp && !isEndOfExpr(context)) { + isArray = state.tokens.curr.value === "Array"; + isObject = state.tokens.curr.value === "Object"; + if (left && (left.value || (left.first && left.first.value))) { + if (left.value !== "new" || + (left.first && left.first.value && left.first.value === ".")) { + isArray = false; + if (left.value !== state.tokens.curr.value) { + isObject = false; + } + } + } + + advance(); + + if (isArray && state.tokens.curr.id === "(" && state.tokens.next.id === ")") { + warning("W009", state.tokens.curr); + } + + if (isObject && state.tokens.curr.id === "(" && state.tokens.next.id === ")") { + warning("W010", state.tokens.curr); + } + + if (left && state.tokens.curr.led) { + left = state.tokens.curr.led(context, left); + } else { + error("E033", state.tokens.curr, state.tokens.curr.id); + } + } + } + + state.nameStack.pop(); + + return left; + } + + function sameLine(first, second) { + return first.line === (second.startLine || second.line); + } + + function nobreaknonadjacent(left, right) { + if (!state.option.laxbreak && !sameLine(left, right)) { + warning("W014", right, right.value); + } + } + + function nolinebreak(t) { + if (!sameLine(t, state.tokens.next)) { + warning("E022", t, t.value); + } + } + function checkComma(opts) { + var prev = state.tokens.prev; + var curr = state.tokens.curr; + opts = opts || {}; + + if (!sameLine(prev, curr)) { + if (!state.option.laxcomma) { + if (checkComma.first) { + warning("I001", curr); + checkComma.first = false; + } + warning("W014", prev, curr.value); + } + } + + if (state.tokens.next.identifier && !(opts.property && state.inES5())) { + switch (state.tokens.next.value) { + case "break": + case "case": + case "catch": + case "continue": + case "default": + case "do": + case "else": + case "finally": + case "for": + case "if": + case "in": + case "instanceof": + case "return": + case "switch": + case "throw": + case "try": + case "var": + case "let": + case "while": + case "with": + error("E024", state.tokens.next, state.tokens.next.value); + return false; + } + } + + if (state.tokens.next.type === "(punctuator)") { + switch (state.tokens.next.value) { + case "}": + case "]": + case ",": + case ")": + if (opts.allowTrailing) { + return true; + } + + error("E024", state.tokens.next, state.tokens.next.value); + return false; + } + } + return true; + } + function symbol(s, p) { + var x = state.syntax[s]; + if (!x || typeof x !== "object") { + state.syntax[s] = x = { + id: s, + lbp: p, + rbp: p, + value: s + }; + } + return x; + } + function delim(s) { + var x = symbol(s, 0); + x.delim = true; + return x; + } + function stmt(s, f) { + var x = delim(s); + x.identifier = x.reserved = true; + x.fud = f; + return x; + } + function blockstmt(s, f) { + var x = stmt(s, f); + x.block = true; + return x; + } + function reserveName(x) { + var c = x.id.charAt(0); + if ((c >= "a" && c <= "z") || (c >= "A" && c <= "Z")) { + x.identifier = x.reserved = true; + } + return x; + } + function prefix(s, f) { + var x = symbol(s, 150); + reserveName(x); + + x.nud = (typeof f === "function") ? f : function(context) { + this.arity = "unary"; + this.right = expression(context, 150); + + if (this.id === "++" || this.id === "--") { + if (state.option.plusplus) { + warning("W016", this, this.id); + } + + if (this.right) { + checkLeftSideAssign(context, this.right, this); + } + } + + return this; + }; + + return x; + } + function type(s, f) { + var x = symbol(s, 0); + x.type = s; + x.nud = f; + return x; + } + function reserve(name, func) { + var x = type(name, func); + x.identifier = true; + x.reserved = true; + return x; + } + function FutureReservedWord(name, meta) { + var x = type(name, state.syntax["(identifier)"].nud); + + meta = meta || {}; + meta.isFutureReservedWord = true; + + x.value = name; + x.identifier = true; + x.reserved = true; + x.meta = meta; + + return x; + } + function infix(s, f, p, w) { + var x = symbol(s, p); + reserveName(x); + x.infix = true; + x.led = function(context, left) { + if (!w) { + nobreaknonadjacent(state.tokens.prev, state.tokens.curr); + } + if ((s === "in" || s === "instanceof") && left.id === "!") { + warning("W018", left, "!"); + } + if (typeof f === "function") { + return f(context, left, this); + } else { + this.left = left; + this.right = expression(context, p); + return this; + } + }; + return x; + } + function application(s) { + var x = symbol(s, 42); + + x.infix = true; + x.led = function(context, left) { + nobreaknonadjacent(state.tokens.prev, state.tokens.curr); + + this.left = left; + this.right = doFunction(context, { type: "arrow", loneArg: left }); + return this; + }; + return x; + } + function relation(s, f) { + var x = symbol(s, 100); + + x.infix = true; + x.led = function(context, left) { + nobreaknonadjacent(state.tokens.prev, state.tokens.curr); + this.left = left; + var right = this.right = expression(context, 100); + + if (isIdentifier(left, "NaN") || isIdentifier(right, "NaN")) { + warning("W019", this); + } else if (f) { + f.apply(this, [context, left, right]); + } + + if (!left || !right) { + quit("E041", state.tokens.curr); + } + + if (left.id === "!") { + warning("W018", left, "!"); + } + + if (right.id === "!") { + warning("W018", right, "!"); + } + + return this; + }; + return x; + } + function beginsUnaryExpression(token) { + return token.arity === "unary" && token.id !== "++" && token.id !== "--"; + } + + var typeofValues = {}; + typeofValues.legacy = [ + "xml", + "unknown" + ]; + typeofValues.es3 = [ + "undefined", "boolean", "number", "string", "function", "object", + ]; + typeofValues.es3 = typeofValues.es3.concat(typeofValues.legacy); + typeofValues.es6 = typeofValues.es3.concat("symbol", "bigint"); + function isTypoTypeof(left, right, state) { + var values; + + if (state.option.notypeof) + return false; + + if (!left || !right) + return false; + + values = state.inES6() ? typeofValues.es6 : typeofValues.es3; + + if (right.type === "(identifier)" && right.value === "typeof" && left.type === "(string)") { + if (left.value === "bigint") { + if (!state.inES11()) { + warning("W119", left, "BigInt", "11"); + } + + return false; + } + + return !_.includes(values, left.value); + } + + return false; + } + function isGlobalEval(left, state) { + var isGlobal = false; + if (left.type === "this" && state.funct["(context)"] === null) { + isGlobal = true; + } + else if (left.type === "(identifier)") { + if (state.option.node && left.value === "global") { + isGlobal = true; + } + + else if (state.option.browser && (left.value === "window" || left.value === "document")) { + isGlobal = true; + } + } + + return isGlobal; + } + function findNativePrototype(left) { + var natives = [ + "Array", "ArrayBuffer", "Boolean", "Collator", "DataView", "Date", + "DateTimeFormat", "Error", "EvalError", "Float32Array", "Float64Array", + "Function", "Infinity", "Intl", "Int16Array", "Int32Array", "Int8Array", + "Iterator", "Number", "NumberFormat", "Object", "RangeError", + "ReferenceError", "RegExp", "StopIteration", "String", "SyntaxError", + "TypeError", "Uint16Array", "Uint32Array", "Uint8Array", "Uint8ClampedArray", + "URIError" + ]; + + function walkPrototype(obj) { + if (typeof obj !== "object") return; + return obj.right === "prototype" ? obj : walkPrototype(obj.left); + } + + function walkNative(obj) { + while (!obj.identifier && typeof obj.left === "object") + obj = obj.left; + + if (obj.identifier && natives.indexOf(obj.value) >= 0 && + state.funct["(scope)"].isPredefined(obj.value)) { + return obj.value; + } + } + + var prototype = walkPrototype(left); + if (prototype) return walkNative(prototype); + } + function checkLeftSideAssign(context, left, assignToken, options) { + + var allowDestructuring = options && options.allowDestructuring; + + assignToken = assignToken || left; + + if (state.option.freeze) { + var nativeObject = findNativePrototype(left); + if (nativeObject) + warning("W121", left, nativeObject); + } + + if (left.identifier && !left.isMetaProperty) { + state.funct["(scope)"].block.reassign(left.value, left); + } + + if (left.id === ".") { + if (!left.left || left.left.value === "arguments" && !state.isStrict()) { + warning("W143", assignToken); + } + + state.nameStack.set(state.tokens.prev); + return true; + } else if (left.id === "{" || left.id === "[") { + if (!allowDestructuring || !left.destructAssign) { + if (left.id === "{" || !left.left) { + warning("E031", assignToken); + } else if (left.left.value === "arguments" && !state.isStrict()) { + warning("W143", assignToken); + } + } + + if (left.id === "[") { + state.nameStack.set(left.right); + } + + return true; + } else if (left.identifier && !isReserved(context, left) && !left.isMetaProperty) { + if (state.funct["(scope)"].bindingtype(left.value) === "exception") { + warning("W022", left); + } + + if (left.value === "eval" && state.isStrict()) { + error("E031", assignToken); + return false; + } else if (left.value === "arguments") { + if (!state.isStrict()) { + warning("W143", assignToken); + } else { + error("E031", assignToken); + return false; + } + } + state.nameStack.set(left); + return true; + } + + error("E031", assignToken); + + return false; + } + function assignop(s, f) { + var x = infix(s, typeof f === "function" ? f : function(context, left, that) { + that.left = left; + + checkLeftSideAssign(context, left, that, { allowDestructuring: true }); + + that.right = expression(context, 10); + + return that; + }, 20); + + x.exps = true; + x.assign = true; + + return x; + } + function bitwise(s, f, p) { + var x = symbol(s, p); + reserveName(x); + x.infix = true; + x.led = (typeof f === "function") ? f : function(context, left) { + if (state.option.bitwise) { + warning("W016", this, this.id); + } + this.left = left; + this.right = expression(context, p); + return this; + }; + return x; + } + function bitwiseassignop(s) { + symbol(s, 20).exps = true; + return infix(s, function(context, left, that) { + if (state.option.bitwise) { + warning("W016", that, that.id); + } + + checkLeftSideAssign(context, left, that); + + that.right = expression(context, 10); + + return that; + }, 20); + } + function suffix(s) { + var x = symbol(s, 150); + + x.led = function(context, left) { + if (state.option.plusplus) { + warning("W016", this, this.id); + } + + checkLeftSideAssign(context, left, this); + + this.left = left; + return this; + }; + return x; + } + function optionalidentifier(context, isName, preserve) { + if (!state.tokens.next.identifier) { + return; + } + + if (!preserve) { + advance(); + } + + var curr = state.tokens.curr; + + if (isReserved(context, curr) && !(isName && state.inES5())) { + warning("W024", state.tokens.curr, state.tokens.curr.id); + } + + return curr.value; + } + function spreadrest(operation) { + if (!checkPunctuator(state.tokens.next, "...")) { + return false; + } + + if (!state.inES6(true)) { + warning("W119", state.tokens.next, operation + " operator", "6"); + } + advance(); + + if (checkPunctuator(state.tokens.next, "...")) { + warning("E024", state.tokens.next, "..."); + while (checkPunctuator(state.tokens.next, "...")) { + advance(); + } + } + + return true; + } + function identifier(context, isName) { + var i = optionalidentifier(context, isName, false); + if (i) { + return i; + } + + error("E030", state.tokens.next, state.tokens.next.value); + if (state.tokens.next.id !== ";") { + advance(); + } + } + function reachable(controlToken) { + var i = 0, t; + if (state.tokens.next.id !== ";" || controlToken.inBracelessBlock) { + return; + } + for (;;) { + do { + t = peek(i); + i += 1; + } while (t.id !== "(end)" && t.id === "(comment)"); + + if (t.reach) { + return; + } + + if (t.id !== "(endline)") { + if (isFunction(t, i)) { + if (state.option.latedef === true) { + warning("W026", t); + } + break; + } + + warning("W027", t, t.value, controlToken.value); + break; + } + } + + function isFunction(t, i) { + if (t.id === "function") { + return true; + } + if (t.id === "async") { + t = peek(i); + return t.id === "function"; + } + } + } + function parseFinalSemicolon(stmt) { + if (state.tokens.next.id !== ";") { + if (state.tokens.next.isUnclosed) return advance(); + + var isSameLine = sameLine(state.tokens.curr, state.tokens.next) && + state.tokens.next.id !== "(end)"; + var blockEnd = checkPunctuator(state.tokens.next, "}"); + + if (isSameLine && !blockEnd && !(stmt.id === "do" && state.inES6(true))) { + errorAt("E058", state.tokens.curr.line, state.tokens.curr.character); + } else if (!state.option.asi) { + if (!(blockEnd && isSameLine && state.option.lastsemic)) { + warningAt("W033", state.tokens.curr.line, state.tokens.curr.character); + } + } + } else { + advance(";"); + } + } + function statement(context) { + var i = indent, r, t = state.tokens.next, hasOwnScope = false; + + context |= prodParams.initial; + + if (t.id === ";") { + advance(";"); + return; + } + var res = isReserved(context, t); + + if (res && t.meta && t.meta.isFutureReservedWord && !t.fud) { + warning("W024", t, t.id); + res = false; + } + + if (t.identifier && !res && peek().id === ":") { + advance(); + advance(":"); + + hasOwnScope = true; + state.funct["(scope)"].stack(); + state.funct["(scope)"].block.addLabel(t.value, { token: state.tokens.curr }); + + if (!state.tokens.next.labelled && state.tokens.next.value !== "{") { + warning("W028", state.tokens.next, t.value, state.tokens.next.value); + } + + t = state.tokens.next; + } + + if (t.id === "{") { + var iscase = (state.funct["(verb)"] === "case" && state.tokens.curr.value === ":"); + block(context, true, true, false, false, iscase); + + if (hasOwnScope) { + state.funct["(scope)"].unstack(); + } + + return; + } + + r = expression(context, 0); + + if (r && !(r.identifier && r.value === "function") && + !(r.type === "(punctuator)" && r.left && + r.left.identifier && r.left.value === "function")) { + if (!state.isStrict() && state.stmtMissingStrict()) { + warning("E007"); + } + } + + if (!t.block) { + if (!state.option.expr && (!r || !r.exps)) { + warning("W030", state.tokens.curr); + } else if (state.option.nonew && r && r.left && r.id === "(" && r.left.id === "new") { + warning("W031", t); + } + + parseFinalSemicolon(t); + } + + indent = i; + if (hasOwnScope) { + state.funct["(scope)"].unstack(); + } + return r; + } + function statements(context) { + var a = [], p; + + while (!state.tokens.next.reach && state.tokens.next.id !== "(end)") { + if (state.tokens.next.id === ";") { + p = peek(); + + if (!p || (p.id !== "(" && p.id !== "[")) { + warning("W032"); + } + + advance(";"); + } else { + a.push(statement(context)); + } + } + return a; + } + function directives() { + var current = state.tokens.next; + while (state.tokens.next.id === "(string)") { + var next = peekIgnoreEOL(); + if (!isEndOfExpr(0, current, next)) { + break; + } + current = next; + + advance(); + var directive = state.tokens.curr.value; + if (state.directive[directive] || + (directive === "use strict" && state.option.strict === "implied")) { + warning("W034", state.tokens.curr, directive); + } + if (directive === "use strict" && state.inES7() && + !state.funct["(global)"] && state.funct["(hasSimpleParams)"] === false) { + error("E065", state.tokens.curr); + } + + state.directive[directive] = state.tokens.curr; + + parseFinalSemicolon(current); + } + + if (state.isStrict()) { + state.option.undef = true; + } + } + function block(context, ordinary, stmt, isfunc, isfatarrow, iscase) { + var a, + b = inblock, + old_indent = indent, + m, + t, + d; + + inblock = ordinary; + + t = state.tokens.next; + + var metrics = state.funct["(metrics)"]; + metrics.nestedBlockDepth += 1; + metrics.verifyMaxNestedBlockDepthPerFunction(); + + if (state.tokens.next.id === "{") { + advance("{"); + state.funct["(scope)"].stack(); + + if (state.tokens.next.id !== "}") { + indent += state.option.indent; + while (!ordinary && state.tokens.next.from > indent) { + indent += state.option.indent; + } + + if (isfunc) { + m = {}; + for (d in state.directive) { + m[d] = state.directive[d]; + } + directives(); + + state.funct["(isStrict)"] = state.isStrict(); + + if (state.option.strict && state.funct["(context)"]["(global)"]) { + if (!m["use strict"] && !state.isStrict()) { + warning("E007"); + } + } + } + + a = statements(context); + + metrics.statementCount += a.length; + + indent -= state.option.indent; + } else if (isfunc) { + state.funct["(isStrict)"] = state.isStrict(); + } + + advance("}", t); + + if (isfunc) { + state.funct["(scope)"].validateParams(isfatarrow); + if (m) { + state.directive = m; + } + } + + state.funct["(scope)"].unstack(); + + indent = old_indent; + } else if (!ordinary) { + if (isfunc) { + state.funct["(scope)"].stack(); + + if (stmt && !isfatarrow && !state.inMoz()) { + error("W118", state.tokens.curr, "function closure expressions"); + } + + if (isfatarrow) { + state.funct["(scope)"].validateParams(true); + } + + var expr = expression(context, 10); + + if (state.option.noreturnawait && context & prodParams.async && + expr.identifier && expr.value === "await") { + warning("W146", expr); + } + + if (state.option.strict && state.funct["(context)"]["(global)"]) { + if (!state.isStrict()) { + warning("E007"); + } + } + + state.funct["(scope)"].unstack(); + } else { + error("E021", state.tokens.next, "{", state.tokens.next.value); + } + } else { + + state.funct["(scope)"].stack(); + + if (!stmt || state.option.curly) { + warning("W116", state.tokens.next, "{", state.tokens.next.value); + } + var supportsFnDecl = state.funct["(verb)"] === "if" || + state.tokens.curr.id === "else"; + + state.tokens.next.inBracelessBlock = true; + indent += state.option.indent; + a = [statement(context)]; + indent -= state.option.indent; + + if (a[0] && a[0].declaration && + !(supportsFnDecl && a[0].id === "function")) { + error("E048", a[0], a[0].id[0].toUpperCase() + a[0].id.slice(1)); + } + + state.funct["(scope)"].unstack(); + } + switch (state.funct["(verb)"]) { + case "break": + case "continue": + case "return": + case "throw": + if (iscase) { + break; + } + default: + state.funct["(verb)"] = null; + } + + inblock = b; + if (ordinary && state.option.noempty && (!a || a.length === 0)) { + warning("W035", state.tokens.prev); + } + metrics.nestedBlockDepth -= 1; + return a; + } + function countMember(m) { + if (membersOnly && typeof membersOnly[m] !== "boolean") { + warning("W036", state.tokens.curr, m); + } + if (typeof member[m] === "number") { + member[m] += 1; + } else { + member[m] = 1; + } + } + + type("(number)", function() { + if (state.tokens.next.id === ".") { + warning("W005", this); + } + + return this; + }); + + type("(string)", function() { + return this; + }); + + state.syntax["(identifier)"] = { + type: "(identifier)", + lbp: 0, + identifier: true, + + nud: function(context) { + var v = this.value; + var isLoneArrowParam = state.tokens.next.id === "=>"; + + if (isReserved(context, this)) { + warning("W024", this, v); + } else if (!isLoneArrowParam && !state.funct["(comparray)"].check(v)) { + state.funct["(scope)"].block.use(v, state.tokens.curr); + } + + return this; + }, + + led: function() { + error("E033", state.tokens.next, state.tokens.next.value); + } + }; + + var baseTemplateSyntax = { + identifier: false, + template: true, + }; + state.syntax["(template)"] = _.extend({ + lbp: 155, + type: "(template)", + nud: doTemplateLiteral, + led: doTemplateLiteral, + noSubst: false + }, baseTemplateSyntax); + + state.syntax["(template middle)"] = _.extend({ + lbp: 0, + type: "(template middle)", + noSubst: false + }, baseTemplateSyntax); + + state.syntax["(template tail)"] = _.extend({ + lbp: 0, + type: "(template tail)", + tail: true, + noSubst: false + }, baseTemplateSyntax); + + state.syntax["(no subst template)"] = _.extend({ + lbp: 155, + type: "(template)", + nud: doTemplateLiteral, + led: doTemplateLiteral, + noSubst: true, + tail: true // mark as tail, since it's always the last component + }, baseTemplateSyntax); + + type("(regexp)", function() { + return this; + }); + + delim("(endline)"); + (function(x) { + x.line = x.from = 0; + })(delim("(begin)")); + delim("(end)").reach = true; + delim("(error)").reach = true; + delim("}").reach = true; + delim(")"); + delim("]"); + delim("\"").reach = true; + delim("'").reach = true; + delim(";"); + delim(":").reach = true; + delim("#"); + + reserve("else"); + reserve("case").reach = true; + reserve("catch"); + reserve("default").reach = true; + reserve("finally"); + reserve("true", function() { return this; }); + reserve("false", function() { return this; }); + reserve("null", function() { return this; }); + reserve("this", function() { + if (state.isStrict() && !isMethod() && + !state.option.validthis && ((state.funct["(statement)"] && + state.funct["(name)"].charAt(0) > "Z") || state.funct["(global)"])) { + warning("W040", this); + } + + return this; + }); + + (function(superSymbol) { + superSymbol.rbp = 161; + })(reserve("super", function() { + superNud.call(state.tokens.curr, this); + + return this; + })); + + assignop("=", "assign"); + assignop("+=", "assignadd"); + assignop("-=", "assignsub"); + assignop("*=", "assignmult"); + assignop("/=", "assigndiv").nud = function() { + error("E014"); + }; + assignop("%=", "assignmod"); + assignop("**=", function(context, left, that) { + if (!state.inES7()) { + warning("W119", that, "Exponentiation operator", "7"); + } + + that.left = left; + + checkLeftSideAssign(context, left, that); + + that.right = expression(context, 10); + + return that; + }); + + bitwiseassignop("&="); + bitwiseassignop("|="); + bitwiseassignop("^="); + bitwiseassignop("<<="); + bitwiseassignop(">>="); + bitwiseassignop(">>>="); + infix(",", function(context, left, that) { + if (state.option.nocomma) { + warning("W127", that); + } + + that.left = left; + + if (checkComma()) { + that.right = expression(context, 10); + } else { + that.right = null; + } + + return that; + }, 10, true); + + infix("?", function(context, left, that) { + increaseComplexityCount(); + that.left = left; + that.right = expression(context & ~prodParams.noin, 10); + advance(":"); + expression(context, 10); + return that; + }, 30); + + infix("||", function(context, left, that) { + increaseComplexityCount(); + that.left = left; + that.right = expression(context, 40); + return that; + }, 40); + + var andPrecedence = 50; + infix("&&", function(context, left, that) { + increaseComplexityCount(); + that.left = left; + that.right = expression(context, andPrecedence); + return that; + }, andPrecedence); + + infix("??", function(context, left, that) { + if (!left.paren && (left.id === "||" || left.id === "&&")) { + error("E024", that, "??"); + } + + if (!state.inES11()) { + warning("W119", that, "nullish coalescing", "11"); + } + + increaseComplexityCount(); + that.left = left; + var right = that.right = expression(context, 39); + + if (!right) { + error("E024", state.tokens.next, state.tokens.next.id); + } else if (!right.paren && (right.id === "||" || right.id === "&&")) { + error("E024", that.right, that.right.id); + } + + return that; + }, 39); + infix("**", function(context, left, that) { + if (!state.inES7()) { + warning("W119", that, "Exponentiation operator", "7"); + } + if (!left.paren && beginsUnaryExpression(left)) { + error("E024", that, "**"); + } + + that.left = left; + that.right = expression(context, that.rbp); + return that; + }, 150); + state.syntax["**"].rbp = 140; + bitwise("|", "bitor", 70); + bitwise("^", "bitxor", 80); + bitwise("&", "bitand", 90); + relation("==", function(context, left, right) { + var eqnull = state.option.eqnull && + ((left && left.value) === "null" || (right && right.value) === "null"); + + switch (true) { + case !eqnull && state.option.eqeqeq: + this.from = this.character; + warning("W116", this, "===", "=="); + break; + case isTypoTypeof(right, left, state): + warning("W122", this, right.value); + break; + case isTypoTypeof(left, right, state): + warning("W122", this, left.value); + break; + } + + return this; + }); + relation("===", function(context, left, right) { + if (isTypoTypeof(right, left, state)) { + warning("W122", this, right.value); + } else if (isTypoTypeof(left, right, state)) { + warning("W122", this, left.value); + } + return this; + }); + relation("!=", function(context, left, right) { + var eqnull = state.option.eqnull && + ((left && left.value) === "null" || (right && right.value) === "null"); + + if (!eqnull && state.option.eqeqeq) { + this.from = this.character; + warning("W116", this, "!==", "!="); + } else if (isTypoTypeof(right, left, state)) { + warning("W122", this, right.value); + } else if (isTypoTypeof(left, right, state)) { + warning("W122", this, left.value); + } + return this; + }); + relation("!==", function(context, left, right) { + if (isTypoTypeof(right, left, state)) { + warning("W122", this, right.value); + } else if (isTypoTypeof(left, right, state)) { + warning("W122", this, left.value); + } + return this; + }); + relation("<"); + relation(">"); + relation("<="); + relation(">="); + bitwise("<<", "shiftleft", 120); + bitwise(">>", "shiftright", 120); + bitwise(">>>", "shiftrightunsigned", 120); + infix("in", "in", 120); + infix("instanceof", function(context, left, token) { + var right; + var scope = state.funct["(scope)"]; + token.left = left; + token.right = right = expression(context, 120); + if (!right) { + return token; + } + + if (right.id === "(number)" || + right.id === "(string)" || + right.value === "null" || + (right.value === "undefined" && !scope.has("undefined")) || + right.arity === "unary" || + right.id === "{" || + (right.id === "[" && !right.right) || + right.id === "(regexp)" || + (right.id === "(template)" && !right.tag)) { + error("E060"); + } + + if (right.id === "function") { + warning("W139"); + } + + return token; + }, 120); + infix("+", function(context, left, that) { + var next = state.tokens.next; + var right; + that.left = left; + that.right = right = expression(context, 130); + + if (left && right && left.id === "(string)" && right.id === "(string)") { + left.value += right.value; + left.character = right.character; + if (!state.option.scripturl && reg.javascriptURL.test(left.value)) { + warning("W050", left); + } + return left; + } + + if (next.id === "+" || next.id === "++") { + warning("W007", that.right); + } + + return that; + }, 130); + prefix("+", function(context) { + var next = state.tokens.next; + this.arity = "unary"; + this.right = expression(context, 150); + + if (next.id === "+" || next.id === "++") { + warning("W007", this.right); + } + + return this; + }); + infix("-", function(context, left, that) { + var next = state.tokens.next; + that.left = left; + that.right = expression(context, 130); + + if (next.id === "-" || next.id === "--") { + warning("W006", that.right); + } + + return that; + }, 130); + prefix("-", function(context) { + var next = state.tokens.next; + this.arity = "unary"; + this.right = expression(context, 150); + + if (next.id === "-" || next.id === "--") { + warning("W006", this.right); + } + + return this; + }); + infix("*", "mult", 140); + infix("/", "div", 140); + infix("%", "mod", 140); + + suffix("++"); + prefix("++", "preinc"); + state.syntax["++"].exps = true; + + suffix("--"); + prefix("--", "predec"); + state.syntax["--"].exps = true; + + prefix("delete", function(context) { + this.arity = "unary"; + var p = expression(context, 150); + if (!p) { + return this; + } + + if (p.id !== "." && p.id !== "[") { + warning("W051"); + } + this.first = p; + if (p.identifier && !state.isStrict()) { + p.forgiveUndef = true; + } + return this; + }).exps = true; + + prefix("~", function(context) { + if (state.option.bitwise) { + warning("W016", this, "~"); + } + this.arity = "unary"; + this.right = expression(context, 150); + return this; + }); + + infix("..."); + + prefix("!", function(context) { + this.arity = "unary"; + this.right = expression(context, 150); + + if (!this.right) { // '!' followed by nothing? Give up. + quit("E041", this); + } + + if (bang[this.right.id] === true) { + warning("W018", this, "!"); + } + return this; + }); + + prefix("typeof", function(context) { + this.arity = "unary"; + var p = expression(context, 150); + this.first = this.right = p; + + if (!p) { // 'typeof' followed by nothing? Give up. + quit("E041", this); + } + if (p.identifier) { + p.forgiveUndef = true; + } + return this; + }); + prefix("new", function(context) { + var mp = metaProperty(context, "target", function() { + if (!state.inES6(true)) { + warning("W119", state.tokens.prev, "new.target", "6"); + } + var inFunction, c = state.funct; + while (c) { + inFunction = !c["(global)"]; + if (!c["(arrow)"]) { break; } + c = c["(context)"]; + } + if (!inFunction) { + warning("W136", state.tokens.prev, "new.target"); + } + }); + if (mp) { return mp; } + + var opening = state.tokens.next; + var c = expression(context, 155), i; + + if (!c) { + return this; + } + + if (!c.paren && c.rbp > 160) { + error("E024", opening, opening.value); + } + + if (c.id !== "function") { + if (c.identifier) { + switch (c.value) { + case "Number": + case "String": + case "Boolean": + case "Math": + case "JSON": + warning("W053", state.tokens.prev, c.value); + break; + case "Symbol": + if (state.inES6()) { + warning("W053", state.tokens.prev, c.value); + } + break; + case "Function": + if (!state.option.evil) { + warning("W054"); + } + break; + case "Date": + case "RegExp": + case "this": + break; + default: + i = c.value.substr(0, 1); + if (state.option.newcap && (i < "A" || i > "Z") && + !state.funct["(scope)"].isPredefined(c.value)) { + warning("W055", state.tokens.curr); + } + } + } else { + if (c.id === "?." && !c.paren) { + error("E024", c, "?."); + } else if (c.id !== "." && c.id !== "[" && c.id !== "(") { + warning("W056", state.tokens.curr); + } + } + } else { + if (!state.option.supernew) + warning("W057", this); + } + if (state.tokens.next.id !== "(" && !state.option.supernew) { + warning("W058", state.tokens.curr, state.tokens.curr.value); + } + this.first = this.right = c; + return this; + }); + state.syntax["new"].exps = true; + + + var classDeclaration = blockstmt("class", function(context) { + var className, classNameToken; + + if (!state.inES6()) { + warning("W104", state.tokens.curr, "class", "6"); + } + state.inClassBody = true; + if (state.tokens.next.identifier && state.tokens.next.value !== "extends") { + classNameToken = state.tokens.next; + className = classNameToken.value; + identifier(context); + state.funct["(scope)"].addbinding(className, { + type: "class", + initialized: false, + token: classNameToken + }); + } + if (state.tokens.next.value === "extends") { + advance("extends"); + expression(context, 0); + } + + if (classNameToken) { + this.name = classNameToken; + state.funct["(scope)"].initialize(className); + } else { + this.name = null; + } + + state.funct["(scope)"].stack(); + classBody(this, context); + return this; + }); + classDeclaration.exps = true; + classDeclaration.declaration = true; + prefix("class", function(context) { + var className, classNameToken; + + if (!state.inES6()) { + warning("W104", state.tokens.curr, "class", "6"); + } + state.inClassBody = true; + if (state.tokens.next.identifier && state.tokens.next.value !== "extends") { + classNameToken = state.tokens.next; + className = classNameToken.value; + identifier(context); + } + if (state.tokens.next.value === "extends") { + advance("extends"); + expression(context, 0); + } + + state.funct["(scope)"].stack(); + if (classNameToken) { + this.name = classNameToken; + state.funct["(scope)"].addbinding(className, { + type: "class", + initialized: true, + token: classNameToken + }); + state.funct["(scope)"].block.use(className, classNameToken); + } else { + this.name = null; + } + + classBody(this, context); + return this; + }); + + function classBody(classToken, context) { + var props = Object.create(null); + var name, accessorType, token, isStatic, inGenerator, hasConstructor; + if (state.tokens.next.value === "{") { + advance("{"); + } else { + warning("W116", state.tokens.curr, "identifier", state.tokens.next.type); //? + advance(); + } + + while (state.tokens.next.value !== "}") { + isStatic = false; + inGenerator = false; + context &= ~prodParams.preAsync; + + if (state.tokens.next.value === "static" && + !checkPunctuator(peek(), "(")) { + isStatic = true; + advance(); + } + + if (state.tokens.next.value === "async") { + if (!checkPunctuator(peek(), "(")) { + context |= prodParams.preAsync; + advance(); + + nolinebreak(state.tokens.curr); + + if (checkPunctuator(state.tokens.next, "*")) { + inGenerator = true; + advance("*"); + + if (!state.inES9()) { + warning("W119", state.tokens.next, "async generators", "9"); + } + } + + if (!state.inES8()) { + warning("W119", state.tokens.curr, "async functions", "8"); + } + } + } + + if (state.tokens.next.value === "*") { + inGenerator = true; + advance(); + } + + token = state.tokens.next; + + if ((token.value === "set" || token.value === "get") && !checkPunctuator(peek(), "(")) { + if (inGenerator) { + error("E024", token, token.value); + } + accessorType = token.value; + advance(); + token = state.tokens.next; + + if (!isStatic && token.value === "constructor") { + error("E049", token, "class " + accessorType + "ter method", token.value); + } else if (isStatic && token.value === "prototype") { + error("E049", token, "static class " + accessorType + "ter method", token.value); + } + } else { + accessorType = null; + } + + switch (token.value) { + case ";": + warning("W032", token); + advance(); + break; + case "constructor": + if (isStatic) { + name = propertyName(context); + saveProperty(props, name, token, true, isStatic); + doMethod(classToken, context, name, inGenerator); + } else { + if (inGenerator || context & prodParams.preAsync) { + error("E024", token, token.value); + } else if (hasConstructor) { + error("E024", token, token.value); + } else { + hasConstructor = !accessorType && !isStatic; + } + advance(); + doMethod(classToken, context, state.nameStack.infer()); + } + break; + case "[": + name = computedPropertyName(context); + doMethod(classToken, context, name, inGenerator); + break; + default: + name = propertyName(context); + if (name === undefined) { + error("E024", token, token.value); + advance(); + break; + } + + if (accessorType) { + saveAccessor(accessorType, props, name, token, true, isStatic); + name = state.nameStack.infer(); + } else { + if (isStatic && name === "prototype") { + error("E049", token, "static class method", name); + } + + saveProperty(props, name, token, true, isStatic); + } + + doMethod(classToken, context, name, inGenerator); + break; + } + } + advance("}"); + checkProperties(props); + + state.inClassBody = false; + state.funct["(scope)"].unstack(); + } + + function doMethod(classToken, context, name, generator) { + if (generator) { + if (!state.inES6()) { + warning("W119", state.tokens.curr, "function*", "6"); + } + } + + if (state.tokens.next.value !== "(") { + error("E054", state.tokens.next, state.tokens.next.value); + advance(); + if (state.tokens.next.value === "{") { + advance(); + if (state.tokens.next.value === "}") { + warning("W116", state.tokens.next, "(", state.tokens.next.value); + advance(); + identifier(context); + advance(); + } + return; + } else { + while (state.tokens.next.value !== "(") { + advance(); + } + } + } + + doFunction(context, { name: name, + type: generator ? "generator" : null, + isMethod: true, + statement: classToken }); + } + + prefix("void").exps = true; + + infix(".", function(context, left, that) { + var m = identifier(context, true); + + if (typeof m === "string") { + countMember(m); + } + + that.left = left; + that.right = m; + + if (m && m === "hasOwnProperty" && state.tokens.next.value === "=") { + warning("W001"); + } + + if (left && left.value === "arguments" && (m === "callee" || m === "caller")) { + if (state.option.noarg) + warning("W059", left, m); + else if (state.isStrict()) + error("E008"); + } else if (!state.option.evil && left && left.value === "document" && + (m === "write" || m === "writeln")) { + warning("W060", left); + } + + if (!state.option.evil && (m === "eval" || m === "execScript")) { + if (isGlobalEval(left, state)) { + warning("W061"); + } + } + + return that; + }, 160, true); + + infix("?.", function(context, left, that) { + if (!state.inES11()) { + warning("W119", state.tokens.curr, "Optional chaining", "11"); + } + + + if (checkPunctuator(state.tokens.next, "[")) { + that.left = left; + advance(); + that.right = state.tokens.curr.led(context, left); + } else if (checkPunctuator(state.tokens.next, "(")) { + that.left = left; + advance(); + that.right = state.tokens.curr.led(context, left); + that.exps = true; + } else { + state.syntax["."].led.call(that, context, left); + } + + if (state.tokens.next.type === "(template)") { + error("E024", state.tokens.next, "`"); + } + + return that; + }, 160, true); + function isTypicalCallExpression(token) { + return token.identifier || token.id === "." || token.id === "[" || + token.id === "=>" || token.id === "(" || token.id === "&&" || + token.id === "||" || token.id === "?" || token.id === "async" || + token.id === "?." || (state.inES6() && token["(name)"]); + } + + infix("(", function(context, left, that) { + if (state.option.immed && left && !left.immed && left.id === "function") { + warning("W062"); + } + + if (state.option.asi && checkPunctuators(state.tokens.prev, [")", "]"]) && + !sameLine(state.tokens.prev, state.tokens.curr)) { + warning("W014", state.tokens.curr, state.tokens.curr.id); + } + + var n = 0; + var p = []; + + if (left) { + if (left.type === "(identifier)") { + var newcapRe = /^[A-Z]([A-Z0-9_$]*[a-z][A-Za-z0-9_$]*)?$/; + var newcapIgnore = [ + "Array", "Boolean", "Date", "Error", "Function", "Number", + "Object", "RegExp", "String", "Symbol" + ]; + if (newcapRe.test(left.value) && newcapIgnore.indexOf(left.value) === -1) { + if (left.value === "Math") { + warning("W063", left); + } else if (state.option.newcap) { + warning("W064", left); + } + } + } + } + + if (state.tokens.next.id !== ")") { + for (;;) { + spreadrest("spread"); + + p[p.length] = expression(context, 10); + n += 1; + if (state.tokens.next.id !== ",") { + break; + } + advance(","); + checkComma({ allowTrailing: true }); + + if (state.tokens.next.id === ")") { + if (!state.inES8()) { + warning("W119", state.tokens.curr, "Trailing comma in arguments lists", "8"); + } + + break; + } + } + } + + advance(")"); + + if (typeof left === "object") { + if (!state.inES5() && left.value === "parseInt" && n === 1) { + warning("W065", state.tokens.curr); + } + if (!state.option.evil) { + if (left.value === "eval" || left.value === "Function" || + left.value === "execScript") { + warning("W061", left); + } else if (p[0] && p[0].id === "(string)" && + (left.value === "setTimeout" || + left.value === "setInterval")) { + warning("W066", left); + addEvalCode(left, p[0]); + } else if (p[0] && p[0].id === "(string)" && + left.value === "." && + left.left.value === "window" && + (left.right === "setTimeout" || + left.right === "setInterval")) { + warning("W066", left); + addEvalCode(left, p[0]); + } + } + if (!isTypicalCallExpression(left)) { + warning("W067", that); + } + } + + that.left = left; + return that; + }, 155, true).exps = true; + + function peekThroughParens(parens) { + var pn = state.tokens.next; + var i = -1; + var pn1; + + do { + if (pn.value === "(") { + parens += 1; + } else if (pn.value === ")") { + parens -= 1; + } + + i += 1; + pn1 = pn; + pn = peek(i); + } while (!(parens === 0 && pn1.value === ")") && pn.type !== "(end)"); + + return pn; + } + + prefix("(", function(context, rbp) { + var ret, triggerFnExpr, first, last; + var opening = state.tokens.curr; + var preceeding = state.tokens.prev; + var isNecessary = !state.option.singleGroups; + var pn = peekThroughParens(1); + + if (state.tokens.next.id === "function") { + triggerFnExpr = state.tokens.next.immed = true; + } + if (pn.value === "=>") { + pn.funct = doFunction(context, { type: "arrow", parsedOpening: true }); + return pn; + } + if (state.tokens.next.id === ")") { + advance(")"); + return; + } + + ret = expression(context, 0); + + advance(")", this); + + if (!ret) { + return; + } + + ret.paren = true; + + if (state.option.immed && ret && ret.id === "function") { + if (state.tokens.next.id !== "(" && + state.tokens.next.id !== "." && state.tokens.next.id !== "[") { + warning("W068", this); + } + } + + if (ret.id === ",") { + first = ret.left; + while (first.id === ",") { + first = first.left; + } + + last = ret.right; + } else { + first = last = ret; + + if (!isNecessary) { + if (!triggerFnExpr) { + triggerFnExpr = ret.id === "async"; + } + + isNecessary = + (opening.beginsStmt && (ret.id === "{" || triggerFnExpr)) || + (triggerFnExpr && + (!isEndOfExpr() || state.tokens.prev.id !== "}")) || + (ret.id === "=>" && !isEndOfExpr()) || + (ret.id === "{" && preceeding.id === "=>") || + (beginsUnaryExpression(ret) && state.tokens.next.id === "**") || + (preceeding.id === "??" && (ret.id === "&&" || ret.id === "||")) || + (ret.type === "(number)" && + checkPunctuator(pn, ".") && /^\d+$/.test(ret.value)) || + (opening.beginsStmt && ret.id === "=" && ret.left.id === "{") || + (ret.id === "?." && + (preceeding.id === "new" || state.tokens.next.type === "(template)")); + } + } + if (!isNecessary && (isOperator(first) || first !== last)) { + isNecessary = + (rbp > first.lbp) || + (rbp > 0 && rbp === first.lbp) || + (!isEndOfExpr() && last.rbp < state.tokens.next.lbp); + } + + if (!isNecessary) { + warning("W126", opening); + } + + return ret; + }); + + application("=>").rbp = 161; + + infix("[", function(context, left, that) { + var e, s, canUseDot; + + if (state.option.asi && checkPunctuators(state.tokens.prev, [")", "]"]) && + !sameLine(state.tokens.prev, state.tokens.curr)) { + warning("W014", state.tokens.curr, state.tokens.curr.id); + } + + e = expression(context & ~prodParams.noin, 0); + + if (e && e.type === "(string)") { + if (!state.option.evil && (e.value === "eval" || e.value === "execScript")) { + if (isGlobalEval(left, state)) { + warning("W061"); + } + } + + countMember(e.value); + if (!state.option.sub && reg.identifier.test(e.value)) { + s = state.syntax[e.value]; + + if (s) { + canUseDot = !isReserved(context, s); + } else { + canUseDot = e.value !== "eval" && e.value !== "arguments"; + } + + if (canUseDot) { + warning("W069", state.tokens.prev, e.value); + } + } + } + advance("]", that); + + if (e && e.value === "hasOwnProperty" && state.tokens.next.value === "=") { + warning("W001"); + } + + that.left = left; + that.right = e; + return that; + }, 160, true); + + function comprehensiveArrayExpression(context) { + var res = {}; + res.exps = true; + state.funct["(comparray)"].stack(); + var reversed = false; + if (state.tokens.next.value !== "for") { + reversed = true; + if (!state.inMoz()) { + warning("W116", state.tokens.next, "for", state.tokens.next.value); + } + state.funct["(comparray)"].setState("use"); + res.right = expression(context, 10); + } + + advance("for"); + if (state.tokens.next.value === "each") { + advance("each"); + if (!state.inMoz()) { + warning("W118", state.tokens.curr, "for each"); + } + } + advance("("); + state.funct["(comparray)"].setState("define"); + res.left = expression(context, 130); + if (_.includes(["in", "of"], state.tokens.next.value)) { + advance(); + } else { + error("E045", state.tokens.curr); + } + state.funct["(comparray)"].setState("generate"); + expression(context, 10); + + advance(")"); + if (state.tokens.next.value === "if") { + advance("if"); + advance("("); + state.funct["(comparray)"].setState("filter"); + expression(context, 10); + advance(")"); + } + + if (!reversed) { + state.funct["(comparray)"].setState("use"); + res.right = expression(context, 10); + } + + advance("]"); + state.funct["(comparray)"].unstack(); + return res; + } + + prefix("[", function(context) { + var blocktype = lookupBlockType(); + if (blocktype.isCompArray) { + if (!state.option.esnext && !state.inMoz()) { + warning("W118", state.tokens.curr, "array comprehension"); + } + return comprehensiveArrayExpression(context); + } else if (blocktype.isDestAssign) { + this.destructAssign = destructuringPattern(context, { + openingParsed: true, + assignment: true + }); + return this; + } + var b = !sameLine(state.tokens.curr, state.tokens.next); + this.first = []; + if (b) { + indent += state.option.indent; + if (state.tokens.next.from === indent + state.option.indent) { + indent += state.option.indent; + } + } + while (state.tokens.next.id !== "(end)") { + while (state.tokens.next.id === ",") { + if (!state.option.elision) { + if (!state.inES5()) { + warning("W070"); + } else { + warning("W128"); + do { + advance(","); + } while (state.tokens.next.id === ","); + continue; + } + } + advance(","); + } + + if (state.tokens.next.id === "]") { + break; + } + + spreadrest("spread"); + + this.first.push(expression(context, 10)); + if (state.tokens.next.id === ",") { + advance(","); + checkComma({ allowTrailing: true }); + if (state.tokens.next.id === "]" && !state.inES5()) { + warning("W070", state.tokens.curr); + break; + } + } else { + if (state.option.trailingcomma && state.inES5()) { + warningAt("W140", state.tokens.curr.line, state.tokens.curr.character); + } + break; + } + } + if (b) { + indent -= state.option.indent; + } + advance("]", this); + return this; + }); + + + function isMethod() { + return !!state.funct["(method)"]; + } + function propertyName(context) { + var id = optionalidentifier(context, true); + + if (!id) { + if (state.tokens.next.id === "(string)") { + id = state.tokens.next.value; + advance(); + } else if (state.tokens.next.id === "(number)") { + id = state.tokens.next.value.toString(); + advance(); + } + } + + if (id === "hasOwnProperty") { + warning("W001"); + } + + return id; + } + function functionparams(context, options) { + var next; + var paramsIds = []; + var ident; + var tokens = []; + var t; + var pastDefault = false; + var pastRest = false; + var arity = 0; + var loneArg = options && options.loneArg; + var hasDestructuring = false; + + if (loneArg && loneArg.identifier === true) { + state.funct["(scope)"].addParam(loneArg.value, loneArg); + return { arity: 1, params: [ loneArg.value ], isSimple: true }; + } + + next = state.tokens.next; + + if (!options || !options.parsedOpening) { + advance("("); + } + + if (state.tokens.next.id === ")") { + advance(")"); + return; + } + + function addParam(addParamArgs) { + state.funct["(scope)"].addParam.apply(state.funct["(scope)"], addParamArgs); + } + + for (;;) { + arity++; + var currentParams = []; + + pastRest = spreadrest("rest"); + + if (_.includes(["{", "["], state.tokens.next.id)) { + hasDestructuring = true; + tokens = destructuringPattern(context); + for (t in tokens) { + t = tokens[t]; + if (t.id) { + paramsIds.push(t.id); + currentParams.push([t.id, t.token]); + } + } + } else { + ident = identifier(context); + + if (ident) { + paramsIds.push(ident); + currentParams.push([ident, state.tokens.curr]); + } else { + while (!checkPunctuators(state.tokens.next, [",", ")"])) advance(); + } + } + if (pastDefault) { + if (state.tokens.next.id !== "=") { + error("W138", state.tokens.curr); + } + } + if (state.tokens.next.id === "=") { + if (!state.inES6()) { + warning("W119", state.tokens.next, "default parameters", "6"); + } + + if (pastRest) { + error("E062", state.tokens.next); + } + + advance("="); + pastDefault = true; + expression(context, 10); + } + currentParams.forEach(addParam); + if (state.tokens.next.id === ",") { + if (pastRest) { + warning("W131", state.tokens.next); + } + advance(","); + checkComma({ allowTrailing: true }); + } + + if (state.tokens.next.id === ")") { + if (state.tokens.curr.id === "," && !state.inES8()) { + warning("W119", state.tokens.curr, "Trailing comma in function parameters", "8"); + } + + advance(")", next); + return { + arity: arity, + params: paramsIds, + isSimple: !hasDestructuring && !pastRest && !pastDefault + }; + } + } + } + function functor(name, token, overwrites) { + var funct = { + "(name)" : name, + "(breakage)" : 0, + "(loopage)" : 0, + "(isStrict)" : "unknown", + + "(global)" : false, + + "(line)" : null, + "(character)" : null, + "(metrics)" : null, + "(statement)" : null, + "(context)" : null, + "(scope)" : null, + "(comparray)" : null, + "(yielded)" : null, + "(arrow)" : null, + "(async)" : null, + "(params)" : null + }; + + if (token) { + _.extend(funct, { + "(line)" : token.line, + "(character)": token.character, + "(metrics)" : createMetrics(token) + }); + } + + _.extend(funct, overwrites); + + if (funct["(context)"]) { + funct["(scope)"] = funct["(context)"]["(scope)"]; + funct["(comparray)"] = funct["(context)"]["(comparray)"]; + } + + return funct; + } + function hasParsedCode(funct) { + return funct["(global)"] && !funct["(verb)"]; + } + function doTemplateLiteral(context, leftOrRbp) { + var ctx = this.context; + var noSubst = this.noSubst; + var depth = this.depth; + var left = typeof leftOrRbp === "number" ? null : leftOrRbp; + + if (!noSubst) { + while (!end()) { + if (!state.tokens.next.template || state.tokens.next.depth > depth) { + expression(context, 0); // should probably have different rbp? + } else { + advance(); + } + } + } + + return { + id: "(template)", + type: "(template)", + tag: left + }; + + function end() { + if (state.tokens.curr.template && state.tokens.curr.tail && + state.tokens.curr.context === ctx) { + return true; + } + var complete = (state.tokens.next.template && state.tokens.next.tail && + state.tokens.next.context === ctx); + if (complete) advance(); + return complete || state.tokens.next.isUnclosed; + } + } + function doFunction(context, options) { + var f, token, name, statement, classExprBinding, isGenerator, isArrow, + isMethod, ignoreLoopFunc; + var oldOption = state.option; + var oldIgnored = state.ignored; + var isAsync = context & prodParams.preAsync; + + if (options) { + name = options.name; + statement = options.statement; + classExprBinding = options.classExprBinding; + isGenerator = options.type === "generator"; + isArrow = options.type === "arrow"; + isMethod = options.isMethod; + ignoreLoopFunc = options.ignoreLoopFunc; + } + + context &= ~prodParams.noin; + context &= ~prodParams.tryClause; + + if (isAsync) { + context |= prodParams.async; + } else { + context &= ~prodParams.async; + } + + if (isGenerator) { + context |= prodParams.yield; + } else if (!isArrow) { + context &= ~prodParams.yield; + } + context &= ~prodParams.preAsync; + + state.option = Object.create(state.option); + state.ignored = Object.create(state.ignored); + + state.funct = functor(name || state.nameStack.infer(), state.tokens.next, { + "(statement)": statement, + "(context)": state.funct, + "(arrow)": isArrow, + "(method)": isMethod, + "(async)": isAsync + }); + + f = state.funct; + token = state.tokens.curr; + + functions.push(state.funct); + state.funct["(scope)"].stack("functionouter"); + var internallyAccessibleName = !isMethod && (name || classExprBinding); + if (internallyAccessibleName) { + state.funct["(scope)"].block.add(internallyAccessibleName, + classExprBinding ? "class" : "function", state.tokens.curr, false); + } + + if (!isArrow) { + state.funct["(scope)"].funct.add("arguments", "var", token, false); + } + state.funct["(scope)"].stack("functionparams"); + + var paramsInfo = functionparams(context, options); + + if (paramsInfo) { + state.funct["(params)"] = paramsInfo.params; + state.funct["(hasSimpleParams)"] = paramsInfo.isSimple; + state.funct["(metrics)"].arity = paramsInfo.arity; + state.funct["(metrics)"].verifyMaxParametersPerFunction(); + } else { + state.funct["(params)"] = []; + state.funct["(metrics)"].arity = 0; + state.funct["(hasSimpleParams)"] = true; + } + + if (isArrow) { + context &= ~prodParams.yield; + + if (!state.inES6(true)) { + warning("W119", state.tokens.curr, "arrow function syntax (=>)", "6"); + } + + if (!options.loneArg) { + advance("=>"); + } + } + + block(context, false, true, true, isArrow); + + if (!state.option.noyield && isGenerator && !state.funct["(yielded)"]) { + warning("W124", state.tokens.curr); + } + + state.funct["(metrics)"].verifyMaxStatementsPerFunction(); + state.funct["(metrics)"].verifyMaxComplexityPerFunction(); + state.funct["(unusedOption)"] = state.option.unused; + state.option = oldOption; + state.ignored = oldIgnored; + state.funct["(last)"] = state.tokens.curr.line; + state.funct["(lastcharacter)"] = state.tokens.curr.character; + state.funct["(scope)"].unstack(); // also does usage and label checks + state.funct["(scope)"].unstack(); + + state.funct = state.funct["(context)"]; + + if (!ignoreLoopFunc && !state.option.loopfunc && state.funct["(loopage)"]) { + if (f["(outerMutables)"]) { + warning("W083", token, f["(outerMutables)"].join(", ")); + } + } + + return f; + } + + function createMetrics(functionStartToken) { + return { + statementCount: 0, + nestedBlockDepth: -1, + ComplexityCount: 1, + arity: 0, + + verifyMaxStatementsPerFunction: function() { + if (state.option.maxstatements && + this.statementCount > state.option.maxstatements) { + warning("W071", functionStartToken, this.statementCount); + } + }, + + verifyMaxParametersPerFunction: function() { + if (_.isNumber(state.option.maxparams) && + this.arity > state.option.maxparams) { + warning("W072", functionStartToken, this.arity); + } + }, + + verifyMaxNestedBlockDepthPerFunction: function() { + if (state.option.maxdepth && + this.nestedBlockDepth > 0 && + this.nestedBlockDepth === state.option.maxdepth + 1) { + warning("W073", null, this.nestedBlockDepth); + } + }, + + verifyMaxComplexityPerFunction: function() { + var max = state.option.maxcomplexity; + var cc = this.ComplexityCount; + if (max && cc > max) { + warning("W074", functionStartToken, cc); + } + } + }; + } + + function increaseComplexityCount() { + state.funct["(metrics)"].ComplexityCount += 1; + } + + function checkCondAssignment(token) { + if (!token || token.paren) { + return; + } + + if (token.id === ",") { + checkCondAssignment(token.right); + return; + } + + switch (token.id) { + case "=": + case "+=": + case "-=": + case "*=": + case "%=": + case "&=": + case "|=": + case "^=": + case "/=": + if (!state.option.boss) { + warning("W084", token); + } + } + } + function checkProperties(props) { + if (state.inES5()) { + for (var name in props) { + if (props[name] && props[name].setterToken && !props[name].getterToken && + !props[name].static) { + warning("W078", props[name].setterToken); + } + } + } + } + + function metaProperty(context, name, c) { + if (checkPunctuator(state.tokens.next, ".")) { + var left = state.tokens.curr.id; + advance("."); + var id = identifier(context); + state.tokens.curr.isMetaProperty = true; + if (name !== id) { + error("E057", state.tokens.prev, left, id); + } else { + c(); + } + return state.tokens.curr; + } + } + (function(x) { + x.nud = function(context) { + var b, f, i, params, t, isGeneratorMethod = false, nextVal; + var props = Object.create(null); // All properties, including accessors + var isAsyncMethod = false; + + b = !sameLine(state.tokens.curr, state.tokens.next); + if (b) { + indent += state.option.indent; + if (state.tokens.next.from === indent + state.option.indent) { + indent += state.option.indent; + } + } + + var blocktype = lookupBlockType(); + if (blocktype.isDestAssign) { + this.destructAssign = destructuringPattern(context, { + openingParsed: true, + assignment: true + }); + return this; + } + state.inObjectBody = true; + for (;;) { + if (state.tokens.next.id === "}") { + break; + } + + nextVal = state.tokens.next.value; + if (state.tokens.next.identifier && + (peekIgnoreEOL().id === "," || peekIgnoreEOL().id === "}")) { + if (!state.inES6()) { + warning("W104", state.tokens.next, "object short notation", "6"); + } + t = expression(context, 10); + i = t && t.value; + if (t) { + saveProperty(props, i, t); + } + + } else if (peek().id !== ":" && (nextVal === "get" || nextVal === "set")) { + advance(nextVal); + + if (!state.inES5()) { + error("E034"); + } + + if (state.tokens.next.id === "[") { + i = computedPropertyName(context); + } else { + i = propertyName(context); + if (!i && !state.inES6()) { + error("E035"); + } + } + if (i) { + saveAccessor(nextVal, props, i, state.tokens.curr); + } + + t = state.tokens.next; + f = doFunction(context, { isMethod: true }); + params = f["(params)"]; + if (nextVal === "get" && i && params.length) { + warning("W076", t, params[0], i); + } else if (nextVal === "set" && i && f["(metrics)"].arity !== 1) { + warning("W077", t, i); + } + + } else if (spreadrest("spread")) { + if (!state.inES9()) { + warning("W119", state.tokens.next, "object spread property", "9"); + } + + expression(context, 10); + } else { + if (state.tokens.next.id === "async" && !checkPunctuators(peek(), ["(", ":"])) { + if (!state.inES8()) { + warning("W119", state.tokens.next, "async functions", "8"); + } + + isAsyncMethod = true; + advance(); + + nolinebreak(state.tokens.curr); + } else { + isAsyncMethod = false; + } + + if (state.tokens.next.value === "*" && state.tokens.next.type === "(punctuator)") { + if (isAsyncMethod && !state.inES9()) { + warning("W119", state.tokens.next, "async generators", "9"); + } else if (!state.inES6()) { + warning("W104", state.tokens.next, "generator functions", "6"); + } + + advance("*"); + isGeneratorMethod = true; + } else { + isGeneratorMethod = false; + } + + if (state.tokens.next.id === "[") { + i = computedPropertyName(context); + state.nameStack.set(i); + } else { + state.nameStack.set(state.tokens.next); + i = propertyName(context); + saveProperty(props, i, state.tokens.next); + + if (typeof i !== "string") { + break; + } + } + + if (state.tokens.next.value === "(") { + if (!state.inES6()) { + warning("W104", state.tokens.curr, "concise methods", "6"); + } + + doFunction(isAsyncMethod ? context | prodParams.preAsync : context, { + isMethod: true, + type: isGeneratorMethod ? "generator" : null + }); + } else { + advance(":"); + expression(context, 10); + } + } + + countMember(i); + + if (state.tokens.next.id === ",") { + advance(","); + checkComma({ allowTrailing: true, property: true }); + if (state.tokens.next.id === ",") { + warning("W070", state.tokens.curr); + } else if (state.tokens.next.id === "}" && !state.inES5()) { + warning("W070", state.tokens.curr); + } + } else { + if (state.option.trailingcomma && state.inES5()) { + warningAt("W140", state.tokens.curr.line, state.tokens.curr.character); + } + break; + } + } + if (b) { + indent -= state.option.indent; + } + advance("}", this); + + checkProperties(props); + state.inObjectBody = false; + + return this; + }; + x.fud = function() { + error("E036", state.tokens.curr); + }; + }(delim("{"))); + + function destructuringPattern(context, options) { + var isAssignment = options && options.assignment; + + context &= ~prodParams.noin; + + if (!state.inES6()) { + warning("W104", state.tokens.curr, + isAssignment ? "destructuring assignment" : "destructuring binding", "6"); + } + + return destructuringPatternRecursive(context, options); + } + + function destructuringPatternRecursive(context, options) { + var ids, idx; + var identifiers = []; + var openingParsed = options && options.openingParsed; + var isAssignment = options && options.assignment; + var recursiveOptions = isAssignment ? { assignment: isAssignment } : null; + var firstToken = openingParsed ? state.tokens.curr : state.tokens.next; + + var nextInnerDE = function() { + var ident; + if (checkPunctuators(state.tokens.next, ["[", "{"])) { + ids = destructuringPatternRecursive(context, recursiveOptions); + for (idx = 0; idx < ids.length; idx++) { + identifiers.push({ id: ids[idx].id, token: ids[idx].token }); + } + } else if (checkPunctuator(state.tokens.next, ",")) { + identifiers.push({ id: null, token: state.tokens.curr }); + } else if (checkPunctuator(state.tokens.next, "(")) { + advance("("); + nextInnerDE(); + advance(")"); + } else { + if (isAssignment) { + var assignTarget = expression(context, 20); + if (assignTarget) { + checkLeftSideAssign(context, assignTarget); + if (assignTarget.identifier) { + ident = assignTarget.value; + } + } + } else { + ident = identifier(context); + } + if (ident) { + identifiers.push({ id: ident, token: state.tokens.curr }); + } + } + }; + + var assignmentProperty = function(context) { + var id, expr; + + if (checkPunctuator(state.tokens.next, "[")) { + advance("["); + expression(context, 10); + advance("]"); + advance(":"); + nextInnerDE(); + } else if (state.tokens.next.id === "(string)" || + state.tokens.next.id === "(number)") { + advance(); + advance(":"); + nextInnerDE(); + } else { + var isRest = spreadrest("rest"); + + if (isRest) { + if (!state.inES9()) { + warning("W119", state.tokens.next, "object rest property", "9"); + } + if (state.tokens.next.type === "(identifier)") { + id = identifier(context); + } else { + expr = expression(context, 10); + error("E030", expr, expr.value); + } + } else { + id = identifier(context); + } + + if (!isRest && checkPunctuator(state.tokens.next, ":")) { + advance(":"); + nextInnerDE(); + } else if (id) { + if (isAssignment) { + checkLeftSideAssign(context, state.tokens.curr); + } + identifiers.push({ id: id, token: state.tokens.curr }); + } + + if (isRest && checkPunctuator(state.tokens.next, ",")) { + warning("W130", state.tokens.next); + } + } + }; + + var id, value; + if (checkPunctuator(firstToken, "[")) { + if (!openingParsed) { + advance("["); + } + if (checkPunctuator(state.tokens.next, "]")) { + warning("W137", state.tokens.curr); + } + var element_after_rest = false; + while (!checkPunctuator(state.tokens.next, "]")) { + var isRest = spreadrest("rest"); + + nextInnerDE(); + + if (isRest && !element_after_rest && + checkPunctuator(state.tokens.next, ",")) { + warning("W130", state.tokens.next); + element_after_rest = true; + } + if (!isRest && checkPunctuator(state.tokens.next, "=")) { + if (checkPunctuator(state.tokens.prev, "...")) { + advance("]"); + } else { + advance("="); + } + id = state.tokens.prev; + value = expression(context, 10); + if (value && value.identifier && value.value === "undefined") { + warning("W080", id, id.value); + } + } + if (!checkPunctuator(state.tokens.next, "]")) { + advance(","); + } + } + advance("]"); + } else if (checkPunctuator(firstToken, "{")) { + + if (!openingParsed) { + advance("{"); + } + if (checkPunctuator(state.tokens.next, "}")) { + warning("W137", state.tokens.curr); + } + while (!checkPunctuator(state.tokens.next, "}")) { + assignmentProperty(context); + if (checkPunctuator(state.tokens.next, "=")) { + advance("="); + id = state.tokens.prev; + value = expression(context, 10); + if (value && value.identifier && value.value === "undefined") { + warning("W080", id, id.value); + } + } + if (!checkPunctuator(state.tokens.next, "}")) { + advance(","); + if (checkPunctuator(state.tokens.next, "}")) { + break; + } + } + } + advance("}"); + } + return identifiers; + } + + function destructuringPatternMatch(tokens, value) { + var first = value.first; + + if (!first) + return; + + _.zip(tokens, Array.isArray(first) ? first : [ first ]).forEach(function(val) { + var token = val[0]; + var value = val[1]; + + if (token && value) + token.first = value; + else if (token && token.first && !value) + warning("W080", token.first, token.first.value); + }); + } + + function blockVariableStatement(type, statement, context) { + + var noin = context & prodParams.noin; + var isLet = type === "let"; + var isConst = type === "const"; + var tokens, lone, value, letblock; + + if (!state.inES6()) { + warning("W104", state.tokens.curr, type, "6"); + } + + if (isLet && isMozillaLet()) { + advance("("); + state.funct["(scope)"].stack(); + letblock = true; + statement.declaration = false; + } + + statement.first = []; + for (;;) { + var names = []; + if (_.includes(["{", "["], state.tokens.next.value)) { + tokens = destructuringPattern(context); + lone = false; + } else { + tokens = [ { id: identifier(context), token: state.tokens.curr } ]; + lone = true; + } + if (!noin && isConst && state.tokens.next.id !== "=") { + warning("E012", state.tokens.curr, state.tokens.curr.value); + } + + for (var t in tokens) { + if (tokens.hasOwnProperty(t)) { + t = tokens[t]; + if (t.id === "let") { + warning("W024", t.token, t.id); + } + + if (state.funct["(scope)"].block.isGlobal()) { + if (predefined[t.id] === false) { + warning("W079", t.token, t.id); + } + } + if (t.id) { + state.funct["(scope)"].addbinding(t.id, { + type: type, + token: t.token }); + names.push(t.token); + } + } + } + + if (state.tokens.next.id === "=") { + statement.hasInitializer = true; + + advance("="); + if (!noin && peek(0).id === "=" && state.tokens.next.identifier) { + warning("W120", state.tokens.next, state.tokens.next.value); + } + var id = state.tokens.prev; + value = expression(context, 10); + if (value) { + if (value.identifier && value.value === "undefined") { + warning("W080", id, id.value); + } + if (!lone) { + destructuringPatternMatch(names, value); + } + } + } + if (state.tokens.next.value !== "in" && state.tokens.next.value !== "of") { + for (t in tokens) { + if (tokens.hasOwnProperty(t)) { + t = tokens[t]; + state.funct["(scope)"].initialize(t.id); + } + } + } + + statement.first = statement.first.concat(names); + + if (state.tokens.next.id !== ",") { + break; + } + + statement.hasComma = true; + advance(","); + checkComma(); + } + if (letblock) { + advance(")"); + block(context, true, true); + statement.block = true; + state.funct["(scope)"].unstack(); + } + + return statement; + } + + var conststatement = stmt("const", function(context) { + return blockVariableStatement("const", this, context); + }); + conststatement.exps = true; + conststatement.declaration = true; + function isMozillaLet() { + return state.tokens.next.id === "(" && state.inMoz(); + } + var letstatement = stmt("let", function(context) { + return blockVariableStatement("let", this, context); + }); + letstatement.nud = function(context, rbp) { + if (isMozillaLet()) { + state.funct["(scope)"].stack(); + advance("("); + state.tokens.prev.fud(context); + advance(")"); + expression(context, rbp); + state.funct["(scope)"].unstack(); + } else { + this.exps = false; + return state.syntax["(identifier)"].nud.apply(this, arguments); + } + }; + letstatement.meta = { es5: true, isFutureReservedWord: false, strictOnly: true }; + letstatement.exps = true; + letstatement.declaration = true; + letstatement.useFud = function(context) { + var next = state.tokens.next; + var nextIsBindingName; + + if (this.line !== next.line && !state.inES6()) { + return false; + } + nextIsBindingName = next.identifier && (!isReserved(context, next) || + next.id === "let"); + + return nextIsBindingName || checkPunctuators(next, ["{", "["]) || + isMozillaLet(); + }; + + var varstatement = stmt("var", function(context) { + var noin = context & prodParams.noin; + var tokens, lone, value, id; + + this.first = []; + for (;;) { + var names = []; + if (_.includes(["{", "["], state.tokens.next.value)) { + tokens = destructuringPattern(context); + lone = false; + } else { + tokens = []; + id = identifier(context); + + if (id) { + tokens.push({ id: id, token: state.tokens.curr }); + } + + lone = true; + } + + if (state.option.varstmt) { + warning("W132", this); + } + + + for (var t in tokens) { + if (tokens.hasOwnProperty(t)) { + t = tokens[t]; + if (state.funct["(global)"] && !state.impliedClosure()) { + if (predefined[t.id] === false) { + warning("W079", t.token, t.id); + } else if (state.option.futurehostile === false) { + if ((!state.inES5() && vars.ecmaIdentifiers[5][t.id] === false) || + (!state.inES6() && vars.ecmaIdentifiers[6][t.id] === false)) { + warning("W129", t.token, t.id); + } + } + } + if (t.id) { + state.funct["(scope)"].addbinding(t.id, { + type: "var", + token: t.token }); + + names.push(t.token); + } + } + } + + if (state.tokens.next.id === "=") { + this.hasInitializer = true; + + state.nameStack.set(state.tokens.curr); + + advance("="); + if (peek(0).id === "=" && state.tokens.next.identifier) { + if (!noin && + !state.funct["(params)"] || + state.funct["(params)"].indexOf(state.tokens.next.value) === -1) { + warning("W120", state.tokens.next, state.tokens.next.value); + } + } + id = state.tokens.prev; + value = expression(context, 10); + if (value) { + if (!state.funct["(loopage)"] && value.identifier && + value.value === "undefined") { + warning("W080", id, id.value); + } + if (!lone) { + destructuringPatternMatch(names, value); + } + } + } + + this.first = this.first.concat(names); + + if (state.tokens.next.id !== ",") { + break; + } + this.hasComma = true; + advance(","); + checkComma(); + } + + return this; + }); + varstatement.exps = true; + + blockstmt("function", function(context) { + var inexport = context & prodParams.export; + var generator = false; + var isAsync = context & prodParams.preAsync; + var labelType = ""; + + if (isAsync) { + labelType = "async "; + } + + if (state.tokens.next.value === "*") { + if (isAsync && !state.inES9()) { + warning("W119", state.tokens.prev, "async generators", "9"); + } else if (!isAsync && !state.inES6(true)) { + warning("W119", state.tokens.next, "function*", "6"); + } + + advance("*"); + labelType += "generator "; + generator = true; + } + + labelType += "function"; + + if (inblock) { + warning("W082", state.tokens.curr); + } + this.name = optionalidentifier(context) ? state.tokens.curr : null; + + if (!this.name) { + if (!inexport) { + warning("W025"); + } + } else { + state.funct["(scope)"].addbinding(this.name.value, { + type: labelType, + token: state.tokens.curr, + initialized: true }); + } + + var f = doFunction(context, { + name: this.name && this.name.value, + statement: this, + type: generator ? "generator" : null, + ignoreLoopFunc: inblock // a declaration may already have warned + }); + var enablesStrictMode = f["(isStrict)"] && !state.isStrict(); + if (this.name && (f["(name)"] === "arguments" || f["(name)"] === "eval") && + enablesStrictMode) { + error("E008", this.name); + } + if (state.tokens.next.id === "(" && peek().id === ")" && peek(1).id !== "=>" && + state.tokens.next.line === state.tokens.curr.line) { + error("E039"); + } + return this; + }).declaration = true; + + prefix("function", function(context) { + var generator = false; + var isAsync = context & prodParams.preAsync; + + if (state.tokens.next.value === "*") { + if (isAsync && !state.inES9()) { + warning("W119", state.tokens.prev, "async generators", "9"); + } else if (!isAsync && !state.inES6(true)) { + warning("W119", state.tokens.curr, "function*", "6"); + } + + advance("*"); + generator = true; + } + this.name = optionalidentifier(isAsync ? context | prodParams.async : context) ? + state.tokens.curr : null; + + var f = doFunction(context, { + name: this.name && this.name.value, + type: generator ? "generator" : null + }); + + if (generator && this.name && this.name.value === "yield") { + error("E024", this.name, "yield"); + } + + if (this.name && (f["(name)"] === "arguments" || f["(name)"] === "eval") && + f["(isStrict)"]) { + error("E008", this.name); + } + + return this; + }); + + blockstmt("if", function(context) { + var t = state.tokens.next; + increaseComplexityCount(); + advance("("); + var expr = expression(context, 0); + + if (!expr) { + quit("E041", this); + } + + checkCondAssignment(expr); + var forinifcheck = null; + if (state.option.forin && state.forinifcheckneeded) { + state.forinifcheckneeded = false; // We only need to analyze the first if inside the loop + forinifcheck = state.forinifchecks[state.forinifchecks.length - 1]; + if (expr.type === "(punctuator)" && expr.value === "!") { + forinifcheck.type = "(negative)"; + } else { + forinifcheck.type = "(positive)"; + } + } + + advance(")", t); + var s = block(context, true, true); + if (forinifcheck && forinifcheck.type === "(negative)") { + if (s && s[0] && s[0].type === "(identifier)" && s[0].value === "continue") { + forinifcheck.type = "(negative-with-continue)"; + } + } + + if (state.tokens.next.id === "else") { + advance("else"); + if (state.tokens.next.id === "if" || state.tokens.next.id === "switch") { + statement(context); + } else { + block(context, true, true); + } + } + return this; + }); + + blockstmt("try", function(context) { + var b; + var hasParameter = false; + + function catchParameter() { + advance("("); + + if (checkPunctuators(state.tokens.next, ["[", "{"])) { + var tokens = destructuringPattern(context); + _.each(tokens, function(token) { + if (token.id) { + state.funct["(scope)"].addParam(token.id, token.token, "exception"); + } + }); + } else if (state.tokens.next.type !== "(identifier)") { + warning("E030", state.tokens.next, state.tokens.next.value); + } else { + state.funct["(scope)"].addParam(identifier(context), state.tokens.curr, "exception"); + } + + if (state.tokens.next.value === "if") { + if (!state.inMoz()) { + warning("W118", state.tokens.curr, "catch filter"); + } + advance("if"); + expression(context, 0); + } + + advance(")"); + } + + block(context | prodParams.tryClause, true); + + while (state.tokens.next.id === "catch") { + increaseComplexityCount(); + if (b && (!state.inMoz())) { + warning("W118", state.tokens.next, "multiple catch blocks"); + } + advance("catch"); + if (state.tokens.next.id !== "{") { + state.funct["(scope)"].stack("catchparams"); + hasParameter = true; + catchParameter(); + } else if (!state.inES10()) { + warning("W119", state.tokens.curr, "optional catch binding", "10"); + } + block(context, false); + + if (hasParameter) { + state.funct["(scope)"].unstack(); + hasParameter = false; + } + b = true; + } + + if (state.tokens.next.id === "finally") { + advance("finally"); + block(context, true); + return; + } + + if (!b) { + error("E021", state.tokens.next, "catch", state.tokens.next.value); + } + + return this; + }); + + blockstmt("while", function(context) { + var t = state.tokens.next; + state.funct["(breakage)"] += 1; + state.funct["(loopage)"] += 1; + increaseComplexityCount(); + advance("("); + checkCondAssignment(expression(context, 0)); + advance(")", t); + block(context, true, true); + state.funct["(breakage)"] -= 1; + state.funct["(loopage)"] -= 1; + return this; + }).labelled = true; + + blockstmt("with", function(context) { + var t = state.tokens.next; + if (state.isStrict()) { + error("E010", state.tokens.curr); + } else if (!state.option.withstmt) { + warning("W085", state.tokens.curr); + } + + advance("("); + expression(context, 0); + advance(")", t); + block(context, true, true); + + return this; + }); + + blockstmt("switch", function(context) { + var t = state.tokens.next; + var g = false; + var noindent = false; + var seenCase = false; + + state.funct["(breakage)"] += 1; + advance("("); + checkCondAssignment(expression(context, 0)); + advance(")", t); + t = state.tokens.next; + advance("{"); + state.funct["(scope)"].stack(); + + if (state.tokens.next.from === indent) + noindent = true; + + if (!noindent) + indent += state.option.indent; + + for (;;) { + switch (state.tokens.next.id) { + case "case": + switch (state.funct["(verb)"]) { + case "yield": + case "break": + case "case": + case "continue": + case "return": + case "switch": + case "throw": + break; + case "default": + if (state.option.leanswitch) { + warning("W145", state.tokens.next); + } + + break; + default: + if (!state.tokens.curr.caseFallsThrough) { + warning("W086", state.tokens.curr, "case"); + } + } + + advance("case"); + expression(context, 0); + seenCase = true; + increaseComplexityCount(); + g = true; + advance(":"); + state.funct["(verb)"] = "case"; + break; + case "default": + switch (state.funct["(verb)"]) { + case "yield": + case "break": + case "continue": + case "return": + case "throw": + break; + case "case": + if (state.option.leanswitch) { + warning("W145", state.tokens.curr); + } + + break; + default: + if (seenCase && !state.tokens.curr.caseFallsThrough) { + warning("W086", state.tokens.curr, "default"); + } + } + + advance("default"); + g = true; + advance(":"); + state.funct["(verb)"] = "default"; + break; + case "}": + if (!noindent) + indent -= state.option.indent; + + advance("}", t); + state.funct["(scope)"].unstack(); + state.funct["(breakage)"] -= 1; + state.funct["(verb)"] = undefined; + return; + case "(end)": + error("E023", state.tokens.next, "}"); + return; + default: + indent += state.option.indent; + if (g) { + switch (state.tokens.curr.id) { + case ",": + error("E040"); + return; + case ":": + g = false; + statements(context); + break; + default: + error("E025", state.tokens.curr); + return; + } + } else { + if (state.tokens.curr.id === ":") { + advance(":"); + error("E024", state.tokens.curr, ":"); + statements(context); + } else { + error("E021", state.tokens.next, "case", state.tokens.next.value); + return; + } + } + indent -= state.option.indent; + } + } + }).labelled = true; + + stmt("debugger", function() { + if (!state.option.debug) { + warning("W087", this); + } + return this; + }).exps = true; + + (function() { + var x = stmt("do", function(context) { + state.funct["(breakage)"] += 1; + state.funct["(loopage)"] += 1; + increaseComplexityCount(); + + this.first = block(context, true, true); + advance("while"); + var t = state.tokens.next; + advance("("); + checkCondAssignment(expression(context, 0)); + advance(")", t); + state.funct["(breakage)"] -= 1; + state.funct["(loopage)"] -= 1; + return this; + }); + x.labelled = true; + x.exps = true; + }()); + + blockstmt("for", function(context) { + var s, t = state.tokens.next; + var letscope = false; + var isAsync = false; + var foreachtok = null; + + if (t.value === "each") { + foreachtok = t; + advance("each"); + if (!state.inMoz()) { + warning("W118", state.tokens.curr, "for each"); + } + } + + if (state.tokens.next.identifier && state.tokens.next.value === "await") { + advance("await"); + isAsync = true; + + if (!(context & prodParams.async)) { + error("E024", state.tokens.curr, "await"); + } else if (!state.inES9()) { + warning("W119", state.tokens.curr, "asynchronous iteration", "9"); + } + } + + increaseComplexityCount(); + advance("("); + var nextop; // contains the token of the "in" or "of" operator + var comma; // First comma punctuator at level 0 + var initializer; // First initializer at level 0 + var bindingPower; + var targets; + var target; + var decl; + var afterNext = peek(); + + var headContext = context | prodParams.noin; + + if (state.tokens.next.id === "var") { + advance("var"); + decl = state.tokens.curr.fud(headContext); + comma = decl.hasComma ? decl : null; + initializer = decl.hasInitializer ? decl : null; + } else if (state.tokens.next.id === "const" || + (state.tokens.next.id === "let" && + ((afterNext.identifier && afterNext.id !== "in") || + checkPunctuators(afterNext, ["{", "["])))) { + advance(state.tokens.next.id); + letscope = true; + state.funct["(scope)"].stack(); + decl = state.tokens.curr.fud(headContext); + comma = decl.hasComma ? decl : null; + initializer = decl.hasInitializer ? decl : null; + } else if (!checkPunctuator(state.tokens.next, ";")) { + targets = []; + + while (state.tokens.next.value !== "in" && + state.tokens.next.value !== "of" && + !checkPunctuator(state.tokens.next, ";")) { + + if (checkPunctuators(state.tokens.next, ["{", "["])) { + destructuringPattern(headContext, { assignment: true }) + .forEach(function(elem) { + this.push(elem.token); + }, targets); + if (checkPunctuator(state.tokens.next, "=")) { + advance("="); + initializer = state.tokens.curr; + expression(headContext, 10); + } + } else { + target = expression(headContext, 10); + + if (target) { + if (target.type === "(identifier)") { + targets.push(target); + } else if (checkPunctuator(target, "=")) { + initializer = target; + targets.push(target); + } + } + } + + if (checkPunctuator(state.tokens.next, ",")) { + advance(","); + + if (!comma) { + comma = state.tokens.curr; + } + } + } + if (!initializer && !comma) { + targets.forEach(function(token) { + if (!state.funct["(scope)"].has(token.value)) { + warning("W088", token, token.value); + } + }); + } + } + + nextop = state.tokens.next; + + if (isAsync && nextop.value !== "of") { + error("E066", nextop); + } + if (_.includes(["in", "of"], nextop.value)) { + if (nextop.value === "of") { + bindingPower = 20; + + if (!state.inES6()) { + warning("W104", nextop, "for of", "6"); + } + } else { + bindingPower = 0; + } + if (comma) { + error("W133", comma, nextop.value, "more than one ForBinding"); + } + if (initializer) { + error("W133", initializer, nextop.value, "initializer is forbidden"); + } + if (target && !comma && !initializer) { + checkLeftSideAssign(context, target, nextop); + } + + advance(nextop.value); + expression(context, bindingPower); + advance(")", t); + + if (nextop.value === "in" && state.option.forin) { + state.forinifcheckneeded = true; + + if (state.forinifchecks === undefined) { + state.forinifchecks = []; + } + state.forinifchecks.push({ + type: "(none)" + }); + } + + state.funct["(breakage)"] += 1; + state.funct["(loopage)"] += 1; + + s = block(context, true, true); + + if (nextop.value === "in" && state.option.forin) { + if (state.forinifchecks && state.forinifchecks.length > 0) { + var check = state.forinifchecks.pop(); + + if (// No if statement or not the first statement in loop body + s && s.length > 0 && (typeof s[0] !== "object" || s[0].value !== "if") || + check.type === "(positive)" && s.length > 1 || + check.type === "(negative)") { + warning("W089", this); + } + } + state.forinifcheckneeded = false; + } + + state.funct["(breakage)"] -= 1; + state.funct["(loopage)"] -= 1; + + } else { + if (foreachtok) { + error("E045", foreachtok); + } + + advance(";"); + if (decl && decl.first && decl.first[0]) { + if (decl.value === "const" && !decl.hasInitializer) { + warning("E012", decl, decl.first[0].value); + } + + decl.first.forEach(function(token) { + state.funct["(scope)"].initialize(token.value); + }); + } + state.funct["(loopage)"] += 1; + if (state.tokens.next.id !== ";") { + checkCondAssignment(expression(context, 0)); + } + + advance(";"); + if (state.tokens.next.id === ";") { + error("E021", state.tokens.next, ")", ";"); + } + if (state.tokens.next.id !== ")") { + for (;;) { + expression(context, 0); + if (state.tokens.next.id !== ",") { + break; + } + advance(","); + checkComma(); + } + } + advance(")", t); + state.funct["(breakage)"] += 1; + block(context, true, true); + state.funct["(breakage)"] -= 1; + state.funct["(loopage)"] -= 1; + } + if (letscope) { + state.funct["(scope)"].unstack(); + } + return this; + }).labelled = true; + + + stmt("break", function() { + var v = state.tokens.next.value; + + if (state.tokens.next.identifier && + sameLine(state.tokens.curr, state.tokens.next)) { + if (!state.funct["(scope)"].funct.hasLabel(v)) { + warning("W090", state.tokens.next, v); + } + this.first = state.tokens.next; + advance(); + } else { + if (state.funct["(breakage)"] === 0) + warning("W052", state.tokens.next, this.value); + } + + reachable(this); + + return this; + }).exps = true; + + + stmt("continue", function() { + var v = state.tokens.next.value; + + if (state.funct["(breakage)"] === 0 || !state.funct["(loopage)"]) { + warning("W052", state.tokens.next, this.value); + } + + if (state.tokens.next.identifier) { + if (sameLine(state.tokens.curr, state.tokens.next)) { + if (!state.funct["(scope)"].funct.hasLabel(v)) { + warning("W090", state.tokens.next, v); + } + this.first = state.tokens.next; + advance(); + } + } + + reachable(this); + + return this; + }).exps = true; + + + stmt("return", function(context) { + if (sameLine(this, state.tokens.next)) { + if (state.tokens.next.id !== ";" && !state.tokens.next.reach) { + this.first = expression(context, 0); + + if (this.first && + this.first.type === "(punctuator)" && this.first.value === "=" && + !this.first.paren && !state.option.boss) { + warning("W093", this.first); + } + + if (state.option.noreturnawait && context & prodParams.async && + !(context & prodParams.tryClause) && + this.first.identifier && this.first.value === "await") { + warning("W146", this.first); + } + } + } else { + if (state.tokens.next.type === "(punctuator)" && + ["[", "{", "+", "-"].indexOf(state.tokens.next.value) > -1) { + nolinebreak(this); // always warn (Line breaking error) + } + } + + reachable(this); + + return this; + }).exps = true; + + prefix("await", function(context) { + if (context & prodParams.async) { + if (!state.funct["(params)"]) { + error("E024", this, "await"); + } + + expression(context, 10); + return this; + } else { + this.exps = false; + return state.syntax["(identifier)"].nud.apply(this, arguments); + } + }).exps = true; + + (function(asyncSymbol) { + asyncSymbol.meta = { es5: true, isFutureReservedWord: true, strictOnly: true }; + asyncSymbol.isFunc = function() { + var next = state.tokens.next; + var afterParens; + + if (this.line !== next.line) { + return false; + } + + if (next.id === "function") { + return true; + } + + if (next.id === "(") { + afterParens = peekThroughParens(0); + + return afterParens.id === "=>"; + } + + if (next.identifier) { + return peek().id === "=>"; + } + + return false; + }; + asyncSymbol.useFud = asyncSymbol.isFunc; + asyncSymbol.fud = function(context) { + if (!state.inES8()) { + warning("W119", this, "async functions", "8"); + } + context |= prodParams.preAsync; + context |= prodParams.initial; + this.func = expression(context, 0); + this.block = this.func.block; + this.exps = this.func.exps; + return this; + }; + asyncSymbol.exps = true; + delete asyncSymbol.reserved; + }(prefix("async", function(context, rbp) { + if (this.isFunc(context)) { + if (!state.inES8()) { + warning("W119", this, "async functions", "8"); + } + + context |= prodParams.preAsync; + this.func = expression(context, rbp); + this.identifier = false; + return this; + } + + this.exps = false; + return state.syntax["(identifier)"].nud.apply(this, arguments); + }))); + + (function(yieldSymbol) { + yieldSymbol.rbp = yieldSymbol.lbp = 25; + yieldSymbol.exps = true; + })(prefix("yield", function(context) { + if (state.inMoz()) { + return mozYield.call(this, context); + } + + if (!(context & prodParams.yield)) { + this.exps = false; + return state.syntax["(identifier)"].nud.apply(this, arguments); + } + + var prev = state.tokens.prev; + if (!state.funct["(params)"]) { + error("E024", this, "yield"); + } + + if (!this.beginsStmt && prev.lbp > 30 && !checkPunctuators(prev, ["("])) { + error("E061", this); + } + + if (!state.inES6()) { + warning("W104", state.tokens.curr, "yield", "6"); + } + state.funct["(yielded)"] = true; + + if (state.tokens.next.value === "*") { + advance("*"); + } + if (state.tokens.curr.value === "*" || sameLine(state.tokens.curr, state.tokens.next)) { + if (state.tokens.next.nud) { + + nobreaknonadjacent(state.tokens.curr, state.tokens.next); + this.first = expression(context, 10); + + if (this.first.type === "(punctuator)" && this.first.value === "=" && + !this.first.paren && !state.option.boss) { + warning("W093", this.first); + } + } else if (state.tokens.next.led) { + if (state.tokens.next.id !== ",") { + error("W017", state.tokens.next); + } + } + } + + return this; + })); + var mozYield = function(context) { + var prev = state.tokens.prev; + if (state.inES6(true) && !(context & prodParams.yield)) { + error("E046", state.tokens.curr, "yield"); + } + state.funct["(yielded)"] = true; + var delegatingYield = false; + + if (state.tokens.next.value === "*") { + delegatingYield = true; + advance("*"); + } + + if (sameLine(this, state.tokens.next)) { + if (delegatingYield || + (state.tokens.next.id !== ";" && !state.option.asi && + !state.tokens.next.reach && state.tokens.next.nud)) { + + nobreaknonadjacent(state.tokens.curr, state.tokens.next); + this.first = expression(context, 10); + + if (this.first.type === "(punctuator)" && this.first.value === "=" && + !this.first.paren && !state.option.boss) { + warning("W093", this.first); + } + } + if (state.tokens.next.id !== ")" && + (prev.lbp > 30 || (!prev.assign && !isEndOfExpr()))) { + error("E050", this); + } + } else if (!state.option.asi) { + nolinebreak(this); // always warn (Line breaking error) + } + return this; + }; + + stmt("throw", function(context) { + nolinebreak(this); + this.first = expression(context, 20); + + reachable(this); + + return this; + }).exps = true; + + prefix("import", function(context) { + var mp = metaProperty(context, "meta", function() { + if (!state.inES11(true)) { + warning("W119", state.tokens.prev, "import.meta", "11"); + } + if (!state.option.module) { + error("E070", state.tokens.prev); + } + }); + + if (mp) { + return mp; + } + + if (!checkPunctuator(state.tokens.next, "(")) { + return state.syntax["(identifier)"].nud.call(this, context); + } + + if (!state.inES11()) { + warning("W119", state.tokens.curr, "dynamic import", "11"); + } + + advance("("); + expression(context, 10); + advance(")"); + return this; + }); + + var importSymbol = stmt("import", function(context) { + if (!state.funct["(scope)"].block.isGlobal()) { + error("E053", state.tokens.curr, "Import"); + } + + if (!state.inES6()) { + warning("W119", state.tokens.curr, "import", "6"); + } + + if (state.tokens.next.type === "(string)") { + advance("(string)"); + return this; + } + + if (state.tokens.next.identifier) { + this.name = identifier(context); + state.funct["(scope)"].addbinding(this.name, { + type: "import", + initialized: true, + token: state.tokens.curr }); + + if (state.tokens.next.value === ",") { + advance(","); + } else { + advance("from"); + advance("(string)"); + return this; + } + } + + if (state.tokens.next.id === "*") { + advance("*"); + advance("as"); + if (state.tokens.next.identifier) { + this.name = identifier(context); + state.funct["(scope)"].addbinding(this.name, { + type: "import", + initialized: true, + token: state.tokens.curr }); + } + } else { + advance("{"); + for (;;) { + if (state.tokens.next.value === "}") { + advance("}"); + break; + } + var importName; + if (peek().value === "as") { + identifier(context, true); + advance("as"); + importName = identifier(context); + } else { + importName = identifier(context); + } + state.funct["(scope)"].addbinding(importName, { + type: "import", + initialized: true, + token: state.tokens.curr }); + + if (state.tokens.next.value === ",") { + advance(","); + } else if (state.tokens.next.value === "}") { + advance("}"); + break; + } else { + error("E024", state.tokens.next, state.tokens.next.value); + break; + } + } + } + advance("from"); + advance("(string)"); + + return this; + }); + importSymbol.exps = true; + importSymbol.reserved = true; + importSymbol.meta = { isFutureReservedWord: true, es5: true }; + importSymbol.useFud = function() { + return !(checkPunctuators(state.tokens.next, [".", "("])); + }; + importSymbol.rbp = 161; + + stmt("export", function(context) { + var ok = true; + var token; + var moduleSpecifier; + context = context | prodParams.export; + + if (!state.inES6()) { + warning("W119", state.tokens.curr, "export", "6"); + ok = false; + } + + if (!state.funct["(scope)"].block.isGlobal()) { + error("E053", state.tokens.curr, "Export"); + ok = false; + } + + if (state.tokens.next.value === "*") { + advance("*"); + + if (state.tokens.next.value === "as") { + if (!state.inES11()) { + warning("W119", state.tokens.curr, "export * as ns from", "11"); + } + advance("as"); + identifier(context, true); + state.funct["(scope)"].setExported(null, state.tokens.curr); + } + + advance("from"); + advance("(string)"); + return this; + } + + if (state.tokens.next.type === "default") { + state.nameStack.set(state.tokens.next); + + advance("default"); + var def = state.tokens.curr; + var exportType = state.tokens.next.id; + if (exportType === "function") { + this.block = true; + advance("function"); + token = state.syntax["function"].fud(context); + state.funct["(scope)"].setExported(token.name, def); + } else if (exportType === "async" && peek().id === "function") { + this.block = true; + advance("async"); + advance("function"); + token = state.syntax["function"].fud(context | prodParams.preAsync); + state.funct["(scope)"].setExported(token.name, def); + } else if (exportType === "class") { + this.block = true; + advance("class"); + token = state.syntax["class"].fud(context); + state.funct["(scope)"].setExported(token.name, def); + } else { + expression(context, 10); + state.funct["(scope)"].setExported(null, def); + } + return this; + } + if (state.tokens.next.value === "{") { + advance("{"); + var exportedTokens = []; + while (!checkPunctuator(state.tokens.next, "}")) { + if (!state.tokens.next.identifier) { + error("E030", state.tokens.next, state.tokens.next.value); + } + advance(); + + if (state.tokens.next.value === "as") { + advance("as"); + if (!state.tokens.next.identifier) { + error("E030", state.tokens.next, state.tokens.next.value); + } + exportedTokens.push({ + local: state.tokens.prev, + export: state.tokens.next + }); + advance(); + } else { + exportedTokens.push({ + local: state.tokens.curr, + export: state.tokens.curr + }); + } + + if (!checkPunctuator(state.tokens.next, "}")) { + advance(","); + } + } + advance("}"); + if (state.tokens.next.value === "from") { + advance("from"); + moduleSpecifier = state.tokens.next; + advance("(string)"); + } else if (ok) { + exportedTokens.forEach(function(x) { + state.funct["(scope)"].setExported(x.local, x.export); + }); + } + + if (exportedTokens.length === 0) { + if (moduleSpecifier) { + warning("W142", this, "export", moduleSpecifier.value); + } else { + warning("W141", this, "export"); + } + } + + return this; + } else if (state.tokens.next.id === "var") { + advance("var"); + token = state.tokens.curr.fud(context); + token.first.forEach(function(binding) { + state.funct["(scope)"].setExported(binding, binding); + }); + } else if (state.tokens.next.id === "let") { + advance("let"); + token = state.tokens.curr.fud(context); + token.first.forEach(function(binding) { + state.funct["(scope)"].setExported(binding, binding); + }); + } else if (state.tokens.next.id === "const") { + advance("const"); + token = state.tokens.curr.fud(context); + token.first.forEach(function(binding) { + state.funct["(scope)"].setExported(binding, binding); + }); + } else if (state.tokens.next.id === "function") { + this.block = true; + advance("function"); + token = state.syntax["function"].fud(context); + state.funct["(scope)"].setExported(token.name, token.name); + } else if (state.tokens.next.id === "async" && peek().id === "function") { + this.block = true; + advance("async"); + advance("function"); + token = state.syntax["function"].fud(context | prodParams.preAsync); + state.funct["(scope)"].setExported(token.name, token.name); + } else if (state.tokens.next.id === "class") { + this.block = true; + advance("class"); + token = state.syntax["class"].fud(context); + state.funct["(scope)"].setExported(token.name, token.name); + } else { + error("E024", state.tokens.next, state.tokens.next.value); + } + + return this; + }).exps = true; + function supportsSuper(type, funct) { + if (type === "call" && funct["(async)"]) { + return false; + } + + if (type === "property" && funct["(method)"]) { + return true; + } + + if (type === "call" && funct["(statement)"] && + funct["(statement)"].id === "class") { + return true; + } + + if (funct["(arrow)"]) { + return supportsSuper(type, funct["(context)"]); + } + + return false; + } + + var superNud = function() { + var next = state.tokens.next; + + if (checkPunctuators(next, ["[", "."])) { + if (!supportsSuper("property", state.funct)) { + error("E063", this); + } + } else if (checkPunctuator(next, "(")) { + if (!supportsSuper("call", state.funct)) { + error("E064", this); + } + } else { + error("E024", next, next.value || next.id); + } + + return this; + }; + + FutureReservedWord("abstract"); + FutureReservedWord("boolean"); + FutureReservedWord("byte"); + FutureReservedWord("char"); + FutureReservedWord("double"); + FutureReservedWord("enum", { es5: true }); + FutureReservedWord("export", { es5: true }); + FutureReservedWord("extends", { es5: true }); + FutureReservedWord("final"); + FutureReservedWord("float"); + FutureReservedWord("goto"); + FutureReservedWord("implements", { es5: true, strictOnly: true }); + FutureReservedWord("int"); + FutureReservedWord("interface", { es5: true, strictOnly: true }); + FutureReservedWord("long"); + FutureReservedWord("native"); + FutureReservedWord("package", { es5: true, strictOnly: true }); + FutureReservedWord("private", { es5: true, strictOnly: true }); + FutureReservedWord("protected", { es5: true, strictOnly: true }); + FutureReservedWord("public", { es5: true, strictOnly: true }); + FutureReservedWord("short"); + FutureReservedWord("static", { es5: true, strictOnly: true }); + FutureReservedWord("synchronized"); + FutureReservedWord("transient"); + FutureReservedWord("volatile"); + + var lookupBlockType = function() { + var pn, pn1, prev; + var i = -1; + var bracketStack = 0; + var ret = {}; + if (checkPunctuators(state.tokens.curr, ["[", "{"])) { + bracketStack += 1; + } + do { + prev = i === -1 ? state.tokens.curr : pn; + pn = i === -1 ? state.tokens.next : peek(i); + pn1 = peek(i + 1); + i = i + 1; + if (checkPunctuators(pn, ["[", "{"])) { + bracketStack += 1; + } else if (checkPunctuators(pn, ["]", "}"])) { + bracketStack -= 1; + } + if (bracketStack === 1 && pn.identifier && pn.value === "for" && + !checkPunctuator(prev, ".")) { + ret.isCompArray = true; + ret.notJson = true; + break; + } + if (bracketStack === 0 && checkPunctuators(pn, ["}", "]"])) { + if (pn1.value === "=") { + ret.isDestAssign = true; + ret.notJson = true; + break; + } else if (pn1.value === ".") { + ret.notJson = true; + break; + } + } + if (checkPunctuator(pn, ";")) { + ret.notJson = true; + } + } while (bracketStack > 0 && pn.id !== "(end)"); + return ret; + }; + function saveProperty(props, name, tkn, isClass, isStatic, isComputed) { + if (tkn.identifier) { + name = tkn.value; + } + var key = name; + if (isClass && isStatic) { + key = "static " + name; + } + + if (props[key] && name !== "__proto__" && !isComputed) { + var msg = ["key", "class method", "static class method"]; + msg = msg[(isClass || false) + (isStatic || false)]; + warning("W075", state.tokens.next, msg, name); + } else { + props[key] = Object.create(null); + } + + props[key].basic = true; + props[key].basictkn = tkn; + } + function saveAccessor(accessorType, props, name, tkn, isClass, isStatic) { + var flagName = accessorType === "get" ? "getterToken" : "setterToken"; + var key = name; + state.tokens.curr.accessorType = accessorType; + state.nameStack.set(tkn); + if (isClass && isStatic) { + key = "static " + name; + } + + if (props[key]) { + if ((props[key].basic || props[key][flagName]) && name !== "__proto__") { + var msg = ""; + if (isClass) { + if (isStatic) { + msg += "static "; + } + msg += accessorType + "ter method"; + } else { + msg = "key"; + } + warning("W075", state.tokens.next, msg, name); + } + } else { + props[key] = Object.create(null); + } + + props[key][flagName] = tkn; + if (isStatic) { + props[key].static = true; + } + } + function computedPropertyName(context) { + advance("["); + state.tokens.curr.delim = true; + state.tokens.curr.lbp = 0; + + if (!state.inES6()) { + warning("W119", state.tokens.curr, "computed property names", "6"); + } + var value = expression(context & ~prodParams.noin, 10); + advance("]"); + return value; + } + function checkPunctuators(token, values) { + if (token.type === "(punctuator)") { + return _.includes(values, token.value); + } + return false; + } + function checkPunctuator(token, value) { + return token.type === "(punctuator)" && token.value === value; + } + function destructuringAssignOrJsonValue(context) { + + var block = lookupBlockType(); + if (block.notJson) { + if (!state.inES6() && block.isDestAssign) { + warning("W104", state.tokens.curr, "destructuring assignment", "6"); + } + statements(context); + } else { + state.option.laxbreak = true; + state.jsonMode = true; + jsonValue(); + } + } + var arrayComprehension = function() { + var CompArray = function() { + this.mode = "use"; + this.variables = []; + }; + var _carrays = []; + var _current; + function declare(v) { + var l = _current.variables.filter(function(elt) { + if (elt.value === v) { + elt.undef = false; + return v; + } + }).length; + return l !== 0; + } + function use(v) { + var l = _current.variables.filter(function(elt) { + if (elt.value === v && !elt.undef) { + if (elt.unused === true) { + elt.unused = false; + } + return v; + } + }).length; + return (l === 0); + } + return { stack: function() { + _current = new CompArray(); + _carrays.push(_current); + }, + unstack: function() { + _current.variables.filter(function(v) { + if (v.unused) + warning("W098", v.token, v.token.raw_text || v.value); + if (v.undef) + state.funct["(scope)"].block.use(v.value, v.token); + }); + _carrays.splice(-1, 1); + _current = _carrays[_carrays.length - 1]; + }, + setState: function(s) { + if (_.includes(["use", "define", "generate", "filter"], s)) + _current.mode = s; + }, + check: function(v) { + if (!_current) { + return; + } + if (_current && _current.mode === "use") { + if (use(v)) { + _current.variables.push({ + token: state.tokens.curr, + value: v, + undef: true, + unused: false + }); + } + return true; + } else if (_current && _current.mode === "define") { + if (!declare(v)) { + _current.variables.push({ + token: state.tokens.curr, + value: v, + undef: false, + unused: true + }); + } + return true; + } else if (_current && _current.mode === "generate") { + state.funct["(scope)"].block.use(v, state.tokens.curr); + return true; + } else if (_current && _current.mode === "filter") { + if (use(v)) { + state.funct["(scope)"].block.use(v, state.tokens.curr); + } + return true; + } + return false; + } + }; + }; + function jsonValue() { + function jsonObject() { + var o = {}, t = state.tokens.next; + advance("{"); + if (state.tokens.next.id !== "}") { + for (;;) { + if (state.tokens.next.id === "(end)") { + error("E026", state.tokens.next, t.line); + } else if (state.tokens.next.id === "}") { + warning("W094", state.tokens.curr); + break; + } else if (state.tokens.next.id === ",") { + error("E028", state.tokens.next); + } else if (state.tokens.next.id !== "(string)") { + warning("W095", state.tokens.next, state.tokens.next.value); + } + if (o[state.tokens.next.value] === true) { + warning("W075", state.tokens.next, "key", state.tokens.next.value); + } else if ((state.tokens.next.value === "__proto__" && + !state.option.proto) || (state.tokens.next.value === "__iterator__" && + !state.option.iterator)) { + warning("W096", state.tokens.next, state.tokens.next.value); + } else { + o[state.tokens.next.value] = true; + } + advance(); + advance(":"); + jsonValue(); + if (state.tokens.next.id !== ",") { + break; + } + advance(","); + } + } + advance("}"); + } + + function jsonArray() { + var t = state.tokens.next; + advance("["); + if (state.tokens.next.id !== "]") { + for (;;) { + if (state.tokens.next.id === "(end)") { + error("E027", state.tokens.next, t.line); + } else if (state.tokens.next.id === "]") { + warning("W094", state.tokens.curr); + break; + } else if (state.tokens.next.id === ",") { + error("E028", state.tokens.next); + } + jsonValue(); + if (state.tokens.next.id !== ",") { + break; + } + advance(","); + } + } + advance("]"); + } + + switch (state.tokens.next.id) { + case "{": + jsonObject(); + break; + case "[": + jsonArray(); + break; + case "true": + case "false": + case "null": + case "(number)": + case "(string)": + advance(); + break; + case "-": + advance("-"); + advance("(number)"); + break; + default: + error("E003", state.tokens.next); + } + } + function lintEvalCode(internals, options, globals) { + var priorErrorCount, idx, jdx, internal; + + for (idx = 0; idx < internals.length; idx += 1) { + internal = internals[idx]; + options.scope = internal.elem; + priorErrorCount = JSHINT.errors.length; + + itself(internal.code, options, globals); + + for (jdx = priorErrorCount; jdx < JSHINT.errors.length; jdx += 1) { + JSHINT.errors[jdx].line += internal.token.line - 1; + } + } + } + + var escapeRegex = function(str) { + return str.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&"); + }; + var itself = function(s, o, g) { + var x, reIgnoreStr, reIgnore; + var optionKeys, newOptionObj, newIgnoredObj; + + o = _.clone(o); + state.reset(); + newOptionObj = state.option; + newIgnoredObj = state.ignored; + + if (o && o.scope) { + JSHINT.scope = o.scope; + } else { + JSHINT.errors = []; + JSHINT.internals = []; + JSHINT.blacklist = {}; + JSHINT.scope = "(main)"; + } + + predefined = Object.create(null); + combine(predefined, vars.ecmaIdentifiers[3]); + combine(predefined, vars.reservedVars); + + declared = Object.create(null); + var exported = Object.create(null); // Variables that live outside the current file + + function each(obj, cb) { + if (!obj) + return; + + if (!Array.isArray(obj) && typeof obj === "object") + obj = Object.keys(obj); + + obj.forEach(cb); + } + + if (o) { + + each([o.predef, o.globals], function(dict) { + each(dict, function(item) { + var slice, prop; + + if (item[0] === "-") { + slice = item.slice(1); + JSHINT.blacklist[slice] = slice; + delete predefined[slice]; + } else { + prop = Object.getOwnPropertyDescriptor(dict, item); + predefined[item] = prop ? prop.value : false; + } + }); + }); + + each(o.exported || null, function(item) { + exported[item] = true; + }); + + delete o.predef; + delete o.exported; + + optionKeys = Object.keys(o); + for (x = 0; x < optionKeys.length; x++) { + if (/^-W\d{3}$/g.test(optionKeys[x])) { + newIgnoredObj[optionKeys[x].slice(1)] = true; + } else { + var optionKey = optionKeys[x]; + newOptionObj[optionKey] = o[optionKey]; + } + } + } + + state.option = newOptionObj; + state.ignored = newIgnoredObj; + + state.option.indent = state.option.indent || 4; + state.option.maxerr = state.option.maxerr || 50; + + indent = 1; + + var scopeManagerInst = scopeManager(state, predefined, exported, declared); + scopeManagerInst.on("warning", function(ev) { + warning.apply(null, [ ev.code, ev.token].concat(ev.data)); + }); + + scopeManagerInst.on("error", function(ev) { + error.apply(null, [ ev.code, ev.token ].concat(ev.data)); + }); + + state.funct = functor("(global)", null, { + "(global)" : true, + "(scope)" : scopeManagerInst, + "(comparray)" : arrayComprehension(), + "(metrics)" : createMetrics(state.tokens.next) + }); + + functions = [state.funct]; + member = {}; + membersOnly = null; + inblock = false; + lookahead = []; + + if (!isString(s) && !Array.isArray(s)) { + errorAt("E004", 0); + return false; + } + + api = { + get isJSON() { + return state.jsonMode; + }, + + getOption: function(name) { + return state.option[name] || null; + }, + + getCache: function(name) { + return state.cache[name]; + }, + + setCache: function(name, value) { + state.cache[name] = value; + }, + + warn: function(code, data) { + warningAt.apply(null, [ code, data.line, data.char ].concat(data.data)); + }, + + on: function(names, listener) { + names.split(" ").forEach(function(name) { + emitter.on(name, listener); + }.bind(this)); + } + }; + + emitter.removeAllListeners(); + (extraModules || []).forEach(function(func) { + func(api); + }); + + state.tokens.prev = state.tokens.curr = state.tokens.next = state.syntax["(begin)"]; + if (o && o.ignoreDelimiters) { + + if (!Array.isArray(o.ignoreDelimiters)) { + o.ignoreDelimiters = [o.ignoreDelimiters]; + } + + o.ignoreDelimiters.forEach(function(delimiterPair) { + if (!delimiterPair.start || !delimiterPair.end) + return; + + reIgnoreStr = escapeRegex(delimiterPair.start) + + "[\\s\\S]*?" + + escapeRegex(delimiterPair.end); + + reIgnore = new RegExp(reIgnoreStr, "ig"); + + s = s.replace(reIgnore, function(match) { + return match.replace(/./g, " "); + }); + }); + } + + lex = new Lexer(s); + + lex.on("warning", function(ev) { + warningAt.apply(null, [ ev.code, ev.line, ev.character].concat(ev.data)); + }); + + lex.on("error", function(ev) { + errorAt.apply(null, [ ev.code, ev.line, ev.character ].concat(ev.data)); + }); + + lex.on("fatal", function(ev) { + quit("E041", ev); + }); + + lex.on("Identifier", function(ev) { + emitter.emit("Identifier", ev); + }); + + lex.on("String", function(ev) { + emitter.emit("String", ev); + }); + + lex.on("Number", function(ev) { + emitter.emit("Number", ev); + }); + var name; + for (name in o) { + if (_.has(o, name)) { + checkOption(name, true, state.tokens.curr); + } + } + if (o) { + for (name in o.unstable) { + if (_.has(o.unstable, name)) { + checkOption(name, false, state.tokens.curr); + } + } + } + + try { + applyOptions(); + combine(predefined, g || {}); + checkComma.first = true; + + advance(); + switch (state.tokens.next.id) { + case "{": + case "[": + destructuringAssignOrJsonValue(0); + break; + default: + directives(); + + if (state.directive["use strict"]) { + if (!state.allowsGlobalUsd()) { + warning("W097", state.directive["use strict"]); + } + } + + statements(0); + } + + if (state.tokens.next.id !== "(end)") { + quit("E041", state.tokens.curr); + } + + state.funct["(scope)"].unstack(); + + } catch (err) { + if (err && err.name === "JSHintError") { + var nt = state.tokens.next || {}; + JSHINT.errors.push({ + scope : "(main)", + raw : err.raw, + code : err.code, + reason : err.reason, + line : err.line || nt.line, + character : err.character || nt.from + }); + } else { + throw err; + } + } + if (JSHINT.scope === "(main)") { + lintEvalCode(JSHINT.internals, o || {}, g); + } + + return JSHINT.errors.length === 0; + }; + itself.addModule = function(func) { + extraModules.push(func); + }; + + itself.addModule(style.register); + itself.data = function() { + var data = { + functions: [], + options: state.option + }; + + var fu, f, i, n, globals; + + if (itself.errors.length) { + data.errors = itself.errors; + } + + if (state.jsonMode) { + data.json = true; + } + + var impliedGlobals = state.funct["(scope)"].getImpliedGlobals(); + if (impliedGlobals.length > 0) { + data.implieds = impliedGlobals; + } + + globals = state.funct["(scope)"].getUsedOrDefinedGlobals(); + if (globals.length > 0) { + data.globals = globals; + } + + for (i = 1; i < functions.length; i += 1) { + f = functions[i]; + fu = {}; + + fu.name = f["(name)"]; + fu.param = f["(params)"]; + fu.line = f["(line)"]; + fu.character = f["(character)"]; + fu.last = f["(last)"]; + fu.lastcharacter = f["(lastcharacter)"]; + + fu.metrics = { + complexity: f["(metrics)"].ComplexityCount, + parameters: f["(metrics)"].arity, + statements: f["(metrics)"].statementCount + }; + + data.functions.push(fu); + } + + var unuseds = state.funct["(scope)"].getUnuseds(); + if (unuseds.length > 0) { + data.unused = unuseds; + } + + for (n in member) { + if (typeof member[n] === "number") { + data.member = member; + break; + } + } + + return data; + }; + + itself.jshint = itself; + + return itself; +}()); +if (typeof exports === "object" && exports) { + exports.JSHINT = JSHINT; +} + +},{"./lex.js":"/../../../jshint/src/lex.js","./messages.js":"/../../../jshint/src/messages.js","./options.js":"/../../../jshint/src/options.js","./prod-params.js":"/../../../jshint/src/prod-params.js","./reg.js":"/../../../jshint/src/reg.js","./scope-manager.js":"/../../../jshint/src/scope-manager.js","./state.js":"/../../../jshint/src/state.js","./style.js":"/../../../jshint/src/style.js","./vars.js":"/../../../jshint/src/vars.js","console-browserify":"/../../../jshint/node_modules/console-browserify/index.js","events":"/node_modules/events/events.js","lodash.clone":"/../../../jshint/node_modules/lodash.clone/index.js","underscore":"/../../../jshint/node_modules/underscore/underscore-umd.js"}],"/../../../jshint/src/lex.js":[function(_dereq_,module,exports){ + +"use strict"; + +var _ = _dereq_("underscore"); +var events = _dereq_("events"); +var reg = _dereq_("./reg.js"); +var state = _dereq_("./state.js").state; + +var unicodeData = _dereq_("../data/ascii-identifier-data.js"); +var asciiIdentifierStartTable = unicodeData.asciiIdentifierStartTable; +var asciiIdentifierPartTable = unicodeData.asciiIdentifierPartTable; +var nonAsciiIdentifierStartTable = _dereq_("../data/non-ascii-identifier-start.js"); +var nonAsciiIdentifierPartTable = _dereq_("../data/non-ascii-identifier-part-only.js"); +var es5IdentifierNames; + +var Token = { + Identifier: 1, + Punctuator: 2, + NumericLiteral: 3, + StringLiteral: 4, + Comment: 5, + Keyword: 6, + RegExp: 9, + TemplateHead: 10, + TemplateMiddle: 11, + TemplateTail: 12, + NoSubstTemplate: 13 +}; + +var Context = { + Block: 1, + Template: 2 +}; + +function isHex(str) { + return /^[0-9a-fA-F]+$/.test(str); +} + +function isHexDigit(str) { + return str.length === 1 && isHex(str); +} + +function asyncTrigger() { + var _checks = []; + + return { + push: function(fn) { + _checks.push(fn); + }, + + check: function() { + for (var check = 0; check < _checks.length; ++check) { + _checks[check](); + } + + _checks.splice(0, _checks.length); + } + }; +} +function Lexer(source) { + var lines = source; + + if (typeof lines === "string") { + lines = lines + .replace(/\r\n/g, "\n") + .replace(/\r/g, "\n") + .split("\n"); + } + + if (lines[0] && lines[0].substr(0, 2) === "#!") { + if (lines[0].indexOf("node") !== -1) { + state.option.node = true; + } + lines[0] = ""; + } + + this.emitter = new events.EventEmitter(); + this.source = source; + this.setLines(lines); + this.prereg = true; + + this.line = 0; + this.char = 1; + this.from = 1; + this.input = ""; + this.inComment = false; + this.context = []; + this.templateStarts = []; + + for (var i = 0; i < state.option.indent; i += 1) { + state.tab += " "; + } +} + +Lexer.prototype = { + _lines: [], + + inContext: function(ctxType) { + return this.context.length > 0 && this.context[this.context.length - 1].type === ctxType; + }, + + pushContext: function(ctxType) { + this.context.push({ type: ctxType }); + }, + + popContext: function() { + return this.context.pop(); + }, + + currentContext: function() { + return this.context.length > 0 && this.context[this.context.length - 1]; + }, + + getLines: function() { + this._lines = state.lines; + return this._lines; + }, + + setLines: function(val) { + this._lines = val; + state.lines = this._lines; + }, + peek: function(i) { + return this.input.charAt(i || 0); + }, + skip: function(i) { + i = i || 1; + this.char += i; + this.input = this.input.slice(i); + }, + on: function(names, listener) { + names.split(" ").forEach(function(name) { + this.emitter.on(name, listener); + }.bind(this)); + }, + trigger: function() { + this.emitter.emit.apply(this.emitter, Array.prototype.slice.call(arguments)); + }, + triggerAsync: function(type, args, checks, fn) { + checks.push(function() { + if (fn()) { + this.trigger(type, args); + } + }.bind(this)); + }, + scanPunctuator: function() { + var ch1 = this.peek(); + var ch2, ch3, ch4; + + switch (ch1) { + case ".": + if ((/^[0-9]$/).test(this.peek(1))) { + return null; + } + if (this.peek(1) === "." && this.peek(2) === ".") { + return { + type: Token.Punctuator, + value: "..." + }; + } + case "(": + case ")": + case ";": + case ",": + case "[": + case "]": + case ":": + case "~": + return { + type: Token.Punctuator, + value: ch1 + }; + case "{": + this.pushContext(Context.Block); + return { + type: Token.Punctuator, + value: ch1 + }; + case "}": + if (this.inContext(Context.Block)) { + this.popContext(); + } + return { + type: Token.Punctuator, + value: ch1 + }; + case "#": + return { + type: Token.Punctuator, + value: ch1 + }; + case "": + return null; + } + + ch2 = this.peek(1); + ch3 = this.peek(2); + + if (ch1 === "?") { + if (ch2 === "." && !reg.decimalDigit.test(ch3)) { + return { + type: Token.Punctuator, + value: "?." + }; + } + + return { + type: Token.Punctuator, + value: ch2 === "?" ? "??" : "?" + }; + } + + ch4 = this.peek(3); + + if (ch1 === ">" && ch2 === ">" && ch3 === ">" && ch4 === "=") { + return { + type: Token.Punctuator, + value: ">>>=" + }; + } + + if (ch1 === "=" && ch2 === "=" && ch3 === "=") { + return { + type: Token.Punctuator, + value: "===" + }; + } + + if (ch1 === "!" && ch2 === "=" && ch3 === "=") { + return { + type: Token.Punctuator, + value: "!==" + }; + } + + if (ch1 === ">" && ch2 === ">" && ch3 === ">") { + return { + type: Token.Punctuator, + value: ">>>" + }; + } + + if (ch1 === "<" && ch2 === "<" && ch3 === "=") { + return { + type: Token.Punctuator, + value: "<<=" + }; + } + + if (ch1 === ">" && ch2 === ">" && ch3 === "=") { + return { + type: Token.Punctuator, + value: ">>=" + }; + } + if (ch1 === "=" && ch2 === ">") { + return { + type: Token.Punctuator, + value: ch1 + ch2 + }; + } + if (ch1 === ch2 && ("+-<>&|*".indexOf(ch1) >= 0)) { + if (ch1 === "*" && ch3 === "=") { + return { + type: Token.Punctuator, + value: ch1 + ch2 + ch3 + }; + } + + return { + type: Token.Punctuator, + value: ch1 + ch2 + }; + } + if ("<>=!+-*%&|^/".indexOf(ch1) >= 0) { + if (ch2 === "=") { + return { + type: Token.Punctuator, + value: ch1 + ch2 + }; + } + + return { + type: Token.Punctuator, + value: ch1 + }; + } + + return null; + }, + scanComments: function(checks) { + var ch1 = this.peek(); + var ch2 = this.peek(1); + var rest = this.input.substr(2); + var startLine = this.line; + var startChar = this.char; + var self = this; + + function commentToken(label, body, opt) { + var special = [ + "jshint", "jshint.unstable", "jslint", "members", "member", "globals", + "global", "exported" + ]; + var isSpecial = false; + var value = label + body; + var commentType = "plain"; + opt = opt || {}; + + if (opt.isMultiline) { + value += "*/"; + } + + body = body.replace(/\n/g, " "); + + if (label === "/*" && reg.fallsThrough.test(body)) { + isSpecial = true; + commentType = "falls through"; + } + + special.forEach(function(str) { + if (isSpecial) { + return; + } + if (label === "//" && str !== "jshint" && str !== "jshint.unstable") { + return; + } + + if (body.charAt(str.length) === " " && body.substr(0, str.length) === str) { + isSpecial = true; + label = label + str; + body = body.substr(str.length); + } + + if (!isSpecial && body.charAt(0) === " " && body.charAt(str.length + 1) === " " && + body.substr(1, str.length) === str) { + isSpecial = true; + label = label + " " + str; + body = body.substr(str.length + 1); + } + var strIndex = body.indexOf(str); + if (!isSpecial && strIndex >= 0 && body.charAt(strIndex + str.length) === " ") { + var isAllWhitespace = body.substr(0, strIndex).trim().length === 0; + if (isAllWhitespace) { + isSpecial = true; + body = body.substr(str.length + strIndex); + } + } + + if (!isSpecial) { + return; + } + + switch (str) { + case "member": + commentType = "members"; + break; + case "global": + commentType = "globals"; + break; + default: + var options = body.split(":").map(function(v) { + return v.replace(/^\s+/, "").replace(/\s+$/, ""); + }); + + if (options.length === 2) { + switch (options[0]) { + case "ignore": + switch (options[1]) { + case "start": + self.ignoringLinterErrors = true; + isSpecial = false; + break; + case "end": + self.ignoringLinterErrors = false; + isSpecial = false; + break; + } + } + } + + commentType = str; + } + }); + + return { + type: Token.Comment, + commentType: commentType, + value: value, + body: body, + isSpecial: isSpecial, + isMalformed: opt.isMalformed || false + }; + } + if (ch1 === "*" && ch2 === "/") { + this.trigger("error", { + code: "E018", + line: startLine, + character: startChar + }); + + this.skip(2); + return null; + } + if (ch1 !== "/" || (ch2 !== "*" && ch2 !== "/")) { + return null; + } + if (ch2 === "/") { + this.skip(this.input.length); // Skip to the EOL. + return commentToken("//", rest); + } + + var body = ""; + if (ch2 === "*") { + this.inComment = true; + this.skip(2); + + while (this.peek() !== "*" || this.peek(1) !== "/") { + if (this.peek() === "") { // End of Line + body += "\n"; + if (!this.nextLine(checks)) { + this.trigger("error", { + code: "E017", + line: startLine, + character: startChar + }); + + this.inComment = false; + return commentToken("/*", body, { + isMultiline: true, + isMalformed: true + }); + } + } else { + body += this.peek(); + this.skip(); + } + } + + this.skip(2); + this.inComment = false; + return commentToken("/*", body, { isMultiline: true }); + } + }, + scanKeyword: function() { + var result = /^[a-zA-Z_$][a-zA-Z0-9_$]*/.exec(this.input); + var keywords = [ + "if", "in", "do", "var", "for", "new", + "try", "let", "this", "else", "case", + "void", "with", "enum", "while", "break", + "catch", "throw", "const", "yield", "class", + "super", "return", "typeof", "delete", + "switch", "export", "import", "default", + "finally", "extends", "function", "continue", + "debugger", "instanceof", "true", "false", "null", "async", "await" + ]; + + if (result && keywords.indexOf(result[0]) >= 0) { + return { + type: Token.Keyword, + value: result[0] + }; + } + + return null; + }, + scanIdentifier: function(checks) { + var id = ""; + var index = 0; + var char, value; + + function isNonAsciiIdentifierStart(code) { + return nonAsciiIdentifierStartTable.indexOf(code) > -1; + } + + function isNonAsciiIdentifierPart(code) { + return isNonAsciiIdentifierStart(code) || nonAsciiIdentifierPartTable.indexOf(code) > -1; + } + + var readUnicodeEscapeSequence = function() { + index += 1; + + if (this.peek(index) !== "u") { + return null; + } + + var sequence = this.peek(index + 1) + this.peek(index + 2) + + this.peek(index + 3) + this.peek(index + 4); + var code; + + if (isHex(sequence)) { + code = parseInt(sequence, 16); + + if (asciiIdentifierPartTable[code] || isNonAsciiIdentifierPart(code)) { + index += 5; + return "\\u" + sequence; + } + + return null; + } + + return null; + }.bind(this); + + var getIdentifierStart = function() { + var chr = this.peek(index); + var code = chr.charCodeAt(0); + + if (code === 92) { + return readUnicodeEscapeSequence(); + } + + if (code < 128) { + if (asciiIdentifierStartTable[code]) { + index += 1; + return chr; + } + + return null; + } + + if (isNonAsciiIdentifierStart(code)) { + index += 1; + return chr; + } + + return null; + }.bind(this); + + var getIdentifierPart = function() { + var chr = this.peek(index); + var code = chr.charCodeAt(0); + + if (code === 92) { + return readUnicodeEscapeSequence(); + } + + if (code < 128) { + if (asciiIdentifierPartTable[code]) { + index += 1; + return chr; + } + + return null; + } + + if (isNonAsciiIdentifierPart(code)) { + index += 1; + return chr; + } + + return null; + }.bind(this); + + function removeEscapeSequences(id) { + return id.replace(/\\u([0-9a-fA-F]{4})/g, function(m0, codepoint) { + return String.fromCharCode(parseInt(codepoint, 16)); + }); + } + + char = getIdentifierStart(); + if (char === null) { + return null; + } + + id = char; + for (;;) { + char = getIdentifierPart(); + + if (char === null) { + break; + } + + id += char; + } + + value = removeEscapeSequences(id); + + if (!state.inES6(true)) { + es5IdentifierNames = _dereq_("../data/es5-identifier-names.js"); + + if (!es5IdentifierNames.test(value)) { + this.triggerAsync( + "warning", + { + code: "W119", + line: this.line, + character: this.char, + data: ["unicode 8", "6"] + }, + checks, + function() { return true; } + ); + } + } + + return { + type: Token.Identifier, + value: value, + text: id, + tokenLength: id.length + }; + }, + scanNumericLiteral: function(checks) { + var index = 0; + var value = ""; + var length = this.input.length; + var char = this.peek(index); + var isAllowedDigit = isDecimalDigit; + var base = 10; + var isLegacy = false; + var isNonOctal = false; + + function isDecimalDigit(str) { + return (/^[0-9]$/).test(str); + } + + function isOctalDigit(str) { + return (/^[0-7]$/).test(str); + } + + function isNonOctalDigit(str) { + return str === "8" || str === "9"; + } + + function isBinaryDigit(str) { + return (/^[01]$/).test(str); + } + + function isIdentifierStart(ch) { + return (ch === "$") || (ch === "_") || (ch === "\\") || + (ch >= "a" && ch <= "z") || (ch >= "A" && ch <= "Z"); + } + + if (char !== "." && !isDecimalDigit(char)) { + return null; + } + + if (char !== ".") { + value = this.peek(index); + index += 1; + char = this.peek(index); + + if (value === "0") { + if (char === "x" || char === "X") { + isAllowedDigit = isHexDigit; + base = 16; + + index += 1; + value += char; + } + if (char === "o" || char === "O") { + isAllowedDigit = isOctalDigit; + base = 8; + + if (!state.inES6(true)) { + this.triggerAsync( + "warning", + { + code: "W119", + line: this.line, + character: this.char, + data: [ "Octal integer literal", "6" ] + }, + checks, + function() { return true; } + ); + } + + index += 1; + value += char; + } + if (char === "b" || char === "B") { + isAllowedDigit = isBinaryDigit; + base = 2; + + if (!state.inES6(true)) { + this.triggerAsync( + "warning", + { + code: "W119", + line: this.line, + character: this.char, + data: [ "Binary integer literal", "6" ] + }, + checks, + function() { return true; } + ); + } + + index += 1; + value += char; + } + if (isOctalDigit(char)) { + isAllowedDigit = isOctalDigit; + base = 8; + isLegacy = true; + + } else if (isDecimalDigit(char)) { + isNonOctal = true; + } + } + + while (index < length) { + char = this.peek(index); + + if (isLegacy && isNonOctalDigit(char)) { + base = 10; + isLegacy = false; + isNonOctal = true; + isAllowedDigit = isDecimalDigit; + } + + if (!isAllowedDigit(char)) { + break; + } + value += char; + index += 1; + } + + var isBigInt = this.peek(index) === 'n'; + + if (isAllowedDigit !== isDecimalDigit || isBigInt) { + if (isBigInt) { + this.triggerAsync( + "warning", + { + code: "W119", + line: this.line, + character: this.char, + data: [ "BigInt", "11" ] + }, + checks, + function() { return !state.inES11(); } + ); + + if (isLegacy || isNonOctal) { + this.triggerAsync( + "error", + { + code: "E067", + line: this.line, + character: this.char, + data: [value + char] + }, + checks, + function() { return true; } + ); + } + + value += char; + index += 1; + } else if (!isLegacy && value.length <= 2) { // 0x + return { + type: Token.NumericLiteral, + value: value, + isMalformed: true + }; + } + + if (index < length) { + char = this.peek(index); + if (isIdentifierStart(char)) { + return null; + } + } + + return { + type: Token.NumericLiteral, + value: value, + base: base, + isLegacy: isLegacy, + isMalformed: false + }; + } + } + + if (char === ".") { + value += char; + index += 1; + + while (index < length) { + char = this.peek(index); + if (!isDecimalDigit(char)) { + break; + } + value += char; + index += 1; + } + } + + if (char === "e" || char === "E") { + value += char; + index += 1; + char = this.peek(index); + + if (char === "+" || char === "-") { + value += this.peek(index); + index += 1; + } + + char = this.peek(index); + if (isDecimalDigit(char)) { + value += char; + index += 1; + + while (index < length) { + char = this.peek(index); + if (!isDecimalDigit(char)) { + break; + } + value += char; + index += 1; + } + } else { + return null; + } + } + + if (index < length) { + char = this.peek(index); + if (isIdentifierStart(char)) { + return null; + } + } + this.triggerAsync("warning", { + code: "W045", + line: this.line, + character: this.char + value.length, + data: [ value ] + }, checks, function() { return !isFinite(value); }); + + return { + type: Token.NumericLiteral, + value: value, + base: base, + isNonOctal: isNonOctal, + isMalformed: false + }; + }, + scanEscapeSequence: function(checks) { + var allowNewLine = false; + var jump = 1; + this.skip(); + var char = this.peek(); + + switch (char) { + case "'": + this.triggerAsync("warning", { + code: "W114", + line: this.line, + character: this.char, + data: [ "\\'" ] + }, checks, function() {return state.jsonMode; }); + break; + case "b": + char = "\\b"; + break; + case "f": + char = "\\f"; + break; + case "n": + char = "\\n"; + break; + case "r": + char = "\\r"; + break; + case "t": + char = "\\t"; + break; + case "0": + char = "\\0"; + var n = parseInt(this.peek(1), 10); + this.triggerAsync("warning", { + code: "W115", + line: this.line, + character: this.char + }, checks, + function() { return n >= 0 && n <= 7 && state.isStrict(); }); + break; + case "1": + case "2": + case "3": + case "4": + case "5": + case "6": + case "7": + char = "\\" + char; + this.triggerAsync("warning", { + code: "W115", + line: this.line, + character: this.char + }, checks, + function() { return state.isStrict(); }); + break; + case "u": + var sequence = this.input.substr(1, 4); + var code = parseInt(sequence, 16); + if (!isHex(sequence)) { + this.trigger("warning", { + code: "W052", + line: this.line, + character: this.char, + data: [ "u" + sequence ] + }); + } + char = String.fromCharCode(code); + jump = 5; + break; + case "v": + this.triggerAsync("warning", { + code: "W114", + line: this.line, + character: this.char, + data: [ "\\v" ] + }, checks, function() { return state.jsonMode; }); + + char = "\v"; + break; + case "x": + var x = parseInt(this.input.substr(1, 2), 16); + + this.triggerAsync("warning", { + code: "W114", + line: this.line, + character: this.char, + data: [ "\\x-" ] + }, checks, function() { return state.jsonMode; }); + + char = String.fromCharCode(x); + jump = 3; + break; + case "\\": + char = "\\\\"; + break; + case "/": + break; + case "": + allowNewLine = true; + char = ""; + break; + } + + return { char: char, jump: jump, allowNewLine: allowNewLine }; + }, + scanTemplateLiteral: function(checks) { + var tokenType; + var value = ""; + var ch; + var startLine = this.line; + var startChar = this.char; + var depth = this.templateStarts.length; + + if (this.peek() === "`") { + if (!state.inES6(true)) { + this.triggerAsync( + "warning", + { + code: "W119", + line: this.line, + character: this.char, + data: ["template literal syntax", "6"] + }, + checks, + function() { return true; } + ); + } + tokenType = Token.TemplateHead; + this.templateStarts.push({ line: this.line, char: this.char }); + depth = this.templateStarts.length; + this.skip(1); + this.pushContext(Context.Template); + } else if (this.inContext(Context.Template) && this.peek() === "}") { + tokenType = Token.TemplateMiddle; + } else { + return null; + } + + while (this.peek() !== "`") { + while ((ch = this.peek()) === "") { + value += "\n"; + if (!this.nextLine(checks)) { + var startPos = this.templateStarts.pop(); + this.trigger("error", { + code: "E052", + line: startPos.line, + character: startPos.char + }); + return { + type: tokenType, + value: value, + startLine: startLine, + startChar: startChar, + isUnclosed: true, + depth: depth, + context: this.popContext() + }; + } + } + + if (ch === '$' && this.peek(1) === '{') { + value += '${'; + this.skip(2); + return { + type: tokenType, + value: value, + startLine: startLine, + startChar: startChar, + isUnclosed: false, + depth: depth, + context: this.currentContext() + }; + } else if (ch === '\\') { + var escape = this.scanEscapeSequence(checks); + value += escape.char; + this.skip(escape.jump); + } else if (ch !== '`') { + value += ch; + this.skip(1); + } + } + tokenType = tokenType === Token.TemplateHead ? Token.NoSubstTemplate : Token.TemplateTail; + this.skip(1); + this.templateStarts.pop(); + + return { + type: tokenType, + value: value, + startLine: startLine, + startChar: startChar, + isUnclosed: false, + depth: depth, + context: this.popContext() + }; + }, + scanStringLiteral: function(checks) { + var quote = this.peek(); + if (quote !== "\"" && quote !== "'") { + return null; + } + this.triggerAsync("warning", { + code: "W108", + line: this.line, + character: this.char // +1? + }, checks, function() { return state.jsonMode && quote !== "\""; }); + + var value = ""; + var startLine = this.line; + var startChar = this.char; + var allowNewLine = false; + + this.skip(); + + while (this.peek() !== quote) { + if (this.peek() === "") { // End Of Line + + if (!allowNewLine) { + this.trigger("warning", { + code: "W112", + line: this.line, + character: this.char + }); + } else { + allowNewLine = false; + + this.triggerAsync("warning", { + code: "W043", + line: this.line, + character: this.char + }, checks, function() { return !state.option.multistr; }); + + this.triggerAsync("warning", { + code: "W042", + line: this.line, + character: this.char + }, checks, function() { return state.jsonMode && state.option.multistr; }); + } + + if (!this.nextLine(checks)) { + return { + type: Token.StringLiteral, + value: value, + startLine: startLine, + startChar: startChar, + isUnclosed: true, + quote: quote + }; + } + + } else { // Any character other than End Of Line + + allowNewLine = false; + var char = this.peek(); + var jump = 1; // A length of a jump, after we're done + + if (char < " ") { + this.triggerAsync( + "warning", + { + code: "W113", + line: this.line, + character: this.char, + data: [ "" ] + }, + checks, + function() { return true; } + ); + } + if (char === "\\") { + var parsed = this.scanEscapeSequence(checks); + char = parsed.char; + jump = parsed.jump; + allowNewLine = parsed.allowNewLine; + } + if (char !== "") { + value += char; + this.skip(jump); + } + } + } + + this.skip(); + return { + type: Token.StringLiteral, + value: value, + startLine: startLine, + startChar: startChar, + isUnclosed: false, + quote: quote + }; + }, + scanRegExp: function(checks) { + var index = 0; + var length = this.input.length; + var char = this.peek(); + var value = char; + var body = ""; + var groupReferences = []; + var allFlags = ""; + var es5Flags = ""; + var malformed = false; + var isCharSet = false; + var isCharSetRange = false; + var isGroup = false; + var isQuantifiable = false; + var hasInvalidQuantifier = false; + var escapedChars = ""; + var hasUFlag = function() { return allFlags.indexOf("u") > -1; }; + var escapeSequence; + var groupCount = 0; + var terminated, malformedDesc; + + var scanRegexpEscapeSequence = function() { + var next, sequence; + index += 1; + char = this.peek(index); + + if (reg.nonzeroDigit.test(char)) { + sequence = char; + next = this.peek(index + 1); + while (reg.nonzeroDigit.test(next) || next === "0") { + index += 1; + char = next; + sequence += char; + body += char; + value += char; + next = this.peek(index + 1); + } + groupReferences.push(Number(sequence)); + return sequence; + } + + escapedChars += char; + + if (char === "u" && this.peek(index + 1) === "{") { + var x = index + 2; + sequence = "u{"; + next = this.peek(x); + while (isHex(next)) { + sequence += next; + x += 1; + next = this.peek(x); + } + + if (next !== "}") { + this.triggerAsync( + "error", + { + code: "E016", + line: this.line, + character: this.char, + data: [ "Invalid Unicode escape sequence" ] + }, + checks, + hasUFlag + ); + } else if (sequence.length > 2) { + sequence += "}"; + body += sequence; + value += sequence; + index = x + 1; + return sequence; + } + } + + if (char === "p" || char === "P") { + var y = index + 2; + sequence = ""; + next = ""; + + if (this.peek(index + 1) === "{") { + next = this.peek(y); + while (next && next !== "}") { + sequence += next; + y += 1; + next = this.peek(y); + } + } + if (!sequence || !_dereq_("./validate-unicode-escape-sequence")(sequence)) { + this.triggerAsync( + "error", + { + code: "E016", + line: this.line, + character: this.char, + data: [ "Invalid Unicode property escape sequence" ] + }, + checks, + hasUFlag + ); + } + + if (sequence) { + sequence = char + "{" + sequence + "}"; + body += sequence; + value += sequence; + index = y + 1; + + if (!state.inES9()) { + this.triggerAsync( + "warning", + { + code: "W119", + line: this.line, + character: this.char, + data: [ "Unicode property escape", "9" ] + }, + checks, + hasUFlag + ); + } + + return sequence; + } + } + if (char < " ") { + malformed = true; + this.triggerAsync( + "warning", + { + code: "W048", + line: this.line, + character: this.char + }, + checks, + function() { return true; } + ); + } + if (char === "<") { + malformed = true; + this.triggerAsync( + "warning", + { + code: "W049", + line: this.line, + character: this.char, + data: [ char ] + }, + checks, + function() { return true; } + ); + } else if (char === "0" && reg.decimalDigit.test(this.peek(index + 1))) { + this.triggerAsync( + "error", + { + code: "E016", + line: this.line, + character: this.char, + data: [ "Invalid decimal escape sequence" ] + }, + checks, + hasUFlag + ); + } + + index += 1; + body += char; + value += char; + + return char; + }.bind(this); + + var checkQuantifier = function() { + var lookahead = index; + var lowerBound = ""; + var upperBound = ""; + var next; + + next = this.peek(lookahead + 1); + + while (reg.decimalDigit.test(next)) { + lookahead += 1; + lowerBound += next; + next = this.peek(lookahead + 1); + } + + if (!lowerBound) { + return false; + } + + if (next === "}") { + return true; + } + + if (next !== ",") { + return false; + } + + lookahead += 1; + next = this.peek(lookahead + 1); + + while (reg.decimalDigit.test(next)) { + lookahead += 1; + upperBound += next; + next = this.peek(lookahead + 1); + } + + if (next !== "}") { + return false; + } + + if (upperBound) { + return Number(lowerBound) <= Number(upperBound); + } + + return true; + }.bind(this); + + var translateUFlag = function(body) { + var astralSubstitute = "\uFFFF"; + + return body + .replace(/\\u\{([0-9a-fA-F]+)\}|\\u([a-fA-F0-9]{4})/g, function($0, $1, $2) { + var codePoint = parseInt($1 || $2, 16); + var literal; + + if (codePoint > 0x10FFFF) { + malformed = true; + this.trigger("error", { + code: "E016", + line: this.line, + character: this.char, + data: [ char ] + }); + + return; + } + literal = String.fromCharCode(codePoint); + + if (reg.regexpSyntaxChars.test(literal)) { + return $0; + } + + if (codePoint <= 0xFFFF) { + return String.fromCharCode(codePoint); + } + return astralSubstitute; + }.bind(this)) + .replace( + /[\uD800-\uDBFF][\uDC00-\uDFFF]/g, + astralSubstitute + ); + }.bind(this); + if (!this.prereg || char !== "/") { + return null; + } + + index += 1; + terminated = false; + + while (index < length) { + isCharSetRange &= char === "-"; + char = this.peek(index); + value += char; + body += char; + + if (isCharSet) { + if (char === "]") { + if (this.peek(index - 1) !== "\\" || this.peek(index - 2) === "\\") { + isCharSet = false; + } + } else if (char === "-") { + isCharSetRange = true; + } + } + + if (char === "\\") { + escapeSequence = scanRegexpEscapeSequence(); + + if (isCharSet && (this.peek(index) === "-" || isCharSetRange) && + reg.regexpCharClasses.test(escapeSequence)) { + this.triggerAsync( + "error", + { + code: "E016", + line: this.line, + character: this.char, + data: [ "Character class used in range" ] + }, + checks, + hasUFlag + ); + } + + continue; + } + + if (isCharSet) { + index += 1; + continue; + } + + if (char === "{" && !hasInvalidQuantifier) { + hasInvalidQuantifier = !checkQuantifier(); + } + + if (char === "[") { + isCharSet = true; + index += 1; + continue; + } else if (char === "(") { + isGroup = true; + + if (this.peek(index + 1) === "?" && + (this.peek(index + 2) === "=" || this.peek(index + 2) === "!")) { + isQuantifiable = true; + } + } else if (char === ")") { + if (isQuantifiable) { + isQuantifiable = false; + + if (reg.regexpQuantifiers.test(this.peek(index + 1))) { + this.triggerAsync( + "error", + { + code: "E016", + line: this.line, + character: this.char, + data: [ "Quantified quantifiable" ] + }, + checks, + hasUFlag + ); + } + } else { + groupCount += 1; + } + + isGroup = false; + } else if (char === "/") { + body = body.substr(0, body.length - 1); + terminated = true; + index += 1; + break; + } + + index += 1; + } + + if (!terminated) { + this.trigger("error", { + code: "E015", + line: this.line, + character: this.from + }); + + return void this.trigger("fatal", { + line: this.line, + from: this.from + }); + } + + while (index < length) { + char = this.peek(index); + if (!/[gimyus]/.test(char)) { + break; + } + if (char === "y") { + if (!state.inES6(true)) { + this.triggerAsync( + "warning", + { + code: "W119", + line: this.line, + character: this.char, + data: [ "Sticky RegExp flag", "6" ] + }, + checks, + function() { return true; } + ); + } + } else if (char === "u") { + if (!state.inES6(true)) { + this.triggerAsync( + "warning", + { + code: "W119", + line: this.line, + character: this.char, + data: [ "Unicode RegExp flag", "6" ] + }, + checks, + function() { return true; } + ); + } + + var hasInvalidEscape = (function(groupReferences, groupCount, escapedChars, reg) { + var hasInvalidGroup = groupReferences.some(function(groupReference) { + if (groupReference > groupCount) { + return true; + } + }); + + if (hasInvalidGroup) { + return true; + } + + return !escapedChars.split("").every(function(escapedChar) { + return escapedChar === "u" || + escapedChar === "/" || + escapedChar === "0" || + reg.regexpControlEscapes.test(escapedChar) || + reg.regexpCharClasses.test(escapedChar) || + reg.regexpSyntaxChars.test(escapedChar); + }); + }(groupReferences, groupCount, escapedChars, reg)); + + if (hasInvalidEscape) { + malformedDesc = "Invalid escape"; + } else if (hasInvalidQuantifier) { + malformedDesc = "Invalid quantifier"; + } + + body = translateUFlag(body); + } else if (char === "s") { + if (!state.inES9()) { + this.triggerAsync( + "warning", + { + code: "W119", + line: this.line, + character: this.char, + data: [ "DotAll RegExp flag", "9" ] + }, + checks, + function() { return true; } + ); + } + if (value.indexOf("s") > -1) { + malformedDesc = "Duplicate RegExp flag"; + } + } else { + es5Flags += char; + } + + if (allFlags.indexOf(char) > -1) { + malformedDesc = "Duplicate RegExp flag"; + } + allFlags += char; + + value += char; + allFlags += char; + index += 1; + } + + if (allFlags.indexOf("u") === -1) { + this.triggerAsync("warning", { + code: "W147", + line: this.line, + character: this.char + }, checks, function() { return state.option.regexpu; }); + } + + try { + new RegExp(body, es5Flags); + } catch (err) { + malformedDesc = err.message; + } + + if (malformedDesc) { + malformed = true; + this.trigger("error", { + code: "E016", + line: this.line, + character: this.char, + data: [ malformedDesc ] + }); + } else if (allFlags.indexOf("s") > -1 && !reg.regexpDot.test(body)) { + this.trigger("warning", { + code: "W148", + line: this.line, + character: this.char + }); + } + + return { + type: Token.RegExp, + value: value, + isMalformed: malformed + }; + }, + scanNonBreakingSpaces: function() { + return state.option.nonbsp ? + this.input.search(/(\u00A0)/) : -1; + }, + next: function(checks) { + this.from = this.char; + while (reg.whitespace.test(this.peek())) { + this.from += 1; + this.skip(); + } + + var match = this.scanComments(checks) || + this.scanStringLiteral(checks) || + this.scanTemplateLiteral(checks); + + if (match) { + return match; + } + + match = + this.scanRegExp(checks) || + this.scanPunctuator() || + this.scanKeyword() || + this.scanIdentifier(checks) || + this.scanNumericLiteral(checks); + + if (match) { + this.skip(match.tokenLength || match.value.length); + return match; + } + + return null; + }, + nextLine: function(checks) { + var char; + + if (this.line >= this.getLines().length) { + return false; + } + + this.input = this.getLines()[this.line]; + this.line += 1; + this.char = 1; + this.from = 1; + + var inputTrimmed = this.input.trim(); + + var startsWith = function() { + return _.some(arguments, function(prefix) { + return inputTrimmed.indexOf(prefix) === 0; + }); + }; + + var endsWith = function() { + return _.some(arguments, function(suffix) { + return inputTrimmed.indexOf(suffix, inputTrimmed.length - suffix.length) !== -1; + }); + }; + if (this.ignoringLinterErrors === true) { + if (!startsWith("/*", "//") && !(this.inComment && endsWith("*/"))) { + this.input = ""; + } + } + + char = this.scanNonBreakingSpaces(); + if (char >= 0) { + this.triggerAsync( + "warning", + { code: "W125", line: this.line, character: char + 1 }, + checks, + function() { return true; } + ); + } + + this.input = this.input.replace(/\t/g, state.tab); + + if (!this.ignoringLinterErrors && state.option.maxlen && + state.option.maxlen < this.input.length) { + var inComment = this.inComment || + startsWith.call(inputTrimmed, "//") || + startsWith.call(inputTrimmed, "/*"); + + var shouldTriggerError = !inComment || !reg.maxlenException.test(inputTrimmed); + + if (shouldTriggerError) { + this.triggerAsync( + "warning", + { code: "W101", line: this.line, character: this.input.length }, + checks, + function() { return true; } + ); + } + } + + return true; + }, + token: function() { + var checks = asyncTrigger(); + var token; + var create = function(type, value, isProperty, token) { + var obj; + + if (type !== "(endline)" && type !== "(end)") { + this.prereg = false; + } + + if (type === "(punctuator)") { + switch (value) { + case ".": + case ")": + case "~": + case "#": + case "]": + case "}": + case "++": + case "--": + this.prereg = false; + break; + default: + this.prereg = true; + } + + obj = Object.create(state.syntax[value] || state.syntax["(error)"]); + } + + if (type === "(identifier)") { + if (value === "return" || value === "case" || value === "yield" || + value === "typeof" || value === "instanceof" || value === "void" || + value === "await" || value === "new" || value === "delete" || + value === "default" || value === "extends") { + this.prereg = true; + } + + if (_.has(state.syntax, value)) { + obj = Object.create(state.syntax[value] || state.syntax["(error)"]); + } + } + + if (type === "(template)" || type === "(template middle)") { + this.prereg = true; + } + + if (!obj) { + obj = Object.create(state.syntax[type]); + } + + obj.identifier = (type === "(identifier)"); + obj.type = obj.type || type; + obj.value = value; + obj.line = this.line; + obj.character = this.char; + obj.from = this.from; + if (obj.identifier && token) obj.raw_text = token.text || token.value; + if (token && token.startLine && token.startLine !== this.line) { + obj.startLine = token.startLine; + } + if (token && token.context) { + obj.context = token.context; + } + if (token && token.depth) { + obj.depth = token.depth; + } + if (token && token.isUnclosed) { + obj.isUnclosed = token.isUnclosed; + } + + if (isProperty && obj.identifier) { + obj.isProperty = isProperty; + } + + obj.check = checks.check; + + return obj; + }.bind(this); + + for (;;) { + if (!this.input.length) { + if (this.nextLine(checks)) { + return create("(endline)", ""); + } + + if (this.exhausted) { + return null; + } + + this.exhausted = true; + return create("(end)", ""); + } + + token = this.next(checks); + + if (!token) { + if (this.input.length) { + this.trigger("error", { + code: "E024", + line: this.line, + character: this.char, + data: [ this.peek() ] + }); + + this.input = ""; + } + + continue; + } + + switch (token.type) { + case Token.StringLiteral: + this.triggerAsync("String", { + line: this.line, + char: this.char, + from: this.from, + startLine: token.startLine, + startChar: token.startChar, + value: token.value, + quote: token.quote + }, checks, function() { return true; }); + + return create("(string)", token.value, null, token); + + case Token.TemplateHead: + this.trigger("TemplateHead", { + line: this.line, + char: this.char, + from: this.from, + startLine: token.startLine, + startChar: token.startChar, + value: token.value + }); + return create("(template)", token.value, null, token); + + case Token.TemplateMiddle: + this.trigger("TemplateMiddle", { + line: this.line, + char: this.char, + from: this.from, + startLine: token.startLine, + startChar: token.startChar, + value: token.value + }); + return create("(template middle)", token.value, null, token); + + case Token.TemplateTail: + this.trigger("TemplateTail", { + line: this.line, + char: this.char, + from: this.from, + startLine: token.startLine, + startChar: token.startChar, + value: token.value + }); + return create("(template tail)", token.value, null, token); + + case Token.NoSubstTemplate: + this.trigger("NoSubstTemplate", { + line: this.line, + char: this.char, + from: this.from, + startLine: token.startLine, + startChar: token.startChar, + value: token.value + }); + return create("(no subst template)", token.value, null, token); + + case Token.Identifier: + this.triggerAsync("Identifier", { + line: this.line, + char: this.char, + from: this.from, + name: token.value, + raw_name: token.text, + isProperty: state.tokens.curr.id === "." + }, checks, function() { return true; }); + case Token.Keyword: + return create("(identifier)", token.value, state.tokens.curr.id === ".", token); + + case Token.NumericLiteral: + if (token.isMalformed) { + this.trigger("error", { + code: "E067", + line: this.line, + character: this.char, + data: [ token.value ] + }); + } + + this.triggerAsync("warning", { + code: "W114", + line: this.line, + character: this.char, + data: [ "0x-" ] + }, checks, function() { return token.base === 16 && state.jsonMode; }); + + this.triggerAsync("warning", { + code: "W115", + line: this.line, + character: this.char + }, checks, function() { + return state.isStrict() && token.base === 8 && token.isLegacy; + }); + + this.triggerAsync("error", { + code: "E068", + line: this.line, + character: this.char + }, checks, function() { + return state.isStrict() && token.isNonOctal; + }); + + this.trigger("Number", { + line: this.line, + char: this.char, + from: this.from, + value: token.value, + base: token.base, + isMalformed: token.isMalformed + }); + + return create("(number)", token.value); + + case Token.RegExp: + return create("(regexp)", token.value); + + case Token.Comment: + if (token.isSpecial) { + return { + id: '(comment)', + value: token.value, + body: token.body, + type: token.commentType, + isSpecial: token.isSpecial, + line: this.line, + character: this.char, + from: this.from + }; + } + + break; + + default: + return create("(punctuator)", token.value); + } + } + } +}; + +exports.Lexer = Lexer; +exports.Context = Context; + +},{"../data/ascii-identifier-data.js":"/../../../jshint/data/ascii-identifier-data.js","../data/es5-identifier-names.js":"/../../../jshint/data/es5-identifier-names.js","../data/non-ascii-identifier-part-only.js":"/../../../jshint/data/non-ascii-identifier-part-only.js","../data/non-ascii-identifier-start.js":"/../../../jshint/data/non-ascii-identifier-start.js","./reg.js":"/../../../jshint/src/reg.js","./state.js":"/../../../jshint/src/state.js","./validate-unicode-escape-sequence":"/../../../jshint/src/validate-unicode-escape-sequence.js","events":"/node_modules/events/events.js","underscore":"/../../../jshint/node_modules/underscore/underscore-umd.js"}],"/../../../jshint/src/messages.js":[function(_dereq_,module,exports){ +"use strict"; + +var _ = _dereq_("underscore"); + +var errors = { + E001: "Bad {a}option: '{b}'.", + E002: "Bad option value.", + E003: "Expected a JSON value.", + E004: "Input is neither a string nor an array of strings.", + E005: "Input is empty.", + E006: "Unexpected early end of program.", + E007: "Missing \"use strict\" statement.", + E008: "Strict violation.", + E009: "Option 'validthis' can't be used in a global scope.", + E010: "'with' is not allowed in strict mode.", + E011: "'{a}' has already been declared.", + E012: "const '{a}' is initialized to 'undefined'.", + E013: "Attempting to override '{a}' which is a constant.", + E014: "A regular expression literal can be confused with '/='.", + E015: "Unclosed regular expression.", + E016: "Invalid regular expression.", + E017: "Unclosed comment.", + E018: "Unbegun comment.", + E019: "Unmatched '{a}'.", + E020: "Expected '{a}' to match '{b}' from line {c} and instead saw '{d}'.", + E021: "Expected '{a}' and instead saw '{b}'.", + E022: "Line breaking error '{a}'.", + E023: "Missing '{a}'.", + E024: "Unexpected '{a}'.", + E025: "Missing ':' on a case clause.", + E026: "Missing '}' to match '{' from line {a}.", + E027: "Missing ']' to match '[' from line {a}.", + E028: "Illegal comma.", + E029: "Unclosed string.", + E030: "Expected an identifier and instead saw '{a}'.", + E031: "Bad assignment.", // FIXME: Rephrase + E032: "Expected a small integer or 'false' and instead saw '{a}'.", + E033: "Expected an operator and instead saw '{a}'.", + E034: "get/set are ES5 features.", + E035: "Missing property name.", + E036: "Expected to see a statement and instead saw a block.", + E037: null, + E038: null, + E039: "Function declarations are not invocable. Wrap the whole function invocation in parens.", + E040: "Each value should have its own case label.", + E041: "Unrecoverable syntax error.", + E042: "Stopping.", + E043: "Too many errors.", + E044: null, + E045: "Invalid for each loop.", + E046: "Yield expressions may only occur within generator functions.", + E047: null, + E048: "{a} declaration not directly within block.", + E049: "A {a} cannot be named '{b}'.", + E050: "Mozilla requires the yield expression to be parenthesized here.", + E051: null, + E052: "Unclosed template literal.", + E053: "{a} declarations are only allowed at the top level of module scope.", + E054: "Class properties must be methods. Expected '(' but instead saw '{a}'.", + E055: "The '{a}' option cannot be set after any executable code.", + E056: "'{a}' was used before it was declared, which is illegal for '{b}' variables.", + E057: "Invalid meta property: '{a}.{b}'.", + E058: "Missing semicolon.", + E059: "Incompatible values for the '{a}' and '{b}' linting options.", + E060: "Non-callable values cannot be used as the second operand to instanceof.", + E061: "Invalid position for 'yield' expression (consider wrapping in parenthesis).", + E062: "Rest parameter does not a support default value.", + E063: "Super property may only be used within method bodies.", + E064: "Super call may only be used within class method bodies.", + E065: "Functions defined outside of strict mode with non-simple parameter lists may not " + + "enable strict mode.", + E066: "Asynchronous iteration is only available with for-of loops.", + E067: "Malformed numeric literal: '{a}'.", + E068: "Decimals with leading zeros are not allowed in strict mode.", + E069: "Duplicate exported binding: '{a}'.", + E070: "import.meta may only be used in module code." +}; + +var warnings = { + W001: "'hasOwnProperty' is a really bad name.", + W002: "Value of '{a}' may be overwritten in IE 8 and earlier.", + W003: "'{a}' was used before it was defined.", + W004: "'{a}' is already defined.", + W005: "A dot following a number can be confused with a decimal point.", + W006: "Confusing minuses.", + W007: "Confusing plusses.", + W008: "A leading decimal point can be confused with a dot: '{a}'.", + W009: "The array literal notation [] is preferable.", + W010: "The object literal notation {} is preferable.", + W011: null, + W012: null, + W013: null, + W014: "Misleading line break before '{a}'; readers may interpret this as an expression boundary.", + W015: null, + W016: "Unexpected use of '{a}'.", + W017: "Bad operand.", + W018: "Confusing use of '{a}'.", + W019: "Use the isNaN function to compare with NaN.", + W020: "Read only.", + W021: "Reassignment of '{a}', which is a {b}. " + + "Use 'var' or 'let' to declare bindings that may change.", + W022: "Do not assign to the exception parameter.", + W023: null, + W024: "Expected an identifier and instead saw '{a}' (a reserved word).", + W025: "Missing name in function declaration.", + W026: "Inner functions should be listed at the top of the outer function.", + W027: "Unreachable '{a}' after '{b}'.", + W028: "Label '{a}' on {b} statement.", + W030: "Expected an assignment or function call and instead saw an expression.", + W031: "Do not use 'new' for side effects.", + W032: "Unnecessary semicolon.", + W033: "Missing semicolon.", + W034: "Unnecessary directive \"{a}\".", + W035: "Empty block.", + W036: "Unexpected /*member '{a}'.", + W037: "'{a}' is a statement label.", + W038: "'{a}' used out of scope.", + W039: null, + W040: "If a strict mode function is executed using function invocation, " + + "its 'this' value will be undefined.", + W041: null, + W042: "Avoid EOL escaping.", + W043: "Bad escaping of EOL. Use option multistr if needed.", + W044: "Bad or unnecessary escaping.", /* TODO(caitp): remove W044 */ + W045: "Value described by numeric literal cannot be accurately " + + "represented with a number value: '{a}'.", + W046: "Don't use extra leading zeros '{a}'.", + W047: "A trailing decimal point can be confused with a dot: '{a}'.", + W048: "Unexpected control character in regular expression.", + W049: "Unexpected escaped character '{a}' in regular expression.", + W050: "JavaScript URL.", + W051: "Variables should not be deleted.", + W052: "Unexpected '{a}'.", + W053: "Do not use {a} as a constructor.", + W054: "The Function constructor is a form of eval.", + W055: "A constructor name should start with an uppercase letter.", + W056: "Bad constructor.", + W057: "Weird construction. Is 'new' necessary?", + W058: "Missing '()' invoking a constructor.", + W059: "Avoid arguments.{a}.", + W060: "document.write can be a form of eval.", + W061: "eval can be harmful.", + W062: "Wrap an immediate function invocation in parens " + + "to assist the reader in understanding that the expression " + + "is the result of a function, and not the function itself.", + W063: "Math is not a function.", + W064: "Missing 'new' prefix when invoking a constructor.", + W065: "Missing radix parameter.", + W066: "Implied eval. Consider passing a function instead of a string.", + W067: "Unorthodox function invocation.", + W068: "Wrapping non-IIFE function literals in parens is unnecessary.", + W069: "['{a}'] is better written in dot notation.", + W070: "Extra comma. (it breaks older versions of IE)", + W071: "This function has too many statements. ({a})", + W072: "This function has too many parameters. ({a})", + W073: "Blocks are nested too deeply. ({a})", + W074: "This function's cyclomatic complexity is too high. ({a})", + W075: "Duplicate {a} '{b}'.", + W076: "Unexpected parameter '{a}' in get {b} function.", + W077: "Expected a single parameter in set {a} function.", + W078: "Setter is defined without getter.", + W079: "Redefinition of '{a}'.", + W080: "It's not necessary to initialize '{a}' to 'undefined'.", + W081: null, + W082: "Function declarations should not be placed in blocks. " + + "Use a function expression or move the statement to the top of " + + "the outer function.", + W083: "Functions declared within loops referencing an outer scoped " + + "variable may lead to confusing semantics. ({a})", + W084: "Assignment in conditional expression", + W085: "Don't use 'with'.", + W086: "Expected a 'break' statement before '{a}'.", + W087: "Forgotten 'debugger' statement?", + W088: "Creating global 'for' variable. Should be 'for (var {a} ...'.", + W089: "The body of a for in should be wrapped in an if statement to filter " + + "unwanted properties from the prototype.", + W090: "'{a}' is not a statement label.", + W091: null, + W093: "Did you mean to return a conditional instead of an assignment?", + W094: "Unexpected comma.", + W095: "Expected a string and instead saw {a}.", + W096: "The '{a}' key may produce unexpected results.", + W097: "Use the function form of \"use strict\".", + W098: "'{a}' is defined but never used.", + W099: null, + W100: null, + W101: "Line is too long.", + W102: null, + W103: "The '{a}' property is deprecated.", + W104: "'{a}' is available in ES{b} (use 'esversion: {b}') or Mozilla JS extensions (use moz).", + W105: null, + W106: "Identifier '{a}' is not in camel case.", + W107: "Script URL.", + W108: "Strings must use doublequote.", + W109: "Strings must use singlequote.", + W110: "Mixed double and single quotes.", + W112: "Unclosed string.", + W113: "Control character in string: {a}.", + W114: "Avoid {a}.", + W115: "Octal literals are not allowed in strict mode.", + W116: "Expected '{a}' and instead saw '{b}'.", + W117: "'{a}' is not defined.", + W118: "'{a}' is only available in Mozilla JavaScript extensions (use moz option).", + W119: "'{a}' is only available in ES{b} (use 'esversion: {b}').", + W120: "You might be leaking a variable ({a}) here.", + W121: "Extending prototype of native object: '{a}'.", + W122: "Invalid typeof value '{a}'", + W123: "'{a}' is already defined in outer scope.", + W124: "A generator function should contain at least one yield expression.", + W125: "This line contains non-breaking spaces: http://jshint.com/docs/options/#nonbsp", + W126: "Unnecessary grouping operator.", + W127: "Unexpected use of a comma operator.", + W128: "Empty array elements require elision=true.", + W129: "'{a}' is defined in a future version of JavaScript. Use a " + + "different variable name to avoid migration issues.", + W130: "Invalid element after rest element.", + W131: "Invalid parameter after rest parameter.", + W132: "`var` declarations are forbidden. Use `let` or `const` instead.", + W133: "Invalid for-{a} loop left-hand-side: {b}.", + W134: "The '{a}' option is only available when linting ECMAScript {b} code.", + W135: "{a} may not be supported by non-browser environments.", + W136: "'{a}' must be in function scope.", + W137: "Empty destructuring: this is unnecessary and can be removed.", + W138: "Regular parameters should not come after default parameters.", + W139: "Function expressions should not be used as the second operand to instanceof.", + W140: "Missing comma.", + W141: "Empty {a}: this is unnecessary and can be removed.", + W142: "Empty {a}: consider replacing with `import '{b}';`.", + W143: "Assignment to properties of a mapped arguments object may cause " + + "unexpected changes to formal parameters.", + W144: "'{a}' is a non-standard language feature. Enable it using the '{b}' unstable option.", + W145: "Superfluous 'case' clause.", + W146: "Unnecessary `await` expression.", + W147: "Regular expressions should include the 'u' flag.", + W148: "Unnecessary RegExp 's' flag." +}; + +var info = { + I001: "Comma warnings can be turned off with 'laxcomma'.", + I002: null, + I003: "ES5 option is now set per default" +}; + +exports.errors = {}; +exports.warnings = {}; +exports.info = {}; + +_.each(errors, function(desc, code) { + exports.errors[code] = { code: code, desc: desc }; +}); + +_.each(warnings, function(desc, code) { + exports.warnings[code] = { code: code, desc: desc }; +}); + +_.each(info, function(desc, code) { + exports.info[code] = { code: code, desc: desc }; +}); + +},{"underscore":"/../../../jshint/node_modules/underscore/underscore-umd.js"}],"/../../../jshint/src/name-stack.js":[function(_dereq_,module,exports){ +"use strict"; + +function NameStack() { + this._stack = []; +} + +Object.defineProperty(NameStack.prototype, "length", { + get: function() { + return this._stack.length; + } +}); +NameStack.prototype.push = function() { + this._stack.push(null); +}; +NameStack.prototype.pop = function() { + this._stack.pop(); +}; +NameStack.prototype.set = function(token) { + this._stack[this.length - 1] = token; +}; +NameStack.prototype.infer = function() { + var nameToken = this._stack[this.length - 1]; + var prefix = ""; + var type; + if (!nameToken || nameToken.type === "class") { + nameToken = this._stack[this.length - 2]; + } + + if (!nameToken) { + return "(empty)"; + } + + type = nameToken.type; + + if (type !== "(string)" && type !== "(number)" && type !== "(identifier)" && type !== "default") { + return "(expression)"; + } + + if (nameToken.accessorType) { + prefix = nameToken.accessorType + " "; + } + + return prefix + nameToken.value; +}; + +module.exports = NameStack; + +},{}],"/../../../jshint/src/options.js":[function(_dereq_,module,exports){ +"use strict"; +exports.bool = { + enforcing: { + bitwise : true, + freeze : true, + camelcase : true, + curly : true, + eqeqeq : true, + futurehostile: true, + es3 : true, + es5 : true, + forin : true, + immed : true, + leanswitch : true, + newcap : true, + noarg : true, + nocomma : true, + noempty : true, + nonbsp : true, + nonew : true, + noreturnawait: true, + regexpu : true, + undef : true, + singleGroups: false, + varstmt: false, + enforceall : false, + trailingcomma: false + }, + relaxing: { + asi : true, + multistr : true, + debug : true, + boss : true, + evil : true, + funcscope : true, + globalstrict: true, + iterator : true, + notypeof : true, + plusplus : true, + proto : true, + scripturl : true, + sub : true, + supernew : true, + laxbreak : true, + laxcomma : true, + validthis : true, + withstmt : true, + moz : true, + noyield : true, + eqnull : true, + lastsemic : true, + loopfunc : true, + expr : true, + esnext : true, + elision : true, + }, + environments: { + mootools : true, + couch : true, + jasmine : true, + jquery : true, + node : true, + qunit : true, + rhino : true, + shelljs : true, + prototypejs : true, + yui : true, + mocha : true, + module : true, + wsh : true, + worker : true, + nonstandard : true, + browser : true, + browserify : true, + devel : true, + dojo : true, + typed : true, + phantom : true + }, + obsolete: { + onecase : true, // if one case switch statements should be allowed + regexp : true, // if the . should not be allowed in regexp literals + regexdash : true // if unescaped first/last dash (-) inside brackets + } +}; +exports.val = { + maxlen : false, + indent : false, + maxerr : false, + predef : false, + globals : false, + quotmark : false, + + scope : false, + maxstatements: false, + maxdepth : false, + maxparams : false, + maxcomplexity: false, + shadow : false, + strict : true, + unused : true, + latedef : false, + + ignore : false, // start/end ignoring lines of code, bypassing the lexer + + ignoreDelimiters: false, // array of start/end delimiters used to ignore + esversion: 5 +}; +exports.unstable = { +}; +exports.inverted = { + bitwise : true, + forin : true, + newcap : true, + plusplus: true, + regexp : true, + undef : true, + eqeqeq : true, + strict : true +}; + +exports.validNames = Object.keys(exports.val) + .concat(Object.keys(exports.bool.relaxing)) + .concat(Object.keys(exports.bool.enforcing)) + .concat(Object.keys(exports.bool.obsolete)) + .concat(Object.keys(exports.bool.environments)) + .concat(["unstable"]); + +exports.unstableNames = Object.keys(exports.unstable); +exports.renamed = { + eqeq : "eqeqeq", + windows: "wsh", + sloppy : "strict" +}; + +exports.removed = { + nomen: true, + onevar: true, + passfail: true, + white: true, + gcl: true, + smarttabs: true, + trailing: true +}; +exports.noenforceall = { + varstmt: true, + strict: true, + regexpu: true +}; + +},{}],"/../../../jshint/src/prod-params.js":[function(_dereq_,module,exports){ +module.exports = { + export: 1, + noin: 2, + initial: 4, + + preAsync: 8, + + async: 16, + tryClause: 32, + yield: 64 +}; + +},{}],"/../../../jshint/src/reg.js":[function(_dereq_,module,exports){ + +"use strict"; +exports.unsafeString = + /@cc|<\/?|script|\]\s*\]|<\s*!|</i; +exports.needEsc = + /[\u0000-\u001f&<"\/\\\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/; + +exports.needEscGlobal = + /[\u0000-\u001f&<"\/\\\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g; +exports.starSlash = /\*\//; +exports.identifier = /^([a-zA-Z_$][a-zA-Z0-9_$]*)$/; +exports.javascriptURL = /^(?:javascript|jscript|ecmascript|vbscript|livescript)\s*:/i; +exports.fallsThrough = /^\s*falls?\sthrough\s*$/; +exports.maxlenException = /^(?:(?:\/\/|\/\*|\*) ?)?[^ ]+$/; +exports.whitespace = /[ \f\n\r\t\v\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]/; + +exports.nonzeroDigit = /^[1-9]$/; + +exports.decimalDigit = /^[0-9]$/; + +exports.regexpSyntaxChars = /[\^$\\.*+?()[\]{}|]/; + +exports.regexpQuantifiers = /[*+?{]/; + +exports.regexpControlEscapes = /[fnrtv]/; + +exports.regexpCharClasses = /[dDsSwWpP]/; +exports.regexpDot = /(^|[^\\])(\\\\)*\./; + +},{}],"/../../../jshint/src/scope-manager.js":[function(_dereq_,module,exports){ +"use strict"; + +var _ = _dereq_("underscore"); +_.slice = _dereq_("lodash.slice"); +var events = _dereq_("events"); +var marker = {}; +var scopeManager = function(state, predefined, exported, declared) { + + var _current; + var _scopeStack = []; + + function _newScope(type) { + _current = { + "(bindings)": Object.create(null), + "(usages)": Object.create(null), + "(labels)": Object.create(null), + "(parent)": _current, + "(type)": type, + "(params)": (type === "functionparams" || type === "catchparams") ? [] : null + }; + _scopeStack.push(_current); + } + + _newScope("global"); + _current["(predefined)"] = predefined; + + var _currentFunctBody = _current; // this is the block after the params = function + + var usedPredefinedAndGlobals = Object.create(null); + var impliedGlobals = Object.create(null); + var unuseds = []; + var esModuleExports = []; + var emitter = new events.EventEmitter(); + + function warning(code, token) { + emitter.emit("warning", { + code: code, + token: token, + data: _.slice(arguments, 2) + }); + } + + function error(code, token) { + emitter.emit("warning", { + code: code, + token: token, + data: _.slice(arguments, 2) + }); + } + + function _setupUsages(bindingName) { + if (!_current["(usages)"][bindingName]) { + _current["(usages)"][bindingName] = { + "(modified)": [], + "(reassigned)": [], + "(tokens)": [] + }; + } + } + + var _getUnusedOption = function(unused_opt) { + if (unused_opt === undefined) { + unused_opt = state.option.unused; + } + + if (unused_opt === true) { + unused_opt = "last-param"; + } + + return unused_opt; + }; + + var _warnUnused = function(name, tkn, type, unused_opt) { + var line = tkn.line; + var chr = tkn.from; + var raw_name = tkn.raw_text || name; + + unused_opt = _getUnusedOption(unused_opt); + + var warnable_types = { + "vars": ["var"], + "last-param": ["var", "param"], + "strict": ["var", "param", "last-param"] + }; + + if (unused_opt) { + if (warnable_types[unused_opt] && warnable_types[unused_opt].indexOf(type) !== -1) { + warning("W098", { line: line, from: chr }, raw_name); + } + } + if (unused_opt || type === "var") { + unuseds.push({ + name: name, + line: line, + character: chr + }); + } + }; + function _checkForUnused() { + if (_current["(type)"] !== "functionparams") { + var currentBindings = _current["(bindings)"]; + for (var bindingName in currentBindings) { + if (currentBindings[bindingName]["(type)"] !== "exception" && + currentBindings[bindingName]["(unused)"]) { + _warnUnused(bindingName, currentBindings[bindingName]["(token)"], "var"); + } + } + return; + } + var params = _current["(params)"]; + + var param = params.pop(); + var unused_opt; + + while (param) { + var binding = _current["(bindings)"][param]; + + unused_opt = _getUnusedOption(state.funct["(unusedOption)"]); + if (param === "undefined") + return; + + if (binding["(unused)"]) { + _warnUnused(param, binding["(token)"], "param", state.funct["(unusedOption)"]); + } else if (unused_opt === "last-param") { + return; + } + + param = params.pop(); + } + } + function _getBinding(bindingName) { + for (var i = _scopeStack.length - 1 ; i >= 0; --i) { + var scopeBindings = _scopeStack[i]["(bindings)"]; + if (scopeBindings[bindingName]) { + return scopeBindings; + } + } + } + function usedSoFarInCurrentFunction(bindingName) { + for (var i = _scopeStack.length - 1; i >= 0; i--) { + var current = _scopeStack[i]; + if (current["(usages)"][bindingName]) { + return current["(usages)"][bindingName]; + } + if (current === _currentFunctBody) { + break; + } + } + return false; + } + + function _checkOuterShadow(bindingName, token) { + if (state.option.shadow !== "outer") { + return; + } + + var isGlobal = _currentFunctBody["(type)"] === "global", + isNewFunction = _current["(type)"] === "functionparams"; + + var outsideCurrentFunction = !isGlobal; + for (var i = 0; i < _scopeStack.length; i++) { + var stackItem = _scopeStack[i]; + + if (!isNewFunction && _scopeStack[i + 1] === _currentFunctBody) { + outsideCurrentFunction = false; + } + if (outsideCurrentFunction && stackItem["(bindings)"][bindingName]) { + warning("W123", token, bindingName); + } + if (stackItem["(labels)"][bindingName]) { + warning("W123", token, bindingName); + } + } + } + + function _latedefWarning(type, bindingName, token) { + var isFunction; + + if (state.option.latedef) { + isFunction = type === "function" || type === "generator function" || + type === "async function"; + if ((state.option.latedef === true && isFunction) || !isFunction) { + warning("W003", token, bindingName); + } + } + } + + var scopeManagerInst = { + + on: function(names, listener) { + names.split(" ").forEach(function(name) { + emitter.on(name, listener); + }); + }, + + isPredefined: function(bindingName) { + return !this.has(bindingName) && _.has(_scopeStack[0]["(predefined)"], bindingName); + }, + stack: function(type) { + var previousScope = _current; + _newScope(type); + + if (!type && previousScope["(type)"] === "functionparams") { + + _current["(isFuncBody)"] = true; + _currentFunctBody = _current; + } + }, + unstack: function() { + var subScope = _scopeStack.length > 1 ? _scopeStack[_scopeStack.length - 2] : null; + var isUnstackingFunctionBody = _current === _currentFunctBody, + isUnstackingFunctionParams = _current["(type)"] === "functionparams", + isUnstackingFunctionOuter = _current["(type)"] === "functionouter"; + + var i, j, isImmutable, isFunction; + var currentUsages = _current["(usages)"]; + var currentBindings = _current["(bindings)"]; + var usedBindingNameList = Object.keys(currentUsages); + if (currentUsages.__proto__ && usedBindingNameList.indexOf("__proto__") === -1) { + usedBindingNameList.push("__proto__"); + } + + for (i = 0; i < usedBindingNameList.length; i++) { + var usedBindingName = usedBindingNameList[i]; + + var usage = currentUsages[usedBindingName]; + var usedBinding = currentBindings[usedBindingName]; + if (usedBinding) { + var usedBindingType = usedBinding["(type)"]; + isImmutable = usedBindingType === "const" || usedBindingType === "import"; + + if (usedBinding["(useOutsideOfScope)"] && !state.option.funcscope) { + var usedTokens = usage["(tokens)"]; + for (j = 0; j < usedTokens.length; j++) { + if (usedBinding["(function)"] === usedTokens[j]["(function)"]) { + error("W038", usedTokens[j], usedBindingName); + } + } + } + _current["(bindings)"][usedBindingName]["(unused)"] = false; + if (isImmutable && usage["(modified)"]) { + for (j = 0; j < usage["(modified)"].length; j++) { + error("E013", usage["(modified)"][j], usedBindingName); + } + } + + isFunction = usedBindingType === "function" || + usedBindingType === "generator function" || + usedBindingType === "async function"; + if ((isFunction || usedBindingType === "class") && usage["(reassigned)"]) { + for (j = 0; j < usage["(reassigned)"].length; j++) { + if (!usage["(reassigned)"][j].ignoreW021) { + warning("W021", usage["(reassigned)"][j], usedBindingName, usedBindingType); + } + } + } + continue; + } + + if (subScope) { + var bindingType = this.bindingtype(usedBindingName); + isImmutable = bindingType === "const" || + (bindingType === null && _scopeStack[0]["(predefined)"][usedBindingName] === false); + if (isUnstackingFunctionOuter && !isImmutable) { + if (!state.funct["(outerMutables)"]) { + state.funct["(outerMutables)"] = []; + } + state.funct["(outerMutables)"].push(usedBindingName); + } + if (!subScope["(usages)"][usedBindingName]) { + subScope["(usages)"][usedBindingName] = usage; + if (isUnstackingFunctionBody) { + subScope["(usages)"][usedBindingName]["(onlyUsedSubFunction)"] = true; + } + } else { + var subScopeUsage = subScope["(usages)"][usedBindingName]; + subScopeUsage["(modified)"] = subScopeUsage["(modified)"].concat(usage["(modified)"]); + subScopeUsage["(tokens)"] = subScopeUsage["(tokens)"].concat(usage["(tokens)"]); + subScopeUsage["(reassigned)"] = + subScopeUsage["(reassigned)"].concat(usage["(reassigned)"]); + } + } else { + if (typeof _current["(predefined)"][usedBindingName] === "boolean") { + delete declared[usedBindingName]; + usedPredefinedAndGlobals[usedBindingName] = marker; + if (_current["(predefined)"][usedBindingName] === false && usage["(reassigned)"]) { + for (j = 0; j < usage["(reassigned)"].length; j++) { + if (!usage["(reassigned)"][j].ignoreW020) { + warning("W020", usage["(reassigned)"][j]); + } + } + } + } + else { + for (j = 0; j < usage["(tokens)"].length; j++) { + var undefinedToken = usage["(tokens)"][j]; + if (!undefinedToken.forgiveUndef) { + if (state.option.undef && !undefinedToken.ignoreUndef) { + warning("W117", undefinedToken, usedBindingName); + } + if (impliedGlobals[usedBindingName]) { + impliedGlobals[usedBindingName].line.push(undefinedToken.line); + } else { + impliedGlobals[usedBindingName] = { + name: usedBindingName, + line: [undefinedToken.line] + }; + } + } + } + } + } + } + if (!subScope) { + Object.keys(declared) + .forEach(function(bindingNotUsed) { + _warnUnused(bindingNotUsed, declared[bindingNotUsed], "var"); + }); + } + if (subScope && !isUnstackingFunctionBody && + !isUnstackingFunctionParams && !isUnstackingFunctionOuter) { + var bindingNames = Object.keys(currentBindings); + for (i = 0; i < bindingNames.length; i++) { + + var defBindingName = bindingNames[i]; + var defBinding = currentBindings[defBindingName]; + + if (!defBinding["(blockscoped)"] && defBinding["(type)"] !== "exception") { + var shadowed = subScope["(bindings)"][defBindingName]; + if (shadowed) { + shadowed["(unused)"] &= defBinding["(unused)"]; + } else { + defBinding["(useOutsideOfScope)"] = + _currentFunctBody["(type)"] !== "global" && + !this.funct.has(defBindingName, { excludeCurrent: true }); + + subScope["(bindings)"][defBindingName] = defBinding; + } + + delete currentBindings[defBindingName]; + } + } + } + + _checkForUnused(); + + _scopeStack.pop(); + if (isUnstackingFunctionBody) { + _currentFunctBody = _scopeStack[_.findLastIndex(_scopeStack, function(scope) { + return scope["(isFuncBody)"] || scope["(type)"] === "global"; + })]; + } + + _current = subScope; + }, + addParam: function(bindingName, token, type) { + type = type || "param"; + + if (type === "exception") { + var previouslyDefinedBindingType = this.funct.bindingtype(bindingName); + if (previouslyDefinedBindingType && previouslyDefinedBindingType !== "exception") { + if (!state.option.node) { + warning("W002", state.tokens.next, bindingName); + } + } + + if (state.isStrict() && (bindingName === "arguments" || bindingName === "eval")) { + warning("E008", token); + } + } + if (_.has(_current["(bindings)"], bindingName)) { + _current["(bindings)"][bindingName].duplicated = true; + } else { + _checkOuterShadow(bindingName, token); + + _current["(bindings)"][bindingName] = { + "(type)" : type, + "(token)": token, + "(unused)": true }; + + _current["(params)"].push(bindingName); + } + + if (_.has(_current["(usages)"], bindingName)) { + var usage = _current["(usages)"][bindingName]; + if (usage["(onlyUsedSubFunction)"]) { + _latedefWarning(type, bindingName, token); + } else { + warning("W003", token, bindingName); + } + } + }, + + validateParams: function(isArrow) { + var isStrict = state.isStrict(); + var currentFunctParamScope = _currentFunctBody["(parent)"]; + var isSimple = state.funct['(hasSimpleParams)']; + var isMethod = state.funct["(method)"]; + + if (!currentFunctParamScope["(params)"]) { + return; + } + + currentFunctParamScope["(params)"].forEach(function(bindingName) { + var binding = currentFunctParamScope["(bindings)"][bindingName]; + + if (binding.duplicated) { + if (isStrict || isArrow || isMethod || !isSimple) { + warning("E011", binding["(token)"], bindingName); + } else if (state.option.shadow !== true) { + warning("W004", binding["(token)"], bindingName); + } + } + + if (isStrict && (bindingName === "arguments" || bindingName === "eval")) { + warning("E008", binding["(token)"]); + } + }); + }, + + getUsedOrDefinedGlobals: function() { + var list = Object.keys(usedPredefinedAndGlobals); + if (usedPredefinedAndGlobals.__proto__ === marker && + list.indexOf("__proto__") === -1) { + list.push("__proto__"); + } + + return list; + }, + getImpliedGlobals: function() { + var values = _.values(impliedGlobals); + var hasProto = false; + if (impliedGlobals.__proto__) { + hasProto = values.some(function(value) { + return value.name === "__proto__"; + }); + if (!hasProto) { + values.push(impliedGlobals.__proto__); + } + } + + return values; + }, + getUnuseds: function() { + return unuseds; + }, + has: function(bindingName) { + return Boolean(_getBinding(bindingName)); + }, + bindingtype: function(bindingName) { + var scopeBindings = _getBinding(bindingName); + if (scopeBindings) { + return scopeBindings[bindingName]["(type)"]; + } + return null; + }, + addExported: function(bindingName) { + var globalBindings = _scopeStack[0]["(bindings)"]; + if (_.has(declared, bindingName)) { + delete declared[bindingName]; + } else if (_.has(globalBindings, bindingName)) { + globalBindings[bindingName]["(unused)"] = false; + } else { + for (var i = 1; i < _scopeStack.length; i++) { + var scope = _scopeStack[i]; + if (!scope["(type)"]) { + if (_.has(scope["(bindings)"], bindingName) && + !scope["(bindings)"][bindingName]["(blockscoped)"]) { + scope["(bindings)"][bindingName]["(unused)"] = false; + return; + } + } else { + break; + } + } + exported[bindingName] = true; + } + }, + setExported: function(localName, exportName) { + if (exportName) { + if (esModuleExports.indexOf(exportName.value) > -1) { + error("E069", exportName, exportName.value); + } + + esModuleExports.push(exportName.value); + } + + if (localName) { + this.block.use(localName.value, localName); + } + }, + initialize: function(bindingName) { + if (_current["(bindings)"][bindingName]) { + _current["(bindings)"][bindingName]["(initialized)"] = true; + } + }, + addbinding: function(bindingName, opts) { + + var type = opts.type; + var token = opts.token; + var isblockscoped = type === "let" || type === "const" || + type === "class" || type === "import" || type === "generator function" || + type === "async function" || type === "async generator function"; + var ishoisted = type === "function" || type === "generator function" || + type === "async function" || type === "import"; + var isexported = (isblockscoped ? _current : _currentFunctBody)["(type)"] === "global" && + _.has(exported, bindingName); + _checkOuterShadow(bindingName, token); + + if (state.isStrict() && (bindingName === "arguments" || bindingName === "eval")) { + warning("E008", token); + } + + if (isblockscoped) { + + var declaredInCurrentScope = _current["(bindings)"][bindingName]; + if (!declaredInCurrentScope && _current === _currentFunctBody && + _current["(type)"] !== "global") { + declaredInCurrentScope = !!_currentFunctBody["(parent)"]["(bindings)"][bindingName]; + } + if (!declaredInCurrentScope && _current["(usages)"][bindingName]) { + var usage = _current["(usages)"][bindingName]; + if (usage["(onlyUsedSubFunction)"] || ishoisted) { + _latedefWarning(type, bindingName, token); + } else if (!ishoisted) { + warning("E056", token, bindingName, type); + } + } + if (declaredInCurrentScope && + (!ishoisted || (_current["(type)"] !== "global" || type === "import"))) { + warning("E011", token, bindingName); + } + else if (state.option.shadow === "outer") { + if (scopeManagerInst.funct.has(bindingName)) { + warning("W004", token, bindingName); + } + } + + scopeManagerInst.block.add( + bindingName, type, token, !isexported, opts.initialized + ); + + } else { + + var declaredInCurrentFunctionScope = scopeManagerInst.funct.has(bindingName); + if (!declaredInCurrentFunctionScope && usedSoFarInCurrentFunction(bindingName)) { + _latedefWarning(type, bindingName, token); + } + if (scopeManagerInst.funct.has(bindingName, { onlyBlockscoped: true })) { + warning("E011", token, bindingName); + } else if (state.option.shadow !== true) { + if (declaredInCurrentFunctionScope && bindingName !== "__proto__") { + if (_currentFunctBody["(type)"] !== "global") { + warning("W004", token, bindingName); + } + } + } + + scopeManagerInst.funct.add(bindingName, type, token, !isexported); + + if (_currentFunctBody["(type)"] === "global" && !state.impliedClosure()) { + usedPredefinedAndGlobals[bindingName] = marker; + } + } + }, + + funct: { + bindingtype: function(bindingName, options) { + var onlyBlockscoped = options && options.onlyBlockscoped; + var excludeParams = options && options.excludeParams; + var currentScopeIndex = _scopeStack.length - (options && options.excludeCurrent ? 2 : 1); + for (var i = currentScopeIndex; i >= 0; i--) { + var current = _scopeStack[i]; + if (current["(bindings)"][bindingName] && + (!onlyBlockscoped || current["(bindings)"][bindingName]["(blockscoped)"])) { + return current["(bindings)"][bindingName]["(type)"]; + } + var scopeCheck = excludeParams ? _scopeStack[ i - 1 ] : current; + if (scopeCheck && scopeCheck["(type)"] === "functionparams") { + return null; + } + } + return null; + }, + hasLabel: function(labelName) { + for (var i = _scopeStack.length - 1; i >= 0; i--) { + var current = _scopeStack[i]; + + if (current["(labels)"][labelName]) { + return true; + } + if (current["(type)"] === "functionparams") { + return false; + } + } + return false; + }, + has: function(bindingName, options) { + return Boolean(this.bindingtype(bindingName, options)); + }, + add: function(bindingName, type, tok, unused) { + _current["(bindings)"][bindingName] = { + "(type)" : type, + "(token)": tok, + "(blockscoped)": false, + "(function)": _currentFunctBody, + "(unused)": unused }; + } + }, + + block: { + isGlobal: function() { + return _current["(type)"] === "global"; + }, + use: function(bindingName, token) { + var paramScope = _currentFunctBody["(parent)"]; + if (paramScope && paramScope["(bindings)"][bindingName] && + paramScope["(bindings)"][bindingName]["(type)"] === "param") { + if (!scopeManagerInst.funct.has(bindingName, + { excludeParams: true, onlyBlockscoped: true })) { + paramScope["(bindings)"][bindingName]["(unused)"] = false; + } + } + + if (token && (state.ignored.W117 || state.option.undef === false)) { + token.ignoreUndef = true; + } + + _setupUsages(bindingName); + + _current["(usages)"][bindingName]["(onlyUsedSubFunction)"] = false; + + if (token) { + token["(function)"] = _currentFunctBody; + _current["(usages)"][bindingName]["(tokens)"].push(token); + } + var binding = _current["(bindings)"][bindingName]; + if (binding && binding["(blockscoped)"] && !binding["(initialized)"]) { + error("E056", token, bindingName, binding["(type)"]); + } + }, + + reassign: function(bindingName, token) { + token.ignoreW020 = state.ignored.W020; + token.ignoreW021 = state.ignored.W021; + + this.modify(bindingName, token); + + _current["(usages)"][bindingName]["(reassigned)"].push(token); + }, + + modify: function(bindingName, token) { + + _setupUsages(bindingName); + + _current["(usages)"][bindingName]["(onlyUsedSubFunction)"] = false; + _current["(usages)"][bindingName]["(modified)"].push(token); + }, + add: function(bindingName, type, tok, unused, initialized) { + _current["(bindings)"][bindingName] = { + "(type)" : type, + "(token)": tok, + "(initialized)": !!initialized, + "(blockscoped)": true, + "(unused)": unused }; + }, + + addLabel: function(labelName, opts) { + var token = opts.token; + if (scopeManagerInst.funct.hasLabel(labelName)) { + warning("E011", token, labelName); + } + else if (state.option.shadow === "outer") { + if (scopeManagerInst.funct.has(labelName)) { + warning("W004", token, labelName); + } else { + _checkOuterShadow(labelName, token); + } + } + _current["(labels)"][labelName] = token; + } + } + }; + return scopeManagerInst; +}; + +module.exports = scopeManager; + +},{"events":"/node_modules/events/events.js","lodash.slice":"/../../../jshint/node_modules/lodash.slice/index.js","underscore":"/../../../jshint/node_modules/underscore/underscore-umd.js"}],"/../../../jshint/src/state.js":[function(_dereq_,module,exports){ +"use strict"; +var NameStack = _dereq_("./name-stack.js"); + +var state = { + syntax: {}, + isStrict: function() { + return !!this.directive["use strict"] || this.inClassBody || + this.option.module || this.option.strict === "implied"; + }, + stmtMissingStrict: function() { + if (this.option.strict === "global") { + return true; + } + + if (this.option.strict === false) { + return false; + } + + if (this.option.globalstrict) { + return true; + } + + return false; + }, + + allowsGlobalUsd: function() { + return this.option.strict === "global" || this.option.globalstrict || + this.option.module || this.impliedClosure(); + }, + impliedClosure: function() { + return this.option.node || this.option.phantom || this.option.browserify; + }, + + inMoz: function() { + return this.option.moz; + }, + inES11: function() { + return this.esVersion >= 11; + }, + inES10: function() { + return this.esVersion >= 10; + }, + inES9: function() { + return this.esVersion >= 9; + }, + inES8: function() { + return this.esVersion >= 8; + }, + inES7: function() { + return this.esVersion >= 7; + }, + inES6: function(strict) { + if (!strict && this.option.moz) { + return true; + } + + return this.esVersion >= 6; + }, + inES5: function() { + return !this.esVersion || this.esVersion >= 5 || this.option.moz; + }, + inferEsVersion: function() { + var badOpt = null; + + if (this.option.esversion) { + if (this.option.es3) { + badOpt = "es3"; + } else if (this.option.es5) { + badOpt = "es5"; + } else if (this.option.esnext) { + badOpt = "esnext"; + } + + if (badOpt) { + return badOpt; + } + + if (this.option.esversion === 2015) { + this.esVersion = 6; + } else { + this.esVersion = this.option.esversion; + } + } else if (this.option.es3) { + this.esVersion = 3; + } else if (this.option.esnext) { + this.esVersion = 6; + } + + return null; + }, + + reset: function() { + this.tokens = { + prev: null, + next: null, + curr: null + }; + + this.option = { unstable: {} }; + this.esVersion = 5; + this.funct = null; + this.ignored = {}; + this.directive = Object.create(null); + this.jsonMode = false; + this.lines = []; + this.tab = ""; + this.cache = {}; // Node.JS doesn't have Map. Sniff. + this.ignoredLines = {}; + this.forinifcheckneeded = false; + this.nameStack = new NameStack(); + this.inClassBody = false; + } +}; + +exports.state = state; + +},{"./name-stack.js":"/../../../jshint/src/name-stack.js"}],"/../../../jshint/src/style.js":[function(_dereq_,module,exports){ +"use strict"; + +exports.register = function(linter) { + + linter.on("Identifier", function style_scanProto(data) { + if (linter.getOption("proto")) { + return; + } + + if (data.name === "__proto__") { + linter.warn("W103", { + line: data.line, + char: data.char, + data: [ data.name, "6" ] + }); + } + }); + + linter.on("Identifier", function style_scanIterator(data) { + if (linter.getOption("iterator")) { + return; + } + + if (data.name === "__iterator__") { + linter.warn("W103", { + line: data.line, + char: data.char, + data: [ data.name ] + }); + } + }); + + linter.on("Identifier", function style_scanCamelCase(data) { + if (!linter.getOption("camelcase")) { + return; + } + + if (data.name.replace(/^_+|_+$/g, "").indexOf("_") > -1 && !data.name.match(/^[A-Z0-9_]*$/)) { + linter.warn("W106", { + line: data.line, + char: data.char, + data: [ data.name ] + }); + } + }); + + linter.on("String", function style_scanQuotes(data) { + var quotmark = linter.getOption("quotmark"); + var code; + + if (!quotmark) { + return; + } + + if (quotmark === "single" && data.quote !== "'") { + code = "W109"; + } + + if (quotmark === "double" && data.quote !== "\"") { + code = "W108"; + } + + if (quotmark === true) { + if (!linter.getCache("quotmark")) { + linter.setCache("quotmark", data.quote); + } + + if (linter.getCache("quotmark") !== data.quote) { + code = "W110"; + } + } + + if (code) { + linter.warn(code, { + line: data.line, + char: data.char, + }); + } + }); + + linter.on("Number", function style_scanNumbers(data) { + if (data.value.charAt(0) === ".") { + linter.warn("W008", { + line: data.line, + char: data.char, + data: [ data.value ] + }); + } + + if (data.value.substr(data.value.length - 1) === ".") { + linter.warn("W047", { + line: data.line, + char: data.char, + data: [ data.value ] + }); + } + + if (/^00+/.test(data.value)) { + linter.warn("W046", { + line: data.line, + char: data.char, + data: [ data.value ] + }); + } + }); + + linter.on("String", function style_scanJavaScriptURLs(data) { + var re = /^(?:javascript|jscript|ecmascript|vbscript|livescript)\s*:/i; + + if (linter.getOption("scripturl")) { + return; + } + + if (re.test(data.value)) { + linter.warn("W107", { + line: data.line, + char: data.char + }); + } + }); +}; + +},{}],"/../../../jshint/src/validate-unicode-escape-sequence.js":[function(_dereq_,module,exports){ + +"use strict"; + +module.exports = function validate(sequence) { + var equalSignIndex = sequence.indexOf("="); + + if (equalSignIndex === -1) { + return sequence in names.binary || sequence in values.general; + } + + var name = sequence.substr(0, equalSignIndex); + var value = sequence.substr(equalSignIndex + 1); + + if (name === "General_Category" || name === "gc") { + return value in values.general; + } if (name === "Script" || name === "sc" || name === "Script_Extensions" || name === "scx") { + return value in values.script; + } + + return false; +}; + + +var names = { + nonBinary: Object.create(null), + binary: Object.create(null) +}; +var values = { + general: Object.create(null), + script: Object.create(null) +}; + +var nb = names.nonBinary; +nb.General_Category = true; +nb.gc = true; +nb.Script = true; +nb.sc = true; +nb.Script_Extensions = true; +nb.scx = true; + +var b = names.binary; +b.ASCII = true; +b.ASCII_Hex_Digit = true; +b.AHex = true; +b.Alphabetic = true; +b.Alpha = true; +b.Any = true; +b.Assigned = true; +b.Bidi_Control = true; +b.Bidi_C = true; +b.Bidi_Mirrored = true; +b.Bidi_M = true; +b.Case_Ignorable = true; +b.CI = true; +b.Cased = true; +b.Changes_When_Casefolded = true; +b.CWCF = true; +b.Changes_When_Casemapped = true; +b.CWCM = true; +b.Changes_When_Lowercased = true; +b.CWL = true; +b.Changes_When_NFKC_Casefolded = true; +b.CWKCF = true; +b.Changes_When_Titlecased = true; +b.CWT = true; +b.Changes_When_Uppercased = true; +b.CWU = true; +b.Dash = true; +b.Default_Ignorable_Code_Point = true; +b.DI = true; +b.Deprecated = true; +b.Dep = true; +b.Diacritic = true; +b.Dia = true; +b.Emoji = true; +b.Emoji_Component = true; +b.EComp = true; +b.Emoji_Modifier = true; +b.EMod = true; +b.Emoji_Modifier_Base = true; +b.EBase = true; +b.Emoji_Presentation = true; +b.EPres = true; +b.Extended_Pictographic = true; +b.ExtPict = true; +b.Extender = true; +b.Ext = true; +b.Grapheme_Base = true; +b.Gr_Base = true; +b.Grapheme_Extend = true; +b.Gr_Ext = true; +b.Hex_Digit = true; +b.Hex = true; +b.IDS_Binary_Operator = true; +b.IDSB = true; +b.IDS_Trinary_Operator = true; +b.IDST = true; +b.ID_Continue = true; +b.IDC = true; +b.ID_Start = true; +b.IDS = true; +b.Ideographic = true; +b.Ideo = true; +b.Join_Control = true; +b.Join_C = true; +b.Logical_Order_Exception = true; +b.LOE = true; +b.Lowercase = true; +b.Lower = true; +b.Math = true; +b.Noncharacter_Code_Point = true; +b.NChar = true; +b.Pattern_Syntax = true; +b.Pat_Syn = true; +b.Pattern_White_Space = true; +b.Pat_WS = true; +b.Quotation_Mark = true; +b.QMark = true; +b.Radical = true; +b.Regional_Indicator = true; +b.RI = true; +b.Sentence_Terminal = true; +b.STerm = true; +b.Soft_Dotted = true; +b.SD = true; +b.Terminal_Punctuation = true; +b.Term = true; +b.Unified_Ideograph = true; +b.UIdeo = true; +b.Uppercase = true; +b.Upper = true; +b.Variation_Selector = true; +b.VS = true; +b.White_Space = true; +b.space = true; +b.XID_Continue = true; +b.XIDC = true; +b.XID_Start = true; +b.XIDS = true; + +var g = values.general; +g.Cased_Letter = true; +g.LC = true; +g.Close_Punctuation = true; +g.Pe = true; +g.Connector_Punctuation = true; +g.Pc = true; +g.Control = true; +g.Cc = true; +g.cntrl = true; +g.Currency_Symbol = true; +g.Sc = true; +g.Dash_Punctuation = true; +g.Pd = true; +g.Decimal_Number = true; +g.Nd = true; +g.digit = true; +g.Enclosing_Mark = true; +g.Me = true; +g.Final_Punctuation = true; +g.Pf = true; +g.Format = true; +g.Cf = true; +g.Initial_Punctuation = true; +g.Pi = true; +g.Letter = true; +g.L = true; +g.Letter_Number = true; +g.Nl = true; +g.Line_Separator = true; +g.Zl = true; +g.Lowercase_Letter = true; +g.Ll = true; +g.Mark = true; +g.M = true; +g.Combining_Mark = true; +g.Math_Symbol = true; +g.Sm = true; +g.Modifier_Letter = true; +g.Lm = true; +g.Modifier_Symbol = true; +g.Sk = true; +g.Nonspacing_Mark = true; +g.Mn = true; +g.Number = true; +g.N = true; +g.Open_Punctuation = true; +g.Ps = true; +g.Other = true; +g.C = true; +g.Other_Letter = true; +g.Lo = true; +g.Other_Number = true; +g.No = true; +g.Other_Punctuation = true; +g.Po = true; +g.Other_Symbol = true; +g.So = true; +g.Paragraph_Separator = true; +g.Zp = true; +g.Private_Use = true; +g.Co = true; +g.Punctuation = true; +g.P = true; +g.punct = true; +g.Separator = true; +g.Z = true; +g.Space_Separator = true; +g.Zs = true; +g.Spacing_Mark = true; +g.Mc = true; +g.Surrogate = true; +g.Cs = true; +g.Symbol = true; +g.S = true; +g.Titlecase_Letter = true; +g.Lt = true; +g.Unassigned = true; +g.Cn = true; +g.Uppercase_Letter = true; +g.Lu = true; + +var s = values.script; +s.Adlam = true; +s.Adlm = true; +s.Ahom = true; +s.Anatolian_Hieroglyphs = true; +s.Hluw = true; +s.Arabic = true; +s.Arab = true; +s.Armenian = true; +s.Armn = true; +s.Avestan = true; +s.Avst = true; +s.Balinese = true; +s.Bali = true; +s.Bamum = true; +s.Bamu = true; +s.Bassa_Vah = true; +s.Bass = true; +s.Batak = true; +s.Batk = true; +s.Bengali = true; +s.Beng = true; +s.Bhaiksuki = true; +s.Bhks = true; +s.Bopomofo = true; +s.Bopo = true; +s.Brahmi = true; +s.Brah = true; +s.Braille = true; +s.Brai = true; +s.Buginese = true; +s.Bugi = true; +s.Buhid = true; +s.Buhd = true; +s.Canadian_Aboriginal = true; +s.Cans = true; +s.Carian = true; +s.Cari = true; +s.Caucasian_Albanian = true; +s.Aghb = true; +s.Chakma = true; +s.Cakm = true; +s.Cham = true; +s.Chorasmian = true; +s.Chrs = true; +s.Cherokee = true; +s.Cher = true; +s.Common = true; +s.Zyyy = true; +s.Coptic = true; +s.Copt = true; +s.Qaac = true; +s.Cuneiform = true; +s.Xsux = true; +s.Cypriot = true; +s.Cprt = true; +s.Cyrillic = true; +s.Cyrl = true; +s.Deseret = true; +s.Dsrt = true; +s.Devanagari = true; +s.Deva = true; +s.Dives_Akuru = true; +s.Diak = true; +s.Dogra = true; +s.Dogr = true; +s.Duployan = true; +s.Dupl = true; +s.Egyptian_Hieroglyphs = true; +s.Egyp = true; +s.Elbasan = true; +s.Elba = true; +s.Elymaic = true; +s.Elym = true; +s.Ethiopic = true; +s.Ethi = true; +s.Georgian = true; +s.Geor = true; +s.Glagolitic = true; +s.Glag = true; +s.Gothic = true; +s.Goth = true; +s.Grantha = true; +s.Gran = true; +s.Greek = true; +s.Grek = true; +s.Gujarati = true; +s.Gujr = true; +s.Gunjala_Gondi = true; +s.Gong = true; +s.Gurmukhi = true; +s.Guru = true; +s.Han = true; +s.Hani = true; +s.Hangul = true; +s.Hang = true; +s.Hanifi_Rohingya = true; +s.Rohg = true; +s.Hanunoo = true; +s.Hano = true; +s.Hatran = true; +s.Hatr = true; +s.Hebrew = true; +s.Hebr = true; +s.Hiragana = true; +s.Hira = true; +s.Imperial_Aramaic = true; +s.Armi = true; +s.Inherited = true; +s.Zinh = true; +s.Qaai = true; +s.Inscriptional_Pahlavi = true; +s.Phli = true; +s.Inscriptional_Parthian = true; +s.Prti = true; +s.Javanese = true; +s.Java = true; +s.Kaithi = true; +s.Kthi = true; +s.Kannada = true; +s.Knda = true; +s.Katakana = true; +s.Kana = true; +s.Kayah_Li = true; +s.Kali = true; +s.Kharoshthi = true; +s.Khar = true; +s.Khitan_Small_Script = true; +s.Kits = true; +s.Khmer = true; +s.Khmr = true; +s.Khojki = true; +s.Khoj = true; +s.Khudawadi = true; +s.Sind = true; +s.Lao = true; +s.Laoo = true; +s.Latin = true; +s.Latn = true; +s.Lepcha = true; +s.Lepc = true; +s.Limbu = true; +s.Limb = true; +s.Linear_A = true; +s.Lina = true; +s.Linear_B = true; +s.Linb = true; +s.Lisu = true; +s.Lycian = true; +s.Lyci = true; +s.Lydian = true; +s.Lydi = true; +s.Mahajani = true; +s.Mahj = true; +s.Makasar = true; +s.Maka = true; +s.Malayalam = true; +s.Mlym = true; +s.Mandaic = true; +s.Mand = true; +s.Manichaean = true; +s.Mani = true; +s.Marchen = true; +s.Marc = true; +s.Medefaidrin = true; +s.Medf = true; +s.Masaram_Gondi = true; +s.Gonm = true; +s.Meetei_Mayek = true; +s.Mtei = true; +s.Mende_Kikakui = true; +s.Mend = true; +s.Meroitic_Cursive = true; +s.Merc = true; +s.Meroitic_Hieroglyphs = true; +s.Mero = true; +s.Miao = true; +s.Plrd = true; +s.Modi = true; +s.Mongolian = true; +s.Mong = true; +s.Mro = true; +s.Mroo = true; +s.Multani = true; +s.Mult = true; +s.Myanmar = true; +s.Mymr = true; +s.Nabataean = true; +s.Nbat = true; +s.Nandinagari = true; +s.Nand = true; +s.New_Tai_Lue = true; +s.Talu = true; +s.Newa = true; +s.Nko = true; +s.Nkoo = true; +s.Nushu = true; +s.Nshu = true; +s.Nyiakeng_Puachue_Hmong = true; +s.Hmnp = true; +s.Ogham = true; +s.Ogam = true; +s.Ol_Chiki = true; +s.Olck = true; +s.Old_Hungarian = true; +s.Hung = true; +s.Old_Italic = true; +s.Ital = true; +s.Old_North_Arabian = true; +s.Narb = true; +s.Old_Permic = true; +s.Perm = true; +s.Old_Persian = true; +s.Xpeo = true; +s.Old_Sogdian = true; +s.Sogo = true; +s.Old_South_Arabian = true; +s.Sarb = true; +s.Old_Turkic = true; +s.Orkh = true; +s.Oriya = true; +s.Orya = true; +s.Osage = true; +s.Osge = true; +s.Osmanya = true; +s.Osma = true; +s.Pahawh_Hmong = true; +s.Hmng = true; +s.Palmyrene = true; +s.Palm = true; +s.Pau_Cin_Hau = true; +s.Pauc = true; +s.Phags_Pa = true; +s.Phag = true; +s.Phoenician = true; +s.Phnx = true; +s.Psalter_Pahlavi = true; +s.Phlp = true; +s.Rejang = true; +s.Rjng = true; +s.Runic = true; +s.Runr = true; +s.Samaritan = true; +s.Samr = true; +s.Saurashtra = true; +s.Saur = true; +s.Sharada = true; +s.Shrd = true; +s.Shavian = true; +s.Shaw = true; +s.Siddham = true; +s.Sidd = true; +s.SignWriting = true; +s.Sgnw = true; +s.Sinhala = true; +s.Sinh = true; +s.Sogdian = true; +s.Sogd = true; +s.Sora_Sompeng = true; +s.Sora = true; +s.Soyombo = true; +s.Soyo = true; +s.Sundanese = true; +s.Sund = true; +s.Syloti_Nagri = true; +s.Sylo = true; +s.Syriac = true; +s.Syrc = true; +s.Tagalog = true; +s.Tglg = true; +s.Tagbanwa = true; +s.Tagb = true; +s.Tai_Le = true; +s.Tale = true; +s.Tai_Tham = true; +s.Lana = true; +s.Tai_Viet = true; +s.Tavt = true; +s.Takri = true; +s.Takr = true; +s.Tamil = true; +s.Taml = true; +s.Tangut = true; +s.Tang = true; +s.Telugu = true; +s.Telu = true; +s.Thaana = true; +s.Thaa = true; +s.Thai = true; +s.Tibetan = true; +s.Tibt = true; +s.Tifinagh = true; +s.Tfng = true; +s.Tirhuta = true; +s.Tirh = true; +s.Ugaritic = true; +s.Ugar = true; +s.Vai = true; +s.Vaii = true; +s.Wancho = true; +s.Wcho = true; +s.Warang_Citi = true; +s.Wara = true; +s.Yezidi = true; +s.Yezi = true; +s.Yi = true; +s.Yiii = true; +s.Zanabazar_Square = true; +s.Zanb = true; + +},{}],"/../../../jshint/src/vars.js":[function(_dereq_,module,exports){ + +"use strict"; + +exports.reservedVars = { + NaN : false, + undefined : false +}; + +exports.ecmaIdentifiers = { + 3: { + Array : false, + Boolean : false, + Date : false, + decodeURI : false, + decodeURIComponent : false, + encodeURI : false, + encodeURIComponent : false, + Error : false, + "eval" : false, + EvalError : false, + Function : false, + hasOwnProperty : false, + Infinity : false, + isFinite : false, + isNaN : false, + Math : false, + Number : false, + Object : false, + parseInt : false, + parseFloat : false, + RangeError : false, + ReferenceError : false, + RegExp : false, + String : false, + SyntaxError : false, + TypeError : false, + URIError : false + }, + 5: { + JSON : false + }, + 6: { + ArrayBuffer : false, + DataView : false, + Float32Array : false, + Float64Array : false, + Int8Array : false, + Int16Array : false, + Int32Array : false, + Map : false, + Promise : false, + Proxy : false, + Reflect : false, + Set : false, + Symbol : false, + Uint8Array : false, + Uint16Array : false, + Uint32Array : false, + Uint8ClampedArray : false, + WeakMap : false, + WeakSet : false + }, + 8: { + Atomics : false, + SharedArrayBuffer : false + }, + 11: { + BigInt : false, + globalThis : false + } +}; + +exports.browser = { + Audio : false, + Blob : false, + addEventListener : false, // EventTarget + applicationCache : false, + atob : false, // WindowOrWorkerGlobalScope + blur : false, + btoa : false, // WindowOrWorkerGlobalScope + cancelAnimationFrame : false, + CanvasGradient : false, + CanvasPattern : false, + CanvasRenderingContext2D: false, + CSS : false, + CSSImportRule : false, + CSSGroupingRule : false, + CSSMarginRule : false, + CSSMediaRule : false, + CSSNamespaceRule : false, + CSSPageRule : false, + CSSRule : false, + CSSRuleList : false, + CSSStyleDeclaration : false, + CSSStyleRule : false, + CSSStyleSheet : false, + clearInterval : false, // WindowOrWorkerGlobalScope + clearTimeout : false, // WindowOrWorkerGlobalScope + close : false, + closed : false, + Comment : false, + CompositionEvent : false, + createImageBitmap : false, // WindowOrWorkerGlobalScope + CustomEvent : false, + DOMParser : false, + defaultStatus : false, + dispatchEvent : false, // EventTarget + Document : false, + document : false, + DocumentFragment : false, + Element : false, + ElementTimeControl : false, + Event : false, + event : false, + fetch : false, + File : false, + FileList : false, + FileReader : false, + FormData : false, + focus : false, + frames : false, + getComputedStyle : false, + Headers : false, + HTMLAnchorElement : false, + HTMLAreaElement : false, + HTMLAudioElement : false, + HTMLBaseElement : false, + HTMLBlockquoteElement: false, + HTMLBodyElement : false, + HTMLBRElement : false, + HTMLButtonElement : false, + HTMLCanvasElement : false, + HTMLCollection : false, + HTMLDataElement : false, + HTMLDataListElement : false, + HTMLDetailsElement : false, + HTMLDialogElement : false, + HTMLDirectoryElement : false, + HTMLDivElement : false, + HTMLDListElement : false, + HTMLElement : false, + HTMLEmbedElement : false, + HTMLFieldSetElement : false, + HTMLFontElement : false, + HTMLFormElement : false, + HTMLFrameElement : false, + HTMLFrameSetElement : false, + HTMLHeadElement : false, + HTMLHeadingElement : false, + HTMLHRElement : false, + HTMLHtmlElement : false, + HTMLIFrameElement : false, + HTMLImageElement : false, + HTMLInputElement : false, + HTMLIsIndexElement : false, + HTMLLabelElement : false, + HTMLLayerElement : false, + HTMLLegendElement : false, + HTMLLIElement : false, + HTMLLinkElement : false, + HTMLMapElement : false, + HTMLMarqueeElement : false, + HTMLMediaElement : false, + HTMLMenuElement : false, + HTMLMetaElement : false, + HTMLMeterElement : false, + HTMLModElement : false, + HTMLObjectElement : false, + HTMLOListElement : false, + HTMLOptGroupElement : false, + HTMLOptionElement : false, + HTMLParagraphElement : false, + HTMLParamElement : false, + HTMLPictureElement : false, + HTMLPreElement : false, + HTMLProgressElement : false, + HTMLQuoteElement : false, + HTMLScriptElement : false, + HTMLSelectElement : false, + HTMLSlotElement : false, + HTMLSourceElement : false, + HTMLStyleElement : false, + HTMLTableCaptionElement: false, + HTMLTableCellElement : false, + HTMLTableColElement : false, + HTMLTableElement : false, + HTMLTableRowElement : false, + HTMLTableSectionElement: false, + HTMLTemplateElement : false, + HTMLTextAreaElement : false, + HTMLTimeElement : false, + HTMLTitleElement : false, + HTMLTrackElement : false, + HTMLUListElement : false, + HTMLVideoElement : false, + history : false, + Image : false, + IntersectionObserver : false, + Intl : false, + length : false, + localStorage : false, + location : false, + matchMedia : false, + MediaList : false, + MediaRecorder : false, + MessageChannel : false, + MessageEvent : false, + MessagePort : false, + MouseEvent : false, + moveBy : false, + moveTo : false, + MutationObserver : false, + name : false, + Node : false, + NodeFilter : false, + NodeList : false, + Notification : false, + navigator : false, + onbeforeunload : true, + onblur : true, + onerror : true, + onfocus : true, + onload : true, + onresize : true, + onunload : true, + open : false, + openDatabase : false, + opener : false, + Option : false, + origin : false, // WindowOrWorkerGlobalScope + parent : false, + performance : false, + print : false, + queueMicrotask : false, // WindowOrWorkerGlobalScope + Range : false, + requestAnimationFrame : false, + removeEventListener : false, // EventTarget + Request : false, + resizeBy : false, + resizeTo : false, + Response : false, + screen : false, + scroll : false, + scrollBy : false, + scrollTo : false, + sessionStorage : false, + setInterval : false, // WindowOrWorkerGlobalScope + setTimeout : false, // WindowOrWorkerGlobalScope + SharedWorker : false, + status : false, + Storage : false, + StyleSheet : false, + SVGAElement : false, + SVGAltGlyphDefElement: false, + SVGAltGlyphElement : false, + SVGAltGlyphItemElement: false, + SVGAngle : false, + SVGAnimateColorElement: false, + SVGAnimateElement : false, + SVGAnimateMotionElement: false, + SVGAnimateTransformElement: false, + SVGAnimatedAngle : false, + SVGAnimatedBoolean : false, + SVGAnimatedEnumeration: false, + SVGAnimatedInteger : false, + SVGAnimatedLength : false, + SVGAnimatedLengthList: false, + SVGAnimatedNumber : false, + SVGAnimatedNumberList: false, + SVGAnimatedPathData : false, + SVGAnimatedPoints : false, + SVGAnimatedPreserveAspectRatio: false, + SVGAnimatedRect : false, + SVGAnimatedString : false, + SVGAnimatedTransformList: false, + SVGAnimationElement : false, + SVGCSSRule : false, + SVGCircleElement : false, + SVGClipPathElement : false, + SVGColor : false, + SVGColorProfileElement: false, + SVGColorProfileRule : false, + SVGComponentTransferFunctionElement: false, + SVGCursorElement : false, + SVGDefsElement : false, + SVGDescElement : false, + SVGDocument : false, + SVGElement : false, + SVGElementInstance : false, + SVGElementInstanceList: false, + SVGEllipseElement : false, + SVGExternalResourcesRequired: false, + SVGFEBlendElement : false, + SVGFEColorMatrixElement: false, + SVGFEComponentTransferElement: false, + SVGFECompositeElement: false, + SVGFEConvolveMatrixElement: false, + SVGFEDiffuseLightingElement: false, + SVGFEDisplacementMapElement: false, + SVGFEDistantLightElement: false, + SVGFEFloodElement : false, + SVGFEFuncAElement : false, + SVGFEFuncBElement : false, + SVGFEFuncGElement : false, + SVGFEFuncRElement : false, + SVGFEGaussianBlurElement: false, + SVGFEImageElement : false, + SVGFEMergeElement : false, + SVGFEMergeNodeElement: false, + SVGFEMorphologyElement: false, + SVGFEOffsetElement : false, + SVGFEPointLightElement: false, + SVGFESpecularLightingElement: false, + SVGFESpotLightElement: false, + SVGFETileElement : false, + SVGFETurbulenceElement: false, + SVGFilterElement : false, + SVGFilterPrimitiveStandardAttributes: false, + SVGFitToViewBox : false, + SVGFontElement : false, + SVGFontFaceElement : false, + SVGFontFaceFormatElement: false, + SVGFontFaceNameElement: false, + SVGFontFaceSrcElement: false, + SVGFontFaceUriElement: false, + SVGForeignObjectElement: false, + SVGGElement : false, + SVGGlyphElement : false, + SVGGlyphRefElement : false, + SVGGradientElement : false, + SVGHKernElement : false, + SVGICCColor : false, + SVGImageElement : false, + SVGLangSpace : false, + SVGLength : false, + SVGLengthList : false, + SVGLineElement : false, + SVGLinearGradientElement: false, + SVGLocatable : false, + SVGMPathElement : false, + SVGMarkerElement : false, + SVGMaskElement : false, + SVGMatrix : false, + SVGMetadataElement : false, + SVGMissingGlyphElement: false, + SVGNumber : false, + SVGNumberList : false, + SVGPaint : false, + SVGPathElement : false, + SVGPathSeg : false, + SVGPathSegArcAbs : false, + SVGPathSegArcRel : false, + SVGPathSegClosePath : false, + SVGPathSegCurvetoCubicAbs: false, + SVGPathSegCurvetoCubicRel: false, + SVGPathSegCurvetoCubicSmoothAbs: false, + SVGPathSegCurvetoCubicSmoothRel: false, + SVGPathSegCurvetoQuadraticAbs: false, + SVGPathSegCurvetoQuadraticRel: false, + SVGPathSegCurvetoQuadraticSmoothAbs: false, + SVGPathSegCurvetoQuadraticSmoothRel: false, + SVGPathSegLinetoAbs : false, + SVGPathSegLinetoHorizontalAbs: false, + SVGPathSegLinetoHorizontalRel: false, + SVGPathSegLinetoRel : false, + SVGPathSegLinetoVerticalAbs: false, + SVGPathSegLinetoVerticalRel: false, + SVGPathSegList : false, + SVGPathSegMovetoAbs : false, + SVGPathSegMovetoRel : false, + SVGPatternElement : false, + SVGPoint : false, + SVGPointList : false, + SVGPolygonElement : false, + SVGPolylineElement : false, + SVGPreserveAspectRatio: false, + SVGRadialGradientElement: false, + SVGRect : false, + SVGRectElement : false, + SVGRenderingIntent : false, + SVGSVGElement : false, + SVGScriptElement : false, + SVGSetElement : false, + SVGStopElement : false, + SVGStringList : false, + SVGStylable : false, + SVGStyleElement : false, + SVGSwitchElement : false, + SVGSymbolElement : false, + SVGTRefElement : false, + SVGTSpanElement : false, + SVGTests : false, + SVGTextContentElement: false, + SVGTextElement : false, + SVGTextPathElement : false, + SVGTextPositioningElement: false, + SVGTitleElement : false, + SVGTransform : false, + SVGTransformList : false, + SVGTransformable : false, + SVGURIReference : false, + SVGUnitTypes : false, + SVGUseElement : false, + SVGVKernElement : false, + SVGViewElement : false, + SVGViewSpec : false, + SVGZoomAndPan : false, + Text : false, + TextDecoder : false, + TextEncoder : false, + TimeEvent : false, + top : false, + URL : false, + URLSearchParams : false, + WebGLActiveInfo : false, + WebGLBuffer : false, + WebGLContextEvent : false, + WebGLFramebuffer : false, + WebGLProgram : false, + WebGLRenderbuffer : false, + WebGLRenderingContext: false, + WebGLShader : false, + WebGLShaderPrecisionFormat: false, + WebGLTexture : false, + WebGLUniformLocation : false, + WebSocket : false, + window : false, + Window : false, + Worker : false, + XDomainRequest : false, + XMLDocument : false, + XMLHttpRequest : false, + XMLSerializer : false, + XPathEvaluator : false, + XPathException : false, + XPathExpression : false, + XPathNamespace : false, + XPathNSResolver : false, + XPathResult : false +}; + +exports.devel = { + alert : false, + confirm: false, + console: false, + Debug : false, + opera : false, + prompt : false +}; + +exports.worker = { + addEventListener : true, // EventTarget + atob : true, // WindowOrWorkerGlobalScope + btoa : true, // WindowOrWorkerGlobalScope + clearInterval : true, // WindowOrWorkerGlobalScope + clearTimeout : true, // WindowOrWorkerGlobalScope + createImageBitmap : true, // WindowOrWorkerGlobalScope + dispatchEvent : true, // EventTarget + importScripts : true, + onmessage : true, + origin : true, // WindowOrWorkerGlobalScope + postMessage : true, + queueMicrotask : true, // WindowOrWorkerGlobalScope + removeEventListener : true, // EventTarget + self : true, + setInterval : true, // WindowOrWorkerGlobalScope + setTimeout : true, // WindowOrWorkerGlobalScope + FileReaderSync : true +}; +exports.nonstandard = { + escape : false, + unescape: false +}; + +exports.couch = { + "require" : false, + respond : false, + getRow : false, + emit : false, + send : false, + start : false, + sum : false, + log : false, + exports : false, + module : false, + provides : false +}; + +exports.node = { + __filename : false, + __dirname : false, + arguments : false, + GLOBAL : false, + global : false, + module : false, + require : false, + Intl : false, + + Buffer : true, + console : true, + exports : true, + process : true, + setTimeout : true, + clearTimeout : true, + setInterval : true, + clearInterval : true, + setImmediate : true, // v0.9.1+ + clearImmediate : true, // v0.9.1+ + URL : true, // v10.0.0+ + URLSearchParams: true // v10.0.0+ +}; + +exports.browserify = { + __filename : false, + __dirname : false, + global : false, + module : false, + require : false, + Buffer : true, + exports : true, + process : true +}; + +exports.phantom = { + phantom : true, + require : true, + WebPage : true, + console : true, // in examples, but undocumented + exports : true // v1.7+ +}; + +exports.qunit = { + asyncTest : false, + deepEqual : false, + equal : false, + expect : false, + module : false, + notDeepEqual : false, + notEqual : false, + notOk : false, + notPropEqual : false, + notStrictEqual : false, + ok : false, + propEqual : false, + QUnit : false, + raises : false, + start : false, + stop : false, + strictEqual : false, + test : false, + "throws" : false +}; + +exports.rhino = { + arguments : false, + defineClass : false, + deserialize : false, + gc : false, + help : false, + importClass : false, + importPackage: false, + "java" : false, + load : false, + loadClass : false, + Packages : false, + print : false, + quit : false, + readFile : false, + readUrl : false, + runCommand : false, + seal : false, + serialize : false, + spawn : false, + sync : false, + toint32 : false, + version : false +}; + +exports.shelljs = { + target : false, + echo : false, + exit : false, + cd : false, + pwd : false, + ls : false, + find : false, + cp : false, + rm : false, + mv : false, + mkdir : false, + test : false, + cat : false, + sed : false, + grep : false, + which : false, + dirs : false, + pushd : false, + popd : false, + env : false, + exec : false, + chmod : false, + config : false, + error : false, + tempdir : false +}; + +exports.typed = { + ArrayBuffer : false, + ArrayBufferView : false, + DataView : false, + Float32Array : false, + Float64Array : false, + Int16Array : false, + Int32Array : false, + Int8Array : false, + Uint16Array : false, + Uint32Array : false, + Uint8Array : false, + Uint8ClampedArray : false +}; + +exports.wsh = { + ActiveXObject : true, + Enumerator : true, + GetObject : true, + ScriptEngine : true, + ScriptEngineBuildVersion : true, + ScriptEngineMajorVersion : true, + ScriptEngineMinorVersion : true, + VBArray : true, + WSH : true, + WScript : true, + XDomainRequest : true +}; + +exports.dojo = { + dojo : false, + dijit : false, + dojox : false, + define : false, + "require": false +}; + +exports.jquery = { + "$" : false, + jQuery : false +}; + +exports.mootools = { + "$" : false, + "$$" : false, + Asset : false, + Browser : false, + Chain : false, + Class : false, + Color : false, + Cookie : false, + Core : false, + Document : false, + DomReady : false, + DOMEvent : false, + DOMReady : false, + Drag : false, + Element : false, + Elements : false, + Event : false, + Events : false, + Fx : false, + Group : false, + Hash : false, + HtmlTable : false, + IFrame : false, + IframeShim : false, + InputValidator: false, + instanceOf : false, + Keyboard : false, + Locale : false, + Mask : false, + MooTools : false, + Native : false, + Options : false, + OverText : false, + Request : false, + Scroller : false, + Slick : false, + Slider : false, + Sortables : false, + Spinner : false, + Swiff : false, + Tips : false, + Type : false, + typeOf : false, + URI : false, + Window : false +}; + +exports.prototypejs = { + "$" : false, + "$$" : false, + "$A" : false, + "$F" : false, + "$H" : false, + "$R" : false, + "$break" : false, + "$continue" : false, + "$w" : false, + Abstract : false, + Ajax : false, + Class : false, + Enumerable : false, + Element : false, + Event : false, + Field : false, + Form : false, + Hash : false, + Insertion : false, + ObjectRange : false, + PeriodicalExecuter: false, + Position : false, + Prototype : false, + Selector : false, + Template : false, + Toggle : false, + Try : false, + Autocompleter : false, + Builder : false, + Control : false, + Draggable : false, + Draggables : false, + Droppables : false, + Effect : false, + Sortable : false, + SortableObserver : false, + Sound : false, + Scriptaculous : false +}; + +exports.yui = { + YUI : false, + Y : false, + YUI_config: false +}; + +exports.mocha = { + mocha : false, + describe : false, + xdescribe : false, + context : false, + xcontext : false, + it : false, + xit : false, + specify : false, + xspecify : false, + before : false, + after : false, + beforeEach : false, + afterEach : false, + suite : false, + test : false, + setup : false, + teardown : false, + suiteSetup : false, + suiteTeardown : false +}; + +exports.jasmine = { + jasmine : false, + describe : false, + xdescribe : false, + it : false, + xit : false, + beforeEach : false, + afterEach : false, + setFixtures : false, + loadFixtures: false, + spyOn : false, + expect : false, + runs : false, + waitsFor : false, + waits : false, + beforeAll : false, + afterAll : false, + fail : false, + fdescribe : false, + fit : false, + pending : false, + spyOnProperty: false +}; + +},{}],"/node_modules/assert/assert.js":[function(_dereq_,module,exports){ +var util = _dereq_('util/'); + +var pSlice = Array.prototype.slice; +var hasOwn = Object.prototype.hasOwnProperty; + +var assert = module.exports = ok; + +assert.AssertionError = function AssertionError(options) { + this.name = 'AssertionError'; + this.actual = options.actual; + this.expected = options.expected; + this.operator = options.operator; + if (options.message) { + this.message = options.message; + this.generatedMessage = false; + } else { + this.message = getMessage(this); + this.generatedMessage = true; + } + var stackStartFunction = options.stackStartFunction || fail; + + if (Error.captureStackTrace) { + Error.captureStackTrace(this, stackStartFunction); + } + else { + var err = new Error(); + if (err.stack) { + var out = err.stack; + var fn_name = stackStartFunction.name; + var idx = out.indexOf('\n' + fn_name); + if (idx >= 0) { + var next_line = out.indexOf('\n', idx + 1); + out = out.substring(next_line + 1); + } + + this.stack = out; + } + } +}; +util.inherits(assert.AssertionError, Error); + +function replacer(key, value) { + if (util.isUndefined(value)) { + return '' + value; + } + if (util.isNumber(value) && !isFinite(value)) { + return value.toString(); + } + if (util.isFunction(value) || util.isRegExp(value)) { + return value.toString(); + } + return value; +} + +function truncate(s, n) { + if (util.isString(s)) { + return s.length < n ? s : s.slice(0, n); + } else { + return s; + } +} + +function getMessage(self) { + return truncate(JSON.stringify(self.actual, replacer), 128) + ' ' + + self.operator + ' ' + + truncate(JSON.stringify(self.expected, replacer), 128); +} + +function fail(actual, expected, message, operator, stackStartFunction) { + throw new assert.AssertionError({ + message: message, + actual: actual, + expected: expected, + operator: operator, + stackStartFunction: stackStartFunction + }); +} +assert.fail = fail; + +function ok(value, message) { + if (!value) fail(value, true, message, '==', assert.ok); +} +assert.ok = ok; + +assert.equal = function equal(actual, expected, message) { + if (actual != expected) fail(actual, expected, message, '==', assert.equal); +}; + +assert.notEqual = function notEqual(actual, expected, message) { + if (actual == expected) { + fail(actual, expected, message, '!=', assert.notEqual); + } +}; + +assert.deepEqual = function deepEqual(actual, expected, message) { + if (!_deepEqual(actual, expected)) { + fail(actual, expected, message, 'deepEqual', assert.deepEqual); + } +}; + +function _deepEqual(actual, expected) { + if (actual === expected) { + return true; + + } else if (util.isBuffer(actual) && util.isBuffer(expected)) { + if (actual.length != expected.length) return false; + + for (var i = 0; i < actual.length; i++) { + if (actual[i] !== expected[i]) return false; + } + + return true; + } else if (util.isDate(actual) && util.isDate(expected)) { + return actual.getTime() === expected.getTime(); + } else if (util.isRegExp(actual) && util.isRegExp(expected)) { + return actual.source === expected.source && + actual.global === expected.global && + actual.multiline === expected.multiline && + actual.lastIndex === expected.lastIndex && + actual.ignoreCase === expected.ignoreCase; + } else if (!util.isObject(actual) && !util.isObject(expected)) { + return actual == expected; + } else { + return objEquiv(actual, expected); + } +} + +function isArguments(object) { + return Object.prototype.toString.call(object) == '[object Arguments]'; +} + +function objEquiv(a, b) { + if (util.isNullOrUndefined(a) || util.isNullOrUndefined(b)) + return false; + if (a.prototype !== b.prototype) return false; + if (util.isPrimitive(a) || util.isPrimitive(b)) { + return a === b; + } + var aIsArgs = isArguments(a), + bIsArgs = isArguments(b); + if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs)) + return false; + if (aIsArgs) { + a = pSlice.call(a); + b = pSlice.call(b); + return _deepEqual(a, b); + } + var ka = objectKeys(a), + kb = objectKeys(b), + key, i; + if (ka.length != kb.length) + return false; + ka.sort(); + kb.sort(); + for (i = ka.length - 1; i >= 0; i--) { + if (ka[i] != kb[i]) + return false; + } + for (i = ka.length - 1; i >= 0; i--) { + key = ka[i]; + if (!_deepEqual(a[key], b[key])) return false; + } + return true; +} + +assert.notDeepEqual = function notDeepEqual(actual, expected, message) { + if (_deepEqual(actual, expected)) { + fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual); + } +}; + +assert.strictEqual = function strictEqual(actual, expected, message) { + if (actual !== expected) { + fail(actual, expected, message, '===', assert.strictEqual); + } +}; + +assert.notStrictEqual = function notStrictEqual(actual, expected, message) { + if (actual === expected) { + fail(actual, expected, message, '!==', assert.notStrictEqual); + } +}; + +function expectedException(actual, expected) { + if (!actual || !expected) { + return false; + } + + if (Object.prototype.toString.call(expected) == '[object RegExp]') { + return expected.test(actual); + } else if (actual instanceof expected) { + return true; + } else if (expected.call({}, actual) === true) { + return true; + } + + return false; +} + +function _throws(shouldThrow, block, expected, message) { + var actual; + + if (util.isString(expected)) { + message = expected; + expected = null; + } + + try { + block(); + } catch (e) { + actual = e; + } + + message = (expected && expected.name ? ' (' + expected.name + ').' : '.') + + (message ? ' ' + message : '.'); + + if (shouldThrow && !actual) { + fail(actual, expected, 'Missing expected exception' + message); + } + + if (!shouldThrow && expectedException(actual, expected)) { + fail(actual, expected, 'Got unwanted exception' + message); + } + + if ((shouldThrow && actual && expected && + !expectedException(actual, expected)) || (!shouldThrow && actual)) { + throw actual; + } +} + +assert.throws = function(block, /*optional*/error, /*optional*/message) { + _throws.apply(this, [true].concat(pSlice.call(arguments))); +}; +assert.doesNotThrow = function(block, /*optional*/message) { + _throws.apply(this, [false].concat(pSlice.call(arguments))); +}; + +assert.ifError = function(err) { if (err) {throw err;}}; + +var objectKeys = Object.keys || function (obj) { + var keys = []; + for (var key in obj) { + if (hasOwn.call(obj, key)) keys.push(key); + } + return keys; +}; + +},{"util/":"/node_modules/assert/node_modules/util/util.js"}],"/node_modules/assert/node_modules/inherits/inherits_browser.js":[function(_dereq_,module,exports){ +if (typeof Object.create === 'function') { + module.exports = function inherits(ctor, superCtor) { + ctor.super_ = superCtor + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }); + }; +} else { + module.exports = function inherits(ctor, superCtor) { + ctor.super_ = superCtor + var TempCtor = function () {} + TempCtor.prototype = superCtor.prototype + ctor.prototype = new TempCtor() + ctor.prototype.constructor = ctor + } +} + +},{}],"/node_modules/assert/node_modules/util/support/isBufferBrowser.js":[function(_dereq_,module,exports){ +module.exports = function isBuffer(arg) { + return arg && typeof arg === 'object' + && typeof arg.copy === 'function' + && typeof arg.fill === 'function' + && typeof arg.readUInt8 === 'function'; +} +},{}],"/node_modules/assert/node_modules/util/util.js":[function(_dereq_,module,exports){ +(function (process,global){ + +var formatRegExp = /%[sdj%]/g; +exports.format = function(f) { + if (!isString(f)) { + var objects = []; + for (var i = 0; i < arguments.length; i++) { + objects.push(inspect(arguments[i])); + } + return objects.join(' '); + } + + var i = 1; + var args = arguments; + var len = args.length; + var str = String(f).replace(formatRegExp, function(x) { + if (x === '%%') return '%'; + if (i >= len) return x; + switch (x) { + case '%s': return String(args[i++]); + case '%d': return Number(args[i++]); + case '%j': + try { + return JSON.stringify(args[i++]); + } catch (_) { + return '[Circular]'; + } + default: + return x; + } + }); + for (var x = args[i]; i < len; x = args[++i]) { + if (isNull(x) || !isObject(x)) { + str += ' ' + x; + } else { + str += ' ' + inspect(x); + } + } + return str; +}; +exports.deprecate = function(fn, msg) { + if (isUndefined(global.process)) { + return function() { + return exports.deprecate(fn, msg).apply(this, arguments); + }; + } + + if (process.noDeprecation === true) { + return fn; + } + + var warned = false; + function deprecated() { + if (!warned) { + if (process.throwDeprecation) { + throw new Error(msg); + } else if (process.traceDeprecation) { + console.trace(msg); + } else { + console.error(msg); + } + warned = true; + } + return fn.apply(this, arguments); + } + + return deprecated; +}; + + +var debugs = {}; +var debugEnviron; +exports.debuglog = function(set) { + if (isUndefined(debugEnviron)) + debugEnviron = process.env.NODE_DEBUG || ''; + set = set.toUpperCase(); + if (!debugs[set]) { + if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) { + var pid = process.pid; + debugs[set] = function() { + var msg = exports.format.apply(exports, arguments); + console.error('%s %d: %s', set, pid, msg); + }; + } else { + debugs[set] = function() {}; + } + } + return debugs[set]; +}; +function inspect(obj, opts) { + var ctx = { + seen: [], + stylize: stylizeNoColor + }; + if (arguments.length >= 3) ctx.depth = arguments[2]; + if (arguments.length >= 4) ctx.colors = arguments[3]; + if (isBoolean(opts)) { + ctx.showHidden = opts; + } else if (opts) { + exports._extend(ctx, opts); + } + if (isUndefined(ctx.showHidden)) ctx.showHidden = false; + if (isUndefined(ctx.depth)) ctx.depth = 2; + if (isUndefined(ctx.colors)) ctx.colors = false; + if (isUndefined(ctx.customInspect)) ctx.customInspect = true; + if (ctx.colors) ctx.stylize = stylizeWithColor; + return formatValue(ctx, obj, ctx.depth); +} +exports.inspect = inspect; +inspect.colors = { + 'bold' : [1, 22], + 'italic' : [3, 23], + 'underline' : [4, 24], + 'inverse' : [7, 27], + 'white' : [37, 39], + 'grey' : [90, 39], + 'black' : [30, 39], + 'blue' : [34, 39], + 'cyan' : [36, 39], + 'green' : [32, 39], + 'magenta' : [35, 39], + 'red' : [31, 39], + 'yellow' : [33, 39] +}; +inspect.styles = { + 'special': 'cyan', + 'number': 'yellow', + 'boolean': 'yellow', + 'undefined': 'grey', + 'null': 'bold', + 'string': 'green', + 'date': 'magenta', + 'regexp': 'red' +}; + + +function stylizeWithColor(str, styleType) { + var style = inspect.styles[styleType]; + + if (style) { + return '\u001b[' + inspect.colors[style][0] + 'm' + str + + '\u001b[' + inspect.colors[style][1] + 'm'; + } else { + return str; + } +} + + +function stylizeNoColor(str, styleType) { + return str; +} + + +function arrayToHash(array) { + var hash = {}; + + array.forEach(function(val, idx) { + hash[val] = true; + }); + + return hash; +} + + +function formatValue(ctx, value, recurseTimes) { + if (ctx.customInspect && + value && + isFunction(value.inspect) && + value.inspect !== exports.inspect && + !(value.constructor && value.constructor.prototype === value)) { + var ret = value.inspect(recurseTimes, ctx); + if (!isString(ret)) { + ret = formatValue(ctx, ret, recurseTimes); + } + return ret; + } + var primitive = formatPrimitive(ctx, value); + if (primitive) { + return primitive; + } + var keys = Object.keys(value); + var visibleKeys = arrayToHash(keys); + + if (ctx.showHidden) { + keys = Object.getOwnPropertyNames(value); + } + if (isError(value) + && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) { + return formatError(value); + } + if (keys.length === 0) { + if (isFunction(value)) { + var name = value.name ? ': ' + value.name : ''; + return ctx.stylize('[Function' + name + ']', 'special'); + } + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } + if (isDate(value)) { + return ctx.stylize(Date.prototype.toString.call(value), 'date'); + } + if (isError(value)) { + return formatError(value); + } + } + + var base = '', array = false, braces = ['{', '}']; + if (isArray(value)) { + array = true; + braces = ['[', ']']; + } + if (isFunction(value)) { + var n = value.name ? ': ' + value.name : ''; + base = ' [Function' + n + ']'; + } + if (isRegExp(value)) { + base = ' ' + RegExp.prototype.toString.call(value); + } + if (isDate(value)) { + base = ' ' + Date.prototype.toUTCString.call(value); + } + if (isError(value)) { + base = ' ' + formatError(value); + } + + if (keys.length === 0 && (!array || value.length == 0)) { + return braces[0] + base + braces[1]; + } + + if (recurseTimes < 0) { + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } else { + return ctx.stylize('[Object]', 'special'); + } + } + + ctx.seen.push(value); + + var output; + if (array) { + output = formatArray(ctx, value, recurseTimes, visibleKeys, keys); + } else { + output = keys.map(function(key) { + return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array); + }); + } + + ctx.seen.pop(); + + return reduceToSingleString(output, base, braces); +} + + +function formatPrimitive(ctx, value) { + if (isUndefined(value)) + return ctx.stylize('undefined', 'undefined'); + if (isString(value)) { + var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '') + .replace(/'/g, "\\'") + .replace(/\\"/g, '"') + '\''; + return ctx.stylize(simple, 'string'); + } + if (isNumber(value)) + return ctx.stylize('' + value, 'number'); + if (isBoolean(value)) + return ctx.stylize('' + value, 'boolean'); + if (isNull(value)) + return ctx.stylize('null', 'null'); +} + + +function formatError(value) { + return '[' + Error.prototype.toString.call(value) + ']'; +} + + +function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { + var output = []; + for (var i = 0, l = value.length; i < l; ++i) { + if (hasOwnProperty(value, String(i))) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + String(i), true)); + } else { + output.push(''); + } + } + keys.forEach(function(key) { + if (!key.match(/^\d+$/)) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + key, true)); + } + }); + return output; +} + + +function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { + var name, str, desc; + desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] }; + if (desc.get) { + if (desc.set) { + str = ctx.stylize('[Getter/Setter]', 'special'); + } else { + str = ctx.stylize('[Getter]', 'special'); + } + } else { + if (desc.set) { + str = ctx.stylize('[Setter]', 'special'); + } + } + if (!hasOwnProperty(visibleKeys, key)) { + name = '[' + key + ']'; + } + if (!str) { + if (ctx.seen.indexOf(desc.value) < 0) { + if (isNull(recurseTimes)) { + str = formatValue(ctx, desc.value, null); + } else { + str = formatValue(ctx, desc.value, recurseTimes - 1); + } + if (str.indexOf('\n') > -1) { + if (array) { + str = str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n').substr(2); + } else { + str = '\n' + str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n'); + } + } + } else { + str = ctx.stylize('[Circular]', 'special'); + } + } + if (isUndefined(name)) { + if (array && key.match(/^\d+$/)) { + return str; + } + name = JSON.stringify('' + key); + if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { + name = name.substr(1, name.length - 2); + name = ctx.stylize(name, 'name'); + } else { + name = name.replace(/'/g, "\\'") + .replace(/\\"/g, '"') + .replace(/(^"|"$)/g, "'"); + name = ctx.stylize(name, 'string'); + } + } + + return name + ': ' + str; +} + + +function reduceToSingleString(output, base, braces) { + var numLinesEst = 0; + var length = output.reduce(function(prev, cur) { + numLinesEst++; + if (cur.indexOf('\n') >= 0) numLinesEst++; + return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1; + }, 0); + + if (length > 60) { + return braces[0] + + (base === '' ? '' : base + '\n ') + + ' ' + + output.join(',\n ') + + ' ' + + braces[1]; + } + + return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; +} +function isArray(ar) { + return Array.isArray(ar); +} +exports.isArray = isArray; + +function isBoolean(arg) { + return typeof arg === 'boolean'; +} +exports.isBoolean = isBoolean; + +function isNull(arg) { + return arg === null; +} +exports.isNull = isNull; + +function isNullOrUndefined(arg) { + return arg == null; +} +exports.isNullOrUndefined = isNullOrUndefined; + +function isNumber(arg) { + return typeof arg === 'number'; +} +exports.isNumber = isNumber; + +function isString(arg) { + return typeof arg === 'string'; +} +exports.isString = isString; + +function isSymbol(arg) { + return typeof arg === 'symbol'; +} +exports.isSymbol = isSymbol; + +function isUndefined(arg) { + return arg === void 0; +} +exports.isUndefined = isUndefined; + +function isRegExp(re) { + return isObject(re) && objectToString(re) === '[object RegExp]'; +} +exports.isRegExp = isRegExp; + +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} +exports.isObject = isObject; + +function isDate(d) { + return isObject(d) && objectToString(d) === '[object Date]'; +} +exports.isDate = isDate; + +function isError(e) { + return isObject(e) && + (objectToString(e) === '[object Error]' || e instanceof Error); +} +exports.isError = isError; + +function isFunction(arg) { + return typeof arg === 'function'; +} +exports.isFunction = isFunction; + +function isPrimitive(arg) { + return arg === null || + typeof arg === 'boolean' || + typeof arg === 'number' || + typeof arg === 'string' || + typeof arg === 'symbol' || // ES6 symbol + typeof arg === 'undefined'; +} +exports.isPrimitive = isPrimitive; + +exports.isBuffer = _dereq_('./support/isBuffer'); + +function objectToString(o) { + return Object.prototype.toString.call(o); +} + + +function pad(n) { + return n < 10 ? '0' + n.toString(10) : n.toString(10); +} + + +var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', + 'Oct', 'Nov', 'Dec']; +function timestamp() { + var d = new Date(); + var time = [pad(d.getHours()), + pad(d.getMinutes()), + pad(d.getSeconds())].join(':'); + return [d.getDate(), months[d.getMonth()], time].join(' '); +} +exports.log = function() { + console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments)); +}; +exports.inherits = _dereq_('inherits'); + +exports._extend = function(origin, add) { + if (!add || !isObject(add)) return origin; + + var keys = Object.keys(add); + var i = keys.length; + while (i--) { + origin[keys[i]] = add[keys[i]]; + } + return origin; +}; + +function hasOwnProperty(obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); +} + +}).call(this,_dereq_('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"./support/isBuffer":"/node_modules/assert/node_modules/util/support/isBufferBrowser.js","_process":"/node_modules/process/browser.js","inherits":"/node_modules/assert/node_modules/inherits/inherits_browser.js"}],"/node_modules/events/events.js":[function(_dereq_,module,exports){ + +function EventEmitter() { + this._events = this._events || {}; + this._maxListeners = this._maxListeners || undefined; +} +module.exports = EventEmitter; +EventEmitter.EventEmitter = EventEmitter; + +EventEmitter.prototype._events = undefined; +EventEmitter.prototype._maxListeners = undefined; +EventEmitter.defaultMaxListeners = 10; +EventEmitter.prototype.setMaxListeners = function(n) { + if (!isNumber(n) || n < 0 || isNaN(n)) + throw TypeError('n must be a positive number'); + this._maxListeners = n; + return this; +}; + +EventEmitter.prototype.emit = function(type) { + var er, handler, len, args, i, listeners; + + if (!this._events) + this._events = {}; + if (type === 'error') { + if (!this._events.error || + (isObject(this._events.error) && !this._events.error.length)) { + er = arguments[1]; + if (er instanceof Error) { + throw er; // Unhandled 'error' event + } + throw TypeError('Uncaught, unspecified "error" event.'); + } + } + + handler = this._events[type]; + + if (isUndefined(handler)) + return false; + + if (isFunction(handler)) { + switch (arguments.length) { + case 1: + handler.call(this); + break; + case 2: + handler.call(this, arguments[1]); + break; + case 3: + handler.call(this, arguments[1], arguments[2]); + break; + default: + len = arguments.length; + args = new Array(len - 1); + for (i = 1; i < len; i++) + args[i - 1] = arguments[i]; + handler.apply(this, args); + } + } else if (isObject(handler)) { + len = arguments.length; + args = new Array(len - 1); + for (i = 1; i < len; i++) + args[i - 1] = arguments[i]; + + listeners = handler.slice(); + len = listeners.length; + for (i = 0; i < len; i++) + listeners[i].apply(this, args); + } + + return true; +}; + +EventEmitter.prototype.addListener = function(type, listener) { + var m; + + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + if (!this._events) + this._events = {}; + if (this._events.newListener) + this.emit('newListener', type, + isFunction(listener.listener) ? + listener.listener : listener); + + if (!this._events[type]) + this._events[type] = listener; + else if (isObject(this._events[type])) + this._events[type].push(listener); + else + this._events[type] = [this._events[type], listener]; + if (isObject(this._events[type]) && !this._events[type].warned) { + var m; + if (!isUndefined(this._maxListeners)) { + m = this._maxListeners; + } else { + m = EventEmitter.defaultMaxListeners; + } + + if (m && m > 0 && this._events[type].length > m) { + this._events[type].warned = true; + console.error('(node) warning: possible EventEmitter memory ' + + 'leak detected. %d listeners added. ' + + 'Use emitter.setMaxListeners() to increase limit.', + this._events[type].length); + if (typeof console.trace === 'function') { + console.trace(); + } + } + } + + return this; +}; + +EventEmitter.prototype.on = EventEmitter.prototype.addListener; + +EventEmitter.prototype.once = function(type, listener) { + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + var fired = false; + + function g() { + this.removeListener(type, g); + + if (!fired) { + fired = true; + listener.apply(this, arguments); + } + } + + g.listener = listener; + this.on(type, g); + + return this; +}; +EventEmitter.prototype.removeListener = function(type, listener) { + var list, position, length, i; + + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + if (!this._events || !this._events[type]) + return this; + + list = this._events[type]; + length = list.length; + position = -1; + + if (list === listener || + (isFunction(list.listener) && list.listener === listener)) { + delete this._events[type]; + if (this._events.removeListener) + this.emit('removeListener', type, listener); + + } else if (isObject(list)) { + for (i = length; i-- > 0;) { + if (list[i] === listener || + (list[i].listener && list[i].listener === listener)) { + position = i; + break; + } + } + + if (position < 0) + return this; + + if (list.length === 1) { + list.length = 0; + delete this._events[type]; + } else { + list.splice(position, 1); + } + + if (this._events.removeListener) + this.emit('removeListener', type, listener); + } + + return this; +}; + +EventEmitter.prototype.removeAllListeners = function(type) { + var key, listeners; + + if (!this._events) + return this; + if (!this._events.removeListener) { + if (arguments.length === 0) + this._events = {}; + else if (this._events[type]) + delete this._events[type]; + return this; + } + if (arguments.length === 0) { + for (key in this._events) { + if (key === 'removeListener') continue; + this.removeAllListeners(key); + } + this.removeAllListeners('removeListener'); + this._events = {}; + return this; + } + + listeners = this._events[type]; + + if (isFunction(listeners)) { + this.removeListener(type, listeners); + } else { + while (listeners.length) + this.removeListener(type, listeners[listeners.length - 1]); + } + delete this._events[type]; + + return this; +}; + +EventEmitter.prototype.listeners = function(type) { + var ret; + if (!this._events || !this._events[type]) + ret = []; + else if (isFunction(this._events[type])) + ret = [this._events[type]]; + else + ret = this._events[type].slice(); + return ret; +}; + +EventEmitter.listenerCount = function(emitter, type) { + var ret; + if (!emitter._events || !emitter._events[type]) + ret = 0; + else if (isFunction(emitter._events[type])) + ret = 1; + else + ret = emitter._events[type].length; + return ret; +}; + +function isFunction(arg) { + return typeof arg === 'function'; +} + +function isNumber(arg) { + return typeof arg === 'number'; +} + +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} + +function isUndefined(arg) { + return arg === void 0; +} + +},{}],"/node_modules/process/browser.js":[function(_dereq_,module,exports){ +var process = module.exports = {}; + +var cachedSetTimeout; +var cachedClearTimeout; + +function defaultSetTimout() { + throw new Error('setTimeout has not been defined'); +} +function defaultClearTimeout () { + throw new Error('clearTimeout has not been defined'); +} +(function () { + try { + if (typeof setTimeout === 'function') { + cachedSetTimeout = setTimeout; + } else { + cachedSetTimeout = defaultSetTimout; + } + } catch (e) { + cachedSetTimeout = defaultSetTimout; + } + try { + if (typeof clearTimeout === 'function') { + cachedClearTimeout = clearTimeout; + } else { + cachedClearTimeout = defaultClearTimeout; + } + } catch (e) { + cachedClearTimeout = defaultClearTimeout; + } +} ()) +function runTimeout(fun) { + if (cachedSetTimeout === setTimeout) { + return setTimeout(fun, 0); + } + if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { + cachedSetTimeout = setTimeout; + return setTimeout(fun, 0); + } + try { + return cachedSetTimeout(fun, 0); + } catch(e){ + try { + return cachedSetTimeout.call(null, fun, 0); + } catch(e){ + return cachedSetTimeout.call(this, fun, 0); + } + } + + +} +function runClearTimeout(marker) { + if (cachedClearTimeout === clearTimeout) { + return clearTimeout(marker); + } + if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { + cachedClearTimeout = clearTimeout; + return clearTimeout(marker); + } + try { + return cachedClearTimeout(marker); + } catch (e){ + try { + return cachedClearTimeout.call(null, marker); + } catch (e){ + return cachedClearTimeout.call(this, marker); + } + } + + + +} +var queue = []; +var draining = false; +var currentQueue; +var queueIndex = -1; + +function cleanUpNextTick() { + if (!draining || !currentQueue) { + return; + } + draining = false; + if (currentQueue.length) { + queue = currentQueue.concat(queue); + } else { + queueIndex = -1; + } + if (queue.length) { + drainQueue(); + } +} + +function drainQueue() { + if (draining) { + return; + } + var timeout = runTimeout(cleanUpNextTick); + draining = true; + + var len = queue.length; + while(len) { + currentQueue = queue; + queue = []; + while (++queueIndex < len) { + if (currentQueue) { + currentQueue[queueIndex].run(); + } + } + queueIndex = -1; + len = queue.length; + } + currentQueue = null; + draining = false; + runClearTimeout(timeout); +} + +process.nextTick = function (fun) { + var args = new Array(arguments.length - 1); + if (arguments.length > 1) { + for (var i = 1; i < arguments.length; i++) { + args[i - 1] = arguments[i]; + } + } + queue.push(new Item(fun, args)); + if (queue.length === 1 && !draining) { + runTimeout(drainQueue); + } +}; +function Item(fun, array) { + this.fun = fun; + this.array = array; +} +Item.prototype.run = function () { + this.fun.apply(null, this.array); +}; +process.title = 'browser'; +process.browser = true; +process.env = {}; +process.argv = []; +process.version = ''; // empty string to avoid regexp issues +process.versions = {}; + +function noop() {} + +process.on = noop; +process.addListener = noop; +process.once = noop; +process.off = noop; +process.removeListener = noop; +process.removeAllListeners = noop; +process.emit = noop; +process.prependListener = noop; +process.prependOnceListener = noop; + +process.listeners = function (name) { return [] } + +process.binding = function (name) { + throw new Error('process.binding is not supported'); +}; + +process.cwd = function () { return '/' }; +process.chdir = function (dir) { + throw new Error('process.chdir is not supported'); +}; +process.umask = function() { return 0; }; + +},{}],"/node_modules/util/node_modules/inherits/inherits_browser.js":[function(_dereq_,module,exports){ +arguments[4]["/node_modules/assert/node_modules/inherits/inherits_browser.js"][0].apply(exports,arguments) +},{}],"/node_modules/util/support/isBufferBrowser.js":[function(_dereq_,module,exports){ +arguments[4]["/node_modules/assert/node_modules/util/support/isBufferBrowser.js"][0].apply(exports,arguments) +},{}],"/node_modules/util/util.js":[function(_dereq_,module,exports){ +arguments[4]["/node_modules/assert/node_modules/util/util.js"][0].apply(exports,arguments) +},{"./support/isBuffer":"/node_modules/util/support/isBufferBrowser.js","_process":"/node_modules/process/browser.js","inherits":"/node_modules/util/node_modules/inherits/inherits_browser.js"}]},{},["/../../../jshint/src/jshint.js"]); + +}); + +ace.define("ace/mode/javascript_worker",[], function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var Mirror = require("../worker/mirror").Mirror; +var lint = require("./javascript/jshint").JSHINT; + +function startRegex(arr) { + return RegExp("^(" + arr.join("|") + ")"); +} + +var disabledWarningsRe = startRegex([ + "Bad for in variable '(.+)'.", + 'Missing "use strict"' +]); +var errorsRe = startRegex([ + "Unexpected", + "Expected ", + "Confusing (plus|minus)", + "\\{a\\} unterminated regular expression", + "Unclosed ", + "Unmatched ", + "Unbegun comment", + "Bad invocation", + "Missing space after", + "Missing operator at" +]); +var infoRe = startRegex([ + "Expected an assignment", + "Bad escapement of EOL", + "Unexpected comma", + "Unexpected space", + "Missing radix parameter.", + "A leading decimal point can", + "\\['{a}'\\] is better written in dot notation.", + "'{a}' used out of scope" +]); + +var JavaScriptWorker = exports.JavaScriptWorker = function(sender) { + Mirror.call(this, sender); + this.setTimeout(500); + this.setOptions(); +}; + +oop.inherits(JavaScriptWorker, Mirror); + +(function() { + this.setOptions = function(options) { + this.options = options || { + esnext: true, + moz: true, + devel: true, + browser: true, + node: true, + laxcomma: true, + laxbreak: true, + lastsemic: true, + onevar: false, + passfail: false, + maxerr: 100, + expr: true, + multistr: true, + globalstrict: true + }; + this.doc.getValue() && this.deferredUpdate.schedule(100); + }; + + this.changeOptions = function(newOptions) { + oop.mixin(this.options, newOptions); + this.doc.getValue() && this.deferredUpdate.schedule(100); + }; + + this.onUpdate = function() { + var value = this.doc.getValue(); + value = value.replace(/^#!.*\n/, "\n"); + if (!value) + return this.sender.emit("annotate", []); + + var errors = []; + lint(value, this.options, this.options.globals); + var results = lint.errors; + + var errorAdded = false; + for (var i = 0; i < results.length; i++) { + var error = results[i]; + if (!error) + continue; + var raw = error.raw; + var type = "warning"; + + if (raw == "Missing semicolon.") { + var str = error.evidence.substr(error.character); + str = str.charAt(str.search(/\S/)); + if (str && /[\w\d{(['"]/.test(str)) { + error.reason = 'Missing ";" before statement'; + type = "error"; + } else { + type = "info"; + } + } + else if (disabledWarningsRe.test(raw)) { + continue; + } + else if (infoRe.test(raw)) { + type = "info"; + } + else if (errorsRe.test(raw)) { + errorAdded = true; + type = "error"; + } + else if (raw == "'{a}' is not defined.") { + type = "warning"; + } + else if (raw == "'{a}' is defined but never used.") { + type = "info"; + } + + errors.push({ + row: error.line-1, + column: error.character-1, + text: error.reason, + type: type, + raw: raw + }); + + if (errorAdded) { + } + } + + this.sender.emit("annotate", errors); + }; + +}).call(JavaScriptWorker.prototype); + +}); diff --git a/web/dist/de8dee841ffdaaede3a2254deef30376.js.gz b/web/dist/de8dee841ffdaaede3a2254deef30376.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..ed44bc42b201e78ccc2e32e56656ef302746da4a GIT binary patch literal 205736 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�AC&dTR@Brz%7H$|=_gmn0ipVEmvj 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�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

      iur<#rvbC57le$ni#CXMcH(ni=h&^)s2L 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/.source + }; + var stringEscape = /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)/; + this.$rules = { + start: [ + { + token: "constant.numeric", + regex: "(?:0x[\\da-fA-F]+|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:[eE][+-]?\\d+)?)" + }, { + stateName: "qdoc", + token: "string", regex: "'''", next: [ + { token: "string", regex: "'''", next: "start" }, + { token: "constant.language.escape", regex: stringEscape }, + { defaultToken: "string" } + ] + }, { + stateName: "qqdoc", + token: "string", + regex: '"""', + next: [ + { token: "string", regex: '"""', next: "start" }, + { token: "paren.string", regex: '#{', push: "start" }, + { token: "constant.language.escape", regex: stringEscape }, + { defaultToken: "string" } + ] + }, { + stateName: "qstring", + token: "string", regex: "'", next: [ + { token: "string", regex: "'", next: "start" }, + { token: "constant.language.escape", regex: stringEscape }, + { defaultToken: "string" } + ] + }, { + stateName: "qqstring", + token: "string.start", regex: '"', next: [ + { token: "string.end", regex: '"', next: "start" }, + { token: "paren.string", regex: '#{', push: "start" }, + { token: "constant.language.escape", regex: stringEscape }, + { defaultToken: "string" } + ] + }, { + stateName: "js", + token: "string", regex: "`", next: [ + { token: "string", regex: "`", next: "start" }, + { token: "constant.language.escape", regex: stringEscape }, + { defaultToken: "string" } + ] + }, { + regex: "[{}]", onMatch: function (val, state, stack) { + this.next = ""; + if (val == "{" && stack.length) { + stack.unshift("start", state); + return "paren"; + } + if (val == "}" && stack.length) { + stack.shift(); + this.next = stack.shift() || ""; + if (this.next.indexOf("string") != -1) + return "paren.string"; + } + return "paren"; + } + }, { + token: "string.regex", + regex: "///", + next: "heregex" + }, { + token: "string.regex", + regex: /(?:\/(?![\s=])[^[\/\n\\]*(?:(?:\\[\s\S]|\[[^\]\n\\]*(?:\\[\s\S][^\]\n\\]*)*])[^[\/\n\\]*)*\/)(?:[imgy]{0,4})(?!\w)/ + }, { + token: "comment", + regex: "###(?!#)", + next: "comment" + }, { + token: "comment", + regex: "#.*" + }, { + token: ["punctuation.operator", "text", "identifier"], + regex: "(\\.)(\\s*)(" + illegal + ")" + }, { + token: "punctuation.operator", + regex: "\\.{1,3}" + }, { + token: ["keyword", "text", "language.support.class", + "text", "keyword", "text", "language.support.class"], + regex: "(class)(\\s+)(" + identifier + ")(?:(\\s+)(extends)(\\s+)(" + identifier + "))?" + }, { + token: ["entity.name.function", "text", "keyword.operator", "text"].concat(functionRule.token), + regex: "(" + identifier + ")(\\s*)([=:])(\\s*)" + functionRule.regex + }, + functionRule, + { + token: "variable", + regex: "@(?:" + identifier + ")?" + }, { + token: keywordMapper, + regex: identifier + }, { + token: "punctuation.operator", + regex: "\\,|\\." + }, { + token: "storage.type", + regex: "[\\-=]>" + }, { + token: "keyword.operator", + regex: "(?:[-+*/%<>&|^!?=]=|>>>=?|\\-\\-|\\+\\+|::|&&=|\\|\\|=|<<=|>>=|\\?\\.|\\.{2,3}|[!*+-=><])" + }, { + token: "paren.lparen", + regex: "[({[]" + }, { + token: "paren.rparen", + regex: "[\\]})]" + }, { + token: "text", + regex: "\\s+" + } + ], + heregex: [{ + token: "string.regex", + regex: '.*?///[imgy]{0,4}', + next: "start" + }, { + token: "comment.regex", + regex: "\\s+(?:#.*)?" + }, { + token: "string.regex", + regex: "\\S+" + }], + comment: [{ + token: "comment", + regex: '###', + next: "start" + }, { + defaultToken: "comment" + }] + }; + this.normalizeRules(); +} +exports.CoffeeHighlightRules = CoffeeHighlightRules; + +}); + +ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) + return false; + return /^\s*\}/.test(input); + }; + this.autoOutdent = function (doc, row) { + var line = doc.getLine(row); + var match = line.match(/^(\s*\})/); + if (!match) + return 0; + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; + var indent = this.$getIndent(doc.getLine(openBracePos.row)); + doc.replace(new Range(row, 0, row, column - 1), indent); + }; + this.$getIndent = function (line) { + return line.match(/^\s*/)[0]; + }; +}).call(MatchingBraceOutdent.prototype); +exports.MatchingBraceOutdent = MatchingBraceOutdent; + +}); + +ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var BaseFoldMode = require("./fold_mode").FoldMode; +var Range = require("../../range").Range; +var FoldMode = exports.FoldMode = function () { }; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.getFoldWidgetRange = function (session, foldStyle, row) { + var range = this.indentationBlock(session, row); + if (range) + return range; + var re = /\S/; + var line = session.getLine(row); + var startLevel = line.search(re); + if (startLevel == -1 || line[startLevel] != "#") + return; + var startColumn = line.length; + var maxRow = session.getLength(); + var startRow = row; + var endRow = row; + while (++row < maxRow) { + line = session.getLine(row); + var level = line.search(re); + if (level == -1) + continue; + if (line[level] != "#") + break; + endRow = row; + } + if (endRow > startRow) { + var endColumn = session.getLine(endRow).length; + return new Range(startRow, startColumn, endRow, endColumn); + } + }; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + var indent = line.search(/\S/); + var next = session.getLine(row + 1); + var prev = session.getLine(row - 1); + var prevIndent = prev.search(/\S/); + var nextIndent = next.search(/\S/); + if (indent == -1) { + session.foldWidgets[row - 1] = prevIndent != -1 && prevIndent < nextIndent ? "start" : ""; + return ""; + } + if (prevIndent == -1) { + if (indent == nextIndent && line[indent] == "#" && next[indent] == "#") { + session.foldWidgets[row - 1] = ""; + session.foldWidgets[row + 1] = ""; + return "start"; + } + } + else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { + if (session.getLine(row - 2).search(/\S/) == -1) { + session.foldWidgets[row - 1] = "start"; + session.foldWidgets[row + 1] = ""; + return ""; + } + } + if (prevIndent != -1 && prevIndent < indent) + session.foldWidgets[row - 1] = "start"; + else + session.foldWidgets[row - 1] = ""; + if (indent < nextIndent) + return "start"; + else + return ""; + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/coffee",["require","exports","module","ace/mode/coffee_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/coffee","ace/range","ace/mode/text","ace/worker/worker_client","ace/lib/oop"], function(require, exports, module){"use strict"; +var Rules = require("./coffee_highlight_rules").CoffeeHighlightRules; +var Outdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var FoldMode = require("./folding/coffee").FoldMode; +var Range = require("../range").Range; +var TextMode = require("./text").Mode; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var oop = require("../lib/oop"); +function Mode() { + this.HighlightRules = Rules; + this.$outdent = new Outdent(); + this.foldingRules = new FoldMode(); +} +oop.inherits(Mode, TextMode); +(function () { + var indenter = /(?:[({[=:]|[-=]>|\b(?:else|try|(?:swi|ca)tch(?:\s+[$A-Za-z_\x7f-\uffff][$\w\x7f-\uffff]*)?|finally))\s*$|^\s*(else\b\s*)?(?:if|for|while|loop)\b(?!.*\bthen\b)/; + this.lineCommentStart = "#"; + this.blockComment = { start: "###", end: "###" }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokens = this.getTokenizer().getLineTokens(line, state).tokens; + if (!(tokens.length && tokens[tokens.length - 1].type === 'comment') && + state === 'start' && indenter.test(line)) + indent += tab; + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.createWorker = function (session) { + var worker = new WorkerClient(["ace"], "ace/mode/coffee_worker", "Worker"); + worker.attachToDocument(session.getDocument()); + worker.on("annotate", function (e) { + session.setAnnotations(e.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/coffee"; + this.snippetFileId = "ace/snippets/coffee"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/coffee"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/df14d63677343134a88e906bf460b997.js.gz b/web/dist/df14d63677343134a88e906bf460b997.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..5c8100ce95727e448d80363df6c7a9a310b6cc07 GIT binary patch literal 3462 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 literal 0 HcmV?d00001 diff --git a/web/dist/dfcf55f148a1c3a275c32ba307579b9b.js b/web/dist/dfcf55f148a1c3a275c32ba307579b9b.js new file mode 100644 index 00000000..21007f73 --- /dev/null +++ b/web/dist/dfcf55f148a1c3a275c32ba307579b9b.js @@ -0,0 +1,262 @@ +ace.define("ace/mode/nginx_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var NginxHighlightRules = function () { + var keywords = "include|index|absolute_redirect|aio|output_buffers|directio|sendfile|aio_write|alias|root|chunked_transfer_encoding|client_body_buffer_size|client_body_in_file_only|client_body_in_single_buffer|client_body_temp_path|client_body_timeout|client_header_buffer_size|client_header_timeout|client_max_body_size|connection_pool_size|default_type|disable_symlinks|directio_alignment|error_page|etag|if_modified_since|ignore_invalid_headers|internal|keepalive_requests|keepalive_disable|keepalive_timeout|limit_except|large_client_header_buffers|limit_rate|limit_rate_after|lingering_close|lingering_time|lingering_timeout|listen|log_not_found|log_subrequest|max_ranges|merge_slashes|msie_padding|msie_refresh|open_file_cache|open_file_cache_errors|open_file_cache_min_uses|open_file_cache_valid|output_buffers|port_in_redirect|postpone_output|read_ahead|recursive_error_pages|request_pool_size|reset_timedout_connection|resolver|resolver_timeout|satisfy|send_lowat|send_timeout|sendfile|sendfile_max_chunk|server_name|server_name_in_redirect|server_names_hash_bucket_size|server_names_hash_max_size|server_tokens|subrequest_output_buffer_size|tcp_nodelay|tcp_nopush|try_files|types|types_hash_bucket_size|types_hash_max_size|underscores_in_headers|variables_hash_bucket_size|variables_hash_max_size|accept_mutex|accept_mutex_delay|debug_connection|error_log|daemon|debug_points|env|load_module|lock_file|master_process|multi_accept|pcre_jit|pid|ssl_engine|thread_pool|timer_resolution|use|user|worker_aio_requests|worker_connections|worker_cpu_affinity|worker_priority|worker_processes|worker_rlimit_core|worker_rlimit_nofile|worker_shutdown_timeout|working_directory|allow|deny|add_before_body|add_after_body|addition_types|api|status_zone|auth_basic|auth_basic_user_file|auth_jwt|auth_jwt|auth_jwt_claim_set|auth_jwt_header_set|auth_jwt_key_file|auth_jwt_key_request|auth_jwt_leeway|auth_request|auth_request_set|autoindex|autoindex_exact_size|autoindex_format|autoindex_localtime|ancient_browser|ancient_browser_value|modern_browser|modern_browser_value|charset|charset_map|charset_types|override_charset|source_charset|create_full_put_path|dav_access|dav_methods|min_delete_depth|empty_gif|f4f|f4f_buffer_size|fastcgi_bind|fastcgi_buffer_size|fastcgi_buffering|fastcgi_buffers|fastcgi_busy_buffers_size|fastcgi_cache|fastcgi_cache_background_update|fastcgi_cache_bypass|fastcgi_cache_key|fastcgi_cache_lock|fastcgi_cache_lock_age|fastcgi_cache_lock_timeout|fastcgi_cache_max_range_offset|fastcgi_cache_methods|fastcgi_cache_min_uses|fastcgi_cache_min_uses|fastcgi_cache_path|fastcgi_cache_purge|fastcgi_cache_revalidate|fastcgi_cache_use_stale|fastcgi_cache_valid|fastcgi_catch_stderr|fastcgi_connect_timeout|fastcgi_force_ranges|fastcgi_hide_header|fastcgi_ignore_client_abort|fastcgi_ignore_headers|fastcgi_index|fastcgi_intercept_errors|fastcgi_keep_conn|fastcgi_limit_rate|fastcgi_max_temp_file_size|fastcgi_next_upstream|fastcgi_next_upstream_timeout|fastcgi_next_upstream_tries|fastcgi_no_cache|fastcgi_param|fastcgi_pass|fastcgi_pass_header|fastcgi_pass_request_body|fastcgi_pass_request_headers|fastcgi_read_timeout|fastcgi_request_buffering|fastcgi_send_lowat|fastcgi_send_timeout|fastcgi_socket_keepalive|fastcgi_split_path_info|fastcgi_store|fastcgi_store_access|fastcgi_temp_file_write_size|fastcgi_temp_path|flv|geoip_country|geoip_city|geoip_org|geoip_proxy|geoip_proxy_recursive|grpc_bind|grpc_buffer_size|grpc_connect_timeout|grpc_hide_header|grpc_ignore_headers|grpc_intercept_errors|grpc_next_upstream|grpc_next_upstream_timeout|grpc_next_upstream_tries|grpc_pass|grpc_pass_header|grpc_read_timeout|grpc_send_timeout|grpc_set_header|grpc_socket_keepalive|grpc_ssl_certificate|grpc_ssl_certificate_key|grpc_ssl_ciphers|grpc_ssl_crl|grpc_ssl_name|grpc_ssl_password_file|grpc_ssl_protocols|grpc_ssl_server_name|grpc_ssl_session_reuse|grpc_ssl_trusted_certificate|grpc_ssl_verify|grpc_ssl_verify_depth|gunzip|gunzip_buffers|gzip|gzip_buffers|gzip_comp_level|gzip_disable|gzip_http_version|gzip_min_length|gzip_proxied|gzip_types|gzip_vary|gzip_static|add_header|add_trailer|expires|hlshls_buffers|hls_forward_args|hls_fragment|hls_mp4_buffer_size|hls_mp4_max_buffer_size|image_filter|image_filter_buffer|image_filter_interlace|image_filter_jpeg_quality|image_filter_sharpen|image_filter_transparency|image_filter_webp_quality|js_content|js_include|js_set|keyval|keyval_zone|limit_conn|limit_conn_log_level|limit_conn_status|limit_conn_zone|limit_zone|limit_req|limit_req_log_level|limit_req_status|limit_req_zone|access_log|log_format|open_log_file_cache|map_hash_bucket_size|map_hash_max_size|memcached_bind|memcached_buffer_size|memcached_connect_timeout|memcached_force_ranges|memcached_gzip_flag|memcached_next_upstream|memcached_next_upstream_timeout|memcached_next_upstream_tries|memcached_pass|memcached_read_timeout|memcached_send_timeout|memcached_socket_keepalive|mirror|mirror_request_body|mp4|mp4_buffer_size|mp4_max_buffer_size|mp4_limit_rate|mp4_limit_rate_after|perl_modules|perl_require|perl_set|proxy_bind|proxy_buffer_size|proxy_buffering|proxy_buffers|proxy_busy_buffers_size|proxy_cache|proxy_cache_background_update|proxy_cache_bypass|proxy_cache_convert_head|proxy_cache_key|proxy_cache_lock|proxy_cache_lock_age|proxy_cache_lock_timeout|proxy_cache_max_range_offset|proxy_cache_methods|proxy_cache_min_uses|proxy_cache_path|proxy_cache_purge|proxy_cache_revalidate|proxy_cache_use_stale|proxy_cache_valid|proxy_connect_timeout|proxy_cookie_domain|proxy_cookie_path|proxy_force_ranges|proxy_headers_hash_bucket_size|proxy_headers_hash_max_size|proxy_hide_header|proxy_http_version|proxy_ignore_client_abort|proxy_ignore_headers|proxy_intercept_errors|proxy_limit_rate|proxy_max_temp_file_size|proxy_method|proxy_next_upstream|proxy_next_upstream_timeout|proxy_next_upstream_tries|proxy_no_cache|proxy_pass|proxy_pass_header|proxy_pass_request_body|proxy_pass_request_headers|proxy_read_timeout|proxy_redirect|proxy_send_lowat|proxy_send_timeout|proxy_set_body|proxy_set_header|proxy_socket_keepalive|proxy_ssl_certificate|proxy_ssl_certificate_key|proxy_ssl_ciphers|proxy_ssl_crl|proxy_ssl_name|proxy_ssl_password_file|proxy_ssl_protocols|proxy_ssl_server_name|proxy_ssl_session_reuse|proxy_ssl_trusted_certificate|proxy_ssl_verify|proxy_ssl_verify_depth|proxy_store|proxy_store_access|proxy_temp_file_write_size|proxy_temp_path|random_index|set_real_ip_from|real_ip_header|real_ip_recursive|referer_hash_bucket_size|referer_hash_max_size|valid_referers|break|return|rewrite_log|set|uninitialized_variable_warn|scgi_bind|scgi_buffer_size|scgi_buffering|scgi_buffers|scgi_busy_buffers_size|scgi_cache|scgi_cache_background_update|scgi_cache_key|scgi_cache_lock|scgi_cache_lock_age|scgi_cache_lock_timeout|scgi_cache_max_range_offset|scgi_cache_methods|scgi_cache_min_uses|scgi_cache_path|scgi_cache_purge|scgi_cache_revalidate|scgi_cache_use_stale|scgi_cache_valid|scgi_connect_timeout|scgi_force_ranges|scgi_hide_header|scgi_ignore_client_abort|scgi_ignore_headers|scgi_intercept_errors|scgi_limit_rate|scgi_max_temp_file_size|scgi_next_upstream|scgi_next_upstream_timeout|scgi_next_upstream_tries|scgi_no_cache|scgi_param|scgi_pass|scgi_pass_header|scgi_pass_request_body|scgi_pass_request_headers|scgi_read_timeout|scgi_request_buffering|scgi_send_timeout|scgi_socket_keepalive|scgi_store|scgi_store_access|scgi_temp_file_write_size|scgi_temp_path|secure_link|secure_link_md5|secure_link_secret|session_log|session_log_format|session_log_zone|slice|spdy_chunk_size|spdy_headers_comp|ssi|ssi_last_modified|ssi_min_file_chunk|ssi_silent_errors|ssi_types|ssi_value_length|ssl|ssl_buffer_size|ssl_certificate|ssl_certificate_key|ssl_ciphers|ssl_client_certificate|ssl_crl|ssl_dhparam|ssl_early_data|ssl_ecdh_curve|ssl_password_file|ssl_prefer_server_ciphers|ssl_protocols|ssl_session_cache|ssl_session_ticket_key|ssl_session_tickets|ssl_session_timeout|ssl_stapling|ssl_stapling_file|ssl_stapling_responder|ssl_stapling_verify|ssl_trusted_certificate|ssl_verify_client|ssl_verify_depth|status|status_format|status_zone|stub_status|sub_filter|sub_filter_last_modified|sub_filter_once|sub_filter_types|server|zone|state|hash|ip_hash|keepalive|keepalive_requests|keepalive_timeout|ntlm|least_conn|least_time|queue|random|sticky|sticky_cookie_insert|upstream_conf|health_check|userid|userid_domain|userid_expires|userid_mark|userid_name|userid_p3p|userid_path|userid_service|uwsgi_bind|uwsgi_buffer_size|uwsgi_buffering|uwsgi_buffers|uwsgi_busy_buffers_size|uwsgi_cache|uwsgi_cache_background_update|uwsgi_cache_bypass|uwsgi_cache_key|uwsgi_cache_lock|uwsgi_cache_lock_age|uwsgi_cache_lock_timeout|uwsgi_cache_max_range_offset|uwsgi_cache_methods|uwsgi_cache_min_uses|uwsgi_cache_path|uwsgi_cache_purge|uwsgi_cache_revalidate|uwsgi_cache_use_stale|uwsgi_cache_valid|uwsgi_connect_timeout|uwsgi_force_ranges|uwsgi_hide_header|uwsgi_ignore_client_abort|uwsgi_ignore_headers|uwsgi_intercept_errors|uwsgi_limit_rate|uwsgi_max_temp_file_size|uwsgi_modifier1|uwsgi_modifier2|uwsgi_next_upstream|uwsgi_next_upstream_timeout|uwsgi_next_upstream_tries|uwsgi_no_cache|uwsgi_param|uwsgi_pass|uwsgi_pass_header|uwsgi_pass_request_body|uwsgi_pass_request_headers|uwsgi_read_timeout|uwsgi_request_buffering|uwsgi_send_timeout|uwsgi_socket_keepalive|uwsgi_ssl_certificate|uwsgi_ssl_certificate_key|uwsgi_ssl_ciphers|uwsgi_ssl_crl|uwsgi_ssl_name|uwsgi_ssl_password_file|uwsgi_ssl_protocols|uwsgi_ssl_server_name|uwsgi_ssl_session_reuse|uwsgi_ssl_trusted_certificate|uwsgi_ssl_verify|uwsgi_ssl_verify_depth|uwsgi_store|uwsgi_store_access|uwsgi_temp_file_write_size|uwsgi_temp_path|http2_body_preread_size|http2_chunk_size|http2_idle_timeout|http2_max_concurrent_pushes|http2_max_concurrent_streams|http2_max_field_size|http2_max_header_size|http2_max_requests|http2_push|http2_push_preload|http2_recv_buffer_size|http2_recv_timeout|xml_entities|xslt_last_modified|xslt_param|xslt_string_param|xslt_stylesheet|xslt_types|listen|protocol|resolver|resolver_timeout|timeout|auth_http|auth_http_header|auth_http_pass_client_cert|auth_http_timeout|proxy_buffer|proxy_pass_error_message|proxy_timeout|xclient|starttls|imap_auth|imap_capabilities|imap_client_buffer|pop3_auth|pop3_capabilities|smtp_auth|smtp_capabilities|smtp_client_buffer|smtp_greeting_delay|preread_buffer_size|preread_timeout|proxy_protocol_timeout|js_access|js_filter|js_preread|proxy_download_rate|proxy_requests|proxy_responses|proxy_upload_rate|ssl_handshake_timeout|ssl_preread|health_check_timeout|zone_sync|zone_sync_buffers|zone_sync_connect_retry_interval|zone_sync_connect_timeout|zone_sync_interval|zone_sync_recv_buffer_size|zone_sync_server|zone_sync_ssl|zone_sync_ssl_certificate|zone_sync_ssl_certificate_key|zone_sync_ssl_ciphers|zone_sync_ssl_crl|zone_sync_ssl_name|zone_sync_ssl_password_file|zone_sync_ssl_protocols|zone_sync_ssl_server_name|zone_sync_ssl_trusted_certificate|zone_sync_ssl_verify_depth|zone_sync_timeout|google_perftools_profiles|proxy|perl"; + this.$rules = { + "start": [{ + token: ["storage.type", "text", "string.regexp", "paren.lparen"], + regex: "\\b(location)(\\s+)([\\^]?~[\\*]?\\s+.*?)({)" + }, { + token: ["storage.type", "text", "text", "paren.lparen"], + regex: "\\b(location|match|upstream)(\\s+)(.*?)({)" + }, { + token: ["storage.type", "text", "string", "text", "variable", "text", "paren.lparen"], + regex: '\\b(split_clients|map)(\\s+)(\\".*\\")(\\s+)(\\$[\\w_]+)(\\s*)({)' + }, { + token: ["storage.type", "text", "paren.lparen"], + regex: "\\b(http|events|server|mail|stream)(\\s*)({)" + }, { + token: ["storage.type", "text", "variable", "text", "variable", "text", "paren.lparen"], + regex: '\\b(geo|map)(\\s+)(\\$[\\w_]+)?(\\s*)(\\$[\\w_]+)(\\s*)({)' + }, { + token: "paren.rparen", + regex: "(})" + }, { + token: "paren.lparen", + regex: "({)" + }, { + token: ["storage.type", "text", "paren.lparen"], + regex: "\\b(if)(\\s+)(\\()", + push: [{ + token: "paren.rparen", + regex: "\\)|$", + next: "pop" + }, { + include: "lexical" + }] + }, { + token: "keyword", + regex: "\\b(" + keywords + ")\\b", + push: [{ + token: "punctuation", + regex: ";", + next: "pop" + }, { + include: "lexical" + }] + }, { + token: ["keyword", "text", "string.regexp", "text", "punctuation"], + regex: "\\b(rewrite)(\\s)(\\S*)(\\s.*)(;)" + }, { + include: "lexical" + }, { + include: "comments" + }], + comments: [{ + token: "comment", + regex: '#.*$' + }], + lexical: [{ + token: "string", + regex: "'", + push: [{ + token: "string", + regex: "'", + next: "pop" + }, { + include: "variables" + }, { + defaultToken: "string" + }] + }, { + token: "string", + regex: '"', + push: [{ + token: "string", + regex: '"', + next: "pop" + }, { + include: "variables" + }, { + defaultToken: "string" + }] + }, { + token: "string.regexp", + regex: /[!]?[~][*]?\s+.*(?=\))/ + }, { + token: "string.regexp", + regex: /[\^]\S*(?=;$)/ + }, { + token: "string.regexp", + regex: /[\^]\S*(?=;|\s|$)/ + }, { + token: "keyword.operator", + regex: "\\B(\\+|\\-|\\*|\\=|!=)\\B" + }, { + token: "constant.language", + regex: "\\b(true|false|on|off|all|any|main|always)\\b" + }, { + token: "text", + regex: "\\s+" + }, { + include: "variables" + } + ], + variables: [{ + token: "variable", + regex: "\\$[\\w_]+" + }, { + token: "variable.language", + regex: "\\b(GET|POST|HEAD)\\b" + }] + }; + this.normalizeRules(); +}; +oop.inherits(NginxHighlightRules, TextHighlightRules); +exports.NginxHighlightRules = NginxHighlightRules; + +}); + +ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/nginx",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/nginx_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var NginxHighlightRules = require("./nginx_highlight_rules").NginxHighlightRules; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + TextMode.call(this); + this.HighlightRules = NginxHighlightRules; + this.foldingRules = new CStyleFoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "#"; + this.$id = "ace/mode/nginx"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/nginx"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/dfcf55f148a1c3a275c32ba307579b9b.js.gz b/web/dist/dfcf55f148a1c3a275c32ba307579b9b.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..1fb48cd90b76cdb82ec5dc6c782bc1bc18175b24 GIT binary patch literal 5211 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 V9}>l`QpqAf{|AqW?(N`F006x$D6jwk literal 0 HcmV?d00001 diff --git a/web/dist/e03035341d2106650617dd1fcc8f9449.js b/web/dist/e03035341d2106650617dd1fcc8f9449.js new file mode 100644 index 00000000..14be95a3 --- /dev/null +++ b/web/dist/e03035341d2106650617dd1fcc8f9449.js @@ -0,0 +1,16 @@ +ace.define("ace/snippets/tcl.snippets",["require","exports","module"], function(require, exports, module){module.exports = "# #!/usr/bin/env tclsh\nsnippet #!\n\t#!/usr/bin/env tclsh\n\t\n# Process\nsnippet pro\n\tproc ${1:function_name} {${2:args}} {\n\t\t${3:#body ...}\n\t}\n#xif\nsnippet xif\n\t${1:expr}? ${2:true} : ${3:false}\n# Conditional\nsnippet if\n\tif {${1}} {\n\t\t${2:# body...}\n\t}\n# Conditional if..else\nsnippet ife\n\tif {${1}} {\n\t\t${2:# body...}\n\t} else {\n\t\t${3:# else...}\n\t}\n# Conditional if..elsif..else\nsnippet ifee\n\tif {${1}} {\n\t\t${2:# body...}\n\t} elseif {${3}} {\n\t\t${4:# elsif...}\n\t} else {\n\t\t${5:# else...}\n\t}\n# If catch then\nsnippet ifc\n\tif { [catch {${1:#do something...}} ${2:err}] } {\n\t\t${3:# handle failure...}\n\t}\n# Catch\nsnippet catch\n\tcatch {${1}} ${2:err} ${3:options}\n# While Loop\nsnippet wh\n\twhile {${1}} {\n\t\t${2:# body...}\n\t}\n# For Loop\nsnippet for\n\tfor {set ${2:var} 0} {$$2 < ${1:count}} {${3:incr} $2} {\n\t\t${4:# body...}\n\t}\n# Foreach Loop\nsnippet fore\n\tforeach ${1:x} {${2:#list}} {\n\t\t${3:# body...}\n\t}\n# after ms script...\nsnippet af\n\tafter ${1:ms} ${2:#do something}\n# after cancel id\nsnippet afc\n\tafter cancel ${1:id or script}\n# after idle\nsnippet afi\n\tafter idle ${1:script}\n# after info id\nsnippet afin\n\tafter info ${1:id}\n# Expr\nsnippet exp\n\texpr {${1:#expression here}}\n# Switch\nsnippet sw\n\tswitch ${1:var} {\n\t\t${3:pattern 1} {\n\t\t\t${4:#do something}\n\t\t}\n\t\tdefault {\n\t\t\t${2:#do something}\n\t\t}\n\t}\n# Case\nsnippet ca\n\t${1:pattern} {\n\t\t${2:#do something}\n\t}${3}\n# Namespace eval\nsnippet ns\n\tnamespace eval ${1:path} {${2:#script...}}\n# Namespace current\nsnippet nsc\n\tnamespace current\n"; + +}); + +ace.define("ace/snippets/tcl",["require","exports","module","ace/snippets/tcl.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./tcl.snippets"); +exports.scope = "tcl"; + +}); (function() { + ace.require(["ace/snippets/tcl"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/e0e2b1267a5d4acb4dda3a4a598cd8a5.js b/web/dist/e0e2b1267a5d4acb4dda3a4a598cd8a5.js new file mode 100644 index 00000000..244ed49d --- /dev/null +++ b/web/dist/e0e2b1267a5d4acb4dda3a4a598cd8a5.js @@ -0,0 +1,9 @@ + +; (function() { + ace.require(["ace/snippets/curly"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/e174a2c6143efab40c57c4660d6bf9bb.js b/web/dist/e174a2c6143efab40c57c4660d6bf9bb.js new file mode 100644 index 00000000..ea948ca9 --- /dev/null +++ b/web/dist/e174a2c6143efab40c57c4660d6bf9bb.js @@ -0,0 +1,435 @@ +ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; +var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; +var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; +var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; +var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; +var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; +var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; +var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; +var CssHighlightRules = function () { + var keywordMapper = this.createKeywordMapper({ + "support.function": supportFunction, + "support.constant": supportConstant, + "support.type": supportType, + "support.constant.color": supportConstantColor, + "support.constant.fonts": supportConstantFonts + }, "text", true); + this.$rules = { + "start": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" + }, { + token: "string", + regex: "@(?!viewport)", + next: "media" + }, { + token: "keyword", + regex: "#[a-z0-9-_]+" + }, { + token: "keyword", + regex: "%" + }, { + token: "variable", + regex: "\\.[a-z0-9-_]+" + }, { + token: "string", + regex: ":[a-z0-9-_]+" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant", + regex: "[a-z0-9-_]+" + }, { + caseInsensitive: true + }], + "media": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "start" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + token: "string", + regex: ";", + next: "start" + }, { + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" + }], + "comments": [{ + token: "comment", + regex: "\\/\\*", + push: [{ + token: "comment", + regex: "\\*\\/", + next: "pop" + }, { + defaultToken: "comment" + }] + }], + "ruleset": [{ + regex: "-(webkit|ms|moz|o)-", + token: "text" + }, { + token: "punctuation.operator", + regex: "[:;]" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + include: ["strings", "url", "comments"] + }, { + token: ["constant.numeric", "keyword"], + regex: "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant.numeric", + regex: "#[a-f0-9]{6}" + }, { + token: "constant.numeric", + regex: "#[a-f0-9]{3}" + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"], + regex: pseudoElements + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"], + regex: pseudoClasses + }, { + include: "url" + }, { + token: keywordMapper, + regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" + }, { + caseInsensitive: true + }], + url: [{ + token: "support.function", + regex: "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token: "support.function", + regex: "\\)", + next: "pop" + }, { + defaultToken: "string" + }] + }], + strings: [{ + token: "string.start", + regex: "'", + push: [{ + token: "string.end", + regex: "'|$", + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }, { + token: "string.start", + regex: '"', + push: [{ + token: "string.end", + regex: '"|$', + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], + escapes: [{ + token: "constant.language.escape", + regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ + }] + }; + this.normalizeRules(); +}; +oop.inherits(CssHighlightRules, TextHighlightRules); +exports.CssHighlightRules = CssHighlightRules; + +}); + +ace.define("ace/mode/stylus_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/css_highlight_rules"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY Stylus.tmlanguage (UUID: 60519324-6A3A-4382-9E0B-546993A3869A) */ +"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var CssHighlightRules = require("./css_highlight_rules"); +var StylusHighlightRules = function () { + var keywordMapper = this.createKeywordMapper({ + "support.type": CssHighlightRules.supportType, + "support.function": CssHighlightRules.supportFunction, + "support.constant": CssHighlightRules.supportConstant, + "support.constant.color": CssHighlightRules.supportConstantColor, + "support.constant.fonts": CssHighlightRules.supportConstantFonts + }, "text", true); + this.$rules = { + start: [ + { + token: "comment", + regex: /\/\/.*$/ + }, + { + token: "comment", + regex: /\/\*/, + next: "comment" + }, + { + token: ["entity.name.function.stylus", "text"], + regex: "^([-a-zA-Z_][-\\w]*)?(\\()" + }, + { + token: ["entity.other.attribute-name.class.stylus"], + regex: "\\.-?[_a-zA-Z]+[_a-zA-Z0-9-]*" + }, + { + token: ["entity.language.stylus"], + regex: "^ *&" + }, + { + token: ["variable.language.stylus"], + regex: "(arguments)" + }, + { + token: ["keyword.stylus"], + regex: "@[-\\w]+" + }, + { + token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"], + regex: CssHighlightRules.pseudoElements + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"], + regex: CssHighlightRules.pseudoClasses + }, + { + token: ["entity.name.tag.stylus"], + regex: "(?:\\b)(a|abbr|acronym|address|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|datalist|dd|del|details|dfn|dialog|div|dl|dt|em|eventsource|fieldset|figure|figcaption|footer|form|frame|frameset|(?:h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|label|legend|li|link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|samp|script|section|select|small|span|strike|strong|style|sub|summary|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video)(?:\\b)" + }, + { + token: "constant.numeric", + regex: "#[a-fA-F0-9]{6}" + }, + { + token: "constant.numeric", + regex: "#[a-fA-F0-9]{3}" + }, + { + token: ["punctuation.definition.entity.stylus", "entity.other.attribute-name.id.stylus"], + regex: "(#)([a-zA-Z][a-zA-Z0-9_-]*)" + }, + { + token: "meta.vendor-prefix.stylus", + regex: "-webkit-|-moz\\-|-ms-|-o-" + }, + { + token: "keyword.control.stylus", + regex: "(?:!important|for|in|return|true|false|null|if|else|unless|return)\\b" + }, + { + token: "keyword.operator.stylus", + regex: "!|~|\\+|-|(?:\\*)?\\*|\\/|%|(?:\\.)\\.\\.|<|>|(?:=|:|\\?|\\+|-|\\*|\\/|%|<|>)?=|!=" + }, + { + token: "keyword.operator.stylus", + regex: "(?:in|is(?:nt)?|not)\\b" + }, + { + token: "string", + regex: "'(?=.)", + next: "qstring" + }, { + token: "string", + regex: '"(?=.)', + next: "qqstring" + }, + { + token: "constant.numeric", + regex: CssHighlightRules.numRe + }, + { + token: "keyword", + regex: "(?:ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)\\b" + }, + { + token: keywordMapper, + regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" + } + ], + "comment": [ + { + token: "comment", + regex: "\\*\\/", + next: "start" + }, { + defaultToken: "comment" + } + ], + "qqstring": [ + { + token: "string", + regex: '[^"\\\\]+' + }, + { + token: "string", + regex: "\\\\$", + next: "qqstring" + }, + { + token: "string", + regex: '"|$', + next: "start" + } + ], + "qstring": [ + { + token: "string", + regex: "[^'\\\\]+" + }, + { + token: "string", + regex: "\\\\$", + next: "qstring" + }, + { + token: "string", + regex: "'|$", + next: "start" + } + ] + }; +}; +oop.inherits(StylusHighlightRules, TextHighlightRules); +exports.StylusHighlightRules = StylusHighlightRules; + +}); + +ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var BaseFoldMode = require("./fold_mode").FoldMode; +var Range = require("../../range").Range; +var FoldMode = exports.FoldMode = function () { }; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.getFoldWidgetRange = function (session, foldStyle, row) { + var range = this.indentationBlock(session, row); + if (range) + return range; + var re = /\S/; + var line = session.getLine(row); + var startLevel = line.search(re); + if (startLevel == -1 || line[startLevel] != "#") + return; + var startColumn = line.length; + var maxRow = session.getLength(); + var startRow = row; + var endRow = row; + while (++row < maxRow) { + line = session.getLine(row); + var level = line.search(re); + if (level == -1) + continue; + if (line[level] != "#") + break; + endRow = row; + } + if (endRow > startRow) { + var endColumn = session.getLine(endRow).length; + return new Range(startRow, startColumn, endRow, endColumn); + } + }; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + var indent = line.search(/\S/); + var next = session.getLine(row + 1); + var prev = session.getLine(row - 1); + var prevIndent = prev.search(/\S/); + var nextIndent = next.search(/\S/); + if (indent == -1) { + session.foldWidgets[row - 1] = prevIndent != -1 && prevIndent < nextIndent ? "start" : ""; + return ""; + } + if (prevIndent == -1) { + if (indent == nextIndent && line[indent] == "#" && next[indent] == "#") { + session.foldWidgets[row - 1] = ""; + session.foldWidgets[row + 1] = ""; + return "start"; + } + } + else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { + if (session.getLine(row - 2).search(/\S/) == -1) { + session.foldWidgets[row - 1] = "start"; + session.foldWidgets[row + 1] = ""; + return ""; + } + } + if (prevIndent != -1 && prevIndent < indent) + session.foldWidgets[row - 1] = "start"; + else + session.foldWidgets[row - 1] = ""; + if (indent < nextIndent) + return "start"; + else + return ""; + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/stylus",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/stylus_highlight_rules","ace/mode/folding/coffee"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ +"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var StylusHighlightRules = require("./stylus_highlight_rules").StylusHighlightRules; +var FoldMode = require("./folding/coffee").FoldMode; +var Mode = function () { + this.HighlightRules = StylusHighlightRules; + this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "//"; + this.blockComment = { start: "/*", end: "*/" }; + this.$id = "ace/mode/stylus"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/stylus"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/e174a2c6143efab40c57c4660d6bf9bb.js.gz b/web/dist/e174a2c6143efab40c57c4660d6bf9bb.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..a683bd598458f70fa6e3d9dca4f49dabd911af37 GIT binary patch literal 5776 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 Oa{m{tPc{!iSO5T6sV18M literal 0 HcmV?d00001 diff --git a/web/dist/e2792218bae78a6aef6764de4e61fd82.js b/web/dist/e2792218bae78a6aef6764de4e61fd82.js new file mode 100644 index 00000000..1290585e --- /dev/null +++ b/web/dist/e2792218bae78a6aef6764de4e61fd82.js @@ -0,0 +1,9 @@ + +; (function() { + ace.require(["ace/snippets/json"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/e28135172e9bc8cda916c86776d44203.js b/web/dist/e28135172e9bc8cda916c86776d44203.js new file mode 100644 index 00000000..3df698fc --- /dev/null +++ b/web/dist/e28135172e9bc8cda916c86776d44203.js @@ -0,0 +1,9 @@ + +; (function() { + ace.require(["ace/snippets/raku"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/e306579092c3b7297592a3d1ad67cd20.js b/web/dist/e306579092c3b7297592a3d1ad67cd20.js new file mode 100644 index 00000000..315a2f06 --- /dev/null +++ b/web/dist/e306579092c3b7297592a3d1ad67cd20.js @@ -0,0 +1,18 @@ +ace.define("ace/theme/gob.css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-gob .ace_gutter {\n background: #0B1818;\n color: #03EE03\n}\n\n.ace-gob .ace_print-margin {\n width: 1px;\n background: #131313\n}\n\n.ace-gob {\n background-color: #0B0B0B;\n color: #00FF00\n}\n\n.ace-gob .ace_cursor {\n border-color: rgba(16, 248, 255, 0.90);\n background-color: rgba(16, 240, 248, 0.70);\n opacity: 0.4;\n}\n\n.ace-gob .ace_marker-layer .ace_selection {\n background: rgba(221, 240, 255, 0.20)\n}\n\n.ace-gob.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #141414;\n}\n\n.ace-gob .ace_marker-layer .ace_step {\n background: rgb(16, 128, 0)\n}\n\n.ace-gob .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgba(64, 255, 255, 0.25)\n}\n\n.ace-gob .ace_marker-layer .ace_active-line {\n background: rgba(255, 255, 255, 0.04)\n}\n\n.ace-gob .ace_gutter-active-line {\n background-color: rgba(255, 255, 255, 0.04)\n}\n\n.ace-gob .ace_marker-layer .ace_selected-word {\n border: 1px solid rgba(192, 240, 255, 0.20)\n}\n\n.ace-gob .ace_invisible {\n color: rgba(255, 255, 255, 0.25)\n}\n\n.ace-gob .ace_keyword,\n.ace-gob .ace_meta {\n color: #10D8E8\n}\n\n.ace-gob .ace_constant,\n.ace-gob .ace_constant.ace_character,\n.ace-gob .ace_constant.ace_character.ace_escape,\n.ace-gob .ace_constant.ace_other,\n.ace-gob .ace_heading,\n.ace-gob .ace_markup.ace_heading,\n.ace-gob .ace_support.ace_constant {\n color: #10F0A0\n}\n\n.ace-gob .ace_invalid.ace_illegal {\n color: #F8F8F8;\n background-color: rgba(86, 45, 86, 0.75)\n}\n\n.ace-gob .ace_invalid.ace_deprecated {\n text-decoration: underline;\n font-style: italic;\n color: #20F8C0\n}\n\n.ace-gob .ace_support {\n color: #20E8B0\n}\n\n.ace-gob .ace_fold {\n background-color: #50B8B8;\n border-color: #70F8F8\n}\n\n.ace-gob .ace_support.ace_function {\n color: #00F800\n}\n\n.ace-gob .ace_list,\n.ace-gob .ace_markup.ace_list,\n.ace-gob .ace_storage {\n color: #10FF98\n}\n\n.ace-gob .ace_entity.ace_name.ace_function,\n.ace-gob .ace_meta.ace_tag,\n.ace-gob .ace_variable {\n color: #00F868\n}\n\n.ace-gob .ace_string {\n color: #10F060\n}\n\n.ace-gob .ace_string.ace_regexp {\n color: #20F090;\n}\n\n.ace-gob .ace_comment {\n font-style: italic;\n color: #00E060;\n}\n\n.ace-gob .ace_variable {\n color: #00F888;\n}\n\n.ace-gob .ace_xml-pe {\n color: #488858;\n}\n\n.ace-gob .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWMQERFpYLC1tf0PAAgOAnPnhxyiAAAAAElFTkSuQmCC) right repeat-y\n}\n\n.ace-gob .ace_indent-guide-active {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y;\n}\n"; + +}); + +ace.define("ace/theme/gob",["require","exports","module","ace/theme/gob.css","ace/lib/dom"], function(require, exports, module){exports.isDark = true; +exports.cssClass = "ace-gob"; +exports.cssText = require("./gob.css"); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass, false); + +}); (function() { + ace.require(["ace/theme/gob"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/e4d51c8b4202d444cb39db4e7642d7d9.js b/web/dist/e4d51c8b4202d444cb39db4e7642d7d9.js new file mode 100644 index 00000000..de2c2593 --- /dev/null +++ b/web/dist/e4d51c8b4202d444cb39db4e7642d7d9.js @@ -0,0 +1,9 @@ + +; (function() { + ace.require(["ace/snippets/crystal"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/e543a99512ef5d4029e726a65b8b3cd1.js b/web/dist/e543a99512ef5d4029e726a65b8b3cd1.js new file mode 100644 index 00000000..eec24040 --- /dev/null +++ b/web/dist/e543a99512ef5d4029e726a65b8b3cd1.js @@ -0,0 +1,18 @@ +ace.define("ace/theme/kr_theme.css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-kr-theme .ace_gutter {\n background: #1c1917;\n color: #FCFFE0\n}\n\n.ace-kr-theme .ace_print-margin {\n width: 1px;\n background: #1c1917\n}\n\n.ace-kr-theme {\n background-color: #0B0A09;\n color: #FCFFE0\n}\n\n.ace-kr-theme .ace_cursor {\n color: #FF9900\n}\n\n.ace-kr-theme .ace_marker-layer .ace_selection {\n background: rgba(170, 0, 255, 0.45)\n}\n\n.ace-kr-theme.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #0B0A09;\n}\n\n.ace-kr-theme .ace_marker-layer .ace_step {\n background: rgb(102, 82, 0)\n}\n\n.ace-kr-theme .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgba(255, 177, 111, 0.32)\n}\n\n.ace-kr-theme .ace_marker-layer .ace_active-line {\n background: #38403D\n}\n\n.ace-kr-theme .ace_gutter-active-line {\n background-color : #38403D\n}\n\n.ace-kr-theme .ace_marker-layer .ace_selected-word {\n border: 1px solid rgba(170, 0, 255, 0.45)\n}\n\n.ace-kr-theme .ace_invisible {\n color: rgba(255, 177, 111, 0.32)\n}\n\n.ace-kr-theme .ace_keyword,\n.ace-kr-theme .ace_meta {\n color: #949C8B\n}\n\n.ace-kr-theme .ace_constant,\n.ace-kr-theme .ace_constant.ace_character,\n.ace-kr-theme .ace_constant.ace_character.ace_escape,\n.ace-kr-theme .ace_constant.ace_other {\n color: rgba(210, 117, 24, 0.76)\n}\n\n.ace-kr-theme .ace_invalid {\n color: #F8F8F8;\n background-color: #A41300\n}\n\n.ace-kr-theme .ace_support {\n color: #9FC28A\n}\n\n.ace-kr-theme .ace_support.ace_constant {\n color: #C27E66\n}\n\n.ace-kr-theme .ace_fold {\n background-color: #949C8B;\n border-color: #FCFFE0\n}\n\n.ace-kr-theme .ace_support.ace_function {\n color: #85873A\n}\n\n.ace-kr-theme .ace_storage {\n color: #FFEE80\n}\n\n.ace-kr-theme .ace_string {\n color: rgba(164, 161, 181, 0.8)\n}\n\n.ace-kr-theme .ace_string.ace_regexp {\n color: rgba(125, 255, 192, 0.65)\n}\n\n.ace-kr-theme .ace_comment {\n font-style: italic;\n color: #706D5B\n}\n\n.ace-kr-theme .ace_variable {\n color: #D1A796\n}\n\n.ace-kr-theme .ace_list,\n.ace-kr-theme .ace_markup.ace_list {\n background-color: #0F0040\n}\n\n.ace-kr-theme .ace_variable.ace_language {\n color: #FF80E1\n}\n\n.ace-kr-theme .ace_meta.ace_tag {\n color: #BABD9C\n}\n\n.ace-kr-theme .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYFBXV/8PAAJoAXX4kT2EAAAAAElFTkSuQmCC) right repeat-y\n}\n\n.ace-kr-theme .ace_indent-guide-active {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y;\n}\n"; + +}); + +ace.define("ace/theme/kr_theme",["require","exports","module","ace/theme/kr_theme.css","ace/lib/dom"], function(require, exports, module){exports.isDark = true; +exports.cssClass = "ace-kr-theme"; +exports.cssText = require("./kr_theme.css"); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass, false); + +}); (function() { + ace.require(["ace/theme/kr_theme"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/e57143ce0fcc3e3a435d5ef13d0353a1.js b/web/dist/e57143ce0fcc3e3a435d5ef13d0353a1.js new file mode 100644 index 00000000..8a7a9c7d --- /dev/null +++ b/web/dist/e57143ce0fcc3e3a435d5ef13d0353a1.js @@ -0,0 +1,120 @@ +ace.define("ace/mode/eiffel_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var EiffelHighlightRules = function () { + var keywords = "across|agent|alias|all|attached|as|assign|attribute|check|" + + "class|convert|create|debug|deferred|detachable|do|else|elseif|end|" + + "ensure|expanded|export|external|feature|from|frozen|if|inherit|" + + "inspect|invariant|like|local|loop|not|note|obsolete|old|once|" + + "Precursor|redefine|rename|require|rescue|retry|select|separate|" + + "some|then|undefine|until|variant|when"; + var operatorKeywords = "and|implies|or|xor"; + var languageConstants = "Void"; + var booleanConstants = "True|False"; + var languageVariables = "Current|Result"; + var keywordMapper = this.createKeywordMapper({ + "constant.language": languageConstants, + "constant.language.boolean": booleanConstants, + "variable.language": languageVariables, + "keyword.operator": operatorKeywords, + "keyword": keywords + }, "identifier", true); + var simpleString = /(?:[^"%\b\f\v]|%[A-DFHLNQR-V%'"()<>]|%\/(?:0[xX][\da-fA-F](?:_*[\da-fA-F])*|0[cC][0-7](?:_*[0-7])*|0[bB][01](?:_*[01])*|\d(?:_*\d)*)\/)+?/; + this.$rules = { + "start": [{ + token: "string.quoted.other", + regex: /"\[/, + next: "aligned_verbatim_string" + }, { + token: "string.quoted.other", + regex: /"\{/, + next: "non-aligned_verbatim_string" + }, { + token: "string.quoted.double", + regex: /"(?:[^%\b\f\n\r\v]|%[A-DFHLNQR-V%'"()<>]|%\/(?:0[xX][\da-fA-F](?:_*[\da-fA-F])*|0[cC][0-7](?:_*[0-7])*|0[bB][01](?:_*[01])*|\d(?:_*\d)*)\/)*?"/ + }, { + token: "comment.line.double-dash", + regex: /--.*/ + }, { + token: "constant.character", + regex: /'(?:[^%\b\f\n\r\t\v]|%[A-DFHLNQR-V%'"()<>]|%\/(?:0[xX][\da-fA-F](?:_*[\da-fA-F])*|0[cC][0-7](?:_*[0-7])*|0[bB][01](?:_*[01])*|\d(?:_*\d)*)\/)'/ + }, { + token: "constant.numeric", + regex: /\b0(?:[xX][\da-fA-F](?:_*[\da-fA-F])*|[cC][0-7](?:_*[0-7])*|[bB][01](?:_*[01])*)\b/ + }, { + token: "constant.numeric", + regex: /(?:\d(?:_*\d)*)?\.(?:(?:\d(?:_*\d)*)?[eE][+-]?)?\d(?:_*\d)*|\d(?:_*\d)*\.?/ + }, { + token: "paren.lparen", + regex: /[\[({]|<<|\|\(/ + }, { + token: "paren.rparen", + regex: /[\])}]|>>|\|\)/ + }, { + token: "keyword.operator", + regex: /:=|->|\.(?=\w)|[;,:?]/ + }, { + token: "keyword.operator", + regex: /\\\\|\|\.\.\||\.\.|\/[~\/]?|[><\/]=?|[-+*^=~]/ + }, { + token: function (v) { + var result = keywordMapper(v); + if (result === "identifier" && v === v.toUpperCase()) { + result = "entity.name.type"; + } + return result; + }, + regex: /[a-zA-Z][a-zA-Z\d_]*\b/ + }, { + token: "text", + regex: /\s+/ + } + ], + "aligned_verbatim_string": [{ + token: "string", + regex: /]"/, + next: "start" + }, { + token: "string", + regex: simpleString + } + ], + "non-aligned_verbatim_string": [{ + token: "string.quoted.other", + regex: /}"/, + next: "start" + }, { + token: "string.quoted.other", + regex: simpleString + } + ] + }; +}; +oop.inherits(EiffelHighlightRules, TextHighlightRules); +exports.EiffelHighlightRules = EiffelHighlightRules; + +}); + +ace.define("ace/mode/eiffel",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/eiffel_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var EiffelHighlightRules = require("./eiffel_highlight_rules").EiffelHighlightRules; +var Mode = function () { + this.HighlightRules = EiffelHighlightRules; + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "--"; + this.$id = "ace/mode/eiffel"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/eiffel"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/e6a1d1f679385aaa06472b3ba6a31104.js b/web/dist/e6a1d1f679385aaa06472b3ba6a31104.js new file mode 100644 index 00000000..991264aa --- /dev/null +++ b/web/dist/e6a1d1f679385aaa06472b3ba6a31104.js @@ -0,0 +1,16 @@ +ace.define("ace/snippets/graphqlschema.snippets",["require","exports","module"], function(require, exports, module){module.exports = "# Type Snippet\ntrigger type\nsnippet type\n\ttype ${1:type_name} {\n\t\t${2:type_siblings}\n\t}\n\n# Input Snippet\ntrigger input\nsnippet input\n\tinput ${1:input_name} {\n\t\t${2:input_siblings}\n\t}\n\n# Interface Snippet\ntrigger interface\nsnippet interface\n\tinterface ${1:interface_name} {\n\t\t${2:interface_siblings}\n\t}\n\n# Interface Snippet\ntrigger union\nsnippet union\n\tunion ${1:union_name} = ${2:type} | ${3: type}\n\n# Enum Snippet\ntrigger enum\nsnippet enum\n\tenum ${1:enum_name} {\n\t\t${2:enum_siblings}\n\t}\n"; + +}); + +ace.define("ace/snippets/graphqlschema",["require","exports","module","ace/snippets/graphqlschema.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./graphqlschema.snippets"); +exports.scope = "graphqlschema"; + +}); (function() { + ace.require(["ace/snippets/graphqlschema"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/e6a3aa085b6b9711e9726d59a50c461b.js b/web/dist/e6a3aa085b6b9711e9726d59a50c461b.js new file mode 100644 index 00000000..7457ebe3 --- /dev/null +++ b/web/dist/e6a3aa085b6b9711e9726d59a50c461b.js @@ -0,0 +1,2357 @@ +ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var DocCommentHighlightRules = function () { + this.$rules = { + "start": [{ + token: "comment.doc.tag", + regex: "@[\\w\\d_]+" // TODO: fix email addresses + }, + DocCommentHighlightRules.getTagRule(), + { + defaultToken: "comment.doc", + caseInsensitive: true + }] + }; +}; +oop.inherits(DocCommentHighlightRules, TextHighlightRules); +DocCommentHighlightRules.getTagRule = function (start) { + return { + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" + }; +}; +DocCommentHighlightRules.getStartRule = function (start) { + return { + token: "comment.doc", + regex: "\\/\\*(?=\\*)", + next: start + }; +}; +DocCommentHighlightRules.getEndRule = function (start) { + return { + token: "comment.doc", + regex: "\\*\\/", + next: start + }; +}; +exports.DocCommentHighlightRules = DocCommentHighlightRules; + +}); + +ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; +var JavaScriptHighlightRules = function (options) { + var keywordMapper = this.createKeywordMapper({ + "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|" + // Constructors + "Namespace|QName|XML|XMLList|" + // E4X + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors + "SyntaxError|TypeError|URIError|" + + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions + "isNaN|parseFloat|parseInt|" + + "JSON|Math|" + // Other + "this|arguments|prototype|window|document", + "keyword": "const|yield|import|get|set|async|await|" + + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + + "__parent__|__count__|escape|unescape|with|__proto__|" + + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor", + "storage.type": "const|let|var|function", + "constant.language": "null|Infinity|NaN|undefined", + "support.function": "alert", + "constant.language.boolean": "true|false" + }, "identifier"); + var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; + var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex + "u[0-9a-fA-F]{4}|" + // unicode + "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode + "[0-2][0-7]{0,2}|" + // oct + "3[0-7][0-7]?|" + // oct + "[4-7][0-7]?|" + //oct + ".)"; + this.$rules = { + "no_regex": [ + DocCommentHighlightRules.getStartRule("doc-start"), + comments("no_regex"), + { + token: "string", + regex: "'(?=.)", + next: "qstring" + }, { + token: "string", + regex: '"(?=.)', + next: "qqstring" + }, { + token: "constant.numeric", + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + }, { + token: [ + "storage.type", "punctuation.operator", "support.function", + "punctuation.operator", "entity.name.function", "text", "keyword.operator" + ], + regex: "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe + ")(\\s*)(=)", + next: "function_arguments" + }, { + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", "storage.type", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "entity.name.function", "text", "keyword.operator", "text", "storage.type", + "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(function\\*?)(\\s+)(" + identifierRe + ")(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "entity.name.function", "text", "punctuation.operator", + "text", "storage.type", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "text", "text", "storage.type", "text", "paren.lparen" + ], + regex: "(:)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: "keyword", + regex: "from(?=\\s*('|\"))" + }, { + token: "keyword", + regex: "(?:" + kwBeforeRe + ")\\b", + next: "start" + }, { + token: "support.constant", + regex: /that\b/ + }, { + token: ["storage.type", "punctuation.operator", "support.function.firebug"], + regex: /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ + }, { + token: keywordMapper, + regex: identifierRe + }, { + token: "punctuation.operator", + regex: /[.](?![.])/, + next: "property" + }, { + token: "storage.type", + regex: /=>/, + next: "start" + }, { + token: "keyword.operator", + regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next: "start" + }, { + token: "punctuation.operator", + regex: /[?:,;.]/, + next: "start" + }, { + token: "paren.lparen", + regex: /[\[({]/, + next: "start" + }, { + token: "paren.rparen", + regex: /[\])}]/ + }, { + token: "comment", + regex: /^#!.*$/ + } + ], + property: [{ + token: "text", + regex: "\\s+" + }, { + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()", + next: "function_arguments" + }, { + token: "punctuation.operator", + regex: /[.](?![.])/ + }, { + token: "support.function", + regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ + }, { + token: "support.function.dom", + regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ + }, { + token: "support.constant", + regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ + }, { + token: "identifier", + regex: identifierRe + }, { + regex: "", + token: "empty", + next: "no_regex" + } + ], + "start": [ + DocCommentHighlightRules.getStartRule("doc-start"), + comments("start"), + { + token: "string.regexp", + regex: "\\/", + next: "regex" + }, { + token: "text", + regex: "\\s+|^$", + next: "start" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "regex": [ + { + token: "regexp.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "string.regexp", + regex: "/[sxngimy]*", + next: "no_regex" + }, { + token: "invalid", + regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ + }, { + token: "constant.language.escape", + regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ + }, { + token: "constant.language.delimiter", + regex: /\|/ + }, { + token: "constant.language.escape", + regex: /\[\^?/, + next: "regex_character_class" + }, { + token: "empty", + regex: "$", + next: "no_regex" + }, { + defaultToken: "string.regexp" + } + ], + "regex_character_class": [ + { + token: "regexp.charclass.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "constant.language.escape", + regex: "]", + next: "regex" + }, { + token: "constant.language.escape", + regex: "-" + }, { + token: "empty", + regex: "$", + next: "no_regex" + }, { + defaultToken: "string.regexp.charachterclass" + } + ], + "default_parameter": [ + { + token: "string", + regex: "'(?=.)", + push: [ + { + token: "string", + regex: "'|$", + next: "pop" + }, { + include: "qstring" + } + ] + }, { + token: "string", + regex: '"(?=.)', + push: [ + { + token: "string", + regex: '"|$', + next: "pop" + }, { + include: "qqstring" + } + ] + }, { + token: "constant.language", + regex: "null|Infinity|NaN|undefined" + }, { + token: "constant.numeric", + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + }, { + token: "punctuation.operator", + regex: ",", + next: "function_arguments" + }, { + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "function_arguments": [ + comments("function_arguments"), + { + token: "variable.parameter", + regex: identifierRe + }, { + token: "punctuation.operator", + regex: "," + }, { + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: '"|$', + next: "no_regex" + }, { + defaultToken: "string" + } + ], + "qstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: "'|$", + next: "no_regex" + }, { + defaultToken: "string" + } + ] + }; + if (!options || !options.noES6) { + this.$rules.no_regex.unshift({ + regex: "[{}]", onMatch: function (val, state, stack) { + this.next = val == "{" ? this.nextState : ""; + if (val == "{" && stack.length) { + stack.unshift("start", state); + } + else if (val == "}" && stack.length) { + stack.shift(); + this.next = stack.shift(); + if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) + return "paren.quasi.end"; + } + return val == "{" ? "paren.lparen" : "paren.rparen"; + }, + nextState: "start" + }, { + token: "string.quasi.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedRe + }, { + token: "paren.quasi.start", + regex: /\${/, + push: "start" + }, { + token: "string.quasi.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string.quasi" + }] + }, { + token: ["variable.parameter", "text"], + regex: "(" + identifierRe + ")(\\s*)(?=\\=>)" + }, { + token: "paren.lparen", + regex: "(\\()(?=.+\\s*=>)", + next: "function_arguments" + }, { + token: "variable.language", + regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b" + }); + this.$rules["function_arguments"].unshift({ + token: "keyword.operator", + regex: "=", + next: "default_parameter" + }, { + token: "keyword.operator", + regex: "\\.{3}" + }); + this.$rules["property"].unshift({ + token: "support.function", + regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|" + + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()" + }, { + token: "constant.language", + regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b" + }); + if (!options || options.jsx != false) + JSX.call(this); + } + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]); + this.normalizeRules(); +}; +oop.inherits(JavaScriptHighlightRules, TextHighlightRules); +function JSX() { + var tagRegex = identifierRe.replace("\\d", "\\d\\-"); + var jsxTag = { + onMatch: function (val, state, stack) { + var offset = val.charAt(1) == "/" ? 2 : 1; + if (offset == 1) { + if (state != this.nextState) + stack.unshift(this.next, this.nextState, 0); + else + stack.unshift(this.next); + stack[2]++; + } + else if (offset == 2) { + if (state == this.nextState) { + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.shift(); + stack.shift(); + } + } + } + return [{ + type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", + value: val.slice(0, offset) + }, { + type: "meta.tag.tag-name.xml", + value: val.substr(offset) + }]; + }, + regex: "", + onMatch: function (value, currentState, stack) { + if (currentState == stack[0]) + stack.shift(); + if (value.length == 2) { + if (stack[0] == this.nextState) + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.splice(0, 2); + } + } + this.next = stack[0] || "start"; + return [{ type: this.token, value: value }]; + }, + nextState: "jsx" + }, + jsxJsRule, + comments("jsxAttributes"), + { + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + token: "text.tag-whitespace.xml", + regex: "\\s+" + }, { + token: "string.attribute-value.xml", + regex: "'", + stateName: "jsx_attr_q", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + stateName: "jsx_attr_qq", + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, + jsxTag + ]; + this.$rules.reference = [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }]; +} +function comments(next) { + return [ + { + token: "comment", + regex: /\/\*/, + next: [ + DocCommentHighlightRules.getTagRule(), + { token: "comment", regex: "\\*\\/", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } + ] + }, { + token: "comment", + regex: "\\/\\/", + next: [ + DocCommentHighlightRules.getTagRule(), + { token: "comment", regex: "$|^", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } + ] + } + ]; +} +exports.JavaScriptHighlightRules = JavaScriptHighlightRules; + +}); + +ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) + return false; + return /^\s*\}/.test(input); + }; + this.autoOutdent = function (doc, row) { + var line = doc.getLine(row); + var match = line.match(/^(\s*\})/); + if (!match) + return 0; + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; + var indent = this.$getIndent(doc.getLine(openBracePos.row)); + doc.replace(new Range(row, 0, row, column - 1), indent); + }; + this.$getIndent = function (line) { + return line.match(/^\s*/)[0]; + }; +}).call(MatchingBraceOutdent.prototype); +exports.MatchingBraceOutdent = MatchingBraceOutdent; + +}); + +ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = JavaScriptHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CstyleBehaviour(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "//"; + this.blockComment = { start: "/*", end: "*/" }; + this.$quotes = { '"': '"', "'": "'", "`": "`" }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + var endState = tokenizedLine.state; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + if (state == "start" || state == "no_regex") { + var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); + if (match) { + indent += tab; + } + } + else if (state == "doc-start") { + if (endState == "start" || endState == "no_regex") { + return ""; + } + var match = line.match(/^\s*(\/?)\*/); + if (match) { + if (match[1]) { + indent += " "; + } + indent += "* "; + } + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.createWorker = function (session) { + var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); + worker.attachToDocument(session.getDocument()); + worker.on("annotate", function (results) { + session.setAnnotations(results.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/javascript"; + this.snippetFileId = "ace/snippets/javascript"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; +var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; +var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; +var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; +var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; +var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; +var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; +var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; +var CssHighlightRules = function () { + var keywordMapper = this.createKeywordMapper({ + "support.function": supportFunction, + "support.constant": supportConstant, + "support.type": supportType, + "support.constant.color": supportConstantColor, + "support.constant.fonts": supportConstantFonts + }, "text", true); + this.$rules = { + "start": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" + }, { + token: "string", + regex: "@(?!viewport)", + next: "media" + }, { + token: "keyword", + regex: "#[a-z0-9-_]+" + }, { + token: "keyword", + regex: "%" + }, { + token: "variable", + regex: "\\.[a-z0-9-_]+" + }, { + token: "string", + regex: ":[a-z0-9-_]+" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant", + regex: "[a-z0-9-_]+" + }, { + caseInsensitive: true + }], + "media": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "start" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + token: "string", + regex: ";", + next: "start" + }, { + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" + }], + "comments": [{ + token: "comment", + regex: "\\/\\*", + push: [{ + token: "comment", + regex: "\\*\\/", + next: "pop" + }, { + defaultToken: "comment" + }] + }], + "ruleset": [{ + regex: "-(webkit|ms|moz|o)-", + token: "text" + }, { + token: "punctuation.operator", + regex: "[:;]" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + include: ["strings", "url", "comments"] + }, { + token: ["constant.numeric", "keyword"], + regex: "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant.numeric", + regex: "#[a-f0-9]{6}" + }, { + token: "constant.numeric", + regex: "#[a-f0-9]{3}" + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"], + regex: pseudoElements + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"], + regex: pseudoClasses + }, { + include: "url" + }, { + token: keywordMapper, + regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" + }, { + caseInsensitive: true + }], + url: [{ + token: "support.function", + regex: "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token: "support.function", + regex: "\\)", + next: "pop" + }, { + defaultToken: "string" + }] + }], + strings: [{ + token: "string.start", + regex: "'", + push: [{ + token: "string.end", + regex: "'|$", + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }, { + token: "string.start", + regex: '"', + push: [{ + token: "string.end", + regex: '"|$', + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], + escapes: [{ + token: "constant.language.escape", + regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ + }] + }; + this.normalizeRules(); +}; +oop.inherits(CssHighlightRules, TextHighlightRules); +exports.CssHighlightRules = CssHighlightRules; + +}); + +ace.define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module){"use strict"; +var propertyMap = { + "background": { "#$0": 1 }, + "background-color": { "#$0": 1, "transparent": 1, "fixed": 1 }, + "background-image": { "url('/$0')": 1 }, + "background-repeat": { "repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1 }, + "background-position": { "bottom": 2, "center": 2, "left": 2, "right": 2, "top": 2, "inherit": 2 }, + "background-attachment": { "scroll": 1, "fixed": 1 }, + "background-size": { "cover": 1, "contain": 1 }, + "background-clip": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "background-origin": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "border": { "solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1 }, + "border-color": { "#$0": 1 }, + "border-style": { "solid": 2, "dashed": 2, "dotted": 2, "double": 2, "groove": 2, "hidden": 2, "inherit": 2, "inset": 2, "none": 2, "outset": 2, "ridged": 2 }, + "border-collapse": { "collapse": 1, "separate": 1 }, + "bottom": { "px": 1, "em": 1, "%": 1 }, + "clear": { "left": 1, "right": 1, "both": 1, "none": 1 }, + "color": { "#$0": 1, "rgb(#$00,0,0)": 1 }, + "cursor": { "default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1 }, + "display": { "none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1 }, + "empty-cells": { "show": 1, "hide": 1 }, + "float": { "left": 1, "right": 1, "none": 1 }, + "font-family": { "Arial": 2, "Comic Sans MS": 2, "Consolas": 2, "Courier New": 2, "Courier": 2, "Georgia": 2, "Monospace": 2, "Sans-Serif": 2, "Segoe UI": 2, "Tahoma": 2, "Times New Roman": 2, "Trebuchet MS": 2, "Verdana": 1 }, + "font-size": { "px": 1, "em": 1, "%": 1 }, + "font-weight": { "bold": 1, "normal": 1 }, + "font-style": { "italic": 1, "normal": 1 }, + "font-variant": { "normal": 1, "small-caps": 1 }, + "height": { "px": 1, "em": 1, "%": 1 }, + "left": { "px": 1, "em": 1, "%": 1 }, + "letter-spacing": { "normal": 1 }, + "line-height": { "normal": 1 }, + "list-style-type": { "none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1 }, + "margin": { "px": 1, "em": 1, "%": 1 }, + "margin-right": { "px": 1, "em": 1, "%": 1 }, + "margin-left": { "px": 1, "em": 1, "%": 1 }, + "margin-top": { "px": 1, "em": 1, "%": 1 }, + "margin-bottom": { "px": 1, "em": 1, "%": 1 }, + "max-height": { "px": 1, "em": 1, "%": 1 }, + "max-width": { "px": 1, "em": 1, "%": 1 }, + "min-height": { "px": 1, "em": 1, "%": 1 }, + "min-width": { "px": 1, "em": 1, "%": 1 }, + "overflow": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-x": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-y": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "padding": { "px": 1, "em": 1, "%": 1 }, + "padding-top": { "px": 1, "em": 1, "%": 1 }, + "padding-right": { "px": 1, "em": 1, "%": 1 }, + "padding-bottom": { "px": 1, "em": 1, "%": 1 }, + "padding-left": { "px": 1, "em": 1, "%": 1 }, + "page-break-after": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "page-break-before": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "position": { "absolute": 1, "relative": 1, "fixed": 1, "static": 1 }, + "right": { "px": 1, "em": 1, "%": 1 }, + "table-layout": { "fixed": 1, "auto": 1 }, + "text-decoration": { "none": 1, "underline": 1, "line-through": 1, "blink": 1 }, + "text-align": { "left": 1, "right": 1, "center": 1, "justify": 1 }, + "text-transform": { "capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1 }, + "top": { "px": 1, "em": 1, "%": 1 }, + "vertical-align": { "top": 1, "bottom": 1 }, + "visibility": { "hidden": 1, "visible": 1 }, + "white-space": { "nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1 }, + "width": { "px": 1, "em": 1, "%": 1 }, + "word-spacing": { "normal": 1 }, + "filter": { "alpha(opacity=$0100)": 1 }, + "text-shadow": { "$02px 2px 2px #777": 1 }, + "text-overflow": { "ellipsis-word": 1, "clip": 1, "ellipsis": 1 }, + "-moz-border-radius": 1, + "-moz-border-radius-topright": 1, + "-moz-border-radius-bottomright": 1, + "-moz-border-radius-topleft": 1, + "-moz-border-radius-bottomleft": 1, + "-webkit-border-radius": 1, + "-webkit-border-top-right-radius": 1, + "-webkit-border-top-left-radius": 1, + "-webkit-border-bottom-right-radius": 1, + "-webkit-border-bottom-left-radius": 1, + "-moz-box-shadow": 1, + "-webkit-box-shadow": 1, + "transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-moz-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-webkit-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 } +}; +var CssCompletions = function () { +}; +(function () { + this.completionsDefined = false; + this.defineCompletions = function () { + if (document) { + var style = document.createElement('c').style; + for (var i in style) { + if (typeof style[i] !== 'string') + continue; + var name = i.replace(/[A-Z]/g, function (x) { + return '-' + x.toLowerCase(); + }); + if (!propertyMap.hasOwnProperty(name)) + propertyMap[name] = 1; + } + } + this.completionsDefined = true; + }; + this.getCompletions = function (state, session, pos, prefix) { + if (!this.completionsDefined) { + this.defineCompletions(); + } + if (state === 'ruleset' || session.$mode.$id == "ace/mode/scss") { + var line = session.getLine(pos.row).substr(0, pos.column); + var inParens = /\([^)]*$/.test(line); + if (inParens) { + line = line.substr(line.lastIndexOf('(') + 1); + } + if (/:[^;]+$/.test(line)) { + /([\w\-]+):[^:]*$/.test(line); + return this.getPropertyValueCompletions(state, session, pos, prefix); + } + else { + return this.getPropertyCompletions(state, session, pos, prefix, inParens); + } + } + return []; + }; + this.getPropertyCompletions = function (state, session, pos, prefix, skipSemicolon) { + skipSemicolon = skipSemicolon || false; + var properties = Object.keys(propertyMap); + return properties.map(function (property) { + return { + caption: property, + snippet: property + ': $0' + (skipSemicolon ? '' : ';'), + meta: "property", + score: 1000000 + }; + }); + }; + this.getPropertyValueCompletions = function (state, session, pos, prefix) { + var line = session.getLine(pos.row).substr(0, pos.column); + var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; + if (!property) + return []; + var values = []; + if (property in propertyMap && typeof propertyMap[property] === "object") { + values = Object.keys(propertyMap[property]); + } + return values.map(function (value) { + return { + caption: value, + snippet: value, + meta: "property value", + score: 1000000 + }; + }); + }; +}).call(CssCompletions.prototype); +exports.CssCompletions = CssCompletions; + +}); + +ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Behaviour = require("../behaviour").Behaviour; +var CstyleBehaviour = require("./cstyle").CstyleBehaviour; +var TokenIterator = require("../../token_iterator").TokenIterator; +var CssBehaviour = function () { + this.inherit(CstyleBehaviour); + this.add("colon", "insertion", function (state, action, editor, session, text) { + if (text === ':' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.value.match(/\s+/)) { + token = iterator.stepBackward(); + } + if (token && token.type === 'support.type') { + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + if (rightChar === ':') { + return { + text: '', + selection: [1, 1] + }; + } + if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { + return { + text: ':;', + selection: [1, 1] + }; + } + } + } + }); + this.add("colon", "deletion", function (state, action, editor, session, range) { + var selected = session.doc.getTextRange(range); + if (!range.isMultiLine() && selected === ':') { + var cursor = editor.getCursorPosition(); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.value.match(/\s+/)) { + token = iterator.stepBackward(); + } + if (token && token.type === 'support.type') { + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.end.column, range.end.column + 1); + if (rightChar === ';') { + range.end.column++; + return range; + } + } + } + }); + this.add("semicolon", "insertion", function (state, action, editor, session, text) { + if (text === ';' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + if (rightChar === ';') { + return { + text: '', + selection: [1, 1] + }; + } + } + }); + this.add("!important", "insertion", function (state, action, editor, session, text) { + if (text === '!' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { + return { + text: '!important', + selection: [10, 10] + }; + } + } + }); +}; +oop.inherits(CssBehaviour, CstyleBehaviour); +exports.CssBehaviour = CssBehaviour; + +}); + +ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var CssCompletions = require("./css_completions").CssCompletions; +var CssBehaviour = require("./behaviour/css").CssBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = CssHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CssBehaviour(); + this.$completer = new CssCompletions(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.foldingRules = "cStyle"; + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokens = this.getTokenizer().getLineTokens(line, state).tokens; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + var match = line.match(/^.*\{\s*$/); + if (match) { + indent += tab; + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.getCompletions = function (state, session, pos, prefix) { + return this.$completer.getCompletions(state, session, pos, prefix); + }; + this.createWorker = function (session) { + var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); + worker.attachToDocument(session.getDocument()); + worker.on("annotate", function (e) { + session.setAnnotations(e.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/css"; + this.snippetFileId = "ace/snippets/css"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var XmlHighlightRules = function (normalize) { + var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; + this.$rules = { + start: [ + { token: "string.cdata.xml", regex: "<\\!\\[CDATA\\[", next: "cdata" }, + { + token: ["punctuation.instruction.xml", "keyword.instruction.xml"], + regex: "(<\\?)(" + tagRegex + ")", next: "processing_instruction" + }, + { token: "comment.start.xml", regex: "<\\!--", next: "comment" }, + { + token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], + regex: "(<\\!)(DOCTYPE)(?=[\\s])", next: "doctype", caseInsensitive: true + }, + { include: "tag" }, + { token: "text.end-tag-open.xml", regex: "", + next: "start" + }], + doctype: [ + { include: "whitespace" }, + { include: "string" }, + { token: "xml-pe.doctype.xml", regex: ">", next: "start" }, + { token: "xml-pe.xml", regex: "[-_a-zA-Z0-9:]+" }, + { token: "punctuation.int-subset", regex: "\\[", push: "int_subset" } + ], + int_subset: [{ + token: "text.xml", + regex: "\\s+" + }, { + token: "punctuation.int-subset.xml", + regex: "]", + next: "pop" + }, { + token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], + regex: "(<\\!)(" + tagRegex + ")", + push: [{ + token: "text", + regex: "\\s+" + }, + { + token: "punctuation.markup-decl.xml", + regex: ">", + next: "pop" + }, + { include: "string" }] + }], + cdata: [ + { token: "string.cdata.xml", regex: "\\]\\]>", next: "start" }, + { token: "text.xml", regex: "\\s+" }, + { token: "text.xml", regex: "(?:[^\\]]|\\](?!\\]>))+" } + ], + comment: [ + { token: "comment.end.xml", regex: "-->", next: "start" }, + { defaultToken: "comment.xml" } + ], + reference: [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + attr_reference: [{ + token: "constant.language.escape.reference.attribute-value.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + tag: [{ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], + regex: "(?:(<)|(", next: "start" } + ] + }], + tag_whitespace: [ + { token: "text.tag-whitespace.xml", regex: "\\s+" } + ], + whitespace: [ + { token: "text.whitespace.xml", regex: "\\s+" } + ], + string: [{ + token: "string.xml", + regex: "'", + push: [ + { token: "string.xml", regex: "'", next: "pop" }, + { defaultToken: "string.xml" } + ] + }, { + token: "string.xml", + regex: '"', + push: [ + { token: "string.xml", regex: '"', next: "pop" }, + { defaultToken: "string.xml" } + ] + }], + attributes: [{ + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + include: "tag_whitespace" + }, { + include: "attribute_value" + }], + attribute_value: [{ + token: "string.attribute-value.xml", + regex: "'", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }] + }; + if (this.constructor === XmlHighlightRules) + this.normalizeRules(); +}; +(function () { + this.embedTagRules = function (HighlightRules, prefix, tag) { + this.$rules.tag.unshift({ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(<)(" + tag + "(?=\\s|>|$))", + next: [ + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: prefix + "start" } + ] + }); + this.$rules[tag + "-end"] = [ + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start", + onMatch: function (value, currentState, stack) { + stack.splice(0); + return this.token; + } } + ]; + this.embedRules(HighlightRules, prefix, [{ + token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(|$))", + next: tag + "-end" + }, { + token: "string.cdata.xml", + regex: "<\\!\\[CDATA\\[" + }, { + token: "string.cdata.xml", + regex: "\\]\\]>" + }]); + }; +}).call(TextHighlightRules.prototype); +oop.inherits(XmlHighlightRules, TextHighlightRules); +exports.XmlHighlightRules = XmlHighlightRules; + +}); + +ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; +var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; +var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; +var tagMap = lang.createMap({ + a: 'anchor', + button: 'form', + form: 'form', + img: 'image', + input: 'form', + label: 'form', + option: 'form', + script: 'script', + select: 'form', + textarea: 'form', + style: 'style', + table: 'table', + tbody: 'table', + td: 'table', + tfoot: 'table', + th: 'table', + tr: 'table' +}); +var HtmlHighlightRules = function () { + XmlHighlightRules.call(this); + this.addRules({ + attributes: [{ + include: "tag_whitespace" + }, { + token: "entity.other.attribute-name.xml", + regex: "[-_a-zA-Z0-9:.]+" + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=", + push: [{ + include: "tag_whitespace" + }, { + token: "string.unquoted.attribute-value.html", + regex: "[^<>='\"`\\s]+", + next: "pop" + }, { + token: "empty", + regex: "", + next: "pop" + }] + }, { + include: "attribute_value" + }], + tag: [{ + token: function (start, tag) { + var group = tagMap[tag]; + return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", + "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; + }, + regex: "(", next: "start" } + ] + }); + this.embedTagRules(CssHighlightRules, "css-", "style"); + this.embedTagRules(new JavaScriptHighlightRules({ jsx: false }).getRules(), "js-", "script"); + if (this.constructor === HtmlHighlightRules) + this.normalizeRules(); +}; +oop.inherits(HtmlHighlightRules, XmlHighlightRules); +exports.HtmlHighlightRules = HtmlHighlightRules; + +}); + +ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Behaviour = require("../behaviour").Behaviour; +var TokenIterator = require("../../token_iterator").TokenIterator; +var lang = require("../../lib/lang"); +function is(token, type) { + return token && token.type.lastIndexOf(type + ".xml") > -1; +} +var XmlBehaviour = function () { + this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { + if (text == '"' || text == "'") { + var quote = text; + var selected = session.doc.getTextRange(editor.getSelectionRange()); + if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { + return { + text: quote + selected + quote, + selection: false + }; + } + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { + return { + text: "", + selection: [1, 1] + }; + } + if (!token) + token = iterator.stepBackward(); + if (!token) + return; + while (is(token, "tag-whitespace") || is(token, "whitespace")) { + token = iterator.stepBackward(); + } + var rightSpace = !rightChar || rightChar.match(/\s/); + if (is(token, "attribute-equals") && (rightSpace || rightChar == '>') || (is(token, "decl-attribute-equals") && (rightSpace || rightChar == '?'))) { + return { + text: quote + quote, + selection: [1, 1] + }; + } + } + }); + this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { + var selected = session.doc.getTextRange(range); + if (!range.isMultiLine() && (selected == '"' || selected == "'")) { + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.start.column + 1, range.start.column + 2); + if (rightChar == selected) { + range.end.column++; + return range; + } + } + }); + this.add("autoclosing", "insertion", function (state, action, editor, session, text) { + if (text == '>') { + var position = editor.getSelectionRange().start; + var iterator = new TokenIterator(session, position.row, position.column); + var token = iterator.getCurrentToken() || iterator.stepBackward(); + if (!token || !(is(token, "tag-name") || is(token, "tag-whitespace") || is(token, "attribute-name") || is(token, "attribute-equals") || is(token, "attribute-value"))) + return; + if (is(token, "reference.attribute-value")) + return; + if (is(token, "attribute-value")) { + var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; + if (position.column < tokenEndColumn) + return; + if (position.column == tokenEndColumn) { + var nextToken = iterator.stepForward(); + if (nextToken && is(nextToken, "attribute-value")) + return; + iterator.stepBackward(); + } + } + if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) + return; + while (!is(token, "tag-name")) { + token = iterator.stepBackward(); + if (token.value == "<") { + token = iterator.stepForward(); + break; + } + } + var tokenRow = iterator.getCurrentTokenRow(); + var tokenColumn = iterator.getCurrentTokenColumn(); + if (is(iterator.stepBackward(), "end-tag-open")) + return; + var element = token.value; + if (tokenRow == position.row) + element = element.substring(0, position.column - tokenColumn); + if (this.voidElements.hasOwnProperty(element.toLowerCase())) + return; + return { + text: ">" + "", + selection: [1, 1] + }; + } + }); + this.add("autoindent", "insertion", function (state, action, editor, session, text) { + if (text == "\n") { + var cursor = editor.getCursorPosition(); + var line = session.getLine(cursor.row); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.type.indexOf("tag-close") !== -1) { + if (token.value == "/>") + return; + while (token && token.type.indexOf("tag-name") === -1) { + token = iterator.stepBackward(); + } + if (!token) { + return; + } + var tag = token.value; + var row = iterator.getCurrentTokenRow(); + token = iterator.stepBackward(); + if (!token || token.type.indexOf("end-tag") !== -1) { + return; + } + if (this.voidElements && !this.voidElements[tag]) { + var nextToken = session.getTokenAt(cursor.row, cursor.column + 1); + var line = session.getLine(row); + var nextIndent = this.$getIndent(line); + var indent = nextIndent + session.getTabString(); + if (nextToken && nextToken.value === " -1; +} +(function () { + this.getFoldWidget = function (session, foldStyle, row) { + var tag = this._getFirstTagInLine(session, row); + if (!tag) + return this.getCommentFoldWidget(session, row); + if (tag.closing || (!tag.tagName && tag.selfClosing)) + return foldStyle === "markbeginend" ? "end" : ""; + if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) + return ""; + if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) + return ""; + return "start"; + }; + this.getCommentFoldWidget = function (session, row) { + if (/comment/.test(session.getState(row)) && /'; + break; + } + } + return tag; + } + else if (is(token, "tag-close")) { + tag.selfClosing = token.value == '/>'; + return tag; + } + tag.start.column += token.value.length; + } + return null; + }; + this._findEndTagInLine = function (session, row, tagName, startColumn) { + var tokens = session.getTokens(row); + var column = 0; + for (var i = 0; i < tokens.length; i++) { + var token = tokens[i]; + column += token.value.length; + if (column < startColumn) + continue; + if (is(token, "end-tag-open")) { + token = tokens[i + 1]; + if (token && token.value == tagName) + return true; + } + } + return false; + }; + this.getFoldWidgetRange = function (session, foldStyle, row) { + var tags = session.getMatchingTags({ row: row, column: 0 }); + if (tags) { + return new Range(tags.openTag.end.row, tags.openTag.end.column, tags.closeTag.start.row, tags.closeTag.start.column); + } + else { + return this.getCommentFoldWidget(session, row) + && session.getCommentFoldRange(row, session.getLine(row).length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var MixedFoldMode = require("./mixed").FoldMode; +var XmlFoldMode = require("./xml").FoldMode; +var CStyleFoldMode = require("./cstyle").FoldMode; +var FoldMode = exports.FoldMode = function (voidElements, optionalTags) { + MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { + "js-": new CStyleFoldMode(), + "css-": new CStyleFoldMode() + }); +}; +oop.inherits(FoldMode, MixedFoldMode); + +}); + +ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module){"use strict"; +var TokenIterator = require("../token_iterator").TokenIterator; +var commonAttributes = [ + "accesskey", + "class", + "contenteditable", + "contextmenu", + "dir", + "draggable", + "dropzone", + "hidden", + "id", + "inert", + "itemid", + "itemprop", + "itemref", + "itemscope", + "itemtype", + "lang", + "spellcheck", + "style", + "tabindex", + "title", + "translate" +]; +var eventAttributes = [ + "onabort", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextmenu", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onmousewheel", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onscroll", + "onseeked", + "onseeking", + "onselect", + "onshow", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "onvolumechange", + "onwaiting" +]; +var globalAttributes = commonAttributes.concat(eventAttributes); +var attributeMap = { + "a": { "href": 1, "target": { "_blank": 1, "top": 1 }, "ping": 1, "rel": { "nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1 }, "media": 1, "hreflang": 1, "type": 1 }, + "abbr": {}, + "address": {}, + "area": { "shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1 }, + "article": { "pubdate": 1 }, + "aside": {}, + "audio": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "b": {}, + "base": { "href": 1, "target": 1 }, + "bdi": {}, + "bdo": {}, + "blockquote": { "cite": 1 }, + "body": { "onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1 }, + "br": {}, + "button": { "autofocus": 1, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": { "button": 1, "submit": 1 } }, + "canvas": { "width": 1, "height": 1 }, + "caption": {}, + "cite": {}, + "code": {}, + "col": { "span": 1 }, + "colgroup": { "span": 1 }, + "command": { "type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1 }, + "data": {}, + "datalist": {}, + "dd": {}, + "del": { "cite": 1, "datetime": 1 }, + "details": { "open": 1 }, + "dfn": {}, + "dialog": { "open": 1 }, + "div": {}, + "dl": {}, + "dt": {}, + "em": {}, + "embed": { "src": 1, "height": 1, "width": 1, "type": 1 }, + "fieldset": { "disabled": 1, "form": 1, "name": 1 }, + "figcaption": {}, + "figure": {}, + "footer": {}, + "form": { "accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": { "multipart/form-data": 1, "application/x-www-form-urlencoded": 1 }, "method": { "get": 1, "post": 1 }, "name": 1, "novalidate": 1, "target": { "_blank": 1, "top": 1 } }, + "h1": {}, + "h2": {}, + "h3": {}, + "h4": {}, + "h5": {}, + "h6": {}, + "head": {}, + "header": {}, + "hr": {}, + "html": { "manifest": 1 }, + "i": {}, + "iframe": { "name": 1, "src": 1, "height": 1, "width": 1, "sandbox": { "allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1 }, "seamless": { "seamless": 1 } }, + "img": { "alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1 }, + "input": { + "type": { "text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1 }, + "accept": 1, "alt": 1, "autocomplete": { "on": 1, "off": 1 }, "autofocus": { "autofocus": 1 }, "checked": { "checked": 1 }, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": { "application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1 }, "formmethod": { "get": 1, "post": 1 }, "formnovalidate": { "formnovalidate": 1 }, "formtarget": { "_blank": 1, "_self": 1, "_parent": 1, "_top": 1 }, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": { "multiple": 1 }, "name": 1, "pattern": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1 + }, + "ins": { "cite": 1, "datetime": 1 }, + "kbd": {}, + "keygen": { "autofocus": 1, "challenge": { "challenge": 1 }, "disabled": { "disabled": 1 }, "form": 1, "keytype": { "rsa": 1, "dsa": 1, "ec": 1 }, "name": 1 }, + "label": { "form": 1, "for": 1 }, + "legend": {}, + "li": { "value": 1 }, + "link": { "href": 1, "hreflang": 1, "rel": { "stylesheet": 1, "icon": 1 }, "media": { "all": 1, "screen": 1, "print": 1 }, "type": { "text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1 }, "sizes": 1 }, + "main": {}, + "map": { "name": 1 }, + "mark": {}, + "math": {}, + "menu": { "type": 1, "label": 1 }, + "meta": { "http-equiv": { "content-type": 1 }, "name": { "description": 1, "keywords": 1 }, "content": { "text/html; charset=UTF-8": 1 }, "charset": 1 }, + "meter": { "value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1 }, + "nav": {}, + "noscript": { "href": 1 }, + "object": { "param": 1, "data": 1, "type": 1, "height": 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1 }, + "ol": { "start": 1, "reversed": 1 }, + "optgroup": { "disabled": 1, "label": 1 }, + "option": { "disabled": 1, "selected": 1, "label": 1, "value": 1 }, + "output": { "for": 1, "form": 1, "name": 1 }, + "p": {}, + "param": { "name": 1, "value": 1 }, + "pre": {}, + "progress": { "value": 1, "max": 1 }, + "q": { "cite": 1 }, + "rp": {}, + "rt": {}, + "ruby": {}, + "s": {}, + "samp": {}, + "script": { "charset": 1, "type": { "text/javascript": 1 }, "src": 1, "defer": 1, "async": 1 }, + "select": { "autofocus": 1, "disabled": 1, "form": 1, "multiple": { "multiple": 1 }, "name": 1, "size": 1, "readonly": { "readonly": 1 } }, + "small": {}, + "source": { "src": 1, "type": 1, "media": 1 }, + "span": {}, + "strong": {}, + "style": { "type": 1, "media": { "all": 1, "screen": 1, "print": 1 }, "scoped": 1 }, + "sub": {}, + "sup": {}, + "svg": {}, + "table": { "summary": 1 }, + "tbody": {}, + "td": { "headers": 1, "rowspan": 1, "colspan": 1 }, + "textarea": { "autofocus": { "autofocus": 1 }, "disabled": { "disabled": 1 }, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "rows": 1, "cols": 1, "wrap": { "on": 1, "off": 1, "hard": 1, "soft": 1 } }, + "tfoot": {}, + "th": { "headers": 1, "rowspan": 1, "colspan": 1, "scope": 1 }, + "thead": {}, + "time": { "datetime": 1 }, + "title": {}, + "tr": {}, + "track": { "kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1 }, + "section": {}, + "summary": {}, + "u": {}, + "ul": {}, + "var": {}, + "video": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "width": 1, "height": 1, "poster": 1, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "wbr": {} +}; +var elements = Object.keys(attributeMap); +function is(token, type) { + return token.type.lastIndexOf(type + ".xml") > -1; +} +function findTagName(session, pos) { + var iterator = new TokenIterator(session, pos.row, pos.column); + var token = iterator.getCurrentToken(); + while (token && !is(token, "tag-name")) { + token = iterator.stepBackward(); + } + if (token) + return token.value; +} +function findAttributeName(session, pos) { + var iterator = new TokenIterator(session, pos.row, pos.column); + var token = iterator.getCurrentToken(); + while (token && !is(token, "attribute-name")) { + token = iterator.stepBackward(); + } + if (token) + return token.value; +} +var HtmlCompletions = function () { +}; +(function () { + this.getCompletions = function (state, session, pos, prefix) { + var token = session.getTokenAt(pos.row, pos.column); + if (!token) + return []; + if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) + return this.getTagCompletions(state, session, pos, prefix); + if (is(token, "tag-whitespace") || is(token, "attribute-name")) + return this.getAttributeCompletions(state, session, pos, prefix); + if (is(token, "attribute-value")) + return this.getAttributeValueCompletions(state, session, pos, prefix); + var line = session.getLine(pos.row).substr(0, pos.column); + if (/&[a-z]*$/i.test(line)) + return this.getHTMLEntityCompletions(state, session, pos, prefix); + return []; + }; + this.getTagCompletions = function (state, session, pos, prefix) { + return elements.map(function (element) { + return { + value: element, + meta: "tag", + score: 1000000 + }; + }); + }; + this.getAttributeCompletions = function (state, session, pos, prefix) { + var tagName = findTagName(session, pos); + if (!tagName) + return []; + var attributes = globalAttributes; + if (tagName in attributeMap) { + attributes = attributes.concat(Object.keys(attributeMap[tagName])); + } + return attributes.map(function (attribute) { + return { + caption: attribute, + snippet: attribute + '="$0"', + meta: "attribute", + score: 1000000 + }; + }); + }; + this.getAttributeValueCompletions = function (state, session, pos, prefix) { + var tagName = findTagName(session, pos); + var attributeName = findAttributeName(session, pos); + if (!tagName) + return []; + var values = []; + if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { + values = Object.keys(attributeMap[tagName][attributeName]); + } + return values.map(function (value) { + return { + caption: value, + snippet: value, + meta: "attribute value", + score: 1000000 + }; + }); + }; + this.getHTMLEntityCompletions = function (state, session, pos, prefix) { + var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;']; + return values.map(function (value) { + return { + caption: value, + snippet: value, + meta: "html entity", + score: 1000000 + }; + }); + }; +}).call(HtmlCompletions.prototype); +exports.HtmlCompletions = HtmlCompletions; + +}); + +ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextMode = require("./text").Mode; +var JavaScriptMode = require("./javascript").Mode; +var CssMode = require("./css").Mode; +var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; +var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; +var HtmlFoldMode = require("./folding/html").FoldMode; +var HtmlCompletions = require("./html_completions").HtmlCompletions; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; +var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; +var Mode = function (options) { + this.fragmentContext = options && options.fragmentContext; + this.HighlightRules = HtmlHighlightRules; + this.$behaviour = new XmlBehaviour(); + this.$completer = new HtmlCompletions(); + this.createModeDelegates({ + "js-": JavaScriptMode, + "css-": CssMode + }); + this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); +}; +oop.inherits(Mode, TextMode); +(function () { + this.blockComment = { start: "" }; + this.voidElements = lang.arrayToMap(voidElements); + this.getNextLineIndent = function (state, line, tab) { + return this.$getIndent(line); + }; + this.checkOutdent = function (state, line, input) { + return false; + }; + this.getCompletions = function (state, session, pos, prefix) { + return this.$completer.getCompletions(state, session, pos, prefix); + }; + this.createWorker = function (session) { + if (this.constructor != Mode) + return; + var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker"); + worker.attachToDocument(session.getDocument()); + if (this.fragmentContext) + worker.call("setOptions", [{ context: this.fragmentContext }]); + worker.on("error", function (e) { + session.setAnnotations(e.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/html"; + this.snippetFileId = "ace/snippets/html"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +ace.define("ace/mode/twig_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/html_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var TwigHighlightRules = function () { + HtmlHighlightRules.call(this); + var tags = "autoescape|block|do|embed|extends|filter|flush|for|from|if|import|include|macro|sandbox|set|spaceless|use|verbatim"; + tags = tags + "|end" + tags.replace(/\|/g, "|end"); + var filters = "abs|batch|capitalize|convert_encoding|date|date_modify|default|e|escape|first|format|join|json_encode|keys|last|length|lower|merge|nl2br|number_format|raw|replace|reverse|slice|sort|split|striptags|title|trim|upper|url_encode"; + var functions = "attribute|constant|cycle|date|dump|parent|random|range|template_from_string"; + var tests = "constant|divisibleby|sameas|defined|empty|even|iterable|odd"; + var constants = "null|none|true|false"; + var operators = "b-and|b-xor|b-or|in|is|and|or|not"; + var keywordMapper = this.createKeywordMapper({ + "keyword.control.twig": tags, + "support.function.twig": [filters, functions, tests].join("|"), + "keyword.operator.twig": operators, + "constant.language.twig": constants + }, "identifier"); + for (var rule in this.$rules) { + this.$rules[rule].unshift({ + token: "variable.other.readwrite.local.twig", + regex: "\\{\\{-?", + push: "twig-start" + }, { + token: "meta.tag.twig", + regex: "\\{%-?", + push: "twig-start" + }, { + token: "comment.block.twig", + regex: "\\{#-?", + push: "twig-comment" + }); + } + this.$rules["twig-comment"] = [{ + token: "comment.block.twig", + regex: ".*-?#\\}", + next: "pop" + }]; + this.$rules["twig-start"] = [{ + token: "variable.other.readwrite.local.twig", + regex: "-?\\}\\}", + next: "pop" + }, { + token: "meta.tag.twig", + regex: "-?%\\}", + next: "pop" + }, { + token: "string", + regex: "'", + next: "twig-qstring" + }, { + token: "string", + regex: '"', + next: "twig-qqstring" + }, { + token: "constant.numeric", + regex: "0[xX][0-9a-fA-F]+\\b" + }, { + token: "constant.numeric", + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token: "constant.language.boolean", + regex: "(?:true|false)\\b" + }, { + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token: "keyword.operator.assignment", + regex: "=|~" + }, { + token: "keyword.operator.comparison", + regex: "==|!=|<|>|>=|<=|===" + }, { + token: "keyword.operator.arithmetic", + regex: "\\+|-|/|%|//|\\*|\\*\\*" + }, { + token: "keyword.operator.other", + regex: "\\.\\.|\\|" + }, { + token: "punctuation.operator", + regex: /\?|:|,|;|\./ + }, { + token: "paren.lparen", + regex: /[\[\({]/ + }, { + token: "paren.rparen", + regex: /[\])}]/ + }, { + token: "text", + regex: "\\s+" + }]; + this.$rules["twig-qqstring"] = [{ + token: "constant.language.escape", + regex: /\\[\\"$#ntr]|#{[^"}]*}/ + }, { + token: "string", + regex: '"', + next: "twig-start" + }, { + defaultToken: "string" + } + ]; + this.$rules["twig-qstring"] = [{ + token: "constant.language.escape", + regex: /\\[\\'ntr]}/ + }, { + token: "string", + regex: "'", + next: "twig-start" + }, { + defaultToken: "string" + } + ]; + this.normalizeRules(); +}; +oop.inherits(TwigHighlightRules, TextHighlightRules); +exports.TwigHighlightRules = TwigHighlightRules; + +}); + +ace.define("ace/mode/twig",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/twig_highlight_rules","ace/mode/matching_brace_outdent"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var HtmlMode = require("./html").Mode; +var TwigHighlightRules = require("./twig_highlight_rules").TwigHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var Mode = function () { + HtmlMode.call(this); + this.HighlightRules = TwigHighlightRules; + this.$outdent = new MatchingBraceOutdent(); +}; +oop.inherits(Mode, HtmlMode); +(function () { + this.blockComment = { start: "{#", end: "#}" }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + var endState = tokenizedLine.state; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + if (state == "start") { + var match = line.match(/^.*[\{\(\[]\s*$/); + if (match) { + indent += tab; + } + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.$id = "ace/mode/twig"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/twig"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/e6a3aa085b6b9711e9726d59a50c461b.js.gz b/web/dist/e6a3aa085b6b9711e9726d59a50c461b.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..62688e221e9764da9818d89a1bd6ee9540d61f8f GIT binary patch literal 22744 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 j 0) { + if (count & 1) + result += string; + if (count >>= 1) + string += string; + } + return result; +}; +var trimBeginRegexp = /^\s\s*/; +var trimEndRegexp = /\s\s*$/; +exports.stringTrimLeft = function (string) { + return string.replace(trimBeginRegexp, ''); +}; +exports.stringTrimRight = function (string) { + return string.replace(trimEndRegexp, ''); +}; +exports.copyObject = function (obj) { + var copy = {}; + for (var key in obj) { + copy[key] = obj[key]; + } + return copy; +}; +exports.copyArray = function (array) { + var copy = []; + for (var i = 0, l = array.length; i < l; i++) { + if (array[i] && typeof array[i] == "object") + copy[i] = this.copyObject(array[i]); + else + copy[i] = array[i]; + } + return copy; +}; +exports.deepCopy = function deepCopy(obj) { + if (typeof obj !== "object" || !obj) + return obj; + var copy; + if (Array.isArray(obj)) { + copy = []; + for (var key = 0; key < obj.length; key++) { + copy[key] = deepCopy(obj[key]); + } + return copy; + } + if (Object.prototype.toString.call(obj) !== "[object Object]") + return obj; + copy = {}; + for (var key in obj) + copy[key] = deepCopy(obj[key]); + return copy; +}; +exports.arrayToMap = function (arr) { + var map = {}; + for (var i = 0; i < arr.length; i++) { + map[arr[i]] = 1; + } + return map; +}; +exports.createMap = function (props) { + var map = Object.create(null); + for (var i in props) { + map[i] = props[i]; + } + return map; +}; +exports.arrayRemove = function (array, value) { + for (var i = 0; i <= array.length; i++) { + if (value === array[i]) { + array.splice(i, 1); + } + } +}; +exports.escapeRegExp = function (str) { + return str.replace(/([.*+?^${}()|[\]\/\\])/g, '\\$1'); +}; +exports.escapeHTML = function (str) { + return ("" + str).replace(/&/g, "&").replace(/"/g, """).replace(/'/g, "'").replace(/= 0 && position.row < docLines.length && + position.column >= 0 && position.column <= docLines[position.row].length; +} +function validateDelta(docLines, delta) { + if (delta.action != "insert" && delta.action != "remove") + throwDeltaError(delta, "delta.action must be 'insert' or 'remove'"); + if (!(delta.lines instanceof Array)) + throwDeltaError(delta, "delta.lines must be an Array"); + if (!delta.start || !delta.end) + throwDeltaError(delta, "delta.start/end must be an present"); + var start = delta.start; + if (!positionInDocument(docLines, delta.start)) + throwDeltaError(delta, "delta.start must be contained in document"); + var end = delta.end; + if (delta.action == "remove" && !positionInDocument(docLines, end)) + throwDeltaError(delta, "delta.end must contained in document for 'remove' actions"); + var numRangeRows = end.row - start.row; + var numRangeLastLineChars = (end.column - (numRangeRows == 0 ? start.column : 0)); + if (numRangeRows != delta.lines.length - 1 || delta.lines[numRangeRows].length != numRangeLastLineChars) + throwDeltaError(delta, "delta.range must match delta lines"); +} +exports.applyDelta = function (docLines, delta, doNotValidate) { + var row = delta.start.row; + var startColumn = delta.start.column; + var line = docLines[row] || ""; + switch (delta.action) { + case "insert": + var lines = delta.lines; + if (lines.length === 1) { + docLines[row] = line.substring(0, startColumn) + delta.lines[0] + line.substring(startColumn); + } + else { + var args = [row, 1].concat(delta.lines); + docLines.splice.apply(docLines, args); + docLines[row] = line.substring(0, startColumn) + docLines[row]; + docLines[row + delta.lines.length - 1] += line.substring(startColumn); + } + break; + case "remove": + var endColumn = delta.end.column; + var endRow = delta.end.row; + if (row === endRow) { + docLines[row] = line.substring(0, startColumn) + line.substring(endColumn); + } + else { + docLines.splice(row, endRow - row + 1, line.substring(0, startColumn) + docLines[endRow].substring(endColumn)); + } + break; + } +}; + +}); + +ace.define("ace/lib/event_emitter",[], function(require, exports, module){"use strict"; +var EventEmitter = {}; +var stopPropagation = function () { this.propagationStopped = true; }; +var preventDefault = function () { this.defaultPrevented = true; }; +EventEmitter._emit = + EventEmitter._dispatchEvent = function (eventName, e) { + this._eventRegistry || (this._eventRegistry = {}); + this._defaultHandlers || (this._defaultHandlers = {}); + var listeners = this._eventRegistry[eventName] || []; + var defaultHandler = this._defaultHandlers[eventName]; + if (!listeners.length && !defaultHandler) + return; + if (typeof e != "object" || !e) + e = {}; + if (!e.type) + e.type = eventName; + if (!e.stopPropagation) + e.stopPropagation = stopPropagation; + if (!e.preventDefault) + e.preventDefault = preventDefault; + listeners = listeners.slice(); + for (var i = 0; i < listeners.length; i++) { + listeners[i](e, this); + if (e.propagationStopped) + break; + } + if (defaultHandler && !e.defaultPrevented) + return defaultHandler(e, this); + }; +EventEmitter._signal = function (eventName, e) { + var listeners = (this._eventRegistry || {})[eventName]; + if (!listeners) + return; + listeners = listeners.slice(); + for (var i = 0; i < listeners.length; i++) + listeners[i](e, this); +}; +EventEmitter.once = function (eventName, callback) { + var _self = this; + this.on(eventName, function newCallback() { + _self.off(eventName, newCallback); + callback.apply(null, arguments); + }); + if (!callback) { + return new Promise(function (resolve) { + callback = resolve; + }); + } +}; +EventEmitter.setDefaultHandler = function (eventName, callback) { + var handlers = this._defaultHandlers; + if (!handlers) + handlers = this._defaultHandlers = { _disabled_: {} }; + if (handlers[eventName]) { + var old = handlers[eventName]; + var disabled = handlers._disabled_[eventName]; + if (!disabled) + handlers._disabled_[eventName] = disabled = []; + disabled.push(old); + var i = disabled.indexOf(callback); + if (i != -1) + disabled.splice(i, 1); + } + handlers[eventName] = callback; +}; +EventEmitter.removeDefaultHandler = function (eventName, callback) { + var handlers = this._defaultHandlers; + if (!handlers) + return; + var disabled = handlers._disabled_[eventName]; + if (handlers[eventName] == callback) { + if (disabled) + this.setDefaultHandler(eventName, disabled.pop()); + } + else if (disabled) { + var i = disabled.indexOf(callback); + if (i != -1) + disabled.splice(i, 1); + } +}; +EventEmitter.on = + EventEmitter.addEventListener = function (eventName, callback, capturing) { + this._eventRegistry = this._eventRegistry || {}; + var listeners = this._eventRegistry[eventName]; + if (!listeners) + listeners = this._eventRegistry[eventName] = []; + if (listeners.indexOf(callback) == -1) + listeners[capturing ? "unshift" : "push"](callback); + return callback; + }; +EventEmitter.off = + EventEmitter.removeListener = + EventEmitter.removeEventListener = function (eventName, callback) { + this._eventRegistry = this._eventRegistry || {}; + var listeners = this._eventRegistry[eventName]; + if (!listeners) + return; + var index = listeners.indexOf(callback); + if (index !== -1) + listeners.splice(index, 1); + }; +EventEmitter.removeAllListeners = function (eventName) { + if (!eventName) + this._eventRegistry = this._defaultHandlers = undefined; + if (this._eventRegistry) + this._eventRegistry[eventName] = undefined; + if (this._defaultHandlers) + this._defaultHandlers[eventName] = undefined; +}; +exports.EventEmitter = EventEmitter; + +}); + +ace.define("ace/range",[], function(require, exports, module){"use strict"; +var comparePoints = function (p1, p2) { + return p1.row - p2.row || p1.column - p2.column; +}; +var Range = function (startRow, startColumn, endRow, endColumn) { + this.start = { + row: startRow, + column: startColumn + }; + this.end = { + row: endRow, + column: endColumn + }; +}; +(function () { + this.isEqual = function (range) { + return this.start.row === range.start.row && + this.end.row === range.end.row && + this.start.column === range.start.column && + this.end.column === range.end.column; + }; + this.toString = function () { + return ("Range: [" + this.start.row + "/" + this.start.column + + "] -> [" + this.end.row + "/" + this.end.column + "]"); + }; + this.contains = function (row, column) { + return this.compare(row, column) == 0; + }; + this.compareRange = function (range) { + var cmp, end = range.end, start = range.start; + cmp = this.compare(end.row, end.column); + if (cmp == 1) { + cmp = this.compare(start.row, start.column); + if (cmp == 1) { + return 2; + } + else if (cmp == 0) { + return 1; + } + else { + return 0; + } + } + else if (cmp == -1) { + return -2; + } + else { + cmp = this.compare(start.row, start.column); + if (cmp == -1) { + return -1; + } + else if (cmp == 1) { + return 42; + } + else { + return 0; + } + } + }; + this.comparePoint = function (p) { + return this.compare(p.row, p.column); + }; + this.containsRange = function (range) { + return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0; + }; + this.intersects = function (range) { + var cmp = this.compareRange(range); + return (cmp == -1 || cmp == 0 || cmp == 1); + }; + this.isEnd = function (row, column) { + return this.end.row == row && this.end.column == column; + }; + this.isStart = function (row, column) { + return this.start.row == row && this.start.column == column; + }; + this.setStart = function (row, column) { + if (typeof row == "object") { + this.start.column = row.column; + this.start.row = row.row; + } + else { + this.start.row = row; + this.start.column = column; + } + }; + this.setEnd = function (row, column) { + if (typeof row == "object") { + this.end.column = row.column; + this.end.row = row.row; + } + else { + this.end.row = row; + this.end.column = column; + } + }; + this.inside = function (row, column) { + if (this.compare(row, column) == 0) { + if (this.isEnd(row, column) || this.isStart(row, column)) { + return false; + } + else { + return true; + } + } + return false; + }; + this.insideStart = function (row, column) { + if (this.compare(row, column) == 0) { + if (this.isEnd(row, column)) { + return false; + } + else { + return true; + } + } + return false; + }; + this.insideEnd = function (row, column) { + if (this.compare(row, column) == 0) { + if (this.isStart(row, column)) { + return false; + } + else { + return true; + } + } + return false; + }; + this.compare = function (row, column) { + if (!this.isMultiLine()) { + if (row === this.start.row) { + return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0); + } + } + if (row < this.start.row) + return -1; + if (row > this.end.row) + return 1; + if (this.start.row === row) + return column >= this.start.column ? 0 : -1; + if (this.end.row === row) + return column <= this.end.column ? 0 : 1; + return 0; + }; + this.compareStart = function (row, column) { + if (this.start.row == row && this.start.column == column) { + return -1; + } + else { + return this.compare(row, column); + } + }; + this.compareEnd = function (row, column) { + if (this.end.row == row && this.end.column == column) { + return 1; + } + else { + return this.compare(row, column); + } + }; + this.compareInside = function (row, column) { + if (this.end.row == row && this.end.column == column) { + return 1; + } + else if (this.start.row == row && this.start.column == column) { + return -1; + } + else { + return this.compare(row, column); + } + }; + this.clipRows = function (firstRow, lastRow) { + if (this.end.row > lastRow) + var end = { row: lastRow + 1, column: 0 }; + else if (this.end.row < firstRow) + var end = { row: firstRow, column: 0 }; + if (this.start.row > lastRow) + var start = { row: lastRow + 1, column: 0 }; + else if (this.start.row < firstRow) + var start = { row: firstRow, column: 0 }; + return Range.fromPoints(start || this.start, end || this.end); + }; + this.extend = function (row, column) { + var cmp = this.compare(row, column); + if (cmp == 0) + return this; + else if (cmp == -1) + var start = { row: row, column: column }; + else + var end = { row: row, column: column }; + return Range.fromPoints(start || this.start, end || this.end); + }; + this.isEmpty = function () { + return (this.start.row === this.end.row && this.start.column === this.end.column); + }; + this.isMultiLine = function () { + return (this.start.row !== this.end.row); + }; + this.clone = function () { + return Range.fromPoints(this.start, this.end); + }; + this.collapseRows = function () { + if (this.end.column == 0) + return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row - 1), 0); + else + return new Range(this.start.row, 0, this.end.row, 0); + }; + this.toScreenRange = function (session) { + var screenPosStart = session.documentToScreenPosition(this.start); + var screenPosEnd = session.documentToScreenPosition(this.end); + return new Range(screenPosStart.row, screenPosStart.column, screenPosEnd.row, screenPosEnd.column); + }; + this.moveBy = function (row, column) { + this.start.row += row; + this.start.column += column; + this.end.row += row; + this.end.column += column; + }; +}).call(Range.prototype); +Range.fromPoints = function (start, end) { + return new Range(start.row, start.column, end.row, end.column); +}; +Range.comparePoints = comparePoints; +Range.comparePoints = function (p1, p2) { + return p1.row - p2.row || p1.column - p2.column; +}; +exports.Range = Range; + +}); + +ace.define("ace/anchor",[], function(require, exports, module){"use strict"; +var oop = require("./lib/oop"); +var EventEmitter = require("./lib/event_emitter").EventEmitter; +var Anchor = exports.Anchor = function (doc, row, column) { + this.$onChange = this.onChange.bind(this); + this.attach(doc); + if (typeof column == "undefined") + this.setPosition(row.row, row.column); + else + this.setPosition(row, column); +}; +(function () { + oop.implement(this, EventEmitter); + this.getPosition = function () { + return this.$clipPositionToDocument(this.row, this.column); + }; + this.getDocument = function () { + return this.document; + }; + this.$insertRight = false; + this.onChange = function (delta) { + if (delta.start.row == delta.end.row && delta.start.row != this.row) + return; + if (delta.start.row > this.row) + return; + var point = $getTransformedPoint(delta, { row: this.row, column: this.column }, this.$insertRight); + this.setPosition(point.row, point.column, true); + }; + function $pointsInOrder(point1, point2, equalPointsInOrder) { + var bColIsAfter = equalPointsInOrder ? point1.column <= point2.column : point1.column < point2.column; + return (point1.row < point2.row) || (point1.row == point2.row && bColIsAfter); + } + function $getTransformedPoint(delta, point, moveIfEqual) { + var deltaIsInsert = delta.action == "insert"; + var deltaRowShift = (deltaIsInsert ? 1 : -1) * (delta.end.row - delta.start.row); + var deltaColShift = (deltaIsInsert ? 1 : -1) * (delta.end.column - delta.start.column); + var deltaStart = delta.start; + var deltaEnd = deltaIsInsert ? deltaStart : delta.end; // Collapse insert range. + if ($pointsInOrder(point, deltaStart, moveIfEqual)) { + return { + row: point.row, + column: point.column + }; + } + if ($pointsInOrder(deltaEnd, point, !moveIfEqual)) { + return { + row: point.row + deltaRowShift, + column: point.column + (point.row == deltaEnd.row ? deltaColShift : 0) + }; + } + return { + row: deltaStart.row, + column: deltaStart.column + }; + } + this.setPosition = function (row, column, noClip) { + var pos; + if (noClip) { + pos = { + row: row, + column: column + }; + } + else { + pos = this.$clipPositionToDocument(row, column); + } + if (this.row == pos.row && this.column == pos.column) + return; + var old = { + row: this.row, + column: this.column + }; + this.row = pos.row; + this.column = pos.column; + this._signal("change", { + old: old, + value: pos + }); + }; + this.detach = function () { + this.document.off("change", this.$onChange); + }; + this.attach = function (doc) { + this.document = doc || this.document; + this.document.on("change", this.$onChange); + }; + this.$clipPositionToDocument = function (row, column) { + var pos = {}; + if (row >= this.document.getLength()) { + pos.row = Math.max(0, this.document.getLength() - 1); + pos.column = this.document.getLine(pos.row).length; + } + else if (row < 0) { + pos.row = 0; + pos.column = 0; + } + else { + pos.row = row; + pos.column = Math.min(this.document.getLine(pos.row).length, Math.max(0, column)); + } + if (column < 0) + pos.column = 0; + return pos; + }; +}).call(Anchor.prototype); + +}); + +ace.define("ace/document",[], function(require, exports, module){"use strict"; +var oop = require("./lib/oop"); +var applyDelta = require("./apply_delta").applyDelta; +var EventEmitter = require("./lib/event_emitter").EventEmitter; +var Range = require("./range").Range; +var Anchor = require("./anchor").Anchor; +var Document = function (textOrLines) { + this.$lines = [""]; + if (textOrLines.length === 0) { + this.$lines = [""]; + } + else if (Array.isArray(textOrLines)) { + this.insertMergedLines({ row: 0, column: 0 }, textOrLines); + } + else { + this.insert({ row: 0, column: 0 }, textOrLines); + } +}; +(function () { + oop.implement(this, EventEmitter); + this.setValue = function (text) { + var len = this.getLength() - 1; + this.remove(new Range(0, 0, len, this.getLine(len).length)); + this.insert({ row: 0, column: 0 }, text || ""); + }; + this.getValue = function () { + return this.getAllLines().join(this.getNewLineCharacter()); + }; + this.createAnchor = function (row, column) { + return new Anchor(this, row, column); + }; + if ("aaa".split(/a/).length === 0) { + this.$split = function (text) { + return text.replace(/\r\n|\r/g, "\n").split("\n"); + }; + } + else { + this.$split = function (text) { + return text.split(/\r\n|\r|\n/); + }; + } + this.$detectNewLine = function (text) { + var match = text.match(/^.*?(\r\n|\r|\n)/m); + this.$autoNewLine = match ? match[1] : "\n"; + this._signal("changeNewLineMode"); + }; + this.getNewLineCharacter = function () { + switch (this.$newLineMode) { + case "windows": + return "\r\n"; + case "unix": + return "\n"; + default: + return this.$autoNewLine || "\n"; + } + }; + this.$autoNewLine = ""; + this.$newLineMode = "auto"; + this.setNewLineMode = function (newLineMode) { + if (this.$newLineMode === newLineMode) + return; + this.$newLineMode = newLineMode; + this._signal("changeNewLineMode"); + }; + this.getNewLineMode = function () { + return this.$newLineMode; + }; + this.isNewLine = function (text) { + return (text == "\r\n" || text == "\r" || text == "\n"); + }; + this.getLine = function (row) { + return this.$lines[row] || ""; + }; + this.getLines = function (firstRow, lastRow) { + return this.$lines.slice(firstRow, lastRow + 1); + }; + this.getAllLines = function () { + return this.getLines(0, this.getLength()); + }; + this.getLength = function () { + return this.$lines.length; + }; + this.getTextRange = function (range) { + return this.getLinesForRange(range).join(this.getNewLineCharacter()); + }; + this.getLinesForRange = function (range) { + var lines; + if (range.start.row === range.end.row) { + lines = [this.getLine(range.start.row).substring(range.start.column, range.end.column)]; + } + else { + lines = this.getLines(range.start.row, range.end.row); + lines[0] = (lines[0] || "").substring(range.start.column); + var l = lines.length - 1; + if (range.end.row - range.start.row == l) + lines[l] = lines[l].substring(0, range.end.column); + } + return lines; + }; + this.insertLines = function (row, lines) { + console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."); + return this.insertFullLines(row, lines); + }; + this.removeLines = function (firstRow, lastRow) { + console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."); + return this.removeFullLines(firstRow, lastRow); + }; + this.insertNewLine = function (position) { + console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."); + return this.insertMergedLines(position, ["", ""]); + }; + this.insert = function (position, text) { + if (this.getLength() <= 1) + this.$detectNewLine(text); + return this.insertMergedLines(position, this.$split(text)); + }; + this.insertInLine = function (position, text) { + var start = this.clippedPos(position.row, position.column); + var end = this.pos(position.row, position.column + text.length); + this.applyDelta({ + start: start, + end: end, + action: "insert", + lines: [text] + }, true); + return this.clonePos(end); + }; + this.clippedPos = function (row, column) { + var length = this.getLength(); + if (row === undefined) { + row = length; + } + else if (row < 0) { + row = 0; + } + else if (row >= length) { + row = length - 1; + column = undefined; + } + var line = this.getLine(row); + if (column == undefined) + column = line.length; + column = Math.min(Math.max(column, 0), line.length); + return { row: row, column: column }; + }; + this.clonePos = function (pos) { + return { row: pos.row, column: pos.column }; + }; + this.pos = function (row, column) { + return { row: row, column: column }; + }; + this.$clipPosition = function (position) { + var length = this.getLength(); + if (position.row >= length) { + position.row = Math.max(0, length - 1); + position.column = this.getLine(length - 1).length; + } + else { + position.row = Math.max(0, position.row); + position.column = Math.min(Math.max(position.column, 0), this.getLine(position.row).length); + } + return position; + }; + this.insertFullLines = function (row, lines) { + row = Math.min(Math.max(row, 0), this.getLength()); + var column = 0; + if (row < this.getLength()) { + lines = lines.concat([""]); + column = 0; + } + else { + lines = [""].concat(lines); + row--; + column = this.$lines[row].length; + } + this.insertMergedLines({ row: row, column: column }, lines); + }; + this.insertMergedLines = function (position, lines) { + var start = this.clippedPos(position.row, position.column); + var end = { + row: start.row + lines.length - 1, + column: (lines.length == 1 ? start.column : 0) + lines[lines.length - 1].length + }; + this.applyDelta({ + start: start, + end: end, + action: "insert", + lines: lines + }); + return this.clonePos(end); + }; + this.remove = function (range) { + var start = this.clippedPos(range.start.row, range.start.column); + var end = this.clippedPos(range.end.row, range.end.column); + this.applyDelta({ + start: start, + end: end, + action: "remove", + lines: this.getLinesForRange({ start: start, end: end }) + }); + return this.clonePos(start); + }; + this.removeInLine = function (row, startColumn, endColumn) { + var start = this.clippedPos(row, startColumn); + var end = this.clippedPos(row, endColumn); + this.applyDelta({ + start: start, + end: end, + action: "remove", + lines: this.getLinesForRange({ start: start, end: end }) + }, true); + return this.clonePos(start); + }; + this.removeFullLines = function (firstRow, lastRow) { + firstRow = Math.min(Math.max(0, firstRow), this.getLength() - 1); + lastRow = Math.min(Math.max(0, lastRow), this.getLength() - 1); + var deleteFirstNewLine = lastRow == this.getLength() - 1 && firstRow > 0; + var deleteLastNewLine = lastRow < this.getLength() - 1; + var startRow = (deleteFirstNewLine ? firstRow - 1 : firstRow); + var startCol = (deleteFirstNewLine ? this.getLine(startRow).length : 0); + var endRow = (deleteLastNewLine ? lastRow + 1 : lastRow); + var endCol = (deleteLastNewLine ? 0 : this.getLine(endRow).length); + var range = new Range(startRow, startCol, endRow, endCol); + var deletedLines = this.$lines.slice(firstRow, lastRow + 1); + this.applyDelta({ + start: range.start, + end: range.end, + action: "remove", + lines: this.getLinesForRange(range) + }); + return deletedLines; + }; + this.removeNewLine = function (row) { + if (row < this.getLength() - 1 && row >= 0) { + this.applyDelta({ + start: this.pos(row, this.getLine(row).length), + end: this.pos(row + 1, 0), + action: "remove", + lines: ["", ""] + }); + } + }; + this.replace = function (range, text) { + if (!(range instanceof Range)) + range = Range.fromPoints(range.start, range.end); + if (text.length === 0 && range.isEmpty()) + return range.start; + if (text == this.getTextRange(range)) + return range.end; + this.remove(range); + var end; + if (text) { + end = this.insert(range.start, text); + } + else { + end = range.start; + } + return end; + }; + this.applyDeltas = function (deltas) { + for (var i = 0; i < deltas.length; i++) { + this.applyDelta(deltas[i]); + } + }; + this.revertDeltas = function (deltas) { + for (var i = deltas.length - 1; i >= 0; i--) { + this.revertDelta(deltas[i]); + } + }; + this.applyDelta = function (delta, doNotValidate) { + var isInsert = delta.action == "insert"; + if (isInsert ? delta.lines.length <= 1 && !delta.lines[0] + : !Range.comparePoints(delta.start, delta.end)) { + return; + } + if (isInsert && delta.lines.length > 20000) { + this.$splitAndapplyLargeDelta(delta, 20000); + } + else { + applyDelta(this.$lines, delta, doNotValidate); + this._signal("change", delta); + } + }; + this.$safeApplyDelta = function (delta) { + var docLength = this.$lines.length; + if (delta.action == "remove" && delta.start.row < docLength && delta.end.row < docLength + || delta.action == "insert" && delta.start.row <= docLength) { + this.applyDelta(delta); + } + }; + this.$splitAndapplyLargeDelta = function (delta, MAX) { + var lines = delta.lines; + var l = lines.length - MAX + 1; + var row = delta.start.row; + var column = delta.start.column; + for (var from = 0, to = 0; from < l; from = to) { + to += MAX - 1; + var chunk = lines.slice(from, to); + chunk.push(""); + this.applyDelta({ + start: this.pos(row + from, column), + end: this.pos(row + to, column = 0), + action: delta.action, + lines: chunk + }, true); + } + delta.lines = lines.slice(from); + delta.start.row = row + from; + delta.start.column = column; + this.applyDelta(delta, true); + }; + this.revertDelta = function (delta) { + this.$safeApplyDelta({ + start: this.clonePos(delta.start), + end: this.clonePos(delta.end), + action: (delta.action == "insert" ? "remove" : "insert"), + lines: delta.lines.slice() + }); + }; + this.indexToPosition = function (index, startRow) { + var lines = this.$lines || this.getAllLines(); + var newlineLength = this.getNewLineCharacter().length; + for (var i = startRow || 0, l = lines.length; i < l; i++) { + index -= lines[i].length + newlineLength; + if (index < 0) + return { row: i, column: index + lines[i].length + newlineLength }; + } + return { row: l - 1, column: index + lines[l - 1].length + newlineLength }; + }; + this.positionToIndex = function (pos, startRow) { + var lines = this.$lines || this.getAllLines(); + var newlineLength = this.getNewLineCharacter().length; + var index = 0; + var row = Math.min(pos.row, lines.length); + for (var i = startRow || 0; i < row; ++i) + index += lines[i].length + newlineLength; + return index + pos.column; + }; +}).call(Document.prototype); +exports.Document = Document; + +}); + +ace.define("ace/worker/mirror",[], function(require, exports, module) { +"use strict"; + +var Document = require("../document").Document; +var lang = require("../lib/lang"); + +var Mirror = exports.Mirror = function(sender) { + this.sender = sender; + var doc = this.doc = new Document(""); + + var deferredUpdate = this.deferredUpdate = lang.delayedCall(this.onUpdate.bind(this)); + + var _self = this; + sender.on("change", function(e) { + var data = e.data; + if (data[0].start) { + doc.applyDeltas(data); + } else { + for (var i = 0; i < data.length; i += 2) { + var d, err; + if (Array.isArray(data[i+1])) { + d = {action: "insert", start: data[i], lines: data[i+1]}; + } else { + d = {action: "remove", start: data[i], end: data[i+1]}; + } + + if ((d.action == "insert" ? d.start : d.end).row >= doc.$lines.length) { + err = new Error("Invalid delta"); + err.data = { + path: _self.$path, + linesLength: doc.$lines.length, + start: d.start, + end: d.end + }; + throw err; + } + + doc.applyDelta(d, true); + } + } + if (_self.$timeout) + return deferredUpdate.schedule(_self.$timeout); + _self.onUpdate(); + }); +}; + +(function() { + + this.$timeout = 500; + + this.setTimeout = function(timeout) { + this.$timeout = timeout; + }; + + this.setValue = function(value) { + this.doc.setValue(value); + this.deferredUpdate.schedule(this.$timeout); + }; + + this.getValue = function(callbackId) { + this.sender.callback(this.doc.getValue(), callbackId); + }; + + this.onUpdate = function() { + }; + + this.isPending = function() { + return this.deferredUpdate.isPending(); + }; + +}).call(Mirror.prototype); + +}); + +ace.define("ace/mode/css/csslint",[], function(require, exports, module) { + +var CSSLint = (function(){ + var module = module || {}, + exports = exports || {}; +var parserlib = (function () { +var require; +require=(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i") { + this.type = "child"; + } else if (text === "+") { + this.type = "adjacent-sibling"; + } else if (text === "~") { + this.type = "sibling"; + } + +} + +Combinator.prototype = new SyntaxUnit(); +Combinator.prototype.constructor = Combinator; + + +},{"../util/SyntaxUnit":26,"./Parser":6}],3:[function(require,module,exports){ +"use strict"; + +module.exports = Matcher; + +var StringReader = require("../util/StringReader"); +var SyntaxError = require("../util/SyntaxError"); +function Matcher(matchFunc, toString) { + this.match = function(expression) { + var result; + expression.mark(); + result = matchFunc(expression); + if (result) { + expression.drop(); + } else { + expression.restore(); + } + return result; + }; + this.toString = typeof toString === "function" ? toString : function() { + return toString; + }; +} +Matcher.prec = { + MOD: 5, + SEQ: 4, + ANDAND: 3, + OROR: 2, + ALT: 1 +}; +Matcher.parse = function(str) { + var reader, eat, expr, oror, andand, seq, mod, term, result; + reader = new StringReader(str); + eat = function(matcher) { + var result = reader.readMatch(matcher); + if (result === null) { + throw new SyntaxError( + "Expected " + matcher, reader.getLine(), reader.getCol()); + } + return result; + }; + expr = function() { + var m = [ oror() ]; + while (reader.readMatch(" | ") !== null) { + m.push(oror()); + } + return m.length === 1 ? m[0] : Matcher.alt.apply(Matcher, m); + }; + oror = function() { + var m = [ andand() ]; + while (reader.readMatch(" || ") !== null) { + m.push(andand()); + } + return m.length === 1 ? m[0] : Matcher.oror.apply(Matcher, m); + }; + andand = function() { + var m = [ seq() ]; + while (reader.readMatch(" && ") !== null) { + m.push(seq()); + } + return m.length === 1 ? m[0] : Matcher.andand.apply(Matcher, m); + }; + seq = function() { + var m = [ mod() ]; + while (reader.readMatch(/^ (?![&|\]])/) !== null) { + m.push(mod()); + } + return m.length === 1 ? m[0] : Matcher.seq.apply(Matcher, m); + }; + mod = function() { + var m = term(); + if (reader.readMatch("?") !== null) { + return m.question(); + } else if (reader.readMatch("*") !== null) { + return m.star(); + } else if (reader.readMatch("+") !== null) { + return m.plus(); + } else if (reader.readMatch("#") !== null) { + return m.hash(); + } else if (reader.readMatch(/^\{\s*/) !== null) { + var min = eat(/^\d+/); + eat(/^\s*,\s*/); + var max = eat(/^\d+/); + eat(/^\s*\}/); + return m.braces(Number(min), Number(max)); + } + return m; + }; + term = function() { + if (reader.readMatch("[ ") !== null) { + var m = expr(); + eat(" ]"); + return m; + } + return Matcher.fromType(eat(/^[^ ?*+#{]+/)); + }; + result = expr(); + if (!reader.eof()) { + throw new SyntaxError( + "Expected end of string", reader.getLine(), reader.getCol()); + } + return result; +}; +Matcher.cast = function(m) { + if (m instanceof Matcher) { + return m; + } + return Matcher.parse(m); +}; +Matcher.fromType = function(type) { + var ValidationTypes = require("./ValidationTypes"); + return new Matcher(function(expression) { + return expression.hasNext() && ValidationTypes.isType(expression, type); + }, type); +}; +Matcher.seq = function() { + var ms = Array.prototype.slice.call(arguments).map(Matcher.cast); + if (ms.length === 1) { + return ms[0]; + } + return new Matcher(function(expression) { + var i, result = true; + for (i = 0; result && i < ms.length; i++) { + result = ms[i].match(expression); + } + return result; + }, function(prec) { + var p = Matcher.prec.SEQ; + var s = ms.map(function(m) { + return m.toString(p); + }).join(" "); + if (prec > p) { + s = "[ " + s + " ]"; + } + return s; + }); +}; +Matcher.alt = function() { + var ms = Array.prototype.slice.call(arguments).map(Matcher.cast); + if (ms.length === 1) { + return ms[0]; + } + return new Matcher(function(expression) { + var i, result = false; + for (i = 0; !result && i < ms.length; i++) { + result = ms[i].match(expression); + } + return result; + }, function(prec) { + var p = Matcher.prec.ALT; + var s = ms.map(function(m) { + return m.toString(p); + }).join(" | "); + if (prec > p) { + s = "[ " + s + " ]"; + } + return s; + }); +}; +Matcher.many = function(required) { + var ms = Array.prototype.slice.call(arguments, 1).reduce(function(acc, v) { + if (v.expand) { + var ValidationTypes = require("./ValidationTypes"); + acc.push.apply(acc, ValidationTypes.complex[v.expand].options); + } else { + acc.push(Matcher.cast(v)); + } + return acc; + }, []); + + if (required === true) { + required = ms.map(function() { + return true; + }); + } + + var result = new Matcher(function(expression) { + var seen = [], max = 0, pass = 0; + var success = function(matchCount) { + if (pass === 0) { + max = Math.max(matchCount, max); + return matchCount === ms.length; + } else { + return matchCount === max; + } + }; + var tryMatch = function(matchCount) { + for (var i = 0; i < ms.length; i++) { + if (seen[i]) { + continue; + } + expression.mark(); + if (ms[i].match(expression)) { + seen[i] = true; + if (tryMatch(matchCount + (required === false || required[i] ? 1 : 0))) { + expression.drop(); + return true; + } + expression.restore(); + seen[i] = false; + } else { + expression.drop(); + } + } + return success(matchCount); + }; + if (!tryMatch(0)) { + pass++; + tryMatch(0); + } + + if (required === false) { + return max > 0; + } + for (var i = 0; i < ms.length; i++) { + if (required[i] && !seen[i]) { + return false; + } + } + return true; + }, function(prec) { + var p = required === false ? Matcher.prec.OROR : Matcher.prec.ANDAND; + var s = ms.map(function(m, i) { + if (required !== false && !required[i]) { + return m.toString(Matcher.prec.MOD) + "?"; + } + return m.toString(p); + }).join(required === false ? " || " : " && "); + if (prec > p) { + s = "[ " + s + " ]"; + } + return s; + }); + result.options = ms; + return result; +}; +Matcher.andand = function() { + var args = Array.prototype.slice.call(arguments); + args.unshift(true); + return Matcher.many.apply(Matcher, args); +}; +Matcher.oror = function() { + var args = Array.prototype.slice.call(arguments); + args.unshift(false); + return Matcher.many.apply(Matcher, args); +}; +Matcher.prototype = { + constructor: Matcher, + match: function() { + throw new Error("unimplemented"); + }, + toString: function() { + throw new Error("unimplemented"); + }, + func: function() { + return this.match.bind(this); + }, + then: function(m) { + return Matcher.seq(this, m); + }, + or: function(m) { + return Matcher.alt(this, m); + }, + andand: function(m) { + return Matcher.many(true, this, m); + }, + oror: function(m) { + return Matcher.many(false, this, m); + }, + star: function() { + return this.braces(0, Infinity, "*"); + }, + plus: function() { + return this.braces(1, Infinity, "+"); + }, + question: function() { + return this.braces(0, 1, "?"); + }, + hash: function() { + return this.braces(1, Infinity, "#", Matcher.cast(",")); + }, + braces: function(min, max, marker, optSep) { + var m1 = this, m2 = optSep ? optSep.then(this) : this; + if (!marker) { + marker = "{" + min + "," + max + "}"; + } + return new Matcher(function(expression) { + var result = true, i; + for (i = 0; i < max; i++) { + if (i > 0 && optSep) { + result = m2.match(expression); + } else { + result = m1.match(expression); + } + if (!result) { + break; + } + } + return i >= min; + }, function() { + return m1.toString(Matcher.prec.MOD) + marker; + }); + } +}; + +},{"../util/StringReader":24,"../util/SyntaxError":25,"./ValidationTypes":21}],4:[function(require,module,exports){ +"use strict"; + +module.exports = MediaFeature; + +var SyntaxUnit = require("../util/SyntaxUnit"); + +var Parser = require("./Parser"); +function MediaFeature(name, value) { + + SyntaxUnit.call(this, "(" + name + (value !== null ? ":" + value : "") + ")", name.startLine, name.startCol, Parser.MEDIA_FEATURE_TYPE); + this.name = name; + this.value = value; +} + +MediaFeature.prototype = new SyntaxUnit(); +MediaFeature.prototype.constructor = MediaFeature; + + +},{"../util/SyntaxUnit":26,"./Parser":6}],5:[function(require,module,exports){ +"use strict"; + +module.exports = MediaQuery; + +var SyntaxUnit = require("../util/SyntaxUnit"); + +var Parser = require("./Parser"); +function MediaQuery(modifier, mediaType, features, line, col) { + + SyntaxUnit.call(this, (modifier ? modifier + " " : "") + (mediaType ? mediaType : "") + (mediaType && features.length > 0 ? " and " : "") + features.join(" and "), line, col, Parser.MEDIA_QUERY_TYPE); + this.modifier = modifier; + this.mediaType = mediaType; + this.features = features; + +} + +MediaQuery.prototype = new SyntaxUnit(); +MediaQuery.prototype.constructor = MediaQuery; + + +},{"../util/SyntaxUnit":26,"./Parser":6}],6:[function(require,module,exports){ +"use strict"; + +module.exports = Parser; + +var EventTarget = require("../util/EventTarget"); +var SyntaxError = require("../util/SyntaxError"); +var SyntaxUnit = require("../util/SyntaxUnit"); + +var Combinator = require("./Combinator"); +var MediaFeature = require("./MediaFeature"); +var MediaQuery = require("./MediaQuery"); +var PropertyName = require("./PropertyName"); +var PropertyValue = require("./PropertyValue"); +var PropertyValuePart = require("./PropertyValuePart"); +var Selector = require("./Selector"); +var SelectorPart = require("./SelectorPart"); +var SelectorSubPart = require("./SelectorSubPart"); +var TokenStream = require("./TokenStream"); +var Tokens = require("./Tokens"); +var Validation = require("./Validation"); +function Parser(options) { + EventTarget.call(this); + + + this.options = options || {}; + + this._tokenStream = null; +} +Parser.DEFAULT_TYPE = 0; +Parser.COMBINATOR_TYPE = 1; +Parser.MEDIA_FEATURE_TYPE = 2; +Parser.MEDIA_QUERY_TYPE = 3; +Parser.PROPERTY_NAME_TYPE = 4; +Parser.PROPERTY_VALUE_TYPE = 5; +Parser.PROPERTY_VALUE_PART_TYPE = 6; +Parser.SELECTOR_TYPE = 7; +Parser.SELECTOR_PART_TYPE = 8; +Parser.SELECTOR_SUB_PART_TYPE = 9; + +Parser.prototype = function() { + + var proto = new EventTarget(), // new prototype + prop, + additions = { + __proto__: null, + constructor: Parser, + DEFAULT_TYPE : 0, + COMBINATOR_TYPE : 1, + MEDIA_FEATURE_TYPE : 2, + MEDIA_QUERY_TYPE : 3, + PROPERTY_NAME_TYPE : 4, + PROPERTY_VALUE_TYPE : 5, + PROPERTY_VALUE_PART_TYPE : 6, + SELECTOR_TYPE : 7, + SELECTOR_PART_TYPE : 8, + SELECTOR_SUB_PART_TYPE : 9, + + _stylesheet: function() { + + var tokenStream = this._tokenStream, + count, + token, + tt; + + this.fire("startstylesheet"); + this._charset(); + + this._skipCruft(); + while (tokenStream.peek() === Tokens.IMPORT_SYM) { + this._import(); + this._skipCruft(); + } + while (tokenStream.peek() === Tokens.NAMESPACE_SYM) { + this._namespace(); + this._skipCruft(); + } + tt = tokenStream.peek(); + while (tt > Tokens.EOF) { + + try { + + switch (tt) { + case Tokens.MEDIA_SYM: + this._media(); + this._skipCruft(); + break; + case Tokens.PAGE_SYM: + this._page(); + this._skipCruft(); + break; + case Tokens.FONT_FACE_SYM: + this._font_face(); + this._skipCruft(); + break; + case Tokens.KEYFRAMES_SYM: + this._keyframes(); + this._skipCruft(); + break; + case Tokens.VIEWPORT_SYM: + this._viewport(); + this._skipCruft(); + break; + case Tokens.DOCUMENT_SYM: + this._document(); + this._skipCruft(); + break; + case Tokens.SUPPORTS_SYM: + this._supports(); + this._skipCruft(); + break; + case Tokens.UNKNOWN_SYM: // unknown @ rule + tokenStream.get(); + if (!this.options.strict) { + this.fire({ + type: "error", + error: null, + message: "Unknown @ rule: " + tokenStream.LT(0).value + ".", + line: tokenStream.LT(0).startLine, + col: tokenStream.LT(0).startCol + }); + count = 0; + while (tokenStream.advance([Tokens.LBRACE, Tokens.RBRACE]) === Tokens.LBRACE) { + count++; // keep track of nesting depth + } + + while (count) { + tokenStream.advance([Tokens.RBRACE]); + count--; + } + + } else { + throw new SyntaxError("Unknown @ rule.", tokenStream.LT(0).startLine, tokenStream.LT(0).startCol); + } + break; + case Tokens.S: + this._readWhitespace(); + break; + default: + if (!this._ruleset()) { + switch (tt) { + case Tokens.CHARSET_SYM: + token = tokenStream.LT(1); + this._charset(false); + throw new SyntaxError("@charset not allowed here.", token.startLine, token.startCol); + case Tokens.IMPORT_SYM: + token = tokenStream.LT(1); + this._import(false); + throw new SyntaxError("@import not allowed here.", token.startLine, token.startCol); + case Tokens.NAMESPACE_SYM: + token = tokenStream.LT(1); + this._namespace(false); + throw new SyntaxError("@namespace not allowed here.", token.startLine, token.startCol); + default: + tokenStream.get(); // get the last token + this._unexpectedToken(tokenStream.token()); + } + + } + } + } catch (ex) { + if (ex instanceof SyntaxError && !this.options.strict) { + this.fire({ + type: "error", + error: ex, + message: ex.message, + line: ex.line, + col: ex.col + }); + } else { + throw ex; + } + } + + tt = tokenStream.peek(); + } + + if (tt !== Tokens.EOF) { + this._unexpectedToken(tokenStream.token()); + } + + this.fire("endstylesheet"); + }, + + _charset: function(emit) { + var tokenStream = this._tokenStream, + charset, + token, + line, + col; + + if (tokenStream.match(Tokens.CHARSET_SYM)) { + line = tokenStream.token().startLine; + col = tokenStream.token().startCol; + + this._readWhitespace(); + tokenStream.mustMatch(Tokens.STRING); + + token = tokenStream.token(); + charset = token.value; + + this._readWhitespace(); + tokenStream.mustMatch(Tokens.SEMICOLON); + + if (emit !== false) { + this.fire({ + type: "charset", + charset:charset, + line: line, + col: col + }); + } + } + }, + + _import: function(emit) { + + var tokenStream = this._tokenStream, + uri, + importToken, + mediaList = []; + tokenStream.mustMatch(Tokens.IMPORT_SYM); + importToken = tokenStream.token(); + this._readWhitespace(); + + tokenStream.mustMatch([Tokens.STRING, Tokens.URI]); + uri = tokenStream.token().value.replace(/^(?:url\()?["']?([^"']+?)["']?\)?$/, "$1"); + + this._readWhitespace(); + + mediaList = this._media_query_list(); + tokenStream.mustMatch(Tokens.SEMICOLON); + this._readWhitespace(); + + if (emit !== false) { + this.fire({ + type: "import", + uri: uri, + media: mediaList, + line: importToken.startLine, + col: importToken.startCol + }); + } + + }, + + _namespace: function(emit) { + + var tokenStream = this._tokenStream, + line, + col, + prefix, + uri; + tokenStream.mustMatch(Tokens.NAMESPACE_SYM); + line = tokenStream.token().startLine; + col = tokenStream.token().startCol; + this._readWhitespace(); + if (tokenStream.match(Tokens.IDENT)) { + prefix = tokenStream.token().value; + this._readWhitespace(); + } + + tokenStream.mustMatch([Tokens.STRING, Tokens.URI]); + uri = tokenStream.token().value.replace(/(?:url\()?["']([^"']+)["']\)?/, "$1"); + + this._readWhitespace(); + tokenStream.mustMatch(Tokens.SEMICOLON); + this._readWhitespace(); + + if (emit !== false) { + this.fire({ + type: "namespace", + prefix: prefix, + uri: uri, + line: line, + col: col + }); + } + + }, + + _supports: function(emit) { + var tokenStream = this._tokenStream, + line, + col; + + if (tokenStream.match(Tokens.SUPPORTS_SYM)) { + line = tokenStream.token().startLine; + col = tokenStream.token().startCol; + + this._readWhitespace(); + this._supports_condition(); + this._readWhitespace(); + + tokenStream.mustMatch(Tokens.LBRACE); + this._readWhitespace(); + + if (emit !== false) { + this.fire({ + type: "startsupports", + line: line, + col: col + }); + } + + while (true) { + if (!this._ruleset()) { + break; + } + } + + tokenStream.mustMatch(Tokens.RBRACE); + this._readWhitespace(); + + this.fire({ + type: "endsupports", + line: line, + col: col + }); + } + }, + + _supports_condition: function() { + var tokenStream = this._tokenStream, + ident; + + if (tokenStream.match(Tokens.IDENT)) { + ident = tokenStream.token().value.toLowerCase(); + + if (ident === "not") { + tokenStream.mustMatch(Tokens.S); + this._supports_condition_in_parens(); + } else { + tokenStream.unget(); + } + } else { + this._supports_condition_in_parens(); + this._readWhitespace(); + + while (tokenStream.peek() === Tokens.IDENT) { + ident = tokenStream.LT(1).value.toLowerCase(); + if (ident === "and" || ident === "or") { + tokenStream.mustMatch(Tokens.IDENT); + this._readWhitespace(); + this._supports_condition_in_parens(); + this._readWhitespace(); + } + } + } + }, + + _supports_condition_in_parens: function() { + var tokenStream = this._tokenStream, + ident; + + if (tokenStream.match(Tokens.LPAREN)) { + this._readWhitespace(); + if (tokenStream.match(Tokens.IDENT)) { + ident = tokenStream.token().value.toLowerCase(); + if (ident === "not") { + this._readWhitespace(); + this._supports_condition(); + this._readWhitespace(); + tokenStream.mustMatch(Tokens.RPAREN); + } else { + tokenStream.unget(); + this._supports_declaration_condition(false); + } + } else { + this._supports_condition(); + this._readWhitespace(); + tokenStream.mustMatch(Tokens.RPAREN); + } + } else { + this._supports_declaration_condition(); + } + }, + + _supports_declaration_condition: function(requireStartParen) { + var tokenStream = this._tokenStream; + + if (requireStartParen !== false) { + tokenStream.mustMatch(Tokens.LPAREN); + } + this._readWhitespace(); + this._declaration(); + tokenStream.mustMatch(Tokens.RPAREN); + }, + + _media: function() { + var tokenStream = this._tokenStream, + line, + col, + mediaList; // = []; + tokenStream.mustMatch(Tokens.MEDIA_SYM); + line = tokenStream.token().startLine; + col = tokenStream.token().startCol; + + this._readWhitespace(); + + mediaList = this._media_query_list(); + + tokenStream.mustMatch(Tokens.LBRACE); + this._readWhitespace(); + + this.fire({ + type: "startmedia", + media: mediaList, + line: line, + col: col + }); + + while (true) { + if (tokenStream.peek() === Tokens.PAGE_SYM) { + this._page(); + } else if (tokenStream.peek() === Tokens.FONT_FACE_SYM) { + this._font_face(); + } else if (tokenStream.peek() === Tokens.VIEWPORT_SYM) { + this._viewport(); + } else if (tokenStream.peek() === Tokens.DOCUMENT_SYM) { + this._document(); + } else if (tokenStream.peek() === Tokens.SUPPORTS_SYM) { + this._supports(); + } else if (tokenStream.peek() === Tokens.MEDIA_SYM) { + this._media(); + } else if (!this._ruleset()) { + break; + } + } + + tokenStream.mustMatch(Tokens.RBRACE); + this._readWhitespace(); + + this.fire({ + type: "endmedia", + media: mediaList, + line: line, + col: col + }); + }, + _media_query_list: function() { + var tokenStream = this._tokenStream, + mediaList = []; + + + this._readWhitespace(); + + if (tokenStream.peek() === Tokens.IDENT || tokenStream.peek() === Tokens.LPAREN) { + mediaList.push(this._media_query()); + } + + while (tokenStream.match(Tokens.COMMA)) { + this._readWhitespace(); + mediaList.push(this._media_query()); + } + + return mediaList; + }, + _media_query: function() { + var tokenStream = this._tokenStream, + type = null, + ident = null, + token = null, + expressions = []; + + if (tokenStream.match(Tokens.IDENT)) { + ident = tokenStream.token().value.toLowerCase(); + if (ident !== "only" && ident !== "not") { + tokenStream.unget(); + ident = null; + } else { + token = tokenStream.token(); + } + } + + this._readWhitespace(); + + if (tokenStream.peek() === Tokens.IDENT) { + type = this._media_type(); + if (token === null) { + token = tokenStream.token(); + } + } else if (tokenStream.peek() === Tokens.LPAREN) { + if (token === null) { + token = tokenStream.LT(1); + } + expressions.push(this._media_expression()); + } + + if (type === null && expressions.length === 0) { + return null; + } else { + this._readWhitespace(); + while (tokenStream.match(Tokens.IDENT)) { + if (tokenStream.token().value.toLowerCase() !== "and") { + this._unexpectedToken(tokenStream.token()); + } + + this._readWhitespace(); + expressions.push(this._media_expression()); + } + } + + return new MediaQuery(ident, type, expressions, token.startLine, token.startCol); + }, + _media_type: function() { + return this._media_feature(); + }, + _media_expression: function() { + var tokenStream = this._tokenStream, + feature = null, + token, + expression = null; + + tokenStream.mustMatch(Tokens.LPAREN); + this._readWhitespace(); + + feature = this._media_feature(); + this._readWhitespace(); + + if (tokenStream.match(Tokens.COLON)) { + this._readWhitespace(); + token = tokenStream.LT(1); + expression = this._expression(); + } + + tokenStream.mustMatch(Tokens.RPAREN); + this._readWhitespace(); + + return new MediaFeature(feature, expression ? new SyntaxUnit(expression, token.startLine, token.startCol) : null); + }, + _media_feature: function() { + var tokenStream = this._tokenStream; + + this._readWhitespace(); + + tokenStream.mustMatch(Tokens.IDENT); + + return SyntaxUnit.fromToken(tokenStream.token()); + }, + _page: function() { + var tokenStream = this._tokenStream, + line, + col, + identifier = null, + pseudoPage = null; + tokenStream.mustMatch(Tokens.PAGE_SYM); + line = tokenStream.token().startLine; + col = tokenStream.token().startCol; + + this._readWhitespace(); + + if (tokenStream.match(Tokens.IDENT)) { + identifier = tokenStream.token().value; + if (identifier.toLowerCase() === "auto") { + this._unexpectedToken(tokenStream.token()); + } + } + if (tokenStream.peek() === Tokens.COLON) { + pseudoPage = this._pseudo_page(); + } + + this._readWhitespace(); + + this.fire({ + type: "startpage", + id: identifier, + pseudo: pseudoPage, + line: line, + col: col + }); + + this._readDeclarations(true, true); + + this.fire({ + type: "endpage", + id: identifier, + pseudo: pseudoPage, + line: line, + col: col + }); + + }, + _margin: function() { + var tokenStream = this._tokenStream, + line, + col, + marginSym = this._margin_sym(); + + if (marginSym) { + line = tokenStream.token().startLine; + col = tokenStream.token().startCol; + + this.fire({ + type: "startpagemargin", + margin: marginSym, + line: line, + col: col + }); + + this._readDeclarations(true); + + this.fire({ + type: "endpagemargin", + margin: marginSym, + line: line, + col: col + }); + return true; + } else { + return false; + } + }, + _margin_sym: function() { + + var tokenStream = this._tokenStream; + + if (tokenStream.match([Tokens.TOPLEFTCORNER_SYM, Tokens.TOPLEFT_SYM, + Tokens.TOPCENTER_SYM, Tokens.TOPRIGHT_SYM, Tokens.TOPRIGHTCORNER_SYM, + Tokens.BOTTOMLEFTCORNER_SYM, Tokens.BOTTOMLEFT_SYM, + Tokens.BOTTOMCENTER_SYM, Tokens.BOTTOMRIGHT_SYM, + Tokens.BOTTOMRIGHTCORNER_SYM, Tokens.LEFTTOP_SYM, + Tokens.LEFTMIDDLE_SYM, Tokens.LEFTBOTTOM_SYM, Tokens.RIGHTTOP_SYM, + Tokens.RIGHTMIDDLE_SYM, Tokens.RIGHTBOTTOM_SYM])) { + return SyntaxUnit.fromToken(tokenStream.token()); + } else { + return null; + } + + }, + + _pseudo_page: function() { + + var tokenStream = this._tokenStream; + + tokenStream.mustMatch(Tokens.COLON); + tokenStream.mustMatch(Tokens.IDENT); + + return tokenStream.token().value; + }, + + _font_face: function() { + var tokenStream = this._tokenStream, + line, + col; + tokenStream.mustMatch(Tokens.FONT_FACE_SYM); + line = tokenStream.token().startLine; + col = tokenStream.token().startCol; + + this._readWhitespace(); + + this.fire({ + type: "startfontface", + line: line, + col: col + }); + + this._readDeclarations(true); + + this.fire({ + type: "endfontface", + line: line, + col: col + }); + }, + + _viewport: function() { + var tokenStream = this._tokenStream, + line, + col; + + tokenStream.mustMatch(Tokens.VIEWPORT_SYM); + line = tokenStream.token().startLine; + col = tokenStream.token().startCol; + + this._readWhitespace(); + + this.fire({ + type: "startviewport", + line: line, + col: col + }); + + this._readDeclarations(true); + + this.fire({ + type: "endviewport", + line: line, + col: col + }); + + }, + + _document: function() { + + var tokenStream = this._tokenStream, + token, + functions = [], + prefix = ""; + + tokenStream.mustMatch(Tokens.DOCUMENT_SYM); + token = tokenStream.token(); + if (/^@-([^-]+)-/.test(token.value)) { + prefix = RegExp.$1; + } + + this._readWhitespace(); + functions.push(this._document_function()); + + while (tokenStream.match(Tokens.COMMA)) { + this._readWhitespace(); + functions.push(this._document_function()); + } + + tokenStream.mustMatch(Tokens.LBRACE); + this._readWhitespace(); + + this.fire({ + type: "startdocument", + functions: functions, + prefix: prefix, + line: token.startLine, + col: token.startCol + }); + + var ok = true; + while (ok) { + switch (tokenStream.peek()) { + case Tokens.PAGE_SYM: + this._page(); + break; + case Tokens.FONT_FACE_SYM: + this._font_face(); + break; + case Tokens.VIEWPORT_SYM: + this._viewport(); + break; + case Tokens.MEDIA_SYM: + this._media(); + break; + case Tokens.KEYFRAMES_SYM: + this._keyframes(); + break; + case Tokens.DOCUMENT_SYM: + this._document(); + break; + default: + ok = Boolean(this._ruleset()); + } + } + + tokenStream.mustMatch(Tokens.RBRACE); + token = tokenStream.token(); + this._readWhitespace(); + + this.fire({ + type: "enddocument", + functions: functions, + prefix: prefix, + line: token.startLine, + col: token.startCol + }); + }, + + _document_function: function() { + + var tokenStream = this._tokenStream, + value; + + if (tokenStream.match(Tokens.URI)) { + value = tokenStream.token().value; + this._readWhitespace(); + } else { + value = this._function(); + } + + return value; + }, + + _operator: function(inFunction) { + + var tokenStream = this._tokenStream, + token = null; + + if (tokenStream.match([Tokens.SLASH, Tokens.COMMA]) || + inFunction && tokenStream.match([Tokens.PLUS, Tokens.STAR, Tokens.MINUS])) { + token = tokenStream.token(); + this._readWhitespace(); + } + return token ? PropertyValuePart.fromToken(token) : null; + + }, + + _combinator: function() { + + var tokenStream = this._tokenStream, + value = null, + token; + + if (tokenStream.match([Tokens.PLUS, Tokens.GREATER, Tokens.TILDE])) { + token = tokenStream.token(); + value = new Combinator(token.value, token.startLine, token.startCol); + this._readWhitespace(); + } + + return value; + }, + + _unary_operator: function() { + + var tokenStream = this._tokenStream; + + if (tokenStream.match([Tokens.MINUS, Tokens.PLUS])) { + return tokenStream.token().value; + } else { + return null; + } + }, + + _property: function() { + + var tokenStream = this._tokenStream, + value = null, + hack = null, + propertyName = "", + token, + line, + col; + if (tokenStream.peek() === Tokens.STAR && this.options.starHack) { + tokenStream.get(); + token = tokenStream.token(); + hack = token.value; + line = token.startLine; + col = token.startCol; + } + if (tokenStream.peek() === Tokens.MINUS) { + tokenStream.get(); + token = tokenStream.token(); + propertyName = token.value; + line = token.startLine; + col = token.startCol; + } + + if (tokenStream.match(Tokens.IDENT)) { + token = tokenStream.token(); + propertyName += token.value; + if (propertyName.charAt(0) === "_" && this.options.underscoreHack) { + hack = "_"; + propertyName = propertyName.substring(1); + } + + value = new PropertyName(propertyName, hack, line || token.startLine, col || token.startCol); + this._readWhitespace(); + } else { + var tt = tokenStream.peek(); + if (tt !== Tokens.EOF && tt !== Tokens.RBRACE) { + this._unexpectedToken(tokenStream.LT(1)); + } + } + + return value; + }, + _ruleset: function() { + + var tokenStream = this._tokenStream, + tt, + selectors; + try { + selectors = this._selectors_group(); + } catch (ex) { + if (ex instanceof SyntaxError && !this.options.strict) { + this.fire({ + type: "error", + error: ex, + message: ex.message, + line: ex.line, + col: ex.col + }); + tt = tokenStream.advance([Tokens.RBRACE]); + if (tt === Tokens.RBRACE) { + } else { + throw ex; + } + + } else { + throw ex; + } + return true; + } + if (selectors) { + + this.fire({ + type: "startrule", + selectors: selectors, + line: selectors[0].line, + col: selectors[0].col + }); + + this._readDeclarations(true); + + this.fire({ + type: "endrule", + selectors: selectors, + line: selectors[0].line, + col: selectors[0].col + }); + + } + + return selectors; + + }, + _selectors_group: function() { + var tokenStream = this._tokenStream, + selectors = [], + selector; + + selector = this._selector(); + if (selector !== null) { + + selectors.push(selector); + while (tokenStream.match(Tokens.COMMA)) { + this._readWhitespace(); + selector = this._selector(); + if (selector !== null) { + selectors.push(selector); + } else { + this._unexpectedToken(tokenStream.LT(1)); + } + } + } + + return selectors.length ? selectors : null; + }, + _selector: function() { + + var tokenStream = this._tokenStream, + selector = [], + nextSelector = null, + combinator = null, + ws = null; + nextSelector = this._simple_selector_sequence(); + if (nextSelector === null) { + return null; + } + + selector.push(nextSelector); + + do { + combinator = this._combinator(); + + if (combinator !== null) { + selector.push(combinator); + nextSelector = this._simple_selector_sequence(); + if (nextSelector === null) { + this._unexpectedToken(tokenStream.LT(1)); + } else { + selector.push(nextSelector); + } + } else { + if (this._readWhitespace()) { + ws = new Combinator(tokenStream.token().value, tokenStream.token().startLine, tokenStream.token().startCol); + combinator = this._combinator(); + nextSelector = this._simple_selector_sequence(); + if (nextSelector === null) { + if (combinator !== null) { + this._unexpectedToken(tokenStream.LT(1)); + } + } else { + + if (combinator !== null) { + selector.push(combinator); + } else { + selector.push(ws); + } + + selector.push(nextSelector); + } + } else { + break; + } + + } + } while (true); + + return new Selector(selector, selector[0].line, selector[0].col); + }, + _simple_selector_sequence: function() { + + var tokenStream = this._tokenStream, + elementName = null, + modifiers = [], + selectorText = "", + components = [ + function() { + return tokenStream.match(Tokens.HASH) ? + new SelectorSubPart(tokenStream.token().value, "id", tokenStream.token().startLine, tokenStream.token().startCol) : + null; + }, + this._class, + this._attrib, + this._pseudo, + this._negation + ], + i = 0, + len = components.length, + component = null, + line, + col; + line = tokenStream.LT(1).startLine; + col = tokenStream.LT(1).startCol; + + elementName = this._type_selector(); + if (!elementName) { + elementName = this._universal(); + } + + if (elementName !== null) { + selectorText += elementName; + } + + while (true) { + if (tokenStream.peek() === Tokens.S) { + break; + } + while (i < len && component === null) { + component = components[i++].call(this); + } + + if (component === null) { + if (selectorText === "") { + return null; + } else { + break; + } + } else { + i = 0; + modifiers.push(component); + selectorText += component.toString(); + component = null; + } + } + + + return selectorText !== "" ? + new SelectorPart(elementName, modifiers, selectorText, line, col) : + null; + }, + _type_selector: function() { + + var tokenStream = this._tokenStream, + ns = this._namespace_prefix(), + elementName = this._element_name(); + + if (!elementName) { + if (ns) { + tokenStream.unget(); + if (ns.length > 1) { + tokenStream.unget(); + } + } + + return null; + } else { + if (ns) { + elementName.text = ns + elementName.text; + elementName.col -= ns.length; + } + return elementName; + } + }, + _class: function() { + + var tokenStream = this._tokenStream, + token; + + if (tokenStream.match(Tokens.DOT)) { + tokenStream.mustMatch(Tokens.IDENT); + token = tokenStream.token(); + return new SelectorSubPart("." + token.value, "class", token.startLine, token.startCol - 1); + } else { + return null; + } + + }, + _element_name: function() { + + var tokenStream = this._tokenStream, + token; + + if (tokenStream.match(Tokens.IDENT)) { + token = tokenStream.token(); + return new SelectorSubPart(token.value, "elementName", token.startLine, token.startCol); + + } else { + return null; + } + }, + _namespace_prefix: function() { + var tokenStream = this._tokenStream, + value = ""; + if (tokenStream.LA(1) === Tokens.PIPE || tokenStream.LA(2) === Tokens.PIPE) { + + if (tokenStream.match([Tokens.IDENT, Tokens.STAR])) { + value += tokenStream.token().value; + } + + tokenStream.mustMatch(Tokens.PIPE); + value += "|"; + + } + + return value.length ? value : null; + }, + _universal: function() { + var tokenStream = this._tokenStream, + value = "", + ns; + + ns = this._namespace_prefix(); + if (ns) { + value += ns; + } + + if (tokenStream.match(Tokens.STAR)) { + value += "*"; + } + + return value.length ? value : null; + + }, + _attrib: function() { + + var tokenStream = this._tokenStream, + value = null, + ns, + token; + + if (tokenStream.match(Tokens.LBRACKET)) { + token = tokenStream.token(); + value = token.value; + value += this._readWhitespace(); + + ns = this._namespace_prefix(); + + if (ns) { + value += ns; + } + + tokenStream.mustMatch(Tokens.IDENT); + value += tokenStream.token().value; + value += this._readWhitespace(); + + if (tokenStream.match([Tokens.PREFIXMATCH, Tokens.SUFFIXMATCH, Tokens.SUBSTRINGMATCH, + Tokens.EQUALS, Tokens.INCLUDES, Tokens.DASHMATCH])) { + + value += tokenStream.token().value; + value += this._readWhitespace(); + + tokenStream.mustMatch([Tokens.IDENT, Tokens.STRING]); + value += tokenStream.token().value; + value += this._readWhitespace(); + } + + tokenStream.mustMatch(Tokens.RBRACKET); + + return new SelectorSubPart(value + "]", "attribute", token.startLine, token.startCol); + } else { + return null; + } + }, + _pseudo: function() { + + var tokenStream = this._tokenStream, + pseudo = null, + colons = ":", + line, + col; + + if (tokenStream.match(Tokens.COLON)) { + + if (tokenStream.match(Tokens.COLON)) { + colons += ":"; + } + + if (tokenStream.match(Tokens.IDENT)) { + pseudo = tokenStream.token().value; + line = tokenStream.token().startLine; + col = tokenStream.token().startCol - colons.length; + } else if (tokenStream.peek() === Tokens.FUNCTION) { + line = tokenStream.LT(1).startLine; + col = tokenStream.LT(1).startCol - colons.length; + pseudo = this._functional_pseudo(); + } + + if (pseudo) { + pseudo = new SelectorSubPart(colons + pseudo, "pseudo", line, col); + } else { + var startLine = tokenStream.LT(1).startLine, + startCol = tokenStream.LT(0).startCol; + throw new SyntaxError("Expected a `FUNCTION` or `IDENT` after colon at line " + startLine + ", col " + startCol + ".", startLine, startCol); + } + } + + return pseudo; + }, + _functional_pseudo: function() { + + var tokenStream = this._tokenStream, + value = null; + + if (tokenStream.match(Tokens.FUNCTION)) { + value = tokenStream.token().value; + value += this._readWhitespace(); + value += this._expression(); + tokenStream.mustMatch(Tokens.RPAREN); + value += ")"; + } + + return value; + }, + _expression: function() { + + var tokenStream = this._tokenStream, + value = ""; + + while (tokenStream.match([Tokens.PLUS, Tokens.MINUS, Tokens.DIMENSION, + Tokens.NUMBER, Tokens.STRING, Tokens.IDENT, Tokens.LENGTH, + Tokens.FREQ, Tokens.ANGLE, Tokens.TIME, + Tokens.RESOLUTION, Tokens.SLASH])) { + + value += tokenStream.token().value; + value += this._readWhitespace(); + } + + return value.length ? value : null; + + }, + _negation: function() { + + var tokenStream = this._tokenStream, + line, + col, + value = "", + arg, + subpart = null; + + if (tokenStream.match(Tokens.NOT)) { + value = tokenStream.token().value; + line = tokenStream.token().startLine; + col = tokenStream.token().startCol; + value += this._readWhitespace(); + arg = this._negation_arg(); + value += arg; + value += this._readWhitespace(); + tokenStream.match(Tokens.RPAREN); + value += tokenStream.token().value; + + subpart = new SelectorSubPart(value, "not", line, col); + subpart.args.push(arg); + } + + return subpart; + }, + _negation_arg: function() { + + var tokenStream = this._tokenStream, + args = [ + this._type_selector, + this._universal, + function() { + return tokenStream.match(Tokens.HASH) ? + new SelectorSubPart(tokenStream.token().value, "id", tokenStream.token().startLine, tokenStream.token().startCol) : + null; + }, + this._class, + this._attrib, + this._pseudo + ], + arg = null, + i = 0, + len = args.length, + line, + col, + part; + + line = tokenStream.LT(1).startLine; + col = tokenStream.LT(1).startCol; + + while (i < len && arg === null) { + + arg = args[i].call(this); + i++; + } + if (arg === null) { + this._unexpectedToken(tokenStream.LT(1)); + } + if (arg.type === "elementName") { + part = new SelectorPart(arg, [], arg.toString(), line, col); + } else { + part = new SelectorPart(null, [arg], arg.toString(), line, col); + } + + return part; + }, + + _declaration: function() { + + var tokenStream = this._tokenStream, + property = null, + expr = null, + prio = null, + invalid = null, + propertyName = ""; + + property = this._property(); + if (property !== null) { + + tokenStream.mustMatch(Tokens.COLON); + this._readWhitespace(); + + expr = this._expr(); + if (!expr || expr.length === 0) { + this._unexpectedToken(tokenStream.LT(1)); + } + + prio = this._prio(); + propertyName = property.toString(); + if (this.options.starHack && property.hack === "*" || + this.options.underscoreHack && property.hack === "_") { + + propertyName = property.text; + } + + try { + this._validateProperty(propertyName, expr); + } catch (ex) { + invalid = ex; + } + + this.fire({ + type: "property", + property: property, + value: expr, + important: prio, + line: property.line, + col: property.col, + invalid: invalid + }); + + return true; + } else { + return false; + } + }, + + _prio: function() { + + var tokenStream = this._tokenStream, + result = tokenStream.match(Tokens.IMPORTANT_SYM); + + this._readWhitespace(); + return result; + }, + + _expr: function(inFunction) { + + var values = [], + value = null, + operator = null; + + value = this._term(inFunction); + if (value !== null) { + + values.push(value); + + do { + operator = this._operator(inFunction); + if (operator) { + values.push(operator); + } /*else { + values.push(new PropertyValue(valueParts, valueParts[0].line, valueParts[0].col)); + valueParts = []; + }*/ + + value = this._term(inFunction); + + if (value === null) { + break; + } else { + values.push(value); + } + } while (true); + } + + return values.length > 0 ? new PropertyValue(values, values[0].line, values[0].col) : null; + }, + + _term: function(inFunction) { + + var tokenStream = this._tokenStream, + unary = null, + value = null, + endChar = null, + part = null, + token, + line, + col; + unary = this._unary_operator(); + if (unary !== null) { + line = tokenStream.token().startLine; + col = tokenStream.token().startCol; + } + if (tokenStream.peek() === Tokens.IE_FUNCTION && this.options.ieFilters) { + + value = this._ie_function(); + if (unary === null) { + line = tokenStream.token().startLine; + col = tokenStream.token().startCol; + } + } else if (inFunction && tokenStream.match([Tokens.LPAREN, Tokens.LBRACE, Tokens.LBRACKET])) { + + token = tokenStream.token(); + endChar = token.endChar; + value = token.value + this._expr(inFunction).text; + if (unary === null) { + line = tokenStream.token().startLine; + col = tokenStream.token().startCol; + } + tokenStream.mustMatch(Tokens.type(endChar)); + value += endChar; + this._readWhitespace(); + } else if (tokenStream.match([Tokens.NUMBER, Tokens.PERCENTAGE, Tokens.LENGTH, + Tokens.ANGLE, Tokens.TIME, + Tokens.FREQ, Tokens.STRING, Tokens.IDENT, Tokens.URI, Tokens.UNICODE_RANGE])) { + + value = tokenStream.token().value; + if (unary === null) { + line = tokenStream.token().startLine; + col = tokenStream.token().startCol; + part = PropertyValuePart.fromToken(tokenStream.token()); + } + this._readWhitespace(); + } else { + token = this._hexcolor(); + if (token === null) { + if (unary === null) { + line = tokenStream.LT(1).startLine; + col = tokenStream.LT(1).startCol; + } + if (value === null) { + if (tokenStream.LA(3) === Tokens.EQUALS && this.options.ieFilters) { + value = this._ie_function(); + } else { + value = this._function(); + } + } + + } else { + value = token.value; + if (unary === null) { + line = token.startLine; + col = token.startCol; + } + } + + } + + return part !== null ? part : value !== null ? + new PropertyValuePart(unary !== null ? unary + value : value, line, col) : + null; + + }, + + _function: function() { + + var tokenStream = this._tokenStream, + functionText = null, + expr = null, + lt; + + if (tokenStream.match(Tokens.FUNCTION)) { + functionText = tokenStream.token().value; + this._readWhitespace(); + expr = this._expr(true); + functionText += expr; + if (this.options.ieFilters && tokenStream.peek() === Tokens.EQUALS) { + do { + + if (this._readWhitespace()) { + functionText += tokenStream.token().value; + } + if (tokenStream.LA(0) === Tokens.COMMA) { + functionText += tokenStream.token().value; + } + + tokenStream.match(Tokens.IDENT); + functionText += tokenStream.token().value; + + tokenStream.match(Tokens.EQUALS); + functionText += tokenStream.token().value; + lt = tokenStream.peek(); + while (lt !== Tokens.COMMA && lt !== Tokens.S && lt !== Tokens.RPAREN) { + tokenStream.get(); + functionText += tokenStream.token().value; + lt = tokenStream.peek(); + } + } while (tokenStream.match([Tokens.COMMA, Tokens.S])); + } + + tokenStream.match(Tokens.RPAREN); + functionText += ")"; + this._readWhitespace(); + } + + return functionText; + }, + + _ie_function: function() { + + var tokenStream = this._tokenStream, + functionText = null, + lt; + if (tokenStream.match([Tokens.IE_FUNCTION, Tokens.FUNCTION])) { + functionText = tokenStream.token().value; + + do { + + if (this._readWhitespace()) { + functionText += tokenStream.token().value; + } + if (tokenStream.LA(0) === Tokens.COMMA) { + functionText += tokenStream.token().value; + } + + tokenStream.match(Tokens.IDENT); + functionText += tokenStream.token().value; + + tokenStream.match(Tokens.EQUALS); + functionText += tokenStream.token().value; + lt = tokenStream.peek(); + while (lt !== Tokens.COMMA && lt !== Tokens.S && lt !== Tokens.RPAREN) { + tokenStream.get(); + functionText += tokenStream.token().value; + lt = tokenStream.peek(); + } + } while (tokenStream.match([Tokens.COMMA, Tokens.S])); + + tokenStream.match(Tokens.RPAREN); + functionText += ")"; + this._readWhitespace(); + } + + return functionText; + }, + + _hexcolor: function() { + + var tokenStream = this._tokenStream, + token = null, + color; + + if (tokenStream.match(Tokens.HASH)) { + + token = tokenStream.token(); + color = token.value; + if (!/#[a-f0-9]{3,6}/i.test(color)) { + throw new SyntaxError("Expected a hex color but found '" + color + "' at line " + token.startLine + ", col " + token.startCol + ".", token.startLine, token.startCol); + } + this._readWhitespace(); + } + + return token; + }, + + _keyframes: function() { + var tokenStream = this._tokenStream, + token, + tt, + name, + prefix = ""; + + tokenStream.mustMatch(Tokens.KEYFRAMES_SYM); + token = tokenStream.token(); + if (/^@-([^-]+)-/.test(token.value)) { + prefix = RegExp.$1; + } + + this._readWhitespace(); + name = this._keyframe_name(); + + this._readWhitespace(); + tokenStream.mustMatch(Tokens.LBRACE); + + this.fire({ + type: "startkeyframes", + name: name, + prefix: prefix, + line: token.startLine, + col: token.startCol + }); + + this._readWhitespace(); + tt = tokenStream.peek(); + while (tt === Tokens.IDENT || tt === Tokens.PERCENTAGE) { + this._keyframe_rule(); + this._readWhitespace(); + tt = tokenStream.peek(); + } + + this.fire({ + type: "endkeyframes", + name: name, + prefix: prefix, + line: token.startLine, + col: token.startCol + }); + + this._readWhitespace(); + tokenStream.mustMatch(Tokens.RBRACE); + this._readWhitespace(); + + }, + + _keyframe_name: function() { + var tokenStream = this._tokenStream; + + tokenStream.mustMatch([Tokens.IDENT, Tokens.STRING]); + return SyntaxUnit.fromToken(tokenStream.token()); + }, + + _keyframe_rule: function() { + var keyList = this._key_list(); + + this.fire({ + type: "startkeyframerule", + keys: keyList, + line: keyList[0].line, + col: keyList[0].col + }); + + this._readDeclarations(true); + + this.fire({ + type: "endkeyframerule", + keys: keyList, + line: keyList[0].line, + col: keyList[0].col + }); + + }, + + _key_list: function() { + var tokenStream = this._tokenStream, + keyList = []; + keyList.push(this._key()); + + this._readWhitespace(); + + while (tokenStream.match(Tokens.COMMA)) { + this._readWhitespace(); + keyList.push(this._key()); + this._readWhitespace(); + } + + return keyList; + }, + + _key: function() { + + var tokenStream = this._tokenStream, + token; + + if (tokenStream.match(Tokens.PERCENTAGE)) { + return SyntaxUnit.fromToken(tokenStream.token()); + } else if (tokenStream.match(Tokens.IDENT)) { + token = tokenStream.token(); + + if (/from|to/i.test(token.value)) { + return SyntaxUnit.fromToken(token); + } + + tokenStream.unget(); + } + this._unexpectedToken(tokenStream.LT(1)); + }, + _skipCruft: function() { + while (this._tokenStream.match([Tokens.S, Tokens.CDO, Tokens.CDC])) { + } + }, + _readDeclarations: function(checkStart, readMargins) { + var tokenStream = this._tokenStream, + tt; + + + this._readWhitespace(); + + if (checkStart) { + tokenStream.mustMatch(Tokens.LBRACE); + } + + this._readWhitespace(); + + try { + + while (true) { + + if (tokenStream.match(Tokens.SEMICOLON) || (readMargins && this._margin())) { + } else if (this._declaration()) { + if (!tokenStream.match(Tokens.SEMICOLON)) { + break; + } + } else { + break; + } + this._readWhitespace(); + } + + tokenStream.mustMatch(Tokens.RBRACE); + this._readWhitespace(); + + } catch (ex) { + if (ex instanceof SyntaxError && !this.options.strict) { + this.fire({ + type: "error", + error: ex, + message: ex.message, + line: ex.line, + col: ex.col + }); + tt = tokenStream.advance([Tokens.SEMICOLON, Tokens.RBRACE]); + if (tt === Tokens.SEMICOLON) { + this._readDeclarations(false, readMargins); + } else if (tt !== Tokens.EOF && tt !== Tokens.RBRACE) { + throw ex; + } + + } else { + throw ex; + } + } + + }, + _readWhitespace: function() { + + var tokenStream = this._tokenStream, + ws = ""; + + while (tokenStream.match(Tokens.S)) { + ws += tokenStream.token().value; + } + + return ws; + }, + _unexpectedToken: function(token) { + throw new SyntaxError("Unexpected token '" + token.value + "' at line " + token.startLine + ", col " + token.startCol + ".", token.startLine, token.startCol); + }, + _verifyEnd: function() { + if (this._tokenStream.LA(1) !== Tokens.EOF) { + this._unexpectedToken(this._tokenStream.LT(1)); + } + }, + _validateProperty: function(property, value) { + Validation.validate(property, value); + }, + + parse: function(input) { + this._tokenStream = new TokenStream(input, Tokens); + this._stylesheet(); + }, + + parseStyleSheet: function(input) { + return this.parse(input); + }, + + parseMediaQuery: function(input) { + this._tokenStream = new TokenStream(input, Tokens); + var result = this._media_query(); + this._verifyEnd(); + return result; + }, + parsePropertyValue: function(input) { + + this._tokenStream = new TokenStream(input, Tokens); + this._readWhitespace(); + + var result = this._expr(); + this._readWhitespace(); + this._verifyEnd(); + return result; + }, + parseRule: function(input) { + this._tokenStream = new TokenStream(input, Tokens); + this._readWhitespace(); + + var result = this._ruleset(); + this._readWhitespace(); + this._verifyEnd(); + return result; + }, + parseSelector: function(input) { + + this._tokenStream = new TokenStream(input, Tokens); + this._readWhitespace(); + + var result = this._selector(); + this._readWhitespace(); + this._verifyEnd(); + return result; + }, + parseStyleAttribute: function(input) { + input += "}"; // for error recovery in _readDeclarations() + this._tokenStream = new TokenStream(input, Tokens); + this._readDeclarations(); + } + }; + for (prop in additions) { + if (Object.prototype.hasOwnProperty.call(additions, prop)) { + proto[prop] = additions[prop]; + } + } + + return proto; +}(); + +},{"../util/EventTarget":23,"../util/SyntaxError":25,"../util/SyntaxUnit":26,"./Combinator":2,"./MediaFeature":4,"./MediaQuery":5,"./PropertyName":8,"./PropertyValue":9,"./PropertyValuePart":11,"./Selector":13,"./SelectorPart":14,"./SelectorSubPart":15,"./TokenStream":17,"./Tokens":18,"./Validation":19}],7:[function(require,module,exports){ + +"use strict"; + +var Properties = module.exports = { + __proto__: null, + "align-items" : "flex-start | flex-end | center | baseline | stretch", + "align-content" : "flex-start | flex-end | center | space-between | space-around | stretch", + "align-self" : "auto | flex-start | flex-end | center | baseline | stretch", + "all" : "initial | inherit | unset", + "-webkit-align-items" : "flex-start | flex-end | center | baseline | stretch", + "-webkit-align-content" : "flex-start | flex-end | center | space-between | space-around | stretch", + "-webkit-align-self" : "auto | flex-start | flex-end | center | baseline | stretch", + "alignment-adjust" : "auto | baseline | before-edge | text-before-edge | middle | central | after-edge | text-after-edge | ideographic | alphabetic | hanging | mathematical | | ", + "alignment-baseline" : "auto | baseline | use-script | before-edge | text-before-edge | after-edge | text-after-edge | central | middle | ideographic | alphabetic | hanging | mathematical", + "animation" : 1, + "animation-delay" : "
      \ No newline at end of file diff --git a/web/dist/static/css/base.css b/web/dist/static/css/base.css new file mode 100644 index 00000000..2e432b65 --- /dev/null +++ b/web/dist/static/css/base.css @@ -0,0 +1,15 @@ +@font-face { + font-family: 'webfont'; + src: url('../font/webfont.eot'); /* IE9 */ + src: url('../font/webfont.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('../font/webfont.woff') format('woff'), /* chrome、firefox */ + url('../font/webfont.ttf') format('truetype'), /* chrome、firefox、opera、Safari, Android, iOS 4.2+*/ + url('../font/webfont.svg#webfont') format('svg'); /* iOS 4.1- */ +} +.web-font { + font-family: "webfont",Arial,sans-serif; + /* font-size: 16px; */ + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} \ No newline at end of file diff --git a/web/dist/static/css/reset.css b/web/dist/static/css/reset.css new file mode 100644 index 00000000..88d2713c --- /dev/null +++ b/web/dist/static/css/reset.css @@ -0,0 +1,39 @@ +*{margin: 0;padding: 0;list-style: none;} + + +body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, +dl, dt, dd, ul, ol, li, +pre, +form, fieldset, legend, button, input, textarea, +th, td { + margin: 0; + padding: 0; +} +html,body{ + height: 100%; +} +body, +button, input, select, textarea /* for ie */ { + font: 14px/1.5 tahoma, arial, \5b8b\4f53, sans-serif; +} +h1, h2, h3, h4, h5, h6 { font-size: 100%; } +address, cite, dfn, em, var { font-style: normal; } +code, kbd, pre, samp { font-family: courier new, courier, monospace; } +small { font-size: 14px; } +ul, ol { list-style: none; } +a { text-decoration: none; } +a:hover { text-decoration: underline; } +legend { color: #000; } /* for ie6 */ +fieldset, img { border: 0; } +button, input, select, textarea { font-size: 100%; } +table { border-collapse: collapse; border-spacing: 0; } +.ks-clear:after, .clear:after { + content: '\20'; + display: block; + height: 0; + clear: both; +} +.ks-clear, .clear { + *zoom: 1; +} + diff --git a/web/dist/static/font/webfont.eot b/web/dist/static/font/webfont.eot new file mode 100644 index 00000000..e69de29b diff --git a/web/dist/static/font/webfont.svg b/web/dist/static/font/webfont.svg new file mode 100644 index 00000000..0535696c --- /dev/null +++ b/web/dist/static/font/webfont.svg @@ -0,0 +1,157 @@ + + + + + +Created by webfont + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/web/dist/static/font/webfont.ttf b/web/dist/static/font/webfont.ttf new file mode 100644 index 00000000..e69de29b diff --git a/web/dist/static/font/webfont.woff b/web/dist/static/font/webfont.woff new file mode 100644 index 00000000..e69de29b diff --git a/web/dist/static/font/webfont.woff2 b/web/dist/static/font/webfont.woff2 new file mode 100644 index 00000000..e69de29b diff --git a/web/dist/static/fonts/element-icons.535877f.woff b/web/dist/static/fonts/element-icons.535877f.woff new file mode 100644 index 0000000000000000000000000000000000000000..02b9a2539e425a7a8c244faba92527602be76212 GIT binary patch literal 28200 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
      %#5t+7yTm^Z{)9pPFdh-)p? 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⪥BcE8Q$x6=ZfXs79s!l$CshZUM}jksx- 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 DARTT- literal 0 HcmV?d00001 diff --git a/web/dist/static/fonts/iconfont.ee39531.ttf b/web/dist/static/fonts/iconfont.ee39531.ttf new file mode 100644 index 0000000000000000000000000000000000000000..603eb87bcdfbcb6871a8c3e006162882fb83b344 GIT binary patch literal 15784 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 literal 0 HcmV?d00001 diff --git a/web/dist/static/image/banner.jpg b/web/dist/static/image/banner.jpg new file mode 100644 index 0000000000000000000000000000000000000000..15821c95be5cb91960d2e38501dedc1bb4a04b56 GIT binary patch literal 38700 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%0D+D~(ty4LV-v~#1x@}W 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 YwS&zprC|7Ppd5H9b7H<3_WSk!0bUZ32mk;8 literal 0 HcmV?d00001 diff --git a/web/dist/static/image/block.png b/web/dist/static/image/block.png new file mode 100644 index 0000000000000000000000000000000000000000..6722064475100e2e3a84cea12cf80dea1e789c96 GIT binary patch literal 6900 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 literal 0 HcmV?d00001 diff --git a/web/dist/static/image/logo-2 copy@1.5x.jpg b/web/dist/static/image/logo-2 copy@1.5x.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7112b74e3c7402b0f5b19331fbd066b68b0a9f1c GIT binary patch literal 8486 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 b9!&dxF(;aWmv(L$00000NkvXXu0mjf{O{UQ literal 0 HcmV?d00001 diff --git a/web/dist/static/image/logo@2x.png b/web/dist/static/image/logo@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..20543ebf6862b4b5aa73cf91f8b9b9ad18c595dd GIT binary patch literal 8380 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 SaEliJ0000sN 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 LNkvXXu0mjf;I#OP literal 0 HcmV?d00001 diff --git a/web/dist/static/img/fontello.9354499.svg b/web/dist/static/img/fontello.9354499.svg new file mode 100644 index 00000000..01812b46 --- /dev/null +++ b/web/dist/static/img/fontello.9354499.svg @@ -0,0 +1,72 @@ + + + +Copyright (C) 2017 by original authors @ fontello.com + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/dist/static/img/iconfont.7fa1e8d.svg b/web/dist/static/img/iconfont.7fa1e8d.svg new file mode 100644 index 00000000..cd8defbf --- /dev/null +++ b/web/dist/static/img/iconfont.7fa1e8d.svg @@ -0,0 +1,251 @@ + + + + + +Created by iconfont + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/web/dist/static/img/transation.1a3785f.png b/web/dist/static/img/transation.1a3785f.png new file mode 100644 index 0000000000000000000000000000000000000000..05ae6659750292134dd696e582d4002982077455 GIT binary patch literal 10925 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.now()-864e4}},chartParam:{gap:60,beginDate:(0,i.format)((new Date).getTime(),"yyyy-MM-dd")+"T"+(0,i.format)(new Date((new Date).toLocaleDateString()).getTime(),"HH:mm:ss"),endDate:(0,i.format)((new Date).getTime(),"yyyy-MM-dd")+"T"+(0,i.format)((new Date).getTime(),"HH:mm:ss"),contrastBeginDate:"",contrastEndDate:"",groupId:localStorage.getItem("groupId")||null},nodesReloadNum:1,nodesHealthData:[]}},beforeDestroy:function(){s.default.$off("changeGroup"),s.default.$off("chooselanguage")},mounted:function(){var t=this;s.default.$on("changeGroup",(function(e){t.changeGroup(e)})),s.default.$on("chooselanguage",(function(e){t.changeGroup(t.chartParam.groupId)})),this.chartParam.groupId&&this.getHealthData()},methods:{changeGroup:function(t){this.chartParam.groupId=t,this.getHealthData()},changeCurrentDate:function(t){this.startEndTime=[new Date((new Date).toLocaleDateString()),new Date]},changeContrastDate:function(t){},getHealthData:function(){var t=this;1===this.nodesReloadNum&&(this.loadingInit=!0),this.loading=!0,this.sureing=!0;var e,n={};e=this.chartParam,console.log(n,e),(0,o.nodesHealth)(n,e).then((function(e){t.loading=!1,t.sureing=!1,t.loadingInit=!1;var n=e.data,r=e.status;e.statusText;if(200===r){if(n[0].data.lineDataList.timestampList.length>0)var a=n[0].data.lineDataList.timestampList||[];else a=n[0].data.contrastDataList.timestampList||[];t.nodesHealthData=n,t.nodesHealthData.forEach((function(e){"blockHeight"===e.metricType?e.metricName=t.$t("text.blockHeight"):"pbftView"===e.metricType?e.metricName="pbftView":"pendingCount"===e.metricType&&(e.metricName=t.$t("text.pendingTransactions")),t.chartParam.contrastBeginDate?e.data.contrastDataList.contractDataShow=!0:e.data.contrastDataList.contractDataShow=!1,e.data.contrastDataList.timestampList=a,e.data.lineDataList.timestampList=a})),t.nodesReloadNum++}else t.$message({type:"error",message:t.$chooseLang(e.data.code)})})).catch((function(e){t.$message({type:"error",message:e.data||t.$t("text.systemError")})}))},confirmParam:function(){this.timeParam(),this.getHealthData()},timeParam:function(){var t=(0,i.format)(new Date(this.startEndTime[0]).getTime(),"HH:mm:ss"),e=(0,i.format)(new Date(this.startEndTime[1]).getTime(),"HH:mm:ss");this.currentDate&&(this.beginDate=this.currentDate+"T"+t,this.endDate=this.currentDate+"T"+e),this.currentDate&&this.contrastDate&&(this.beginDate=this.currentDate+"T"+t,this.endDate=this.currentDate+"T"+e,this.contrastBeginDate=this.contrastDate+"T"+t,this.contrastEndDate=this.contrastDate+"T"+e),this.contrastDate||(this.beginDate=this.currentDate+"T"+t,this.endDate=this.currentDate+"T"+e,this.contrastBeginDate="",this.contrastEndDate=""),this.chartParam.beginDate=this.beginDate,this.chartParam.endDate=this.endDate,this.chartParam.contrastBeginDate=this.contrastBeginDate,this.chartParam.contrastEndDate=this.contrastEndDate,this.chartParam.gap=this.timeGranularity,this.chartParam.groupId=localStorage.getItem("groupId")?localStorage.getItem("groupId"):"1"}}}},"0OoW":function(t,e,n){(t.exports=n("JPst")(!1)).push([t.i,'\n.search-part[data-v-179bb655]::after {\r\n display: block;\r\n content: "";\r\n clear: both;\n}\n.search-part-left-btn[data-v-179bb655] {\r\n border-radius: 20px;\n}\r\n',""])},"0UaX":function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return a}));var r=function(){var t=this,e=t._self._c;return e("div",[e("el-dialog",{staticClass:"dialog-wrapper",attrs:{title:t.$t("title.newFolder"),visible:t.dialogVisible,"before-close":t.modelClose,width:"433px",center:!0},on:{"update:visible":function(e){t.dialogVisible=e}}},[e("div",[e("el-form",{ref:"folderFrom",staticClass:"demo-ruleForm",attrs:{model:t.folderFrom,rules:t.rules,"label-width":"100px"}},[e("el-form-item",{staticStyle:{width:"330px"},attrs:{label:t.$t("dialog.folderName"),prop:"folderName"}},[e("el-input",{model:{value:t.folderFrom.folderName,callback:function(e){t.$set(t.folderFrom,"folderName",e)},expression:"folderFrom.folderName"}})],1)],1)],1),t._v(" "),e("div",{staticClass:"dialog-footer",attrs:{slot:"footer"},slot:"footer"},[e("el-button",{on:{click:t.modelClose}},[t._v(t._s(t.$t("dialog.cancel")))]),t._v(" "),e("el-button",{attrs:{type:"primary"},on:{click:function(e){return t.submit("folderFrom")}}},[t._v(t._s(t.$t("dialog.confirm")))])],1)])],1)},a=[];r._withStripped=!0},"0XYM":function(t,e,n){(t.exports=n("JPst")(!1)).push([t.i,"\n.zZindex {\r\n z-index: 3000 !important;\n}\r\n",""])},"0f2K":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n("mHBk"),a=n("DgvE"),o=n("J66h").Base64;e.default={name:"ImportFrom",components:{},props:{},data:function(){return{options:[],contractContent:"",fileVisible:!1,folderFrom:{outUrl:"",folderName:"/"},contractName:"",loading:!1}},computed:{rules:function(){return{folderName:[{required:!0,message:this.$t("dialog.pleaseType")+" "+this.$t("dialog.folderName"),trigger:"blur"}],outUrl:[{required:!0,message:""+this.$t("dialog.pleaseType")+this.$t("dialog.outUrl"),trigger:"blur"},{pattern:/(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?/,message:this.$t("rule.urlRule"),trigger:"blur"}]}}},watch:{},created:function(){},mounted:function(){this.getContractPaths()},methods:{getContractPaths:function(){var t=this;(0,r.getContractPathList)(localStorage.getItem("groupId")).then((function(e){if(200==e.status){var n=e.data;t.options=n.filter((function(t){return"template"!=t.contractPath}))}else t.$message({type:"error",message:t.$chooseLang(e.data.code)})}))},modelClose:function(){this.$emit("modelClose")},submit:function(t){var e=this;this.$refs[t].validate((function(t){if(!t)return!1;e.contractName=(0,a.getUrlLastValue)(e.folderFrom.outUrl),e.fetchGitContent()}))},fetchGitContent:function(){var t=this,e=(this.outUrl,(0,a.timestampUrl)(this.folderFrom.outUrl));this.loading=!0,(0,r.exportOutContract)(e).then((function(e){var n=e.status,r=e.data;t.loading=!1,console.log(n,r),200===n?(t.contractContent=r,t.querySaveContract()):t.$message({type:"error",message:t.$t("text.overtime")})})).catch((function(e){t.$message({type:"error",message:e})}))},querySaveContract:function(){var t=this,e={groupId:localStorage.getItem("groupId"),contractName:this.contractName,contractPath:this.folderFrom.folderName,contractSource:o.encode(this.contractContent)};(0,r.saveChaincode)(e).then((function(e){e.data;200===e.status?(t.$message({type:"success",message:t.$t("text.exportSuccessed")}),t.$emit("exportSuccessed")):t.$message({type:"error",message:t.$chooseLang(e.data.code)})}))}}}},"0v/p":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default={name:"decodeLog",components:{},props:["logInfo"],data:function(){return{eventLgData:[],content:""}},computed:{},watch:{},created:function(){},mounted:function(){this.decodeEvent()},methods:{decodeEvent:function(){var t=this,e=n("qrFr"),r=JSON.parse(this.logInfo.contractAbi),a=[];r.forEach((function(e){"event"==e.type&&e.name===t.logInfo.eventName&&(console.log(e),a=e.inputs)}));var o=e.decodeLog(a,this.logInfo.data,this.logInfo.topics.slice(1));console.log("eventResult:",o),console.log("inputs:",a),a.forEach((function(t){t.data=o[t.name]})),console.log("Newinputs:",a);var i=[];a.forEach((function(t){i.push(t.type+" "+t.name+" "+t.data)})),console.log(i),this.content=this.logInfo.eventName+" ("+i.join()+")"},copyPubilcKey:function(t){var e=this;t?this.$copyText(t).then((function(t){e.$message({type:"success",showClose:!0,message:"复制成功",duration:2e3})})):this.$message({type:"fail",showClose:!0,message:"key为空,不复制。",duration:2e3})}}}},"15Yw":function(t,e,n){var r=n("irSI");r.__esModule&&(r=r.default),"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals);(0,n("SZ7m").default)("abb09804",r,!1,{})},"1SPy":function(t,e,n){t.exports=function(t){var e={};function n(r){if(e[r])return e[r].exports;var a=e[r]={i:r,l:!1,exports:{}};return t[r].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var a in t)n.d(r,a,function(e){return t[e]}.bind(null,a));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s="fb15")}({"0026":function(t,e,n){var r=n("bc35");"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals);(0,n("499e").default)("496ca1c6",r,!0,{sourceMap:!1,shadowMode:!1})},2350:function(t,e){t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var n=function(t,e){var n=t[1]||"",r=t[3];if(!r)return n;if(e&&"function"==typeof btoa){var a=(i=r,"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(i))))+" */"),o=r.sources.map((function(t){return"/*# sourceURL="+r.sourceRoot+t+" */"}));return[n].concat(o).concat([a]).join("\n")}var i;return[n].join("\n")}(e,t);return e[2]?"@media "+e[2]+"{"+n+"}":n})).join("")},e.i=function(t,n){"string"==typeof t&&(t=[[null,t,""]]);for(var r={},a=0;an.parts.length&&(r.parts.length=n.parts.length)}else{var i=[];for(a=0;a\n \n \n \n \n \n \n \n \n \n\n\n'},"65d9":function(t,e,n){"use strict"; +/** + * vue-class-component v6.2.0 + * (c) 2015-present Evan You + * @license MIT + */Object.defineProperty(e,"__esModule",{value:!0});var r,a=(r=n("8bbf"))&&"object"==typeof r&&"default"in r?r.default:r,o={__proto__:[]}instanceof Array;var i=["data","beforeCreate","created","beforeMount","mounted","beforeDestroy","destroyed","beforeUpdate","updated","activated","deactivated","render","errorCaptured"];function s(t,e){void 0===e&&(e={}),e.name=e.name||t._componentTag||t.name;var n=t.prototype;Object.getOwnPropertyNames(n).forEach((function(t){if("constructor"!==t)if(i.indexOf(t)>-1)e[t]=n[t];else{var r=Object.getOwnPropertyDescriptor(n,t);"function"==typeof r.value?(e.methods||(e.methods={}))[t]=r.value:(r.get||r.set)&&((e.computed||(e.computed={}))[t]={get:r.get,set:r.set})}})),(e.mixins||(e.mixins=[])).push({data:function(){return function(t,e){var n=e.prototype._init;e.prototype._init=function(){var e=this,n=Object.getOwnPropertyNames(t);if(t.$options.props)for(var r in t.$options.props)t.hasOwnProperty(r)||n.push(r);n.forEach((function(n){"_"!==n.charAt(0)&&Object.defineProperty(e,n,{get:function(){return t[n]},set:function(e){return t[n]=e},configurable:!0})}))};var r=new e;e.prototype._init=n;var a={};return Object.keys(r).forEach((function(t){void 0!==r[t]&&(a[t]=r[t])})),a}(this,t)}});var r=t.__decorators__;r&&(r.forEach((function(t){return t(e)})),delete t.__decorators__);var s=Object.getPrototypeOf(t.prototype),c=s instanceof a?s.constructor:a,l=c.extend(e);return function(t,e,n){Object.getOwnPropertyNames(e).forEach((function(r){if("prototype"!==r){var a=Object.getOwnPropertyDescriptor(t,r);if(!a||a.configurable){var i,s,c=Object.getOwnPropertyDescriptor(e,r);if(!o){if("cid"===r)return;var l=Object.getOwnPropertyDescriptor(n,r);if(i=c.value,s=typeof i,null!=i&&("object"===s||"function"===s)&&l&&l.value===c.value)return}0,Object.defineProperty(t,r,c)}}}))}(l,t,c),l}function c(t){return"function"==typeof t?s(t):function(e){return s(e,t)}}!function(t){t.registerHooks=function(t){i.push.apply(i,t)}}(c||(c={}));var l=c;e.default=l,e.createDecorator=function(t){return function(e,n,r){var a="function"==typeof e?e:e.constructor;a.__decorators__||(a.__decorators__=[]),"number"!=typeof r&&(r=void 0),a.__decorators__.push((function(e){return t(e,n,r)}))}},e.mixins=function(){for(var t=[],e=0;e\n \n \n \n \n \n \n \n \n \n '},"8d87":function(t,e){t.exports='\n\n \n \n \n \n \n \n \n \n \n \n \n \n\n\n '},"98db":function(t,e,n){(function(t,e){ +/*! ***************************************************************************** +Copyright (C) Microsoft. All rights reserved. +Licensed under the Apache License, Version 2.0 (the "License"); you may not use +this file except in compliance with the License. You may obtain a copy of the +License at http://www.apache.org/licenses/LICENSE-2.0 + +THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED +WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, +MERCHANTABLITY OR NON-INFRINGEMENT. + +See the Apache Version 2.0 License for specific language governing permissions +and limitations under the License. +***************************************************************************** */ +var n;!function(n){!function(r){var a="object"==typeof e?e:"object"==typeof self?self:"object"==typeof this?this:Function("return this;")(),o=i(n);function i(t,e){return function(n,r){"function"!=typeof t[n]&&Object.defineProperty(t,n,{configurable:!0,writable:!0,value:r}),e&&e(n,r)}}void 0===a.Reflect?a.Reflect=n:o=i(a.Reflect,o),function(e){var n=Object.prototype.hasOwnProperty,r="function"==typeof Symbol,a=r&&void 0!==Symbol.toPrimitive?Symbol.toPrimitive:"@@toPrimitive",o=r&&void 0!==Symbol.iterator?Symbol.iterator:"@@iterator",i="function"==typeof Object.create,s={__proto__:[]}instanceof Array,c=!i&&!s,l={create:i?function(){return O(Object.create(null))}:s?function(){return O({__proto__:null})}:function(){return O({})},has:c?function(t,e){return n.call(t,e)}:function(t,e){return e in t},get:c?function(t,e){return n.call(t,e)?t[e]:void 0}:function(t,e){return t[e]}},u=Object.getPrototypeOf(Function),d="object"==typeof t&&Object({NODE_ENV:"production",BASE_URL:"/vue-loading/"})&&"true"===Object({NODE_ENV:"production",BASE_URL:"/vue-loading/"}).REFLECT_METADATA_USE_MAP_POLYFILL,f=d||"function"!=typeof Map||"function"!=typeof Map.prototype.entries?function(){var t={},e=[],n=function(){function t(t,e,n){this._index=0,this._keys=t,this._values=e,this._selector=n}return t.prototype["@@iterator"]=function(){return this},t.prototype[o]=function(){return this},t.prototype.next=function(){var t=this._index;if(t>=0&&t=this._keys.length?(this._index=-1,this._keys=e,this._values=e):this._index++,{value:n,done:!1}}return{value:void 0,done:!0}},t.prototype.throw=function(t){throw this._index>=0&&(this._index=-1,this._keys=e,this._values=e),t},t.prototype.return=function(t){return this._index>=0&&(this._index=-1,this._keys=e,this._values=e),{value:t,done:!0}},t}();return function(){function e(){this._keys=[],this._values=[],this._cacheKey=t,this._cacheIndex=-2}return Object.defineProperty(e.prototype,"size",{get:function(){return this._keys.length},enumerable:!0,configurable:!0}),e.prototype.has=function(t){return this._find(t,!1)>=0},e.prototype.get=function(t){var e=this._find(t,!1);return e>=0?this._values[e]:void 0},e.prototype.set=function(t,e){var n=this._find(t,!0);return this._values[n]=e,this},e.prototype.delete=function(e){var n=this._find(e,!1);if(n>=0){for(var r=this._keys.length,a=n+1;a=0;--n){var r=(0,t[n])(e);if(!x(r)&&!w(r)){if(!I(r))throw new TypeError;e=r}}return e}(t,e)}if(!S(t))throw new TypeError;if(!$(e))throw new TypeError;if(!$(r)&&!x(r)&&!w(r))throw new TypeError;return w(r)&&(r=void 0),function(t,e,n,r){for(var a=t.length-1;a>=0;--a){var o=(0,t[a])(e,n,r);if(!x(o)&&!w(o)){if(!$(o))throw new TypeError;r=o}}return r}(t,e,n=C(n),r)})),e("metadata",(function(t,e){return function(n,r){if(!$(n))throw new TypeError;if(!x(r)&&!function(t){switch(_(t)){case 3:case 4:return!0;default:return!1}}(r))throw new TypeError;b(t,e,n,r)}})),e("defineMetadata",(function(t,e,n,r){if(!$(n))throw new TypeError;return x(r)||(r=C(r)),b(t,e,n,r)})),e("hasMetadata",(function(t,e,n){if(!$(e))throw new TypeError;return x(n)||(n=C(n)),function t(e,n,r){if(v(e,n,r))return!0;var a=F(n);return!w(a)&&t(e,a,r)}(t,e,n)})),e("hasOwnMetadata",(function(t,e,n){if(!$(e))throw new TypeError;return x(n)||(n=C(n)),v(t,e,n)})),e("getMetadata",(function(t,e,n){if(!$(e))throw new TypeError;return x(n)||(n=C(n)),function t(e,n,r){if(v(e,n,r))return g(e,n,r);var a=F(n);return w(a)?void 0:t(e,a,r)}(t,e,n)})),e("getOwnMetadata",(function(t,e,n){if(!$(e))throw new TypeError;return x(n)||(n=C(n)),g(t,e,n)})),e("getMetadataKeys",(function(t,e){if(!$(t))throw new TypeError;return x(e)||(e=C(e)),function t(e,n){var r=y(e,n),a=F(e);if(null===a)return r;var o=t(a,n);if(o.length<=0)return r;if(r.length<=0)return o;for(var i=new p,s=[],c=0,l=r;c0)return!0;var a=h.get(e);return a.delete(n),a.size>0||h.delete(e),!0}))}(o)}()}(n||(n={}))}).call(this,n("4362"),n("c8ba"))},"9de4":function(t,e){t.exports='\n \n \n \n \n \n \n \n \n \n \n \n \n'},aa05:function(t,e){t.exports='\n \n \n \n \n \n \n \n \n \n \n \n\n'},b82c:function(t,e){t.exports='\n \n \n \n \n \n \n \n \n \n'},bc35:function(t,e,n){(t.exports=n("2350")(!1)).push([t.i,".vue-loading[data-v-6ae436b8]{margin:auto}",""])},c8ba:function(t,e){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(t){"object"==typeof window&&(n=window)}t.exports=n},cfcc:function(t,e,n){"use strict";var r=n("0026");n.n(r).a},df7c:function(t,e,n){(function(t){function n(t,e){for(var n=0,r=t.length-1;r>=0;r--){var a=t[r];"."===a?t.splice(r,1):".."===a?(t.splice(r,1),n++):n&&(t.splice(r,1),n--)}if(e)for(;n--;n)t.unshift("..");return t}var r=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/,a=function(t){return r.exec(t).slice(1)};function o(t,e){if(t.filter)return t.filter(e);for(var n=[],r=0;r=-1&&!r;a--){var i=a>=0?arguments[a]:t.cwd();if("string"!=typeof i)throw new TypeError("Arguments to path.resolve must be strings");i&&(e=i+"/"+e,r="/"===i.charAt(0))}return(r?"/":"")+(e=n(o(e.split("/"),(function(t){return!!t})),!r).join("/"))||"."},e.normalize=function(t){var r=e.isAbsolute(t),a="/"===i(t,-1);return(t=n(o(t.split("/"),(function(t){return!!t})),!r).join("/"))||r||(t="."),t&&a&&(t+="/"),(r?"/":"")+t},e.isAbsolute=function(t){return"/"===t.charAt(0)},e.join=function(){var t=Array.prototype.slice.call(arguments,0);return e.normalize(o(t,(function(t,e){if("string"!=typeof t)throw new TypeError("Arguments to path.join must be strings");return t})).join("/"))},e.relative=function(t,n){function r(t){for(var e=0;e=0&&""===t[n];n--);return e>n?[]:t.slice(e,n-e+1)}t=e.resolve(t).substr(1),n=e.resolve(n).substr(1);for(var a=r(t.split("/")),o=r(n.split("/")),i=Math.min(a.length,o.length),s=i,c=0;c=0;s--)(a=t[s])&&(i=(o<3?a(i):o>3?a(e,n,i):a(e,n))||i);return o>3&&i&&Object.defineProperty(e,n,i),i}function p(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)}var h=n("9de4"),m=n.n(h),v=n("8d87"),g=n.n(v),b=n("aa05"),y=n.n(b),_=n("5abc"),x=n.n(_),w=n("b82c"),$=n.n(w),k=n("30ed"),C=n.n(k),S=n("2557"),N=n.n(S),I=n("8d4d"),E=n.n(I),A=n("8bbf"),L=n.n(A),F=n("65d9"),O=n.n(F);n("98db");function D(t){return void 0===t&&(t={}),function(e,n){Array.isArray(t)||void 0!==t.type||(t.type=Reflect.getMetadata("design:type",e,n)),Object(F.createDecorator)((function(e,n){(e.props||(e.props={}))[n]=t}))(e,n)}}var T=function(t){function e(){return o(this,e),l(this,u(e).apply(this,arguments))}var n,r,s;return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&d(t,e)} +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. All rights reserved. +Licensed under the Apache License, Version 2.0 (the "License"); you may not use +this file except in compliance with the License. You may obtain a copy of the +License at http://www.apache.org/licenses/LICENSE-2.0 + +THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED +WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, +MERCHANTABLITY OR NON-INFRINGEMENT. + +See the Apache Version 2.0 License for specific language governing permissions +and limitations under the License. +***************************************************************************** */(e,t),n=e,(r=[{key:"render",value:function(){var t=arguments[0];return t("div",{class:"vue-loading",domProps:{innerHTML:this.svg},style:this.loadingStyle})}},{key:"svg",get:function(){return a[this.type]}},{key:"loadingStyle",get:function(){return{fill:this.color,width:this.size.width,height:this.size.height}}}])&&i(n.prototype,r),s&&i(n,s),e}(L.a);f([D({default:"bead",type:String,required:!1}),p("design:type",String)],T.prototype,"type",void 0),f([D({default:"#5ac1dd",type:String,required:!1}),p("design:type",String)],T.prototype,"color",void 0),f([D({default:function(){return{width:"30px",height:"30px"}},type:Object,required:!1}),p("design:type",Object)],T.prototype,"size",void 0);var j=T=f([O()({name:"vueLoading"})],T);n("cfcc");var P=function(t,e,n,r,a,o,i,s){var c,l="function"==typeof t?t.options:t;if(e&&(l.render=e,l.staticRenderFns=n,l._compiled=!0),r&&(l.functional=!0),o&&(l._scopeId="data-v-"+o),i?(c=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),a&&a.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(i)},l._ssrRegister=c):a&&(c=s?function(){a.call(this,this.$root.$options.shadowRoot)}:a),c)if(l.functional){l._injectStyles=c;var u=l.render;l.render=function(t,e){return c.call(e),u(t,e)}}else{var d=l.beforeCreate;l.beforeCreate=d?[].concat(d,c):[c]}return{exports:t,options:l}}(j,void 0,void 0,!1,null,"6ae436b8",null);P.options.__file="Loading.vue";var M=P.exports,B={install:function(t,e){if(e){var n=(new M).$options.props;n.type.default=e.type||"balls",n.color.default=e.color||"#5ac1dd",n.size.default=function(){return e.size||{width:"30px",height:"30px"}}}t.component("vue-loading",M)}};n.d(e,"VueLoading",(function(){return M}));e.default=B}})},"1cOZ":function(t,e,n){(t.exports=n("JPst")(!1)).push([t.i,'\n.sidebar-content[data-v-5ab5e543] {\r\n position: relative;\r\n overflow-y: auto;\r\n overflow-x: hidden;\n}\n.sidebar-version[data-v-5ab5e543] {\r\n width: 100%;\r\n padding: 20px 0;\r\n text-align: center;\r\n color: #92a1b3;\r\n border-top: 2px solid #20293c;\r\n background-color: #242e42;\n}\n.group-content[data-v-5ab5e543] {\r\n position: relative;\r\n cursor: pointer;\n}\n.group-content ul[data-v-5ab5e543] {\r\n position: absolute;\r\n left: 20px;\r\n top: 35px;\r\n color: #666;\r\n z-index: 2;\r\n background-color: #fff;\r\n border: 1px solid #ebeef5;\r\n border-radius: 4px;\r\n -webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);\r\n box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);\n}\n.group-content ul li[data-v-5ab5e543] {\r\n height: 32px;\r\n line-height: 32px;\r\n cursor: pointer;\r\n padding: 0 20px;\n}\n.group-content ul li[data-v-5ab5e543]:hover {\r\n background-color: #ecf5ff;\r\n color: #66b1ff;\n}\n.sidebar-check-group[data-v-5ab5e543] {\r\n color: #92a1b3;\r\n padding: 20px 0 20px 0px;\r\n border-top: 2px solid #20293c;\r\n border-bottom: 2px solid #20293c;\r\n text-align: center;\n}\n.sidebar-check-group[data-v-5ab5e543] .el-dropdown {\r\n color: #fff;\n}\n.select-network[data-v-5ab5e543] {\r\n cursor: default;\n}\n.el-menu-vertical-demo[data-v-5ab5e543] .is-active {\r\n background-color: #20293c !important;\n}\n.el-menu-vertical-demo[data-v-5ab5e543] {\r\n padding-top: 14px;\r\n border: none;\n}\n.el-menu-vertical-demo[data-v-5ab5e543] .el-menu-item {\r\n font-size: 14px;\r\n color: #9da2ab;\r\n text-align: left;\n}\n.el-menu-vertical-demo[data-v-5ab5e543] .el-submenu__title {\r\n padding-left: 33px;\n}\n.el-menu-item-group > ul > .el-menu-item[data-v-5ab5e543] {\r\n font-size: 14px;\r\n color: #9da2ab;\r\n text-align: left;\r\n padding-left: 57px !important;\r\n height: 46px;\r\n line-height: 46px;\n}\r\n/* .el-menu-vertical-demo>>> .el-icon-arrow-down:before {\r\n content: "\\e60b"\r\n} */\n.sidebar-content[data-v-5ab5e543] .el-menu--collapse {\r\n width: 56px;\n}\n.sidebar-content[data-v-5ab5e543] .el-menu--collapse .is-active .el-tooltip {\r\n padding-left: 17px !important;\r\n background-color: #20293c;\n}\n.mini-sidebar-contract-icon[data-v-5ab5e543] {\r\n position: relative;\r\n text-align: center;\n}\n.mini-sidebar-contract-icon i[data-v-5ab5e543] {\r\n position: absolute;\r\n top: 20px;\r\n right: 10px;\r\n z-index: 9999;\r\n cursor: pointer;\n}\n.image-flex[data-v-5ab5e543] {\r\n display: -webkit-box !important;\r\n display: -ms-flexbox !important;\r\n display: flex !important;\r\n -ms-flex-wrap: wrap;\r\n flex-wrap: wrap;\n}\n.image-flex[data-v-5ab5e543],\r\n.image-flex *[data-v-5ab5e543],\r\n.image-flex[data-v-5ab5e543] :after,\r\n.image-flex[data-v-5ab5e543] :before {\n}\n.image-flex.justify-center[data-v-5ab5e543] {\r\n -webkit-box-pack: center;\r\n -ms-flex-pack: center;\r\n justify-content: center;\n}\n.image-flex.center[data-v-5ab5e543] {\r\n -webkit-box-pack: center;\r\n -ms-flex-pack: center;\r\n justify-content: center;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\n}\n.sidebar-icon[data-v-5ab5e543] {\r\n font-size: 15px;\r\n padding-right: 5px;\n}\n.sidebar-contract-icon[data-v-5ab5e543] {\r\n position: absolute;\r\n display: inline-block;\r\n left: 180px;\r\n top: 18px;\r\n font-size: 12px;\r\n letter-spacing: 0;\r\n text-align: right;\r\n cursor: pointer;\r\n z-index: 6666;\n}\n.sidebar-contract-icon i[data-v-5ab5e543] {\r\n cursor: pointer;\n}\r\n',""])},"1uKf":function(t,e,n){"use strict";n.r(e);var r=n("uAt+"),a=n("swmY");for(var o in a)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return a[t]}))}(o);var i=n("KHd+"),s=Object(i.a)(a.default,r.a,r.b,!1,null,"7c717681",null);e.default=s.exports},"2NEi":function(t,e,n){"use strict";n("6g2y")},"2SHe":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=i(n("bU/s"));n("ZdjR"),n("xJsF"),n("sX3c"),n("kiLR"),n("2nlJ");var a=i(n("9e9m"));n("mHBk");var o=i(n("jFYa"));i(n("bWg5"));function i(t){return t&&t.__esModule?t:{default:t}}n("NvTd");n("NvTd").Mode;var s=n("J66h").Base64;e.default={name:"codes",props:["show","changeStyle","urlQuery"],components:{"v-transaction":o.default},data:function(){return{successHide:!0,loadingAce:!1,content:"",code:"",contractName:"",infoHeight:300,aceEditor:null,themePath:"ace/theme/monokai",modePath:"ace/mode/solidity",data:null,codeShow:!1,saveShow:!1,language:localStorage.getItem("lang"),toolbars:{},contractDesc:""}},watch:{content:function(t){var e=s.decode(this.data.contractSrc);this.saveShow=e!=t},successHide:function(t){this.infoHeight=t?300:0}},computed:{codeHight:function(){return this.infoHeight?"calc(100% - "+this.infoHeight+"px)":"100%"},changeWidth:function(){return!!this.changeStyle&&this.changeStyle},tipShow:function(){return!this.show},prop:function(){return{subfield:!1,defaultOpen:"preview",editable:!1,toolbarsFlag:!1,scrollStyle:!1,boxShadow:!1,previewBackground:"#20293c"}}},created:function(){},beforeDestroy:function(){a.default.$off("select"),a.default.$off("chooselanguage")},mounted:function(){var t=this;this.initEditor(),a.default.$on("chooselanguage",(function(e){t.language=e,t.data&&((t.language="zh")?t.contractDesc=t.data.contractDesc:t.contractDesc=t.data.contractDesc_en)})),a.default.$on("select",(function(e){console.log(e.contractSrc),t.codeShow=!0,t.code="",t.contractName="",t.content="",t.contractDesc="",t.data=e,t.code=s.decode(e.contractSrc),t.content=t.code,t.aceEditor.setValue(t.content),t.contractName=e.contractName,(t.language="zh")?t.contractDesc=t.data.contractDesc:t.contractDesc=t.data.contractDesc_en}))},methods:{initEditor:function(){this.aceEditor=r.default.edit(this.$refs.ace,{fontSize:14,fontFamily:"Consolas,Monaco,monospace",theme:this.themePath,mode:this.modePath,tabSize:4,useSoftTabs:!0}),this.aceEditor.setOptions({enableSnippets:!0,enableLiveAutocompletion:!0,enableBasicAutocompletion:!0,autoScrollEditorIntoView:!0,copyWithEmptySelection:!0}),this.aceEditor.setReadOnly(!0);this.aceEditor.alignCursors();this.aceEditor.getSession().setUseWrapMode(!0),this.aceEditor.setHighlightActiveLine(!0),this.aceEditor.resize()},resizeCode:function(){this.aceEditor.setOptions({maxLines:Math.ceil(this.$refs.codeContent.offsetHeight/17)-1}),this.aceEditor.resize()},dragDetailWeight:function(t){var e=this,n=t.clientY,r=this.infoHeight;document.onmousemove=function(t){var a=n-t.clientY;e.infoHeight=r+a},document.onmouseup=function(t){document.onmousemove=null,document.onmouseup=null},this.aceEditor.setOptions({maxLines:Math.ceil(this.$refs.codeContent.offsetHeight/17)-1,minLines:9})},exportToIde:function(){a.default.$emit("code",this.data,"file")}}}},"2T2e":function(t,e,n){"use strict";n.r(e);var r=n("bGug"),a=n.n(r);for(var o in r)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return r[t]}))}(o);e.default=a.a},"2TFe":function(t,e,n){"use strict";n("Jlgt")},"2wA/":function(t,e,n){"use strict";n.r(e);var r=n("2xCi"),a=n.n(r);for(var o in r)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return r[t]}))}(o);e.default=a.a},"2xCi":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=d(n("qse9")),a=d(n("GZVb")),o=d(n("jFYa")),i=d(n("qJcf")),s=d(n("kkwt")),c=d(n("aPSD")),l=n("mHBk"),u=d(n("9e9m"));function d(t){return t&&t.__esModule?t:{default:t}}e.default={name:"nodeList",components:{contentHead:r.default,abiDialog:a.default,sendTransation:o.default,editor:i.default,importAbi:s.default,updateAbi:c.default},props:{},data:function(){return{loading:!1,abiDialogShow:!1,dialogVisible:!1,editorShow:!1,disabled:!1,abiList:[],abiData:null,data:null,version:"",importVisibility:!1,updateVisibility:!1,currentPage:1,pageSize:10,total:0,updateItem:{},editorData:null,editorInput:null,editorOutput:null,groupId:localStorage.getItem("groupId")}},computed:{abiHead:function(){return[{enName:"contractName",name:this.$t("contracts.contractName"),width:"165"},{enName:"contractAddress",name:this.$t("contracts.contractAddress"),width:"330"},{enName:"contractAbi",name:this.$t("contracts.contractAbi"),width:""},{enName:"operation",name:this.$t("contracts.operation"),width:"250"}]}},watch:{},created:function(){},beforeDestroy:function(){u.default.$off("changeGroup")},mounted:function(){var t=this;u.default.$on("changeGroup",(function(e){t.groupId=e,t.changeGroup()})),localStorage.getItem("groupId")&&this.queryAbiList()},methods:{changeGroup:function(){this.queryAbiList()},closeImport:function(){this.importVisibility=!1},importSuccess:function(){this.importVisibility=!1,this.queryAbiList()},closeUpdate:function(){this.updateVisibility=!1},updateSuccess:function(){this.updateVisibility=!1,this.queryAbiList()},generateAbi:function(){this.importVisibility=!0},queryAbiList:function(){var t=this,e={groupId:this.groupId,pageNumber:this.currentPage,pageSize:this.pageSize};(0,l.getAbiList)(e,{}).then((function(e){if(0===e.data.code){var n=[];n=e.data.data,console.time("耗时"),n.forEach((function(t){if(t.haveEvent=!1,t.contractAbi)for(var e=JSON.parse(t.contractAbi),n=0;n0,expression:"blockData.length > 0"},{name:"loading",rawName:"v-loading",value:t.loadingBlock,expression:"loadingBlock"}],staticClass:"module-wrapper-small",staticStyle:{padding:"30px 31px 26px 32px"}},[e("json-viewer",{attrs:{value:t.searchMap,"expand-depth":2,copyable:""}})],1),t._v(" "),e("div",{directives:[{name:"show",rawName:"v-show",value:t.transactionList.length>0,expression:"transactionList.length > 0"},{name:"loading",rawName:"v-loading",value:t.loadingTransaction,expression:"loadingTransaction"}],staticClass:"module-wrapper-small",staticStyle:{padding:"30px 31px 26px 32px"}},[e("el-table",{ref:"refTable",staticClass:"block-table-content",attrs:{data:t.transactionList},on:{"row-click":t.clickTable}},[e("el-table-column",{attrs:{type:"expand",align:"center"},scopedSlots:t._u([{key:"default",fn:function(t){return[e("v-transaction-detail",{attrs:{transHash:t.row.transHash}})]}}])}),t._v(" "),e("el-table-column",{attrs:{prop:"transHash",label:t.$t("table.transactionHash"),align:"center","show-overflow-tooltip":!0},scopedSlots:t._u([{key:"default",fn:function(n){return[e("span",[e("i",{staticClass:"wbs-icon-copy font-12 copy-key",attrs:{title:t.$t("title.copyHash")},on:{click:function(e){return t.copyPubilcKey(n.row.transHash)}}}),t._v("\n "+t._s(n.row.transHash)+"\n ")])]}}])}),t._v(" "),e("el-table-column",{attrs:{prop:"blockNumber",label:t.$t("table.blockHeight"),width:"260",align:"center","show-overflow-tooltip":!0},scopedSlots:t._u([{key:"default",fn:function(n){return[e("span",[t._v(t._s(n.row.blockNumber))])]}}])})],1)],1),t._v(" "),e("div",{staticClass:"module-wrapper-small",staticStyle:{padding:"30px 31px 26px 32px",display:"none"}},[e("el-table",{directives:[{name:"loading",rawName:"v-loading",value:t.loadingNodes,expression:"loadingNodes"}],staticClass:"search-table-content",attrs:{data:t.nodeData}},t._l(t.nodeHead,(function(n){return e("el-table-column",{key:n.enName,attrs:{label:n.name,"show-overflow-tooltip":"",align:""},scopedSlots:t._u([{key:"default",fn:function(r){return[["nodeActive"===n.enName?e("span",[e("i",{staticClass:"wbs-icon-radio font-6",style:{color:t.textColor(r.row[n.enName])}}),t._v(" "+t._s(t.nodesStatus(r.row[n.enName]))+"\n ")]):"nodeIp"===n.enName?e("span",[e("router-link",{staticClass:"node-ip",attrs:{to:{path:"hostDetail",query:{nodeIp:r.row.nodeIp,nodeId:r.row.nodeId}}}},[t._v(t._s(r.row[n.enName]))])],1):e("span",[t._v(t._s(r.row[n.enName]))])]]}}],null,!0)})})),1)],1),t._v(" "),e("div",{staticStyle:{"min-width":"540px",margin:"8px 8px 0px 9px",display:"none"}},[e("el-row",{attrs:{gutter:16}},[e("el-col",{attrs:{xs:24,sm:24,md:12,lg:12,xl:12}},[e("div",{staticClass:"overview-wrapper"},[e("p",[e("span",{staticClass:"overview-title"},[t._v("区块")]),t._v(" "),e("span",{staticClass:"overview-more cursor-pointer",on:{click:function(e){return t.goRouter("blocks")}}},[t._v("更多")])]),t._v(" "),e("div",{directives:[{name:"loading",rawName:"v-loading",value:t.loadingBlock,expression:"loadingBlock"}],staticClass:"overview-item-base"},t._l(t.blockData,(function(n,r){return e("div",{key:r,staticClass:"block-item font-color-2e384d"},[e("div",{staticClass:"block-amount"},[e("span",[e("router-link",{staticClass:"node-ip",attrs:{to:{path:"transactionInfo",query:{blockNumber:n.blockNumber}}}},[t._v("块高 "+t._s(n.blockNumber))])],1),t._v(" "),e("span",{staticClass:"font-color-8798ad"},[t._v(t._s(n.blockTimestamp))])]),t._v(" "),e("div",[e("div",{staticClass:"block-miner"},[e("span",[t._v("出块者")]),t._v(" "),e("p",{attrs:{title:""+n.miner}},[t._v(t._s(n.miner))])])])])})),0)])]),t._v(" "),e("el-col",{attrs:{xs:24,sm:24,md:12,lg:12,xl:12}},[e("div",{staticClass:"overview-wrapper"},[e("p",[e("span",{staticClass:"overview-title"},[t._v("交易")]),t._v(" "),e("span",{staticClass:"overview-more cursor-pointer",on:{click:function(e){return t.goRouter("transactions")}}},[t._v("更多")])]),t._v(" "),e("div",{directives:[{name:"loading",rawName:"v-loading",value:t.loadingTransaction,expression:"loadingTransaction"}],staticClass:"overview-item-base"},t._l(t.transactionList,(function(n,r){return e("div",{key:r,staticClass:"block-item font-color-2e384d"},[e("div",{staticClass:"block-amount"},[e("p",{staticClass:"trans-hash",attrs:{title:""+n.transHash}},[e("router-link",{staticClass:"node-ip",attrs:{to:{path:"transactionInfo",query:{blockNumber:n.transHash}}}},[t._v(t._s(n.transHash))])],1),t._v(" "),e("span",{staticClass:"font-color-8798ad"},[t._v(t._s(n.blockTimestamp))])])])})),0)])])],1)],1)],1)},a=[];r._withStripped=!0},"3G1r":function(t,e,n){"use strict";n("kAJm")},"3V1O":function(t,e,n){(t.exports=n("JPst")(!1)).push([t.i,"\n.grayColor[data-v-f64bb3ee] {\r\n color: #666 !important;\n}\n.copy-public-key[data-v-f64bb3ee] {\r\n margin-right: 5px;\n}\r\n",""])},"4DWs":function(t,e,n){"use strict";n.r(e);var r=n("+yfO"),a=n.n(r);for(var o in r)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return r[t]}))}(o);e.default=a.a},"4GGZ":function(t,e,n){(t.exports=n("JPst")(!1)).push([t.i,"\n.base-p[data-v-34d17682] {\r\n overflow: hidden;\r\n word-break: break-all;\r\n word-wrap: break-word;\n}\r\n",""])},"4XDk":function(t,e,n){"use strict";n.r(e);var r=n("5oqP"),a=n.n(r);for(var o in r)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return r[t]}))}(o);e.default=a.a},"4Xr4":function(t,e,n){"use strict";n.r(e);var r=n("vEEC"),a=n("AT33");for(var o in a)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return a[t]}))}(o);n("D1ZO");var i=n("KHd+"),s=Object(i.a)(a.default,r.a,r.b,!1,null,"5c3f7907",null);e.default=s.exports},"4iky":function(t,e,n){(t.exports=n("JPst")(!1)).push([t.i,'\n.ace-editor[data-v-6b3cadb6] {\r\n height: 300px;\r\n position: relative;\r\n text-align: left;\r\n letter-spacing: 0.1px;\r\n text-rendering: geometricPrecision;\r\n -webkit-font-feature-settings: "liga" 0;\r\n font-feature-settings: "liga" 0;\r\n -webkit-font-variant-ligatures: none;\r\n font-variant-ligatures: none;\r\n font: 14px / normal "Monaco", "Menlo", "Ubuntu Mono", "Consolas",\r\n "source-code-pro", monospace !important;\r\n border: 1px solid #575a5f;\n}\n.ace-editor[data-v-6b3cadb6] .ace_print-margin {\r\n display: none;\r\n text-rendering: geometricPrecision;\n}\n.h2-inscription[data-v-6b3cadb6] {\r\n font-size: 20px;\r\n font-weight: 600;\r\n text-align: left;\r\n padding-bottom: 20px;\r\n margin: 0;\n}\n.ace-wrapper[data-v-6b3cadb6] {\r\n padding: 0px 20px 0 20px;\r\n padding-right: 50%;\n}\n.parse-button[data-v-6b3cadb6] {\r\n text-align: center;\r\n padding-top: 30px;\n}\n.add-abi[data-v-6b3cadb6] {\r\n text-align: center;\r\n padding: 20px 0;\r\n padding-right: 50%;\n}\n.copy-text[data-v-6b3cadb6] {\r\n margin-top: 15px;\r\n text-align: center;\n}\n.container[data-v-6b3cadb6] {\r\n padding: 0 20px;\r\n padding-right: 50%;\n}\n.input-inner[data-v-6b3cadb6] {\r\n -webkit-appearance: none;\r\n background-color: #fff;\r\n background-image: none;\r\n border-radius: 4px;\r\n border: 1px solid #dcdfe6;\r\n -webkit-box-sizing: border-box;\r\n box-sizing: border-box;\r\n color: #606266;\r\n display: inline-block;\r\n font-size: inherit;\r\n height: 36px;\r\n line-height: 36px;\r\n outline: 0;\r\n padding: 0 15px;\r\n -webkit-transition: border-color 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);\r\n transition: border-color 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);\r\n width: 100%;\r\n background-color: #252f43;\r\n border-color: #252f43;\r\n color: #70889e;\n}\r\n',""])},"5E/E":function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return a}));var r=function(){var t=this,e=t._self._c;return e("div",[e("el-dialog",{staticClass:"dialog-wrapper",attrs:{title:t.$t("title.directory"),visible:t.dialogVisible,"before-close":t.close,width:"433px",center:!0},on:{"update:visible":function(e){t.dialogVisible=e}}},[e("div",[e("el-form",{ref:"folderFrom",staticClass:"demo-ruleForm",attrs:{model:t.folderFrom,rules:t.rules,"label-width":"100px"}},[e("el-form-item",{staticStyle:{width:"330px"},attrs:{label:t.$t("dialog.folderName"),prop:"folderName"}},[e("el-input",{model:{value:t.folderFrom.folderName,callback:function(e){t.$set(t.folderFrom,"folderName",e)},expression:"folderFrom.folderName"}})],1)],1)],1),t._v(" "),e("div",{staticClass:"dialog-footer",attrs:{slot:"footer"},slot:"footer"},[e("el-button",{on:{click:t.close}},[t._v(t._s(t.$t("dialog.cancel")))]),t._v(" "),e("el-button",{attrs:{type:"primary"},on:{click:function(e){return t.submit("folderFrom")}}},[t._v(t._s(t.$t("dialog.confirm")))])],1)])],1)},a=[];r._withStripped=!0},"5hZz":function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return a}));var r=function(){var t=this,e=t._self._c;return e("div",[e("v-content-head",{attrs:{headTitle:t.$t("route.subscribeEvent"),headSubTitle:t.$t("route.blockEvent")},on:{changeGroup:t.changeGroup}}),t._v(" "),e("div",{staticClass:"module-wrapper"},[e("div",{staticClass:"search-part"},[e("div",{staticStyle:{display:"flex"}},[e("el-button",{staticClass:"search-part-left-btn",attrs:{type:"primary"},on:{click:t.addBlockEvent}},[t._v(t._s(t.$t("table.addBlockEvent")))])],1)]),t._v(" "),e("div",{staticClass:"search-table"},[e("el-table",{directives:[{name:"loading",rawName:"v-loading",value:t.loading,expression:"loading"}],attrs:{data:t.eventList}},[t._l(t.eventHead,(function(n){return e("el-table-column",{key:n.enName,attrs:{label:n.name,"show-overflow-tooltip":"",align:"center"},scopedSlots:t._u([{key:"default",fn:function(r){return[e("span",[t._v(t._s(r.row[n.enName]))])]}}],null,!0)})})),t._v(" "),e("el-table-column",{attrs:{label:t.$t("table.actions"),width:"100"},scopedSlots:t._u([{key:"default",fn:function(n){return[e("el-button",{attrs:{type:"text",size:"mini"},on:{click:function(e){return t.checkEvent(n.row)}}},[t._v(t._s(t.$t("title.check")))]),t._v(" "),e("el-button",{attrs:{type:"text",size:"mini"},on:{click:function(e){return t.deleteEvent(n.row)}}},[t._v(t._s(t.$t("title.detele")))])]}}])})],2),t._v(" "),e("el-pagination",{staticClass:"page",attrs:{"current-page":t.currentPage,"page-sizes":[10,20,30,50],"page-size":t.pageSize,layout:"total, sizes, prev, pager, next, jumper",total:t.total},on:{"size-change":t.handleSizeChange,"current-change":t.handleCurrentChange}})],1)]),t._v(" "),e("el-dialog",{staticClass:"send-dialog",attrs:{title:t.$t("table.addBlockEvent"),visible:t.creatBlockEventVisible,width:"550px",center:""},on:{"update:visible":function(e){t.creatBlockEventVisible=e}}},[e("block-event-dialog",{on:{success:t.success,close:t.close}})],1),t._v(" "),t.checkBlockEventVisible?e("el-dialog",{staticClass:"send-dialog",attrs:{title:t.$t("table.blockEventInfo"),visible:t.checkBlockEventVisible,width:"550px",center:""},on:{"update:visible":function(e){t.checkBlockEventVisible=e}}},[e("el-table",{attrs:{data:t.eventDetail}},[e("el-table-column",{attrs:{"show-overflow-tooltip":"",property:"appId",label:t.$t("table.appId"),width:"150"}}),t._v(" "),e("el-table-column",{attrs:{"show-overflow-tooltip":"",property:"exchangeName",label:t.$t("table.exchangeName"),width:"200"}}),t._v(" "),e("el-table-column",{attrs:{"show-overflow-tooltip":"",property:"queueName",label:t.$t("table.queueName")}})],1)],1):t._e()],1)},a=[];r._withStripped=!0},"5oqP":function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var _assign=__webpack_require__("P2sY"),_assign2=_interopRequireDefault(_assign),_isInteger=__webpack_require__("ql3t"),_isInteger2=_interopRequireDefault(_isInteger),_contentHead=__webpack_require__("qse9"),_contentHead2=_interopRequireDefault(_contentHead),_decodeLog=__webpack_require__("1uKf"),_decodeLog2=_interopRequireDefault(_decodeLog),_api=__webpack_require__("mHBk"),_validate=__webpack_require__("xUqo"),_util=__webpack_require__("DgvE"),_bus=__webpack_require__("9e9m"),_bus2=_interopRequireDefault(_bus);function _interopRequireDefault(t){return t&&t.__esModule?t:{default:t}}var Web3Utils=__webpack_require__("W6Pm");exports.default={name:"eventCheck",components:{contentHead:_contentHead2.default,decodeLog:_decodeLog2.default},props:["groupId"],data:function(){var t=this,e=function(e,n,r){""===n||null==n||null==n?r():(0,_isInteger2.default)(n)?n>0||-1==n?r():r(new Error(t.$t("rule.blockNumber"))):r(new Error(t.$t("rule.inputIsNumber")))};return{loading:!1,contractEventForm:{groupId:"",contractAbi:"",contractAddress:"",fromBlock:1,toBlock:"",eventName:""},inputList:[],addressList:[],contractId:"",abiId:"",eventList:[],restaurants:[],queryTypeParam:{},isSearch:!1,searchMessage:"",rules:{contractAbi:[{required:!0,message:this.$t("dialog.contractAbi"),trigger:"change"},{validator:function(e,n,r){""===n||null==n||null==n||(0,_util.isJson)(n)?r():r(new Error(t.$t("rule.inputIsJson")))},trigger:"blur"}],contractAddress:[{required:!0,message:this.$t("dialog.contractAddress"),trigger:"change"},{validator:function(e,n,r){""===n||null==n||null==n||Web3Utils.isAddress(n)||""==n?r():r(new Error(t.$t("rule.inputIsAddress")))},trigger:"blur"}],fromBlock:[{required:!0,message:this.$t("dialog.fromBlock"),trigger:"blur"},{validator:e,trigger:"blur"}],toBlock:[{required:!0,message:this.$t("dialog.toBlock"),trigger:"blur"},{validator:e,trigger:"blur"}],eventName:[{validator:function(e,n,r){""===n||null==n||null==n?r(new Error(t.$t("dialog.eventName"))):r()},trigger:"change"}]},eventNameList:[]}},computed:{},watch:{$route:function(){this.queryInit()},contractEventForm:function(t){var e=this;console.log(t);var n=[];try{JSON.parse(t.contractAbi).forEach((function(t){if("event"==t.type){var r=[],a=[];t.inputs.forEach((function(t){r.push(""+t.type),a.push(e.labelParam(t).replace(/(^\s*)|(\s*$)/g,""))})),n.push({label:t.name+"("+a.join(",")+")",value:t.name+"("+r.join(",")+")"})}})),this.eventNameList=n}catch(t){}}},created:function(){},mounted:function(){var t=this;this.$on("changeGroup",(function(e){t.groupId=e,t.changeGroup()})),localStorage.getItem("groupId")&&this.queryInit()},methods:{queryInit:function(){this.$route&&this.$route.query.type?(this.queryTypeParam=this.$route.query,this.queryContractAbi(this.queryTypeParam)):this.contractEventForm={contractAbi:"",contractAddress:"",fromBlock:1},this.queryAllAddress(),this.getBlockNumber()},changeGroup:function(){this.contractEventForm={groupId:"",contractAbi:"",contractAddress:"",fromBlock:1,toBlock:"",eventName:""},this.queryAllAddress(),this.getBlockNumber()},queryAllAddress:function(){var t=this;(0,_api.listAddress)(this.groupId).then((function(e){if(0===e.data.code){var n=e.data.data;n.forEach((function(t){t.value=t.contractAddress})),t.restaurants=n}else t.$message({type:"error",message:t.$chooseLang(e.data.code)})}))},queryContractAbi:function(t){var e=this;(0,_api.eventContractInfo)(t).then((function(t){if(0===t.data.code){e.contractEventForm.contractAddress=t.data.data.contractAddress,e.contractEventForm.contractAbi=t.data.data.contractAbi;var n=[];try{JSON.parse(e.contractEventForm.contractAbi).forEach((function(t){if("event"==t.type){var r=[],a=[];t.inputs.forEach((function(t){r.push(""+t.type),a.push(e.labelParam(t).replace(/(^\s*)|(\s*$)/g,""))})),n.push({label:t.name+"("+a.join(",")+")",value:t.name+"("+r.join(",")+")"})}})),e.eventNameList=n}catch(t){}}else e.$message({type:"error",message:e.$chooseLang(t.data.code)})}))},changeEventName:function(t){this.$set(this.contractEventForm,"eventName",t);var e=t.replace(/\((.+?)\)/g,""),n=JSON.parse(this.contractEventForm.contractAbi),r=[];n.forEach((function(t){"event"===t.type&&r.push(t)}));var a=[];r.forEach((function(t){t.name===e&&(a=t.inputs)})),a.forEach((function(t){t.indexed&&(t.value=null)})),this.inputList=a},submit:function(t){var e=this;this.$refs[t].validate((function(t){if(!t)return!1;var n=[];e.inputList.forEach((function(t){t.msgObj&&n.push(t.msgObj.is)})),n.includes(!1)||e.queryAdd()}))},queryAdd:function(){var t=this;try{JSON.parse(this.contractEventForm.contractAbi)}catch(t){return void this.$message({type:"error",message:t})}var e={eventName:this.contractEventForm.eventName},n=[];this.inputList.forEach((function(t,e){t.indexed&&n.push(t)})),n.forEach((function(t,n){e["indexed"+(n+1)]={type:t.type,value:t.value}})),this.loading=!0;var r=(0,_assign2.default)({},this.contractEventForm,{contractAbi:JSON.parse(this.contractEventForm.contractAbi),topics:e,groupId:this.groupId});delete r.eventName,(0,_api.checkEvent)(r).then((function(e){if(t.loading=!1,t.isSearch=!0,0===e.data.code){t.searchMessage=t.$t("text.searchMessage"),setTimeout((function(){t.searchMessage=""}),3e3);var n=e.data.data,r=[];if(!n.length)return void(t.eventList=r);n.forEach((function(t){null!=t&&r.push(t)})),r&&r.length&&r.forEach((function(e){e.eventVal=t.decodeEvent(e.log,e.data)})),t.eventList=r}else t.$message({type:"error",message:t.$chooseLang(e.data.code)})})).catch((function(e){t.$message({type:"error",message:e.data||t.$t("text.systemError")})}))},isType:function(t,e){return(0,_validate.validateEvent)(e,t)},isnumber:function(t){return t},transform:function transform(type,val){if(!val)return null;var uintReg=RegExp(/uint/),bytesReg=RegExp(/bytes/),boolReg=RegExp(/bool/);if(!uintReg.test(type)&&!bytesReg.test(type))return boolReg.test(type)?eval(val.toLowerCase()):val;try{return+val}catch(t){console.log(console.error())}},logInfo:function(t){var e={contractAbi:this.contractEventForm.contractAbi,eventName:this.contractEventForm.eventName.replace(/[(][^)]+[\))]/g,"")},n=(0,_assign2.default)({},t,e);return n},labelParam:function(t){return t.indexed?t.type+" indexed "+t.name+" ":t.type+" "+t.name+" "},decodeEvent:function(t,e){var n=this,r=__webpack_require__("qrFr"),a=JSON.parse(this.contractEventForm.contractAbi),o=[];a.forEach((function(t){"event"==t.type&&t.name===n.contractEventForm.eventName.replace(/[(][^)]+[\))]/g,"")&&(o=t.inputs)}));var i=r.decodeLog(o,t.data,t.topics.slice(1));o.forEach((function(t){t.data=i[t.name]}));var s=[];return o.forEach((function(t){s.push(""+t.data)})),this.contractEventForm.eventName.replace(/[(][^)]+[\))]/g,"")+" ("+e.join()+")"},copyKey:function(t){var e=this;t?this.$copyText(t).then((function(t){e.$message({type:"success",showClose:!0,message:e.$t("text.copySuccessMsg"),duration:2e3})})):this.$message({type:"fail",showClose:!0,message:this.$t("text.copyErrorMsg"),duration:2e3})},getBlockNumber:function(){var t=this;(0,_api.queryBlockNumber)(this.groupId).then((function(e){var n=e.data;200===e.status?t.$set(t.contractEventForm,"toBlock",n):t.$message({type:"error",message:t.$chooseLang(e.data.code)})})).catch((function(e){t.$message({type:"error",message:e.data||t.$t("text.systemError")})}))},createFilter:function(t){return function(e){return 0===e.contractAddress.toLowerCase().indexOf(t.toLowerCase())}},querySearch:function(t,e){var n=this.restaurants;e(t?n.filter(this.createFilter(t)):n)},selectAddress:function(t){var e={groupId:this.groupId,type:t.type,contractAddress:t.contractAddress};this.$set(this.contractEventForm,"eventName",""),this.queryContractAbi(e)}}}},"69vx":function(t,e,n){(t.exports=n("JPst")(!1)).push([t.i,'\n.header .el-menu[data-v-0b2a4fc7] {\r\n height: 100%;\n}\n.main-wrapper[data-v-0b2a4fc7] {\r\n width: 100%;\r\n background: #20293c;\r\n height: 100%;\n}\n.main-wrapper[data-v-0b2a4fc7]::after {\r\n display: block;\r\n content: "";\r\n clear: both;\n}\n.menu-wrapper[data-v-0b2a4fc7] {\r\n height: 100%;\r\n position: fixed;\r\n left: 0;\r\n top: 0;\r\n bottom: 0;\r\n overflow-x: hidden;\r\n overflow-y: auto;\n}\n.view-wrapper[data-v-0b2a4fc7] {\r\n height: 100%;\r\n padding-left: 200px;\n}\n.menu-show[data-v-0b2a4fc7] {\r\n width: 200px;\r\n transition: width 0.5s;\r\n -moz-transition: width 0.5s;\r\n -webkit-transition: width 0.5s;\r\n -o-transition: width 0.5s;\n}\n.menu-hide[data-v-0b2a4fc7] {\r\n /* width: 56px; */\r\n width: 56px;\r\n transition: width 0.5s;\r\n -moz-transition: width 0.5s;\r\n -webkit-transition: width 0.5s;\r\n -o-transition: width 2s;\n}\n.view-show[data-v-0b2a4fc7] {\r\n overflow:hidden;\r\n width: calc(100% - 200px);\r\n transition: width 0.5s;\r\n -moz-transition: width 0.5s;\r\n -webkit-transition: width 0.5s;\r\n -o-transition: width 0.5s;\n}\n.view-hide[data-v-0b2a4fc7] {\r\n padding-left: 56px;\r\n overflow-y: auto;\r\n transition: width 0.5s;\r\n -moz-transition: width 0.5s;\r\n -webkit-transition: width 0.5s;\r\n -o-transition: width 2s;\n}\n#shade[data-v-0b2a4fc7] {\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n z-index: 2;\r\n width: 100%;\r\n height: 100%;\r\n background-color: #000;\r\n opacity: 0.3;\r\n /*兼容IE8及以下版本浏览器*/\r\n filter: alpha(opacity=30);\n}\n#reset-password[data-v-0b2a4fc7] {\r\n position: absolute;\r\n z-index: 3;\r\n top: 0;\r\n bottom: 0;\r\n left: 0;\r\n right: 0;\r\n width: 470px;\r\n height: 273px;\r\n margin: auto;\r\n background-color: #fff;\r\n padding-top: 15px;\r\n /* padding-right: 25px; */\n}\n.reset-password-title[data-v-0b2a4fc7] {\r\n margin-bottom: 5px;\r\n text-align: center;\r\n font-size: 16px;\r\n font-weight: 600;\n}\n#add-nodes[data-v-0b2a4fc7] {\r\n position: absolute;\r\n z-index: 3;\r\n top: 0;\r\n bottom: 0;\r\n left: 0;\r\n right: 0;\r\n width: 470px;\r\n height: 140px;\r\n margin: auto;\r\n background-color: #fff;\r\n padding-top: 15px;\n}\n.add-nodes-title[data-v-0b2a4fc7] {\r\n margin-bottom: 5px;\r\n text-align: center;\r\n font-size: 16px;\r\n font-weight: 600;\n}\n.demo-ruleForm[data-v-0b2a4fc7] {\r\n padding-right: 25px;\n}\r\n',""])},"6Bx3":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,a=n("gDS+"),o=(r=a)&&r.__esModule?r:{default:r},i=n("mHBk");e.default={name:"editor",props:["data","show","input","editorOutput","sendConstant"],data:function(){return{editorShow:!0,aceEditor:null,transationData:this.data||null,modePath:"ace/mode/solidity",editorDialog:this.show||!1,eventSHow:!1,eventTitle:this.$t("text.txnEncodeBtn"),funcData:"",methodId:"",abiType:"",inputData:[],decodeData:"",showDecode:!0,buttonTitle:this.$t("text.txnDecodeBtn"),typesArray:this.input,inputButtonShow:!0,editorHeight:"",outputType:null}},mounted:function(){this.editorHeight=.75*document.body.offsetHeight,"0x"==this.transationData.output?this.inputButtonShow=!1:this.inputButtonShow=!0,this.transationData&&this.transationData.logs&&this.decodeEvent(),this.sendConstant||this.typesArray&&"0x"!=this.transationData.output&&this.decodefun()},methods:{abc:function(t){return Array.isArray(t)?"["+t.toString()+"]":t},modelClose:function(){this.$emit("close")},decodeOutput:function(){this.showDecode?(this.showDecode=!1,this.buttonTitle=this.$t("text.txnEncodeBtn")):(this.showDecode=!0,this.buttonTitle=this.$t("text.txnDecodeBtn"))},decodefun:function(){var t=this,e=n("qrFr");if(this.typesArray){if(this.typesArray.inputs.forEach((function(e,n){e&&nn.msgObj=t.isType(e,n.type)},model:{value:n.value,callback:function(e){t.$set(n,"value",e)},expression:"item.value"}}),t._v(" "),n.msgObj&&!n.msgObj.is?e("span",{staticClass:"font-color-ed5454 font-12",staticStyle:{display:"inline-block"}},[t._v("\n "+t._s(n.msgObj.msg)+"\n ")]):t._e()],1):t._e()])}))],2)],1),t._v(" "),e("div",{staticClass:"dialog-footer",attrs:{slot:"footer"},slot:"footer"},[e("el-button",{on:{click:t.modelClose}},[t._v(t._s(t.$t("dialog.cancel")))]),t._v(" "),e("el-button",{attrs:{type:"primary",loading:t.loading},on:{click:function(e){return t.submit("contractEventForm")}}},[t._v(t._s(t.$t("dialog.confirm")))])],1)],1)},a=[];r._withStripped=!0},"6b6v":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n("DgvE"),a=n("ProS");n("75ce"),n("Ynxi"),n("AH3D"),n("zRKj"),n("0o9m"),n("Cm0C"),n("sRwP"),e.default={name:"metricChart",components:{},props:{chartOption:{type:Object},reload:{type:Number},metricName:{type:String}},watch:{reload:function(){this.getChartData()}},data:function(){return{chartId:this.chartOption.metricType,chart:"",showContrast:!1}},beforeDestroy:function(){window.onresize=null},mounted:function(){var t=this;this.$nextTick((function(){t.getChartData()}))},methods:{getChartData:function(){var t=this,e=this;this.chart=a.init(document.getElementById(this.chartId));var n,o=[],i=[],s="";n=this.chartOption.data.lineDataList.timestampList.map((function(t){return(0,r.format)(new Date(t).getTime(),"HH:mm:ss")})),o=this.chartOption.data.lineDataList.valueList.map((function(t){return t}));for(var c=0;c0?(s=this.$t("text.comparingByDay"),this.showContrast=!0):this.showContrast=!1;var u={title:{text:"nodes"===this.metricName?""+this.chartOption.metricName:""+this.chartOption.metricName+this.chartOption.metricUint+"("+this.chartOption.metricU+")",textStyle:{color:"#fff",fontStyle:"normal",fontWeight:"bold",fontSize:14},left:28,top:20},tooltip:{trigger:"axis",axisPointer:{type:"cross",animation:!1,label:{backgroundColor:"#505765"}},formatter:function(t){var n="";return 2===t.length?n=t[0].data&&t[1].data?"\n "+t[0].name+"
      \n "+t[0].seriesName+":"+t[0].data+"
      \n "+t[1].seriesName+":"+t[1].data+"\n ":0===t[0].data&&0!=t[1].data?"\n "+t[0].name+"
      \n "+t[0].seriesName+":"+e.$t("text.noMetrics")+"
      \n "+t[1].seriesName+":"+t[1].data+"
      \n ":0!=t[0].data&&0===t[1].data?"\n "+t[0].name+"
      \n "+t[0].seriesName+":"+t[0].data+"
      \n "+t[1].seriesName+":"+e.$t("text.noMetrics")+"
      \n ":"\n "+t[0].name+"
      \n "+e.$t("text.noMetrics")+"
      \n ":1===t.length&&(n=t[0].data?"\n "+t[0].name+"
      \n "+t[0].seriesName+":"+t[0].data+"
      \n ":"\n "+t[0].name+"
      \n "+t[0].seriesName+":"+e.$t("text.noMetrics")+"
      \n "),n}},legend:{data:[{name:this.$t("text.showByDay"),textStyle:{color:"#1f8efa"}},{name:s,textStyle:{color:"#20D4D9"}}],textStyle:{color:"#fff"},y:20},dataZoom:[{type:"inside"}],grid:{left:33,right:33,bottom:17,containLabel:!0},toolbox:{right:"30",top:"16",feature:{dataZoom:{yAxisIndex:"none",title:{zoom:this.$t("title.zoom"),back:this.$t("title.back")},iconStyle:{borderColor:"#fff"}},restore:{title:this.$t("title.restore"),iconStyle:{borderColor:"#fff"}},magicType:{show:!!this.showContrast,type:["stack","tiled"],title:{stack:this.$t("title.stack"),tiled:this.$t("title.tiled")},iconStyle:{borderColor:"#fff"}}}},xAxis:{type:"category",boundaryGap:!1,data:n,axisLabel:{interval:"auto",formatter:function(t,e){return t.substr(0,5)},color:"#fff"},splitLine:{show:!0,lineStyle:{type:"dashed",color:"#242e42"}}},yAxis:{axisLine:{show:!0,lineStyle:{color:"#333"}},splitLine:{show:!0,lineStyle:{type:"dashed",color:"#242e42"}},axisTick:{show:!1},axisLabel:{color:"#fff"},scale:"nodes"===this.metricName},series:[{name:this.$t("text.showByDay"),type:"line",data:o,smooth:!0,lineStyle:{color:"#1f8efa"}},{name:s,type:"line",data:i,smooth:!0,lineStyle:{color:"#20D4D9"}}]};this.chart.setOption(u,!0),setTimeout((function(){window.onresize=function(){"nodes"===t.metricName?(a.init(document.getElementById("pbftView")).resize(),a.init(document.getElementById("blockHeight")).resize()):(a.init(document.getElementById("cpu")).resize(),a.init(document.getElementById("memory")).resize(),a.init(document.getElementById("disk")).resize(),a.init(document.getElementById("txbps")).resize(),a.init(document.getElementById("rxbps")).resize())}}),200)}}}},"6g2y":function(t,e,n){var r=n("eRRQ");r.__esModule&&(r=r.default),"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals);(0,n("SZ7m").default)("2eff3316",r,!1,{})},"6jhe":function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return a}));var r=function(){var t=this,e=t._self._c;return e("div",{staticStyle:{"background-color":"#20293c"}},[e("v-content-head",{attrs:{headTitle:t.$t("route.systemMonitoring"),headSubTitle:t.$t("route.hostMetrics")},on:{changeGroup:t.changeGroup}}),t._v(" "),e("div",{staticClass:"module-wrapper"},[e("div",{staticClass:"more-search-table"},[e("div",{staticClass:"search-item"},[e("span",[t._v(t._s(t.$t("text.showDate")))]),t._v(" "),e("el-date-picker",{staticClass:"select-32",attrs:{type:"date",placeholder:t.$t("placeholder.selectedDay"),"picker-options":t.pickerOption,format:"yyyy - MM - dd","value-format":"yyyy-MM-dd","default-value":""+Date()},on:{change:t.changeCurrentDate},model:{value:t.currentDate,callback:function(e){t.currentDate=e},expression:"currentDate"}})],1),t._v(" "),e("div",{staticClass:"search-item"},[e("span",[t._v(t._s(t.$t("text.comparingDate")))]),t._v(" "),e("el-date-picker",{staticClass:"select-32",attrs:{type:"date",placeholder:t.$t("placeholder.selectedDay"),"picker-options":t.pickerOption,format:"yyyy - MM - dd","value-format":"yyyy-MM-dd"},on:{change:t.changeContrastDate},model:{value:t.contrastDate,callback:function(e){t.contrastDate=e},expression:"contrastDate"}})],1),t._v(" "),e("div",{staticClass:"search-item"},[e("span",[t._v(t._s(t.$t("text.fromTo")))]),t._v(" "),e("el-time-picker",{staticClass:"time-select-32",attrs:{"is-range":"","range-separator":t.$t("placeholder.to"),"start-placeholder":t.$t("placeholder.startTime"),"end-placeholder":t.$t("placeholder.endTime"),placeholder:t.$t("placeholder.selectedTimeRange")},model:{value:t.startEndTime,callback:function(e){t.startEndTime=e},expression:"startEndTime"}})],1),t._v(" "),e("div",{staticClass:"search-item"},[e("span",[t._v(t._s(t.$t("text.dataGranularity")))]),t._v(" "),e("el-radio-group",{model:{value:t.timeGranularity,callback:function(e){t.timeGranularity=e},expression:"timeGranularity"}},[e("el-radio",{staticClass:"font-color-fff",attrs:{label:60}},[t._v("5"+t._s(t.$t("text.minutes")))]),t._v(" "),e("el-radio",{staticClass:"font-color-fff",attrs:{label:12}},[t._v("1"+t._s(t.$t("text.minutes")))]),t._v(" "),e("el-radio",{staticClass:"font-color-fff",attrs:{label:1}},[t._v("5"+t._s(t.$t("text.seconds")))])],1),t._v(" "),e("el-button",{staticStyle:{"margin-left":"12px"},attrs:{type:"primary",size:"small",loading:t.sureing},on:{click:function(e){return t.confirmParam()}}},[t._v(t._s(t.$t("text.confirm")))])],1),t._v(" "),e("el-switch",{attrs:{"active-color":"#13ce66","active-text":t.$t("text.toggleOpen"),"inactive-text":t.$t("text.toggleDown"),"inactive-color":"#ff4949",title:t.$t("title.acquisitionSwitch")},on:{change:t.changeToggle},model:{value:t.switchBtn,callback:function(e){t.switchBtn=e},expression:"switchBtn"}})],1),t._v(" "),e("div",{staticClass:"metric-content"},[e("div",{staticClass:"metric-split-line"}),t._v(" "),e("el-row",{directives:[{name:"loading",rawName:"v-loading",value:t.loadingInit,expression:"loadingInit"}]},[t._l(t.metricData,(function(n){return[e("el-col",{attrs:{xs:24,sm:24,md:24,lg:12,xl:12}},[e("v-metric-chart",{directives:[{name:"loading",rawName:"v-loading",value:t.loading,expression:"loading"}],attrs:{chartOption:n,reload:t.reloadNum}})],1)]}))],2)],1)])],1)},a=[];r._withStripped=!0},"6jsV":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=b(n("FyfS")),a=b(n("4d7F")),o=b(n("gDS+")),i=b(n("EJiy")),s=b(n("14Xm")),c=b(n("D3Ub")),l=b(n("T2Et")),u=b(n("JF3u")),d=b(n("86dg")),f=b(n("6CUR")),p=b(n("PWKV")),h=n("mHBk"),m=b(n("9e9m")),v=b(n("kWk+")),g=b(n("xOOu"));function b(t){return t&&t.__esModule?t:{default:t}}var y=n("J66h").Base64,_=n("Iab2");e.default={name:"contractCatalog",props:{solcVersionOptions:{type:Array},solcVersion:{type:String}},components:{"add-folder":l.default,"add-file":u.default,"select-catalog":d.default,exportProject:f.default,importFrom:p.default},data:function(){return{foldershow:!1,fileshow:!1,filename:"",fileString:"",contractList:[],folderList:[],contractArry:[],contractData:null,cataLogShow:!1,realContractList:[],contractName:"",clentX:0,clentY:0,contractFile:!1,contractFolder:!1,ID:"",handleModel:!1,folderId:null,modifyState:!1,modifyParam:{},uploadFiles:[],version:"",versionOptions:[],pathList:[],folderData:null,selectFolderData:null,loading:!1,importFromDialog:!1}},watch:{solcVersionOptions:function(t){this.versionOptions=t},solcVersion:function(t){this.version=this.solcVersion}},create:function(){m.default.$off("compile"),m.default.$off("deploy"),m.default.$off("open"),m.default.$off("save"),m.default.$off("modifyState")},mounted:function(){var t=this;this.$nextTick((function(){localStorage.getItem("groupId")&&this.getContractPaths()})),m.default.$on("compile",(function(e){t.saveContract(e,""+t.$t("text.compilationSucceeded"))})),m.default.$on("save",(function(e){t.saveContract(e)})),m.default.$on("deploy",(function(e){t.getContracts("",e)})),m.default.$on("open",(function(e){t.contractArry.forEach((function(n){n.contractName!=e.contractPath||n.folderActive||(t.$set(n,"folderActive",!0),t.$set(n,"folderIcon","el-icon-caret-bottom"))})),t.select(e)})),m.default.$on("modifyState",(function(e){t.contractList.forEach((function(n){n.id===e.id&&e.modifyState?(console.log(t),t.modifyState=e.modifyState,t.modifyParam=e,t.$set(n,"modifyState",!0)):t.$set(n,"modifyState",!1)}))})),document.querySelector(".noBlurs").onmousedown=function(t){console.log(1),m.default.$emit("limit",!1),t.preventDefault()}},directives:{Clickoutside:v.default,focus:{inserted:function(t,e){e.value;t.getElementsByClassName("el-input__inner")[0].focus()}}},methods:{checkNull:function(t){this.contractArry.forEach((function(t){t.handleModel=!1,"folder"==t.contractType&&t.child.forEach((function(t){t.handleModel=!1}))})),this.ID="",this.contractFile=!1,this.contractFolder=!1,this.handleModel=!1},handle:function(t,e){var n=this;this.checkNull(),e.handleModel=!0,t.clientX>201?this.clentX=t.clientX-200:this.clentX=t.clientX,this.clentX=t.clientX,this.clentY=t.clientY,this.ID=t.target.id;var r={};this.ID?(this.handleModel=!0,this.contractArry.forEach((function(t){t.id&&t.id==n.ID||t.folderId&&t.folderId==n.ID?r=t:"folder"==t.contractType&&t.child.forEach((function(t){t.id==n.ID&&(r=t)}))})),"file"==r.contractType?(this.contractFile=!0,this.contractFolder=!1):(this.contractFile=!1,this.contractFolder=!0)):(this.ID="",this.contractFile=!1,this.contractFolder=!1,this.handleModel=!1)},rename:function(t){var e=this;this.contractArry.forEach((function(t){t.handleModel=!1,"folder"==t.contractType&&t.child.forEach((function(t){t.handleModel=!1}))})),this.contractArry.forEach((function(t){if(t.id==e.ID)e.$set(t,"renameShow",!0),e.contractName=t.contractName;else if("folder"==t.contractType&&t.folderId!==e.ID)t.child.forEach((function(t){t.id==e.ID?(e.$set(t,"renameShow",!0),e.contractName=t.contractName):(t.id,e.ID,e.$set(t,"renameShow",!1))}));else if("folder"==t.contractType&&t.folderId==e.ID){e.$set(t,"renameShow",!0),e.contractName=t.contractName}else t.id,e.ID,e.$set(t,"renameShow",!1)})),this.contractFile=!1,this.contractFolder=!1,this.handleModel=!1},changeName:function(t){if(/^[A-Za-z0-9_]+$/.test(this.contractName)&&this.contractName.length<32&&this.contractName.length>1)if(this.contractName!==t.contractName){for(var e=0;e400){this.$message({message:this.$t("text.fileExceeds"),type:"error"}),this.cataLogShow=!1;break}if("sol"!==a){this.$message({message:this.$t("text.uploadSol"),type:"error"}),this.cataLogShow=!1;break}this.cataLogShow=!0}}},catalogSuccess:function(t){for(var e=this,n=this.uploadFiles.length,r=function(r){var a=new FileReader;a.readAsText(e.uploadFiles[r],"UTF-8");var o,i=e;o=e.uploadFiles[r].name.slice(0,e.uploadFiles[r].name.length-4);var s=0;e.contractList.forEach((function(n){n.contractName==o&&n.contractPath==t&&0===s&&(e.$message({type:"error",message:e.$t("text.contractSameDirectory")}),s++)})),s||(a.onload=function(e){var a;a=y.encode(e.target.result);var s={contractName:o,contractSource:a,contractPath:t,contractType:"file",contractActive:!1,contractstatus:0,contractAbi:"",contractBin:"",contractAddress:"",contractVersion:"",contractNo:(new Date).getTime()};r==n-1?i.saveOneContract(s,!0):i.saveOneContract(s)})},a=0;a0?r.contractPathList=[t]:t&&0==this.$store.state.contractDataList.length?("object"==(void 0===t?"undefined":(0,i.default)(t))?t.push("/"):t=[t,"/"],r.contractPathList=t):this.$route.query.contractPath?"/"==this.$route.query.contractPath?r.contractPathList=[this.$route.query.contractPath]:r.contractPathList=[this.$route.query.contractPath,"/"]:sessionStorage.getItem("selectData")?JSON.parse(sessionStorage.getItem("selectData"))&&(JSON.parse(sessionStorage.getItem("selectData")).contractPath&&"/"==JSON.parse(sessionStorage.getItem("selectData")).contractPath?r.contractPathList=[JSON.parse(sessionStorage.getItem("selectData")).contractPath]:"folder"==JSON.parse(sessionStorage.getItem("selectData")).contractType?r.contractPathList=[JSON.parse(sessionStorage.getItem("selectData")).contractName,"/"]:r.contractPathList=[JSON.parse(sessionStorage.getItem("selectData")).contractPath,"/"]):r.contractPathList=["/"],this.loading=!0,(0,h.searchContract)(r).then((function(t){n.loading=!1;var r=t.data;if(200===t.status){var a=r.data||[],i=n.$store.state.contractDataList;if(n.contractList=n.changeContractData(i,a),n.$store.dispatch("set_contractDataList",n.contractList),localStorage.setItem("contractList",(0,o.default)(n.contractList)),r.data.length){if(n.contractList.forEach((function(t){n.$set(t,"contractType","file"),n.$set(t,"contractActive",!1),n.$set(t,"renameShow",!1),n.$set(t,"inputShow",!1),n.$set(t,"modifyState",!1)})),console.log(n.modifyState),e)n.getContractArry(e);else if(n.$route.query.id){var s=0;n.contractList.forEach((function(t){t.id==n.$route.query.id&&(s++,n.getContractArry(t))})),0==s&&n.getContractArry()}else if(n.$route.query.contractPath&&!n.$route.query.contractId)t.data.data.length?n.getContractArry(t.data.data[0]):n.getContractArry();else if(sessionStorage.getItem("selectData")&&JSON.parse(sessionStorage.getItem("selectData"))&&JSON.parse(sessionStorage.getItem("selectData")).id){var c=0;n.contractList.forEach((function(t){t.id==JSON.parse(sessionStorage.getItem("selectData")).id&&(c++,n.getContractArry(t))})),c||n.getContractArry()}else n.getContractArry()}else e?n.getContractArry(e):n.getContractArry()}else n.$message({type:"error",message:n.$chooseLang(t.data.code)})})).catch((function(t){n.$message({type:"error",message:t.data||n.$t("text.systemError")})}))},fileSucccess:function(t){var e=this,n=0;this.contractList.forEach((function(r){r.contractName==t.contractName&&r.contractPath==t.contractPath&&(e.$message({type:"error",message:e.$t("text.contractSameDirectory")}),n++)})),n||this.saveContract(t),this.fileClose()},createFolder:function(t){var e=this,n=[];return this.folderList.forEach((function(r,a){var o={contractName:r.folderName,folderId:r.folderId,contractActive:!1,contractType:"folder",folderIcon:"el-icon-caret-right",folderActive:!1,renameShow:!1,inputShow:!1};e.contractArry.forEach((function(t,n){"folder"==t.contractType&&t.contractName==o.contractName&&(o.folderIcon=t.folderIcon,o.folderActive=t.folderActive,e.$set(o,"contractActive",o.contractActive))})),t&&t.contractPath&&"/"!=t.contractPath&&o.contractName==t.contractPath&&(o.folderIcon="el-icon-caret-bottom",o.folderActive=!0,o.contractActive=!0),n.push(o)})),n},open:function(t){var e=this;sessionStorage.setItem("selectData",""),"/"!=t.contractName&&"/"!=t.contractPath&&this.getContracts(t.contractName,t),this.contractArry.forEach((function(n){e.$set(n,"contractActive",!1),"folder"==n.contractType&&n.child.forEach((function(t){e.$set(t,"contractActive",!1)})),n.contractName===t.contractName&&"folder"==n.contractType&&e.$set(n,"contractActive",!0)})),t.folderActive?(this.$set(t,"folderActive",!1),this.$set(t,"folderIcon","el-icon-caret-right")):(this.$set(t,"folderActive",!0),this.$set(t,"folderIcon","el-icon-caret-bottom")),this.$set(t,"contractActive",!0),this.folderData=t},sureSelect:function(t,e){var n=this;this.contractArry.forEach((function(e){t&&t.id&&e.id===t.id?n.$set(e,"contractActive",!0):"folder"==e.contractType?(n.folderData&&n.folderData.contractName===e.contractName?n.$set(e,"contractActive",n.folderData.contractActive):(n.$set(e,"contractActive",!1),e.contractActive=!1),e.child.forEach((function(e){e.id==t.id?n.$set(e,"contractActive",!0):n.$set(e,"contractActive",!1)}))):n.$set(e,"contractActive",!1)})),this.modifyState=!1,this.folderData=null,e||(m.default.$emit("select",t),sessionStorage.setItem("selectData",(0,o.default)(t)))},select:function(t,e){var n=this;console.log(1),e||this.$store.dispatch("set_selected_contracts_action",t),t.modifyState?this.$confirm(this.$t("text.unsavedContract")+"?",{center:!0,dangerouslyUseHTMLString:!0}).then((function(){n.saveContract(n.modifyParam)})).catch((function(){n.sureSelect(t,e)})):this.sureSelect(t,e)},deleteFile:function(t){var e=this;this.$confirm(this.$t("dialog.sureDelete")+"?").then((function(n){e.deleteData(t)})).catch((function(t){}))},deleteData:function(t){var e=this;this.loading=!0;var n={groupId:localStorage.getItem("groupId"),contractId:t.id};(0,h.deleteCode)(n,{}).then((function(n){n.data;if(200===n.status){for(var r=e.$store.state.contractDataList,a=0;a1&&this.$message({type:"warning",message:this.$t("contracts.limit_1")})},querySolcList:function(){var t=this;(0,h.solcList)().then((function(e){if(0===e.data.code){var n=[];e.data.data.forEach((function(t){n.push({value:t.solcName,label:t.solcName,solcId:t.solcId})})),t.versionOptions=t.versionOptions.concat(n)}else t.$message({type:"error",message:t.$chooseLang(e.data.code)})})).catch((function(e){t.$message({type:"error",message:e.data||t.$t("text.systemError")})}))},uploadSolc:function(t){var e=new FileReader,n=this,r=t.file.name.substring(0,t.file.name.lastIndexOf(".")),a=t.file.name;e.readAsText(t.file,"UTF-8"),e.onload=function(e){e.target.result;n.queryUploadSolc(t.file,r,a)},this.$refs.upload.clearFiles()},queryUploadSolc:function(t,e,n){var r=this;this.$emit("uploadLoading",!0);var a=new FormData;a.append("fileName",e),a.append("solcFile",t),a.append("description",""),(0,h.solcUpload)(a).then((function(t){r.$emit("uploadLoading",!1),0===t.data.code||r.$message({type:"error",message:r.$chooseLang(t.data.code)})})).catch((function(t){r.$emit("uploadLoading",!1),r.$message({type:"error",message:t.data||r.$t("text.systemError")})}))},changeVersion:function(t){var e=this;this.$emit("uploadLoading",!0);(0,h.readSolcVersion)("soljson-v0.4.25+commit.59dbf8f1.js").then((function(t){e.$emit("uploadLoading",!1),0===t.data.code||e.$message({type:"error",message:e.$chooseLang(t.data.code)})})).catch((function(t){e.$emit("uploadLoading",!1),e.$message({type:"error",message:t.data||e.$t("text.systemError")})}))},loadScript:function(t){var e=this;return(0,c.default)(s.default.mark((function n(){return s.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,new a.default((function(e){var n=document.createElement("script");n.setAttribute("type","text/javascript"),n.setAttribute("src",t),n.setAttribute("id","soljson"),document.getElementById("soljson")&&(document.getElementById("soljson").remove(),document.head.append(n)),n.readyState?n.onreadystatechange=function(){"complete"!=n.readyState&&"loaded"!=n.readyState||e()}:n.onload=function(){console.log("script loaded"),e()}}));case 2:case"end":return e.stop()}}),n,e)})))()},_checkIsLoadScript:function(t){var e=document.getElementsByTagName("script"),n=!0,a=!1,o=void 0;try{for(var i,s=(0,r.default)(e);!(n=(i=s.next()).done);n=!0){if(i.value.src==t)return!0}}catch(t){a=!0,o=t}finally{try{!n&&s.return&&s.return()}finally{if(a)throw o}}return!1},deleteSloc:function(t){},exportFile:function(t){var e=this;this.$confirm(this.$t("dialog.sureExport")+"?").then((function(n){e.sureExportSol(t)})).catch((function(t){}))},sureExportSol:function(t){var e=new g.default,n=y.decode(t.contractSource),r=t.contractAbi,a=t.bytecodeBin,o=new Blob([n],{type:"text;charset=utf-8"}),i=new Blob([r],{type:"text;charset=utf-8"}),s=new Blob([a],{type:"text;charset=utf-8"});e.file(t.contractName+".sol",o,{binary:!0}),e.file(t.contractName+".abi",i,{binary:!0}),e.file(t.contractName+".bin",s,{binary:!0}),e.generateAsync({type:"blob"}).then((function(e){_.saveAs(e,""+t.contractName)}))},exportFolder:function(t){var e=this;this.$confirm(this.$t("dialog.sureExport")+"?").then((function(n){e.sureExportFolderSol(t)})).catch((function(t){}))},sureExportFolderSol:function(t){var e=this;this.loading=!0;var n={groupId:localStorage.getItem("groupId"),contractPathList:[t.contractName]};(0,h.searchContract)(n).then((function(n){if(0==n.data.code){e.loading=!1;var r=n.data.data,a=new g.default;r.length>0?(r.forEach((function(t){var e=new Blob([y.decode(t.contractSource)],{type:"text;charset=utf-8"}),n=new Blob([t.contractAbi],{type:"text;charset=utf-8"}),r=new Blob([t.bytecodeBin],{type:"text;charset=utf-8"});a.file(t.contractName+".sol",e,{binary:!0}),a.file(t.contractName+".abi",n,{binary:!0}),a.file(t.contractName+".bin",r,{binary:!0})})),a.generateAsync({type:"blob"}).then((function(e){_.saveAs(e,""+t.contractName)}))):e.$message({type:"warning",message:e.$t("text.emptyFolder"),duration:2e3})}else e.$message({message:e.$chooseLang(n.data.code),type:"error",duration:2e3})}))},exportProjectShowClose:function(){this.$store.dispatch("set_exportProject_show_action",!1)},fromGitHub:function(){this.importFromDialog=!0},modelClose:function(){this.importFromDialog=!1},exportSuccessed:function(){this.importFromDialog=!1,this.getContractPaths()}}}},"795s":function(t,e,n){"use strict";n.r(e);var r=n("HifD"),a=n("2T2e");for(var o in a)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return a[t]}))}(o);n("cD3H");var i=n("KHd+"),s=Object(i.a)(a.default,r.a,r.b,!1,null,"06481233",null);e.default=s.exports},"7j+0":function(t,e,n){"use strict";n.r(e);var r=n("wJUu"),a=n("OHzG");for(var o in a)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return a[t]}))}(o);n("vsCA");var i=n("KHd+"),s=Object(i.a)(a.default,r.a,r.b,!1,null,"c6dd1050",null);e.default=s.exports},"86dg":function(t,e,n){"use strict";n.r(e);var r=n("s2O3"),a=n("rnb1");for(var o in a)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return a[t]}))}(o);n("fv8I");var i=n("KHd+"),s=Object(i.a)(a.default,r.a,r.b,!1,null,"6374a768",null);e.default=s.exports},"8fEG":function(t,e,n){var r=n("XL4S");r.__esModule&&(r=r.default),"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals);(0,n("SZ7m").default)("678c508e",r,!1,{})},"9E+d":function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return a}));var r=function(){var t=this,e=t._self._c;return e("div",{staticClass:"content-head-wrapper"},[e("div",{staticClass:"content-head-title"},[t.icon?e("span",{staticClass:"content-head-icon",on:{click:t.skip}},[e("i",{staticClass:"wbs-icon-back"})]):t._e(),t._v(" "),e("span",{class:{"font-color-9da2ab":t.headSubTitle}},[t._v(t._s(t.title))]),t._v(" "),e("span",{directives:[{name:"show",rawName:"v-show",value:t.headSubTitle,expression:"headSubTitle"}],staticClass:"font-color-9da2ab"},[t._v("/")]),t._v(" "),e("span",[t._v(t._s(t.headSubTitle))])]),t._v(" "),e("div",{staticClass:"content-head-lang"},[e("lang-select",{staticClass:"right-menu-item hover-effect"})],1)])},a=[];r._withStripped=!0},"9LbO":function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return a}));var r=function(){var t=this,e=t._self._c;return e("div",{staticClass:"rivate-key-management-wrapper"},[e("div",{},[e("div",{},[e("el-form",{ref:"contractEventForm",staticClass:"demo-ruleForm",attrs:{model:t.contractEventForm,rules:t.rules,"label-width":"110px"}},[e("el-form-item",{attrs:{label:t.$t("table.contractAddress"),prop:"contractAddress"}},[e("el-autocomplete",{staticStyle:{width:"500px"},attrs:{"fetch-suggestions":t.querySearch,clearable:""},on:{select:t.selectAddress},scopedSlots:t._u([{key:"default",fn:function({item:n}){return[e("div",{staticClass:"name"},[t._v("\n "+t._s(n.contractAddress)+" "+t._s(n.contractName)+"\n ")])]}}]),model:{value:t.contractEventForm.contractAddress,callback:function(e){t.$set(t.contractEventForm,"contractAddress","string"==typeof e?e.trim():e)},expression:"contractEventForm.contractAddress"}}),t._v(" "),e("span")],1),t._v(" "),e("el-form-item",{attrs:{label:t.$t("table.contractAbi"),prop:"contractAbi"}},[e("el-input",{staticStyle:{width:"500px"},attrs:{rows:1,type:"textarea"},model:{value:t.contractEventForm.contractAbi,callback:function(e){t.$set(t.contractEventForm,"contractAbi",e)},expression:"contractEventForm.contractAbi"}})],1),t._v(" "),e("div",{staticClass:"block-wrapper"},[e("el-form-item",{attrs:{label:t.$t("table.fromBlock"),prop:"fromBlock"}},[e("el-input",{staticStyle:{width:"195px"},attrs:{clearable:""},model:{value:t.contractEventForm.fromBlock,callback:function(e){t.$set(t.contractEventForm,"fromBlock",t._n(e))},expression:"contractEventForm.fromBlock"}})],1),t._v(" "),e("el-form-item",{attrs:{label:t.$t("table.toBlock"),prop:"toBlock"}},[e("el-input",{staticStyle:{width:"195px"},attrs:{clearable:""},model:{value:t.contractEventForm.toBlock,callback:function(e){t.$set(t.contractEventForm,"toBlock",t._n(e))},expression:"contractEventForm.toBlock"}})],1),t._v(" "),e("el-tooltip",{staticStyle:{"margin-top":"12px"},attrs:{effect:"dark",content:t.$t("transaction.blockTips"),placement:"top-start"}},[e("i",{staticClass:"el-icon-info contract-icon font-15"})])],1),t._v(" "),e("el-form-item",{staticClass:"event-option",attrs:{label:t.$t("table.eventName"),prop:"eventName"}},[e("el-select",{staticClass:"event-name",staticStyle:{width:"500px"},attrs:{placeholder:t.$t("placeholder.selected")},on:{change:t.changeEventName},model:{value:t.contractEventForm.eventName,callback:function(e){t.$set(t.contractEventForm,"eventName",e)},expression:"contractEventForm.eventName"}},t._l(t.eventNameList,(function(t){return e("el-option",{key:t.value,attrs:{label:t.label,value:t.value}})})),1),t._v(" "),t._l(t.inputList,(function(n){return e("li",{staticClass:"event-info"},[n.indexed?e("div",{staticStyle:{position:"relative"}},[e("div",{staticClass:"param-name"},[t._v(t._s(n.name)+":")]),t._v(" "),e("el-input",{staticStyle:{width:"500px"},attrs:{placeholder:n.type},on:{input:e=>n.msgObj=t.isType(e,n.type)},model:{value:n.value,callback:function(e){t.$set(n,"value",e)},expression:"item.value"}}),t._v(" "),n.msgObj&&!n.msgObj.is?e("span",{staticClass:"font-color-ed5454 font-12 form-error",staticStyle:{display:"inline-block"}},[t._v("\n "+t._s(n.msgObj.msg)+"\n ")]):t._e()],1):t._e()])}))],2),t._v(" "),e("el-form-item",[e("div",{staticClass:"text-center",staticStyle:{width:"500px"}},[e("el-button",{attrs:{type:"primary",loading:t.loading},on:{click:function(e){return t.submit("contractEventForm")}}},[t._v(t._s(t.$t("dialog.search")))]),t._v(" "),e("span",{staticClass:"font-color-fff",domProps:{textContent:t._s(t.searchMessage)}})],1)])],1)],1)]),t._v(" "),e("div",{staticClass:"module-wrapper"},[t.eventList.length>0?e("div",{staticClass:"search-table",staticStyle:{"padding-bottom":"13px"}},[e("el-table",{directives:[{name:"loading",rawName:"v-loading",value:t.loading,expression:"loading"}],attrs:{data:t.eventList,"tooltip-effect":"dark"}},[e("el-table-column",{attrs:{prop:"log",label:t.$t("table.blockHeight"),"show-overflow-tooltip":"",width:"120",align:"center"},scopedSlots:t._u([{key:"default",fn:function(n){return[e("span",[t._v(t._s(n.row.log.blockNumber))])]}}],null,!1,3198896358)}),t._v(" "),e("el-table-column",{attrs:{prop:"eventVal",label:t.$t("table.eventValue"),"show-overflow-tooltip":"",align:"center"}})],1)],1):t._e(),t._v(" "),t.isSearch&&0==t.eventList.length?e("div",{staticClass:"text-center",staticStyle:{padding:"10px 0"}},[e("span",{staticClass:"font-color-fff"},[t._v(t._s(t.$t("text.noData")))])]):t._e()])])},a=[];r._withStripped=!0},"9TU5":function(t,e,n){"use strict";n.r(e);var r=n("Xynn"),a=n.n(r);for(var o in r)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return r[t]}))}(o);e.default=a.a},"9Y1n":function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return a}));var r=function(){var t=this,e=t._self._c;return e("div",[e("el-dialog",{staticClass:"dialog-wrapper",attrs:{modal:!0,"modal-append-to-body":!1,title:t.$t("text.exportJavaProject"),"close-on-click-modal":!1,visible:t.dialogVisible,"before-close":t.modelClose,width:"750px"},on:{"update:visible":function(e){t.dialogVisible=e}}},[e("h3",{staticStyle:{"padding-left":"18px"}},[t._v(t._s(t.$t("text.projectTitle")))]),t._v(" "),e("el-form",{ref:"projectFrom",staticClass:"demo-ruleForm",attrs:{model:t.projectFrom,rules:t.rules,"label-width":"116px"}},[e("el-form-item",{attrs:{label:t.$t("text.projectName"),prop:"artifactName"}},[e("el-input",{staticStyle:{width:"300px"},model:{value:t.projectFrom.artifactName,callback:function(e){t.$set(t.projectFrom,"artifactName",e)},expression:"projectFrom.artifactName"}})],1),t._v(" "),e("el-form-item",{attrs:{label:t.$t("text.projectGroupName"),prop:"group"}},[e("el-input",{staticStyle:{width:"300px"},model:{value:t.projectFrom.group,callback:function(e){t.$set(t.projectFrom,"group",e)},expression:"projectFrom.group"}})],1),t._v(" "),e("el-form-item",{attrs:{label:"channelIp",prop:"channelIp"}},[e("el-input",{staticStyle:{width:"300px"},model:{value:t.projectFrom.channelIp,callback:function(e){t.$set(t.projectFrom,"channelIp",e)},expression:"projectFrom.channelIp"}}),t._v(" "),e("el-tooltip",{attrs:{effect:"dark",content:t.$t("text.actualChannelIp"),placement:"top-start"}},[e("i",{staticClass:"el-icon-info"})])],1),t._v(" "),e("el-form-item",{attrs:{label:"channelPort",prop:"channelPort"}},[e("el-input",{staticStyle:{width:"300px"},attrs:{disabled:!!t.queryPort},model:{value:t.projectFrom.channelPort,callback:function(e){t.$set(t.projectFrom,"channelPort",e)},expression:"projectFrom.channelPort"}}),t._v(" "),e("el-tooltip",{attrs:{effect:"dark",content:t.$t("text.haveChannelPort"),placement:"top-start"}},[e("i",{staticClass:"el-icon-info"})]),t._v(" "),e("el-button",{attrs:{type:"text",size:"mini"},on:{click:function(e){return t.checkChannelIP("projectFrom")}}},[t._v(t._s(t.$t("privateKey.checkNodeActive")))])],1),t._v(" "),e("el-form-item",{attrs:{label:t.$t("text.projectUser")}},[e("el-select",{staticClass:"filter-item",staticStyle:{width:"300px"},attrs:{placeholder:t.$t("text.select"),multiple:""},model:{value:t.projectFrom.userAddress,callback:function(e){t.$set(t.projectFrom,"userAddress",e)},expression:"projectFrom.userAddress"}},t._l(t.userList,(function(t){return e("el-option",{key:t.address,attrs:{label:t.userName,value:t.address}})})),1),t._v(" "),t.isShowAddUserBtn?e("el-button",{attrs:{type:"text",size:"mini"},on:{click:function(e){return t.createUser()}}},[t._v(t._s(t.$t("privateKey.addUser")))]):t._e()],1)],1),t._v(" "),e("el-divider"),t._v(" "),e("h3",{staticStyle:{"padding-left":"18px"}},[t._v(t._s(t.$t("text.projectContract")))]),t._v(" "),e("p",{staticStyle:{"padding-left":"28px"}},[t._v(t._s(t.$t("text.exportJavaProjectInfo1")))]),t._v(" "),e("p",{staticStyle:{padding:"5px 0",color:"#F56C6C","padding-left":"28px"}},[t._v(t._s(t.$t("text.exportJavaProjectInfo2")))]),t._v(" "),e("el-table",{ref:"refTable",staticClass:"block-table-content",staticStyle:{width:"100%",padding:"0 20px"},attrs:{"show-header":!1,data:t.tableData,"row-key":t.getRowKeys,"expand-row-keys":t.expands},on:{"expand-change":t.handleExpand,"row-click":t.clickTable}},[e("el-table-column",{attrs:{type:"expand"},scopedSlots:t._u([{key:"default",fn:function(n){return[e("div",{staticClass:"table-content"},[e("el-table",{ref:"multipleTable",attrs:{data:n.row.contractList,"show-header":!0,"default-sort":{prop:"contractPath",order:"descending"}},on:{"select-all":t.handleSelectAll,"selection-change":function(e){return t.handleSelectionChange(e,n.row)}}},[e("el-table-column",{attrs:{type:"selection",width:"55"}}),t._v(" "),e("el-table-column",{attrs:{prop:"contractName","show-overflow-tooltip":"",label:t.$t("contracts.contractName")}}),t._v(" "),e("el-table-column",{attrs:{prop:"contractPath",label:t.$t("text.compileStatus")},scopedSlots:t._u([{key:"default",fn:function(n){return[n.row.contractAbi?e("span",{staticStyle:{color:"#67C23A"}},[t._v(t._s(t.$t("text.compiled")))]):t._e(),t._v(" "),n.row.contractAbi?t._e():e("span",{staticStyle:{color:"#F56C6C"}},[t._v(t._s(t.$t("text.uncomplie")))])]}}],null,!0)})],1)],1)]}}])}),t._v(" "),e("el-table-column",{attrs:{prop:"contractPath",label:t.$t("text.uncomplie"),"show-overflow-tooltip":""}}),t._v(" "),e("el-table-column",{attrs:{prop:"modifyTime",label:t.$t("nodes.modifyTime")}})],1),t._v(" "),e("div",{staticClass:"dialog-footer",attrs:{slot:"footer"},slot:"footer"},[e("el-button",{on:{click:t.modelClose}},[t._v(t._s(t.$t("dialog.cancel")))]),t._v(" "),e("el-button",{attrs:{type:"primary"},on:{click:function(e){return t.submit("projectFrom")}}},[t._v(t._s(t.$t("dialog.confirm")))])],1)],1),t._v(" "),e("el-dialog",{staticClass:"dialog-wrapper",attrs:{title:t.$t("dialog.addUsername"),visible:t.creatUserNameVisible,width:"640px",center:!0},on:{"update:visible":function(e){t.creatUserNameVisible=e}}},[e("v-createUser",{on:{close:t.createUserClose}})],1)],1)},a=[];r._withStripped=!0},"9czs":function(t,e,n){(t.exports=n("JPst")(!1)).push([t.i,"\n.transation-content {\r\n word-wrap: break-word;\r\n word-break: break-all;\n}\n.transation-title {\r\n color: #b5b5b5;\n}\n.string-color {\r\n color: #42b983;\n}\n.null-color {\r\n color: #e08331;\n}\n.other-color {\r\n color: #fc1e70;\n}\n.input-data {\r\n display: inline-block;\r\n width: 100%;\r\n padding: 10px;\r\n max-height: 200px;\r\n overflow: auto;\r\n word-break: break-all;\r\n word-wrap: break-word;\r\n -webkit-box-sizing: border-box;\r\n box-sizing: border-box;\n}\n.transation-data {\r\n display: inline-block;\r\n width: 400px;\r\n vertical-align: top;\n}\n.label {\r\n vertical-align: top;\r\n padding-right: 5px;\n}\r\n",""])},"9x70":function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return a}));var r=function(){var t=this,e=t._self._c;return e("div",{directives:[{name:"loading",rawName:"v-loading",value:t.loading,expression:"loading"}],staticClass:"contract-menu",staticStyle:{position:"relative",height:"100%"}},[e("div",{staticClass:"contract-menu-header noBlurs"},[e("el-tooltip",{staticClass:"item",attrs:{effect:"dark",content:t.$t("title.newFile"),placement:"top-start"}},[e("i",{staticClass:"wbs-icon-Addfile icon contract-icon",on:{click:t.addFile}})]),t._v(" "),e("el-tooltip",{staticClass:"item",attrs:{effect:"dark",content:t.$t("title.newFolder"),placement:"top-start"}},[e("i",{staticClass:"wbs-icon-Addfolder icon contract-icon",on:{click:t.addFolder}})]),t._v(" "),e("el-tooltip",{staticClass:"item",attrs:{effect:"dark",content:t.$t("title.upload"),placement:"top-start"}},[e("i",{staticClass:"wbs-icon-shangchuan contract-icon",staticStyle:{position:"relative"}},[e("input",{ref:"file",staticClass:"uploads",attrs:{multiple:"",type:"file",id:"file",name:"chaincodes"},on:{change:function(e){return t.upload(e)}}})])]),t._v(" "),e("div",[t._t("footer")],2)],1),t._v(" "),e("div",{staticClass:"contract-menu-content"},[e("ul",t._l(t.contractArry,(function(n){return e("li",{key:n.id},["file"==n.contractType?e("div",{staticClass:"contract-file",style:{"padding-left":n.modifyState?"10px":""},attrs:{id:n.id}},[e("div",{staticClass:"ellipsis-info",class:{colorActive:n.contractActive}},[n.modifyState?e("i",{staticClass:"wbs-icon-radio font-6"}):t._e(),t._v(" "),n.renameShow?t._e():e("i",{staticClass:"wbs-icon-file",attrs:{id:n.id},on:{contextmenu:function(e){return e.preventDefault(),t.handle(e,n)},click:function(e){return t.select(n)}}}),t._v(" "),n.renameShow?t._e():e("span",{attrs:{id:n.id},on:{contextmenu:function(e){return e.preventDefault(),t.handle(e,n)},click:function(e){return t.select(n)}}},[t._v(t._s(n.contractName))])]),t._v(" "),n.renameShow?e("el-input",{directives:[{name:"focus",rawName:"v-focus"}],ref:"user",refInFor:!0,attrs:{maxlength:"32"},on:{blur:function(e){return t.changeName(n)}},model:{value:t.contractName,callback:function(e){t.contractName=e},expression:"contractName"}}):t._e(),t._v(" "),n.handleModel?e("div",{directives:[{name:"Clickoutside",rawName:"v-Clickoutside",value:t.checkNull,expression:"checkNull"}],staticClass:"contract-menu-handle",style:{top:t.clentY+"px",left:t.clentX+"px"}},[t.contractFile?e("ul",[e("li",{staticClass:"contract-menu-handle-list",on:{click:t.rename}},[t._v("\n "+t._s(t.$t("dialog.rename"))+"\n ")]),t._v(" "),e("li",{staticClass:"contract-menu-handle-list",on:{click:function(e){return t.deleteFile(n)}}},[t._v("\n "+t._s(t.$t("dialog.delete"))+"\n ")]),t._v(" "),e("li",{staticClass:"contract-menu-handle-list",on:{click:function(e){return t.exportFile(n)}}},[t._v("\n "+t._s(t.$t("dialog.exportSol"))+"\n ")])]):t._e()]):t._e()],1):t._e(),t._v(" "),"folder"==n.contractType?e("div",{staticClass:"contract-folder",attrs:{id:n.folderId}},[n.renameShow?t._e():e("i",{staticClass:"cursor-pointer font-16 no-chase",class:n.folderIcon,attrs:{id:n.folderId},on:{click:function(e){return t.open(n)}}}),t._v(" "),n.renameShow?t._e():e("i",{staticClass:"wbs-icon-folder cursor-pointer no-chase",staticStyle:{color:"#d19650"},attrs:{id:n.folderId},on:{click:function(e){return t.open(n)},contextmenu:function(e){return e.preventDefault(),t.handle(e,n)}}}),t._v(" "),n.renameShow?t._e():e("span",{staticClass:"no-chase cursor-pointer",class:{colorActive:n.contractActive},attrs:{id:n.folderId},on:{click:function(e){return t.open(n)},contextmenu:function(e){return e.preventDefault(),t.handle(e,n)}}},[t._v(t._s(n.contractName))]),t._v(" "),n.handleModel?e("div",{directives:[{name:"Clickoutside",rawName:"v-Clickoutside",value:t.checkNull,expression:"checkNull"}],staticClass:"contract-menu-handle",style:{top:t.clentY+"px",left:t.clentX+"px"}},[e("ul",["template"!==n.contractName?e("li",{staticClass:"contract-menu-handle-list",on:{click:function(e){return t.addFiles(n)}}},[t._v("\n "+t._s(t.$t("dialog.newFile"))+"\n ")]):t._e(),t._v(" "),"template"!==n.contractName?e("li",{staticClass:"contract-menu-handle-list",on:{click:function(e){return t.deleteFolder(n)}}},[t._v("\n "+t._s(t.$t("dialog.delete"))+"\n ")]):t._e(),t._v(" "),e("li",{staticClass:"contract-menu-handle-list",on:{click:function(e){return t.exportFolder(n)}}},[t._v("\n "+t._s(t.$t("dialog.exportSol"))+"\n ")])])]):t._e(),t._v(" "),e("br"),t._v(" "),n.folderActive?e("ul",{staticStyle:{"padding-left":"20px"}},t._l(n.child,(function(r){return e("li",{key:r.id,staticClass:"contract-file",style:{"padding-left":r.modifyState?"10px":""}},[e("div",{staticClass:"ellipsis-info",class:{colorActive:r.contractActive}},[r.modifyState?e("i",{staticClass:"wbs-icon-radio font-6"}):t._e(),t._v(" "),r.renameShow?t._e():e("i",{staticClass:"wbs-icon-file",attrs:{id:r.id},on:{click:function(e){return t.select(r)},contextmenu:function(e){return e.preventDefault(),t.handle(e,r)}}}),t._v(" "),r.renameShow?t._e():e("span",{attrs:{id:r.id},on:{click:function(e){return t.select(r)},contextmenu:function(e){return e.preventDefault(),t.handle(e,r)}}},[t._v(t._s(r.contractName))])]),t._v(" "),r.renameShow?e("el-input",{directives:[{name:"focus",rawName:"v-focus"}],attrs:{maxlength:"32"},on:{blur:function(e){return t.changeName(r)}},model:{value:t.contractName,callback:function(e){t.contractName=e},expression:"contractName"}}):t._e(),t._v(" "),r.handleModel?e("div",{directives:[{name:"Clickoutside",rawName:"v-Clickoutside",value:t.checkNull,expression:"checkNull"}],staticClass:"contract-menu-handle",style:{top:t.clentY+"px",left:t.clentX+"px"}},[t.contractFile&&"template"!==n.contractName?e("ul",[e("li",{staticClass:"contract-menu-handle-list",on:{click:t.rename}},[t._v("\n "+t._s(t.$t("dialog.rename"))+"\n ")]),t._v(" "),e("li",{staticClass:"contract-menu-handle-list",on:{click:function(e){return t.deleteFile(r)}}},[t._v("\n "+t._s(t.$t("dialog.delete"))+"\n ")]),t._v(" "),e("li",{staticClass:"contract-menu-handle-list",on:{click:function(e){return t.exportFile(r)}}},[t._v("\n "+t._s(t.$t("dialog.exportSol"))+"\n ")])]):t._e()]):t._e()],1)})),0):t._e()]):t._e()])})),0)]),t._v(" "),t.foldershow?e("add-folder",{attrs:{foldershow:t.foldershow},on:{close:t.folderClose,success:t.folderSuccess}}):t._e(),t._v(" "),t.fileshow?e("add-file",{attrs:{data:t.selectFolderData,fileshow:t.fileshow,id:t.folderId},on:{close:t.fileClose,success:function(e){return t.fileSucccess(e)}}}):t._e(),t._v(" "),t.cataLogShow?e("select-catalog",{attrs:{show:t.cataLogShow},on:{success:function(e){return t.catalogSuccess(e)},close:t.catalogClose}}):t._e(),t._v(" "),t.$store.state.exportProjectShow?e("export-project",{attrs:{show:t.$store.state.exportProjectShow,folderList:t.pathList},on:{close:t.exportProjectShowClose}}):t._e(),t._v(" "),t.importFromDialog?e("el-dialog",{staticClass:"send-dialog",attrs:{title:t.$t("contracts.importContractTitle"),visible:t.importFromDialog,width:"470px",center:""},on:{"update:visible":function(e){t.importFromDialog=e}}},[e("import-from",{on:{modelClose:t.modelClose,exportSuccessed:t.exportSuccessed}})],1):t._e()],1)},a=[];r._withStripped=!0},A14j:function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return a}));var r=function(){var t=this,e=t._self._c;return e("div",[e("p",[t._v(t._s(t.$t("contracts.importContractDec")))]),t._v(" "),e("p",[t._v(t._s(t.$t("contracts.importContractEg")))]),t._v(" "),e("p",[t._v("\n https://raw.githubusercontent.com/OpenZeppelin/openzeppelin-solidity/67bca857eedf99bf44a4b6a0fc5b5ed553135316/contracts/access/Roles.sol\n ")]),t._v(" "),e("div",[e("el-form",{ref:"folderFrom",staticClass:"demo-ruleForm",attrs:{model:t.folderFrom,rules:t.rules,"label-width":"100px"}},[e("el-form-item",{staticStyle:{width:"410px"},attrs:{label:t.$t("dialog.outUrl"),prop:"outUrl"}},[e("el-input",{attrs:{type:"textarea"},model:{value:t.folderFrom.outUrl,callback:function(e){t.$set(t.folderFrom,"outUrl",e)},expression:"folderFrom.outUrl"}})],1),t._v(" "),e("el-form-item",{attrs:{label:t.$t("dialog.folderName"),prop:"folderName"}},[e("el-select",{staticStyle:{width:"310px"},attrs:{placeholder:t.$t("placeholder.selected")},model:{value:t.folderFrom.folderName,callback:function(e){t.$set(t.folderFrom,"folderName",e)},expression:"folderFrom.folderName"}},t._l(t.options,(function(t){return e("el-option",{key:t.contractPath,attrs:{label:t.contractPath,value:t.contractPath}})})),1)],1)],1)],1),t._v(" "),e("div",{staticClass:"dialog-footer",attrs:{slot:"footer"},slot:"footer"},[e("el-button",{on:{click:t.modelClose}},[t._v(t._s(t.$t("dialog.cancel")))]),t._v(" "),e("el-button",{attrs:{type:"primary",loading:t.loading},on:{click:function(e){return t.submit("folderFrom")}}},[t._v(t._s(t.$t("dialog.confirm")))])],1)])},a=[];r._withStripped=!0},A4cI:function(t,e,n){"use strict";n("O6eT")},A9o1:function(t,e,n){"use strict";n.r(e);var r=n("Ke48"),a=n.n(r);for(var o in r)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return r[t]}))}(o);e.default=a.a},ADvF:function(t,e,n){"use strict";n("M4yR")},AJf1:function(t,e,n){"use strict";n("Irr9")},AJzf:function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return a}));var r=function(){var t=this,e=t._self._c;return e("div",[e("v-content-head",{attrs:{headTitle:t.$t("route.nodeManagementQ")},on:{changeGroup:t.changeGroup}}),t._v(" "),e("div",{staticClass:"module-wrapper"},[e("div",{staticClass:"search-table"},[e("el-table",{directives:[{name:"loading",rawName:"v-loading",value:t.loading,expression:"loading"}],staticClass:"search-table-content",attrs:{data:t.nodeData}},t._l(t.nodeHead,(function(n){return e("el-table-column",{key:n.enName,attrs:{label:n.name,width:n.width,"show-overflow-tooltip":"",align:"center"},scopedSlots:t._u([{key:"default",fn:function(r){return["status"===n.enName?e("span",[e("i",{staticClass:"wbs-icon-radio font-6",style:{color:t.textColor(r.row[n.enName])}}),t._v(" "+t._s(t.nodesStatus(r.row[n.enName]))+"\n ")]):"nodeId"===n.enName?e("span",[e("i",{staticClass:"wbs-icon-copy font-12",attrs:{title:t.$t("title.copy")},on:{click:function(e){return t.copyNodeIdKey(r.row[n.enName])}}}),t._v("\n "+t._s(r.row[n.enName])+"\n ")]):e("span",[t._v(t._s(r.row[n.enName]))])]}}],null,!0)})})),1),t._v(" "),e("div",{staticStyle:{height:"20px"}})],1)])],1)},a=[];r._withStripped=!0},AT33:function(t,e,n){"use strict";n.r(e);var r=n("2SHe"),a=n.n(r);for(var o in r)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return r[t]}))}(o);e.default=a.a},AZ93:function(t,e,n){"use strict";n("N2p7")},"Abg+":function(t,e,n){"use strict";n("sTOi")},Aerp:function(t,e,n){"use strict";n("w1+O")},Am9O:function(t,e,n){var r=n("cr+O");r.__esModule&&(r=r.default),"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals);(0,n("SZ7m").default)("3ab18b72",r,!1,{})},B2fc:function(t,e,n){"use strict";n.r(e);var r=n("gJbQ"),a=n.n(r);for(var o in r)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return r[t]}))}(o);e.default=a.a},"BSt/":function(t,e,n){"use strict";n.r(e);var r=n("OOXg"),a=n.n(r);for(var o in r)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return r[t]}))}(o);e.default=a.a},Bxao:function(t,e,n){(t.exports=n("JPst")(!1)).push([t.i,"\n.transation-content {\r\n word-wrap: break-word;\r\n word-break: break-all;\n}\n.transation-title {\r\n color: #b5b5b5;\n}\n.string-color {\r\n color: #42b983;\n}\n.null-color {\r\n color: #e08331;\n}\n.other-color {\r\n color: #fc1e70;\n}\n.input-data {\r\n display: inline-block;\r\n width: 100%;\r\n padding: 10px;\r\n max-height: 200px;\r\n overflow: auto;\r\n word-break: break-all;\r\n word-wrap: break-word;\r\n -webkit-box-sizing: border-box;\r\n box-sizing: border-box;\n}\n.transation-data {\r\n display: inline-block;\r\n width: 400px;\r\n vertical-align: top;\n}\n.label {\r\n vertical-align: top;\r\n padding-right: 5px;\n}\r\n",""])},C3Cf:function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return a}));var r=function(){var t=this,e=t._self._c;return e("div",[e("content-head",{attrs:{headTitle:t.$t("route.abiList")}}),t._v(" "),e("div",{staticClass:"module-wrapper"},[e("div",{staticClass:"search-part"},[e("div",{staticClass:"search-part-left",staticStyle:{"padding-top":"20px"}},[e("el-button",{staticClass:"search-part-left-btn",attrs:{type:"primary"},on:{click:t.generateAbi}},[t._v(t._s(this.$t("text.addAbi")))])],1)]),t._v(" "),e("div",{staticClass:"search-table"},[e("el-table",{directives:[{name:"loading",rawName:"v-loading",value:t.loading,expression:"loading"}],staticClass:"search-table-content",attrs:{data:t.abiList}},t._l(t.abiHead,(function(n){return e("el-table-column",{key:n.enName,attrs:{label:n.name,prop:n.enName,width:n.width,"show-overflow-tooltip":""},scopedSlots:t._u([{key:"default",fn:function(r){return["operation"!=n.enName?["contractAbi"===n.enName?e("span",[e("i",{staticClass:"wbs-icon-copy font-12 copy-public-key",attrs:{title:t.$t("text.copy")},on:{click:function(e){return t.copyPubilcKey(r.row.contractAbi)}}}),t._v(" "),e("span",{staticClass:"link",on:{click:function(e){return t.openAbi(r.row)}}},[t._v(t._s(r.row.contractAbi))])]):"contractAddress"===n.enName?e("span",[e("i",{staticClass:"wbs-icon-copy font-12 copy-public-key",attrs:{title:t.$t("text.copy")},on:{click:function(e){return t.copyPubilcKey(r.row.contractAddress)}}}),t._v(" "),e("span",[t._v(t._s(r.row.contractAddress))])]):"contractBin"===n.enName?e("span",[e("i",{staticClass:"wbs-icon-copy font-12 copy-public-key",attrs:{title:t.$t("text.copy")},on:{click:function(e){return t.copyPubilcKey(r.row.contractBin)}}}),t._v(" "),e("span",[t._v(t._s(r.row.contractBin))])]):e("span",[t._v(t._s(r.row[n.enName]))])]:[e("el-button",{class:{grayColor:!r.row.contractAddress},attrs:{disabled:!r.row.contractAddress,type:"text",size:"small"},on:{click:function(e){return t.send(r.row)}}},[t._v(t._s(t.$t("contracts.sendTransaction")))]),t._v(" "),e("el-button",{class:{grayColor:!r.row.contractAddress},attrs:{disabled:!r.row.contractAddress||!r.row.haveEvent,type:"text",size:"small"},on:{click:function(e){return t.checkEvent(r.row)}}},[t._v(t._s(t.$t("title.checkEvent")))]),t._v(" "),e("el-button",{attrs:{type:"text",size:"small"},on:{click:function(e){return t.updateAbi(r.row)}}},[t._v(t._s(t.$t("contracts.updateAbi")))]),t._v(" "),e("el-button",{attrs:{type:"text",size:"small"},on:{click:function(e){return t.deleteAbi(r.row)}}},[t._v(t._s(t.$t("contracts.deleteAbi")))])]]}}],null,!0)})})),1),t._v(" "),e("el-pagination",{staticClass:"page",attrs:{"current-page":t.currentPage,"page-sizes":[10,20,30,50],"page-size":t.pageSize,layout:"total, sizes, prev, pager, next, jumper",total:t.total},on:{"size-change":t.handleSizeChange,"current-change":t.handleCurrentChange}})],1)]),t._v(" "),t.abiDialogShow?e("abi-dialog",{attrs:{show:t.abiDialogShow,data:t.abiData},on:{close:t.abiClose}}):t._e(),t._v(" "),t.dialogVisible?e("el-dialog",{staticClass:"send-dialog",attrs:{title:t.$t("title.callContract"),visible:t.dialogVisible,width:"600px","before-close":t.sendClose,center:""},on:{"update:visible":function(e){t.dialogVisible=e}}},[e("send-transation",{ref:"send",attrs:{data:t.data,abi:t.abiData,version:t.version},on:{success:function(e){return t.sendSuccess(e)},close:t.handleClose}})],1):t._e(),t._v(" "),t.editorShow?e("editor",{attrs:{show:t.editorShow,data:t.editorData},on:{close:t.editorClose}}):t._e(),t._v(" "),t.importVisibility?e("el-dialog",{staticClass:"send-dialog",attrs:{title:t.$t("nodes.addAbi"),visible:t.importVisibility,width:"600px",center:""},on:{"update:visible":function(e){t.importVisibility=e}}},[e("import-abi",{on:{importSuccess:t.importSuccess,closeImport:t.closeImport}})],1):t._e(),t._v(" "),t.updateVisibility?e("el-dialog",{staticClass:"send-dialog",attrs:{title:t.$t("nodes.updateAbi"),visible:t.updateVisibility,width:"600px",center:""},on:{"update:visible":function(e){t.updateVisibility=e}}},[e("update-abi",{attrs:{updateItem:t.updateItem},on:{updateSuccess:t.updateSuccess,closeUpdate:t.closeUpdate}})],1):t._e()],1)},a=[];r._withStripped=!0},CJff:function(t,e,n){"use strict";n.r(e);var r=n("t+ym"),a=n.n(r);for(var o in r)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return r[t]}))}(o);e.default=a.a},Cu5w:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,a=n("mHBk"),o=n("T2Et"),i=(r=o)&&r.__esModule?r:{default:r};e.default={name:"selectCatalog",props:["show"],components:{"add-folder":i.default},computed:{rules:function(){return{folderName:[{required:!0,message:this.$t("dialog.pleaseType")+" "+this.$t("dialog.folderName"),trigger:"blur"}]}}},data:function(){return{options:[],folderFrom:{folderName:""},dialogVisible:this.show,pathList:[],folderList:[],foldershow:!1,isAddFile:""}},mounted:function(){this.getContractPaths()},methods:{getContractPaths:function(){var t=this;(0,a.getContractPathList)(localStorage.getItem("groupId")).then((function(e){if(200==e.status){t.pathList=e.data;t.folderList=[];for(var n=0;n20||20==this.contractData.length)?(this.contractName="",this.contractAddress=this.contractData):(this.contractName="",this.contractAddress=""),this.currentPage=1,this.getContracts()},send:function(t){this.data=t,this.abiData=t.contractAbi,this.version=t.contractVersion,this.dialogVisible=!0},sendClose:function(){this.dialogVisible=!1},handleClose:function(){this.dialogVisible=!1},sendSuccess:function(t){this.sendConstant=t.constant,this.dialogVisible=!1,this.editorShow=!0,this.editorData=null,this.editorData=t.resData,this.editorInput=t.input,this.editorOutput=t.data.outputs},handleSizeChange:function(t){this.pageSize=t,this.currentPage=1,this.getContracts()},handleCurrentChange:function(t){this.currentPage=t,this.getContracts()},handleEvent:function(t){this.contractInfo=t,this.$router.push({path:"/onlineTools",query:{groupId:this.groupId,type:"contract",contractAddress:t.contractAddress}})},checkEventSuccess:function(t){this.checkEventResult=t,this.checkEventResultVisible=!0},checkEventClose:function(){this.checkEventVisible=!1},checkEventResultSuccess:function(){this.checkEventResultVisible=!1},checkEventResultClose:function(){this.checkEventResultVisible=!1},handleMgmtCns:function(t){this.mgmtCnsVisible=!0,this.mgmtCnsItem=t},mgmtCnsResultSuccess:function(){this.mgmtCnsVisible=!1},mgmtCnsResultClose:function(){this.mgmtCnsVisible=!1},clearInput:function(){this.contractName="",this.contractAddress="",this.contractData="",this.currentPage=1,this.getContracts()}}}},FwsX:function(t,e,n){"use strict";n.r(e);var r=n("w3d5"),a=n("Dj4s");for(var o in a)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return a[t]}))}(o);n("nFqr");var i=n("KHd+"),s=Object(i.a)(a.default,r.a,r.b,!1,null,"0b2a4fc7",null);e.default=s.exports},G3yS:function(t,e,n){"use strict";n.r(e);var r=n("kxz1"),a=n("ewDi");for(var o in a)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return a[t]}))}(o);var i=n("KHd+"),s=Object(i.a)(a.default,r.a,r.b,!1,null,null,null);e.default=s.exports},GZVb:function(t,e,n){"use strict";n.r(e);var r=n("p3hQ"),a=n("+Zam");for(var o in a)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return a[t]}))}(o);var i=n("KHd+"),s=Object(i.a)(a.default,r.a,r.b,!1,null,null,null);e.default=s.exports},Go4i:function(t,e,n){(t.exports=n("JPst")(!1)).push([t.i,'\n.content-head-wrapper[data-v-f9a2edfe] {\r\n width: calc(100%);\r\n min-width: 400px;\n}\n.content-head-wrapper[data-v-f9a2edfe]::after {\r\n display: block;\r\n content: "";\r\n clear: both;\n}\n.content-head-icon[data-v-f9a2edfe] {\r\n color: #fff;\r\n font-weight: bold;\r\n cursor: pointer;\n}\n.content-head-title[data-v-f9a2edfe] {\r\n margin-left: 40px;\r\n float: left;\r\n font-size: 16px;\r\n color: #fff;\r\n font-weight: bold;\r\n line-height: 54px;\n}\n.content-head-network[data-v-f9a2edfe] {\r\n float: right;\r\n padding-right: 10px;\r\n line-height: 54px;\n}\n.content-head-item[data-v-f9a2edfe] {\r\n display: inline-block;\n}\n.group-content[data-v-f9a2edfe] {\r\n position: relative;\r\n cursor: pointer;\n}\n.group-content ul[data-v-f9a2edfe] {\r\n position: absolute;\r\n left: 20px;\r\n top: 35px;\r\n color: #666;\r\n z-index: 2;\r\n background-color: #fff;\r\n border: 1px solid #ebeef5;\r\n border-radius: 4px;\r\n -webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);\r\n box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);\n}\n.group-content ul li[data-v-f9a2edfe] {\r\n height: 32px;\r\n line-height: 32px;\r\n cursor: pointer;\r\n padding: 0 20px;\n}\n.group-content ul li[data-v-f9a2edfe]:hover {\r\n background-color: #ecf5ff;\r\n color: #66b1ff;\n}\n.browse-user[data-v-f9a2edfe] {\r\n text-align: center;\r\n text-decoration: none;\r\n font-size: 12px;\r\n cursor: pointer;\r\n color: #cfd7db;\n}\n.sign-out-wrapper[data-v-f9a2edfe] {\r\n text-align: center;\n}\n.sign-out[data-v-f9a2edfe] {\r\n cursor: pointer;\r\n color: #ed5454;\n}\n.change-password[data-v-f9a2edfe] {\r\n color: #2d5f9e;\r\n cursor: pointer;\n}\n.network-name[data-v-f9a2edfe] {\r\n font-size: 12px;\r\n color: #9da2ab;\r\n padding: 3px 0px;\r\n /* border-right: 2px solid #e7ebf0; */\r\n margin-right: 16px;\n}\n.select-network[data-v-f9a2edfe] {\r\n color: #2d5f9e;\r\n cursor: default;\n}\n.content-head-network a[data-v-f9a2edfe]:nth-child(1) {\r\n text-decoration: none;\r\n outline: none;\r\n color: #cfd7db;\r\n padding-right: 15px;\r\n border-right: 1px solid #657d95;\r\n margin-right: 15px;\n}\n.content-head-network[data-v-f9a2edfe]::after {\r\n display: block;\r\n content: "";\r\n clear: both;\n}\na[data-v-f9a2edfe] {\n}\n.dialog-text[data-v-f9a2edfe] {\r\n word-break: break-all;\n}\n.content-head-lang[data-v-f9a2edfe] {\r\n line-height: 54px;\r\n float: right;\n}\n.right-menu-item[data-v-f9a2edfe] {\r\n padding: 0 20px;\n}\n.hover-effect[data-v-f9a2edfe] {\r\n cursor: pointer;\r\n /* transition: background 0.3s; */\n}\r\n/* .hover-effect:hover {\r\n background: rgba(0, 0, 0, 0.025);\r\n} */\r\n',""])},"H+jS":function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return a}));var r=function(){var t=this._self._c;return t("div",{directives:[{name:"loading",rawName:"v-loading",value:this.loading,expression:"loading"}],staticClass:"web-font",attrs:{id:"app"}},[this.show?t("router-view"):this._e()],1)},a=[];r._withStripped=!0},HJl6:function(t,e,n){"use strict";n("HoBW")},HiQf:function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return a}));var r=function(){var t=this,e=t._self._c;return e("div",[e("el-tabs",{on:{"tab-click":t.handleClick},model:{value:t.activeName,callback:function(e){t.activeName=e},expression:"activeName"}},[e("el-tab-pane",{attrs:{label:t.$t("table.transactionInfo"),name:"txInfo"}},t._l(t.txInfoList,(function(n){return e("el-row",{key:n},[e("el-col",{attrs:{xs:24,sm:24,md:6,lg:4,xl:2}},[e("span",[t._v(t._s(n)+":")])]),t._v(" "),e("el-col",{attrs:{xs:24,sm:24,md:18,lg:20,xl:22}},["input"==n?[e("el-input",{directives:[{name:"show",rawName:"v-show",value:t.showDecode,expression:"showDecode"}],attrs:{type:"textarea",autosize:t.autosizeMao},model:{value:t.txInfoMap[n],callback:function(e){t.$set(t.txInfoMap,n,e)},expression:"txInfoMap[item]"}}),t._v(" "),e("div",{directives:[{name:"show",rawName:"v-show",value:!t.showDecode,expression:"!showDecode"}],staticClass:"input-data"},[e("div",{staticClass:"input-label"},[e("span",{staticClass:"label"},[t._v("function")])]),t._v(" "),e("div",{staticClass:"input-label"},[e("span",{staticClass:"label"},[t._v("methodId")])]),t._v(" "),e("div",{staticClass:"input-label"},[e("span",{staticClass:"label"},[t._v("data")])])])]:"to"==n?[e("p",{staticClass:"base-p"},[t._v(t._s(t.txInfoMap[n])+" "),t.txInfoMap[n]?e("span",[t._v(t._s(t._f("contractSource")(t.txInfoMap[n])))]):t._e()])]:[e("p",{staticClass:"base-p"},[t._v(t._s(t.txInfoMap[n]))])]],2)],1)})),1),t._v(" "),e("el-tab-pane",{attrs:{label:t.$t("table.transactionReceipt"),name:"txReceiptInfo"}},t._l(t.txReceiptInfoList,(function(n){return e("el-row",{key:n},[e("el-col",{attrs:{xs:24,sm:24,md:6,lg:4,xl:2}},[e("span",[t._v(t._s(n)+":")])]),t._v(" "),e("el-col",{attrs:{xs:24,sm:24,md:18,lg:20,xl:22}},["logs"==n?[e("p",{staticClass:"base-p",domProps:{innerHTML:t._s(t.txInfoReceiptMap[n])}}),t._v(" "),e("div",{directives:[{name:"show",rawName:"v-show",value:!t.showReceiptDecode,expression:"!showReceiptDecode"}]},[t._v("\n 解码后\n ")])]:"status"==n?[e("p",{staticClass:"base-p",style:{color:t.txStatusColor(t.txInfoReceiptMap[n])}},[t._v(t._s(t.txInfoReceiptMap[n]))])]:"to"==n?[e("p",{staticClass:"base-p"},[t._v(t._s(t.txInfoReceiptMap[n])+" "),t.txInfoReceiptMap[n]?e("span",[t._v(t._s(t._f("contractSource")(t.txInfoReceiptMap[n])))]):t._e()])]:[e("p",{staticClass:"base-p"},[t._v(t._s(t.txInfoReceiptMap[n]))])]],2)],1)})),1)],1)],1)},a=[];r._withStripped=!0},HiX6:function(t,e,n){var r=n("XsEW");r.__esModule&&(r=r.default),"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals);(0,n("SZ7m").default)("0a908fee",r,!1,{})},HifD:function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return a}));var r=function(){var t=this,e=t._self._c;return e("div",[e("el-form",{ref:"cnsVersionFrom",attrs:{model:t.cnsVersionFrom,rules:t.rules,size:"medium","label-width":"135px"}},[e("el-form-item",{attrs:{label:t.$t("text.acountAddress"),prop:"userId"}},[e("el-select",{staticStyle:{width:"200px"},attrs:{placeholder:t.placeholderText},on:{change:t.changeId},model:{value:t.cnsVersionFrom.userId,callback:function(e){t.$set(t.cnsVersionFrom,"userId",e)},expression:"cnsVersionFrom.userId"}},t._l(t.userList,(function(n){return e("el-option",{key:n.address,attrs:{label:n.address,value:n.address}},[e("span",{staticClass:"font-12"},[t._v(t._s(n.userName))]),t._v(" "),e("span",[t._v(t._s(n.address))])])})),1),t._v(" "),t.isShowAddUserBtn?e("el-button",{attrs:{type:"text",size:"mini"},on:{click:function(e){return t.createUser()}}},[t._v(t._s(t.$t("privateKey.addUser")))]):t._e()],1),t._v(" "),e("el-form-item",{attrs:{label:t.$t("text.cnsName"),prop:"cnsName"}},[e("el-input",{staticStyle:{width:"200px"},model:{value:t.cnsVersionFrom.cnsName,callback:function(e){t.$set(t.cnsVersionFrom,"cnsName",e)},expression:"cnsVersionFrom.cnsName"}})],1),t._v(" "),e("el-form-item",{attrs:{label:t.$t("text.version"),prop:"cnsVersion"}},[e("el-input",{staticStyle:{width:"200px"},model:{value:t.cnsVersionFrom.cnsVersion,callback:function(e){t.$set(t.cnsVersionFrom,"cnsVersion",e)},expression:"cnsVersionFrom.cnsVersion"}}),t._v(" "),e("el-tooltip",{staticClass:"font-color-fff",attrs:{effect:"dark",content:t.$t("text.registerCnsTips"),placement:"top-start"}},[e("i",{staticClass:"el-icon-info"})])],1)],1),t._v(" "),e("div",{staticClass:"dialog-footer",staticStyle:{"text-align":"right"},attrs:{slot:"footer"},slot:"footer"},[e("el-button",{on:{click:t.modelClose}},[t._v(t._s(t.$t("dialog.cancel")))]),t._v(" "),e("el-button",{attrs:{type:"primary"},on:{click:function(e){return t.submit("cnsVersionFrom")}}},[t._v(t._s(t.$t("text.register")))])],1),t._v(" "),e("el-dialog",{staticClass:"dialog-wrapper",attrs:{title:t.$t("dialog.addUsername"),visible:t.creatUserNameVisible,"before-close":t.closeUserName,width:"640px",center:!0,"append-to-body":!0},on:{"update:visible":function(e){t.creatUserNameVisible=e}}},[e("v-createUser",{on:{close:t.createUserClose}})],1)],1)},a=[];r._withStripped=!0},HoBW:function(t,e,n){var r=n("Etaz");r.__esModule&&(r=r.default),"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals);(0,n("SZ7m").default)("0c526a8a",r,!1,{})},I5MT:function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var _assign=__webpack_require__("P2sY"),_assign2=_interopRequireDefault(_assign),_extends2=__webpack_require__("QbLZ"),_extends3=_interopRequireDefault(_extends2),_api=__webpack_require__("mHBk"),_createUser=__webpack_require__("n+5x"),_createUser2=_interopRequireDefault(_createUser),_util=__webpack_require__("DgvE");function _interopRequireDefault(t){return t&&t.__esModule?t:{default:t}}exports.default={components:{"v-createUser":_createUser2.default},name:"sendTransation",props:["data","dialogClose","abi","version","sendErrorMessage"],data:function(){for(var t=this,e={},n=0;n<999;n++)e["bytes"+n]=[{required:!0,message:this.$t("text.sendInput"),trigger:"blur"},{pattern:"^0[xX][0-9a-fA-F]{"+2*n+"}$",message:"必须是十六进制的数字或字母,长度是"+2*n,trigger:"blur"}];return{transation:{userName:"",funcName:"",funcValue:[],funcType:"function",reqVal:[]},userId:"",userList:[],abiList:[],form:{pramasData:[]},funcList:[],buttonClick:!1,contractVersion:this.version,constant:!1,contractAddress:this.data.contractAddress||"",errorMessage:"",pramasObj:null,stateMutability:"",isCNS:!1,cnsList:[],cnsVersion:"",cnsName:"",isShowAddUserBtn:!1,creatUserNameVisible:!1,ruleForm:{},ruleForms:{},rules:(0,_extends3.default)({int:[{required:!0,message:this.$t("text.sendInput"),trigger:"blur"},{pattern:/^-?[0-9]\d*$/,message:"必须是数字,可以是负数",trigger:"blur"}],string:[{required:!0,message:this.$t("text.sendInput"),trigger:"blur"}],uint256:[{required:!0,message:this.$t("text.sendInput"),trigger:"blur"},{pattern:/^[0-9]\d*$/,message:"必须是数字,不可以是负数",trigger:"blur"}],int256:[{required:!0,message:this.$t("text.sendInput"),trigger:"blur"},{pattern:/^-?[0-9]\d*$/,message:"必须是数字,可以是负数",trigger:"blur"}],bytes:[{required:!0,message:this.$t("text.sendInput"),trigger:"blur"}],bool:[{required:!0,message:this.$t("text.sendInput"),trigger:"blur"}],tuple:[{required:!0,message:this.$t("text.sendInput"),trigger:"blur"}],address:[{required:!0,message:this.$t("text.sendInput"),trigger:"blur"},{pattern:"^0[xX][0-9a-fA-F]{40}$",message:"必须是十六进制的数字或字母,长度是42",trigger:"blur"}],uint:[{required:!0,message:this.$t("text.sendInput"),trigger:"blur"},{pattern:/^[0-9]\d*$/,message:"必须是数字,不可以是负数",trigger:"blur"}],int8:[{required:!0,message:this.$t("text.sendInput"),trigger:"blur"},{validator:function(e,n,r){console.log(n),n>=-128&&n<=127?r():r(t.$t("text.intEight"))},trigger:"blur"}],int16:[{required:!0,message:this.$t("text.sendInput"),trigger:"blur"},{validator:function(e,n,r){console.log(n),n>=-32768&&n<=32767?r():r(t.$t("text.intSixTeen"))},trigger:"blur"}],uint8:[{required:!0,message:this.$t("text.sendInput"),trigger:"blur"},{validator:function(e,n,r){console.log(n),n>=0&&n<=255?r():r(t.$t("text.uintEight"))},trigger:"blur"}],uint16:[{required:!0,message:this.$t("text.sendInput"),trigger:"blur"},{validator:function(e,n,r){console.log(n),n>=0&&n<=65535?r():r(t.$t("text.uintSixTeen"))},trigger:"blur"}]},e)}},computed:{showUser:function(){var t=!0;return(this.constant||"view"===this.stateMutability||"pure"===this.stateMutability)&&(t=!1),t}},mounted:function(){this.getLocalKeyStores(),this.formatAbi(),this.changeFunc()},methods:{arrayLimit:function(){var t=this;console.log(this.form.pramasData),this.form.pramasData.map((function(e,n){-1!=e.type.indexOf("[]")&&(t.rules[e.type]=[{required:!0,message:t.$t("text.sendInput"),trigger:"blur"},{pattern:"^\\[.*?\\]$",message:"必须是以[开头,以]结尾的数组",trigger:"blur"}])}))},placeholderText:function(t){if(t.length>5&&"bytes"==t.substring(0,5)&&"[]"!=t.substring(t.length,t.length-2))return t+"(十六进制,长度是"+2*t.substring(5,t.length)+")";switch(t){case"string":return"string";case"bytes":return"bytes";case"int":return"int,整数";case"unit":return"unit,大于等于0的整数";default:return t}},submit:function(t){var e=this;this.$refs.sendTransation.validate((function(t){if(!t)return!1;e.send()}))},close:function(t){this.$emit("close",!1)},getLocalKeyStores:function(){var t=this;(0,_api.queryLocalKeyStores)().then((function(e){var n=e.data;200===e.status?(t.userList=n,t.userList.length?(t.transation.userName=t.userList[0].address,t.userId=t.userList[0].userName):t.isShowAddUserBtn=!0):t.$message({type:"error",message:t.$chooseLang(e.data.code)})})).catch((function(e){t.$message({type:"error",message:e.data||t.$t("text.systemError")})}))},changeId:function(t){var e=this;this.userList.forEach((function(n){t===n.address&&(e.userId=n.userName)}))},changeType:function(t){var e=this;this.funcList=[],t&&"function"===t?this.abiList.forEach((function(n,r){n.type===t&&(n.funcId=r,e.funcList.push(n))})):t&&"constructor"===t?this.abiList.forEach((function(n){n.type===t&&(e.form.pramasData=n.inputs,e.pramasObj=n,e.arrayLimit())})):this.abiList.forEach((function(t,n){"function"===t.type&&(t.funcId=n,e.funcList.push(t))})),this.funcList.length&&(this.transation.funcName=this.funcList[0].funcId),this.changeFunc()},formatAbi:function(){var t=this.abi;t&&(this.abiList=JSON.parse(t),this.changeType())},changeFunc:function(){var t=this;this.transation.funcValue=[],this.constant=!1,this.funcList.forEach((function(e){e.funcId===t.transation.funcName&&(t.form.pramasData=e.inputs,t.constant=e.constant,t.pramasObj=e,t.stateMutability=e.stateMutability,t.arrayLimit())})),this.funcList.sort((function(t,e){return(t.name+"").localeCompare(e.name+"")}))},send:function send(){var _this8=this,pattren=/^\s+|\s+$/g;"constructor"===this.transation.funcType&&(this.transation.funcName=this.data.contractName);var rules=[];for(var item in this.form.pramasData){var _data=this.form.pramasData[item].value;if(_data&&(0,_util.isJson)(_data))try{rules.push(JSON.parse(_data))}catch(t){console.log(t)}else"true"===_data||"false"===_data?rules.push(eval(_data.toLowerCase())):rules.push(_data)}var functionName="";this.funcList.forEach((function(t){t.funcId==_this8.transation.funcName&&(functionName=t.name)}));var data={groupId:localStorage.getItem("groupId"),user:this.constant||"view"===this.stateMutability||"pure"===this.stateMutability?"":this.transation.userName,contractName:this.data.contractName,contractPath:this.data.contractPath,version:this.isCNS&&this.cnsVersion?this.cnsVersion:"",funcName:functionName||"",funcParam:rules,contractAddress:this.isCNS?"":this.contractAddress,contractAbi:[this.pramasObj],useAes:!1,useCns:this.isCNS,cnsName:this.isCNS&&this.cnsName?this.cnsName:""};(0,_api.sendTransation)(data).then((function(t){_this8.buttonClick=!1;var e=t.data;if(200===t.status){_this8.close();var n=e,r={resData:n,input:{name:functionName,inputs:_this8.form.pramasData},data:_this8.pramasObj};_this8.$emit("success",(0,_assign2.default)({},r,{constant:_this8.constant})),_this8.constant||"view"===_this8.stateMutability||"pure"===_this8.stateMutability?_this8.$message({type:"success",message:_this8.$t("text.searchSucceeded")}):"0x0"==n.status?_this8.$message({type:"success",message:_this8.$t("text.txnSucceeded")}):_this8.$message({type:"error",message:_this8.$t("text.txnFailed")})}else _this8.$message({type:"error",message:_this8.$chooseLang(t.data.code)})})).catch((function(t){_this8.buttonClick=!1,_this8.$message({type:"error",message:_this8.$t("text.sendFailed")})}))},changeCns:function(t){t&&this.queryFindCnsInfo()},queryFindCnsInfo:function(){var t=this,e={groupId:localStorage.getItem("groupId"),contractAddress:this.data.contractAddress};(0,_api.findCnsInfo)(e).then((function(e){var n=e.data;200===e.status?n.data&&(t.cnsVersion=n.data.version,t.cnsName=n.data.cnsName):t.$message({type:"error",message:t.$chooseLang(e.data.code)})}))},createUser:function(){this.creatUserNameVisible=!0},createUserClose:function(t){this.userList=t,this.userList.length>0&&(this.isShowAddUserBtn=!1,this.transation.userName=this.userList[0].address,this.userId=this.userList[0].userName),this.creatUserNameVisible=!1}}}},I77X:function(t,e,n){"use strict";n.r(e);var r=n("Xl2i"),a=n.n(r);for(var o in r)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return r[t]}))}(o);e.default=a.a},"Ij+I":function(t,e,n){(t.exports=n("JPst")(!1)).push([t.i,"\n#app {\r\n height: 100%;\r\n margin: 0;\r\n padding: 0;\r\n -webkit-font-smoothing: antialiased;\r\n -moz-osx-font-smoothing: grayscale;\r\n color: #2c3e50;\r\n background-color: #20293c;\n}\nul,\r\nli {\r\n list-style: none;\n}\r\n",""])},Irr9:function(t,e,n){var r=n("qBtu");r.__esModule&&(r=r.default),"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals);(0,n("SZ7m").default)("2616b228",r,!1,{})},IzvG:function(t,e,n){"use strict";n("yRlC")},J2XI:function(t,e,n){"use strict";n.r(e);var r=n("O6bC"),a=n.n(r);for(var o in r)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return r[t]}))}(o);e.default=a.a},JBxo:function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return a}));var r=function(){var t=this,e=t._self._c;return e("div",{staticClass:"rivate-key-management-wrapper"},[e("v-contentHead",{attrs:{headTitle:t.$t("route.privateKeyManagementQ")}}),t._v(" "),e("div",{staticClass:"module-wrapper",staticStyle:{"padding-bottom":"20px"}},[e("div",{staticClass:"search-part"},[e("div",{staticStyle:{display:"flex"}},[e("el-button",{staticClass:"search-part-left-btn",attrs:{type:"primary"},on:{click:t.creatUserBtn}},[t._v(t._s(t.$t("table.addUser")))]),t._v(" "),e("el-button",{staticClass:"search-part-left-btn",attrs:{type:"primary"},on:{click:function(e){return t.$store.dispatch("switch_import_rivate_key_dialog")}}},[t._v(t._s(this.$t("table.importPrivateKey")))]),t._v(" "),e("el-tooltip",{staticClass:"item",attrs:{effect:"dark",content:t.$t("text.privateKeyManagementInfo"),placement:"top-start"}},[e("i",{staticClass:"el-icon-info",staticStyle:{color:"#fff","font-size":"18px",margin:"12px 0 0 15px"}})])],1)]),t._v(" "),e("div",{staticClass:"search-table"},[e("el-table",{directives:[{name:"loading",rawName:"v-loading",value:t.loading,expression:"loading"}],attrs:{data:t.privateKeyList,"tooltip-effect":"dark"}},t._l(t.privateKeyHead,(function(n){return e("el-table-column",{key:n.enName,attrs:{label:n.name,"show-overflow-tooltip":"",width:n.tdWidth,align:"center"},scopedSlots:t._u([{key:"default",fn:function(r){return["operate"!=n.enName?["address"===n.enName?e("span",[e("i",{staticClass:"wbs-icon-copy font-12 copy-public-key",attrs:{title:t.$t("title.copyAddress")},on:{click:function(e){return t.copyPubilcKey(r.row[n.enName])}}}),t._v("\n "+t._s(r.row[n.enName])+"\n ")]):"publicKey"===n.enName?e("span",[e("i",{staticClass:"wbs-icon-copy font-12 copy-public-key",attrs:{title:t.$t("title.copyPubliceKey")},on:{click:function(e){return t.copyPubilcKey(r.row[n.enName])}}}),t._v("\n "+t._s(r.row[n.enName])+"\n ")]):e("span",[t._v(t._s(r.row[n.enName]))])]:[e("el-button",{attrs:{type:"text",size:"mini"},on:{click:function(e){return t.exportFile(r.row)}}},[t._v(t._s(t.$t("table.export")))]),t._v(" "),e("el-button",{attrs:{type:"text",size:"mini"},on:{click:function(e){return t.deleteFile(r.row)}}},[t._v(t._s(t.$t("table.delete")))])]]}}],null,!0)})})),1)],1)]),t._v(" "),t.creatUserNameVisible?e("el-dialog",{staticClass:"dialog-wrapper",attrs:{visible:t.creatUserNameVisible,title:t.$t("dialog.addUsername"),width:"640px",center:""},on:{"update:visible":function(e){t.creatUserNameVisible=e},close:t.closeCallback}},[e("el-form",{ref:"userForm",attrs:{rules:t.rules,model:t.userForm}},[e("el-form-item",{attrs:{label:"",prop:"userName"}},[e("el-input",{attrs:{placeholder:t.$t("dialog.pleaseEnterUserName")},model:{value:t.userForm.userName,callback:function(e){t.$set(t.userForm,"userName",e)},expression:"userForm.userName"}})],1)],1),t._v(" "),e("div",{staticClass:"text-right",attrs:{slot:"footer"},slot:"footer"},[e("el-button",{on:{click:t.closeUserName}},[t._v(t._s(t.$t("table.cancel")))]),t._v(" "),e("el-button",{attrs:{type:"primary"},on:{click:function(e){return t.sureUserName("userForm")}}},[t._v(t._s(t.$t("table.confirm")))])],1)],1):t._e(),t._v(" "),t.$store.state.importRivateKey?e("el-dialog",{staticClass:"dialog-wrapper",attrs:{visible:t.$store.state.importRivateKey,title:t.$t("table.importPrivateKey"),width:"640px","append-to-body":!0,center:""},on:{"update:visible":function(e){return t.$set(t.$store.state,"importRivateKey",e)}}},[e("import-key",{ref:"importKey",on:{importPrivateKeySuccess:t.importPrivateKeySuccess}})],1):t._e(),t._v(" "),t.$store.state.exportRivateKey?e("el-dialog",{staticClass:"dialog-wrapper",attrs:{visible:t.$store.state.exportRivateKey,title:t.$t("table.export"),width:"640px","append-to-body":!0,center:""},on:{"update:visible":function(e){return t.$set(t.$store.state,"exportRivateKey",e)}}},[e("export-key",{attrs:{exportInfo:t.exportInfo},on:{exportPrivateKeySuccess:t.exportPrivateKeySuccess}})],1):t._e()],1)},a=[];r._withStripped=!0},JF3u:function(t,e,n){"use strict";n.r(e);var r=n("s5I3"),a=n("saWo");for(var o in a)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return a[t]}))}(o);var i=n("KHd+"),s=Object(i.a)(a.default,r.a,r.b,!1,null,null,null);e.default=s.exports},JIJP:function(t,e,n){"use strict";n.r(e);var r=n("0f2K"),a=n.n(r);for(var o in r)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return r[t]}))}(o);e.default=a.a},JIbE:function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return a}));var r=function(){var t=this,e=t._self._c;return e("div",{directives:[{name:"loading",rawName:"v-loading",value:t.loading,expression:"loading"}],staticClass:"contract-content"},[e("v-content-head",{attrs:{headTitle:t.urlQuery.storeName,icon:!0},on:{changeGroup:t.changeGroup}}),t._v(" "),e("div",{staticClass:"code-menu-wrapper",style:{width:t.menuWidth+"px"}},[e("v-menu",{directives:[{name:"show",rawName:"v-show",value:t.menuHide,expression:"menuHide"}],ref:"menu",attrs:{urlQuery:t.urlQuery},on:{change:function(e){return t.changeCode(e)}}}),t._v(" "),e("div",{staticClass:"move",on:{mousedown:function(e){return t.dragDetailWeight(e)}}})],1),t._v(" "),e("div",{class:[t.menuHide?"code-detail-reset-wrapper":"code-detail-wrapper"],style:{width:t.contentWidth}},[e("v-code",{attrs:{changeStyle:t.changeWidth,data:t.contractData,show:t.showCode,urlQuery:t.urlQuery}})],1)],1)},a=[];r._withStripped=!0},Jlgt:function(t,e,n){var r=n("4iky");r.__esModule&&(r=r.default),"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals);(0,n("SZ7m").default)("63d0fd14",r,!1,{})},JuEE:function(t,e,n){"use strict";n.r(e);var r=n("9x70"),a=n("mxnx");for(var o in a)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return a[t]}))}(o);n("FHsS");var i=n("KHd+"),s=Object(i.a)(a.default,r.a,r.b,!1,null,"c4b2eb74",null);e.default=s.exports},"KHd+":function(t,e,n){"use strict";function r(t,e,n,r,a,o,i,s){var c,l="function"==typeof t?t.options:t;if(e&&(l.render=e,l.staticRenderFns=n,l._compiled=!0),r&&(l.functional=!0),o&&(l._scopeId="data-v-"+o),i?(c=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),a&&a.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(i)},l._ssrRegister=c):a&&(c=s?function(){a.call(this,(l.functional?this.parent:this).$root.$options.shadowRoot)}:a),c)if(l.functional){l._injectStyles=c;var u=l.render;l.render=function(t,e){return c.call(e),u(t,e)}}else{var d=l.beforeCreate;l.beforeCreate=d?[].concat(d,c):[c]}return{exports:t,options:l}}n.d(e,"a",(function(){return r}))},KIAU:function(t,e,n){"use strict";n.r(e);var r=n("ozA3"),a=n("wrC2");for(var o in a)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return a[t]}))}(o);n("Aerp");var i=n("KHd+"),s=Object(i.a)(a.default,r.a,r.b,!1,null,"5b5782cb",null);e.default=s.exports},Ke48:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n("mHBk"),a=s(n("qse9")),o=s(n("7j+0")),i=s(n("9e9m"));function s(t){return t&&t.__esModule?t:{default:t}}e.default={name:"blockEvent",components:{"v-content-head":a.default,blockEventDialog:o.default},props:{},data:function(){return{loading:!1,creatBlockEventVisible:!1,checkBlockEventVisible:!1,currentPage:1,pageSize:10,total:0,eventList:[],group:localStorage.getItem("groupId")||null,eventDetail:[]}},computed:{eventHead:function(){return[{enName:"appId",name:this.$t("table.appId")},{enName:"groupId",name:this.$t("table.groupId")},{enName:"exchangeName",name:this.$t("table.exchangeName")},{enName:"routingKey",name:this.$t("table.routingKey")},{enName:"queueName",name:this.$t("table.queueName")}]}},watch:{},created:function(){},beforeDestroy:function(){i.default.$off("changeGroup")},mounted:function(){var t=this;i.default.$on("changeGroup",(function(e){t.changeGroup(e)})),this.group&&this.queryBlockEventList()},methods:{changeGroup:function(t){this.group=t,this.queryBlockEventList()},success:function(){this.queryBlockEventList()},close:function(){this.creatBlockEventVisible=!1},queryBlockEventList:function(){var t=this;this.loading=!0;var e={groupId:this.group,pageNumber:this.currentPage,pageSize:this.pageSize};(0,r.blockEventList)(e,{}).then((function(e){t.loading=!1,0===e.data.code?(t.eventList=e.data.data,t.total=e.data.totalCount):t.$message({type:"error",message:t.$chooseLang(e.data.code)})})).catch((function(e){t.$message({type:"error",message:e.data||t.$t("text.systemError")})}))},handleSizeChange:function(t){this.pageSize=t,this.currentPage=1,this.queryBlockEventList()},handleCurrentChange:function(t){this.currentPage=t,this.queryBlockEventList()},addBlockEvent:function(){this.creatBlockEventVisible=!0},checkEvent:function(t){var e=this,n={groupId:this.group,appId:t.appId};(0,r.checkBlockEvent)(n,{}).then((function(t){0===t.data.code?(e.checkBlockEventVisible=!0,e.eventDetail=t.data.data):e.$message({type:"error",message:e.$chooseLang(t.data.code)})})).catch((function(t){e.$message({type:"error",message:t.data||e.$t("text.systemError")})}))},deleteEvent:function(t){var e=this,n={id:t.id,appId:t.appId,groupId:t.groupId,exchangeName:t.exchangeName,queueName:t.queueName};(0,r.deleteBlockEvent)(n).then((function(t){0===t.data.code?(e.queryBlockEventList(),e.$message({type:"success",message:e.$t("text.deleteUserSuccessed")})):e.$message({type:"error",message:e.$chooseLang(t.data.code)})})).catch((function(t){e.$message({type:"error",message:t.data||e.$t("text.systemError")})}))}}}},KpZx:function(t,e,n){"use strict";n.r(e);var r=n("36aX"),a=n("QSyN");for(var o in a)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return a[t]}))}(o);n("2NEi");var i=n("KHd+"),s=Object(i.a)(a.default,r.a,r.b,!1,null,"b2f3be20",null);e.default=s.exports},Kq0C:function(t,e,n){"use strict";n("Am9O")},L2JU:function(t,e,n){"use strict";n.r(e),function(t){n.d(e,"Store",(function(){return d})),n.d(e,"createLogger",(function(){return I})),n.d(e,"createNamespacedHelpers",(function(){return k})),n.d(e,"install",(function(){return y})),n.d(e,"mapActions",(function(){return $})),n.d(e,"mapGetters",(function(){return w})),n.d(e,"mapMutations",(function(){return x})),n.d(e,"mapState",(function(){return _}));var r=("undefined"!=typeof window?window:void 0!==t?t:{}).__VUE_DEVTOOLS_GLOBAL_HOOK__;function a(t,e){if(void 0===e&&(e=[]),null===t||"object"!=typeof t)return t;var n,r=(n=function(e){return e.original===t},e.filter(n)[0]);if(r)return r.copy;var o=Array.isArray(t)?[]:{};return e.push({original:t,copy:o}),Object.keys(t).forEach((function(n){o[n]=a(t[n],e)})),o}function o(t,e){Object.keys(t).forEach((function(n){return e(t[n],n)}))}function i(t){return null!==t&&"object"==typeof t}var s=function(t,e){this.runtime=e,this._children=Object.create(null),this._rawModule=t;var n=t.state;this.state=("function"==typeof n?n():n)||{}},c={namespaced:{configurable:!0}};c.namespaced.get=function(){return!!this._rawModule.namespaced},s.prototype.addChild=function(t,e){this._children[t]=e},s.prototype.removeChild=function(t){delete this._children[t]},s.prototype.getChild=function(t){return this._children[t]},s.prototype.hasChild=function(t){return t in this._children},s.prototype.update=function(t){this._rawModule.namespaced=t.namespaced,t.actions&&(this._rawModule.actions=t.actions),t.mutations&&(this._rawModule.mutations=t.mutations),t.getters&&(this._rawModule.getters=t.getters)},s.prototype.forEachChild=function(t){o(this._children,t)},s.prototype.forEachGetter=function(t){this._rawModule.getters&&o(this._rawModule.getters,t)},s.prototype.forEachAction=function(t){this._rawModule.actions&&o(this._rawModule.actions,t)},s.prototype.forEachMutation=function(t){this._rawModule.mutations&&o(this._rawModule.mutations,t)},Object.defineProperties(s.prototype,c);var l=function(t){this.register([],t,!1)};l.prototype.get=function(t){return t.reduce((function(t,e){return t.getChild(e)}),this.root)},l.prototype.getNamespace=function(t){var e=this.root;return t.reduce((function(t,n){return t+((e=e.getChild(n)).namespaced?n+"/":"")}),"")},l.prototype.update=function(t){!function t(e,n,r){0;if(n.update(r),r.modules)for(var a in r.modules){if(!n.getChild(a))return void 0;t(e.concat(a),n.getChild(a),r.modules[a])}}([],this.root,t)},l.prototype.register=function(t,e,n){var r=this;void 0===n&&(n=!0);var a=new s(e,n);0===t.length?this.root=a:this.get(t.slice(0,-1)).addChild(t[t.length-1],a);e.modules&&o(e.modules,(function(e,a){r.register(t.concat(a),e,n)}))},l.prototype.unregister=function(t){var e=this.get(t.slice(0,-1)),n=t[t.length-1],r=e.getChild(n);r&&r.runtime&&e.removeChild(n)},l.prototype.isRegistered=function(t){var e=this.get(t.slice(0,-1)),n=t[t.length-1];return!!e&&e.hasChild(n)};var u;var d=function(t){var e=this;void 0===t&&(t={}),!u&&"undefined"!=typeof window&&window.Vue&&y(window.Vue);var n=t.plugins;void 0===n&&(n=[]);var a=t.strict;void 0===a&&(a=!1),this._committing=!1,this._actions=Object.create(null),this._actionSubscribers=[],this._mutations=Object.create(null),this._wrappedGetters=Object.create(null),this._modules=new l(t),this._modulesNamespaceMap=Object.create(null),this._subscribers=[],this._watcherVM=new u,this._makeLocalGettersCache=Object.create(null);var o=this,i=this.dispatch,s=this.commit;this.dispatch=function(t,e){return i.call(o,t,e)},this.commit=function(t,e,n){return s.call(o,t,e,n)},this.strict=a;var c=this._modules.root.state;v(this,c,[],this._modules.root),m(this,c),n.forEach((function(t){return t(e)})),(void 0!==t.devtools?t.devtools:u.config.devtools)&&function(t){r&&(t._devtoolHook=r,r.emit("vuex:init",t),r.on("vuex:travel-to-state",(function(e){t.replaceState(e)})),t.subscribe((function(t,e){r.emit("vuex:mutation",t,e)}),{prepend:!0}),t.subscribeAction((function(t,e){r.emit("vuex:action",t,e)}),{prepend:!0}))}(this)},f={state:{configurable:!0}};function p(t,e,n){return e.indexOf(t)<0&&(n&&n.prepend?e.unshift(t):e.push(t)),function(){var n=e.indexOf(t);n>-1&&e.splice(n,1)}}function h(t,e){t._actions=Object.create(null),t._mutations=Object.create(null),t._wrappedGetters=Object.create(null),t._modulesNamespaceMap=Object.create(null);var n=t.state;v(t,n,[],t._modules.root,!0),m(t,n,e)}function m(t,e,n){var r=t._vm;t.getters={},t._makeLocalGettersCache=Object.create(null);var a=t._wrappedGetters,i={};o(a,(function(e,n){i[n]=function(t,e){return function(){return t(e)}}(e,t),Object.defineProperty(t.getters,n,{get:function(){return t._vm[n]},enumerable:!0})}));var s=u.config.silent;u.config.silent=!0,t._vm=new u({data:{$$state:e},computed:i}),u.config.silent=s,t.strict&&function(t){t._vm.$watch((function(){return this._data.$$state}),(function(){0}),{deep:!0,sync:!0})}(t),r&&(n&&t._withCommit((function(){r._data.$$state=null})),u.nextTick((function(){return r.$destroy()})))}function v(t,e,n,r,a){var o=!n.length,i=t._modules.getNamespace(n);if(r.namespaced&&(t._modulesNamespaceMap[i],t._modulesNamespaceMap[i]=r),!o&&!a){var s=g(e,n.slice(0,-1)),c=n[n.length-1];t._withCommit((function(){u.set(s,c,r.state)}))}var l=r.context=function(t,e,n){var r=""===e,a={dispatch:r?t.dispatch:function(n,r,a){var o=b(n,r,a),i=o.payload,s=o.options,c=o.type;return s&&s.root||(c=e+c),t.dispatch(c,i)},commit:r?t.commit:function(n,r,a){var o=b(n,r,a),i=o.payload,s=o.options,c=o.type;s&&s.root||(c=e+c),t.commit(c,i,s)}};return Object.defineProperties(a,{getters:{get:r?function(){return t.getters}:function(){return function(t,e){if(!t._makeLocalGettersCache[e]){var n={},r=e.length;Object.keys(t.getters).forEach((function(a){if(a.slice(0,r)===e){var o=a.slice(r);Object.defineProperty(n,o,{get:function(){return t.getters[a]},enumerable:!0})}})),t._makeLocalGettersCache[e]=n}return t._makeLocalGettersCache[e]}(t,e)}},state:{get:function(){return g(t.state,n)}}}),a}(t,i,n);r.forEachMutation((function(e,n){!function(t,e,n,r){(t._mutations[e]||(t._mutations[e]=[])).push((function(e){n.call(t,r.state,e)}))}(t,i+n,e,l)})),r.forEachAction((function(e,n){var r=e.root?n:i+n,a=e.handler||e;!function(t,e,n,r){(t._actions[e]||(t._actions[e]=[])).push((function(e){var a,o=n.call(t,{dispatch:r.dispatch,commit:r.commit,getters:r.getters,state:r.state,rootGetters:t.getters,rootState:t.state},e);return(a=o)&&"function"==typeof a.then||(o=Promise.resolve(o)),t._devtoolHook?o.catch((function(e){throw t._devtoolHook.emit("vuex:error",e),e})):o}))}(t,r,a,l)})),r.forEachGetter((function(e,n){!function(t,e,n,r){if(t._wrappedGetters[e])return void 0;t._wrappedGetters[e]=function(t){return n(r.state,r.getters,t.state,t.getters)}}(t,i+n,e,l)})),r.forEachChild((function(r,o){v(t,e,n.concat(o),r,a)}))}function g(t,e){return e.reduce((function(t,e){return t[e]}),t)}function b(t,e,n){return i(t)&&t.type&&(n=e,e=t,t=t.type),{type:t,payload:e,options:n}}function y(t){u&&t===u|| +/*! + * vuex v3.6.2 + * (c) 2021 Evan You + * @license MIT + */ +function(t){if(Number(t.version.split(".")[0])>=2)t.mixin({beforeCreate:n});else{var e=t.prototype._init;t.prototype._init=function(t){void 0===t&&(t={}),t.init=t.init?[n].concat(t.init):n,e.call(this,t)}}function n(){var t=this.$options;t.store?this.$store="function"==typeof t.store?t.store():t.store:t.parent&&t.parent.$store&&(this.$store=t.parent.$store)}}(u=t)}f.state.get=function(){return this._vm._data.$$state},f.state.set=function(t){0},d.prototype.commit=function(t,e,n){var r=this,a=b(t,e,n),o=a.type,i=a.payload,s=(a.options,{type:o,payload:i}),c=this._mutations[o];c&&(this._withCommit((function(){c.forEach((function(t){t(i)}))})),this._subscribers.slice().forEach((function(t){return t(s,r.state)})))},d.prototype.dispatch=function(t,e){var n=this,r=b(t,e),a=r.type,o=r.payload,i={type:a,payload:o},s=this._actions[a];if(s){try{this._actionSubscribers.slice().filter((function(t){return t.before})).forEach((function(t){return t.before(i,n.state)}))}catch(t){0}var c=s.length>1?Promise.all(s.map((function(t){return t(o)}))):s[0](o);return new Promise((function(t,e){c.then((function(e){try{n._actionSubscribers.filter((function(t){return t.after})).forEach((function(t){return t.after(i,n.state)}))}catch(t){0}t(e)}),(function(t){try{n._actionSubscribers.filter((function(t){return t.error})).forEach((function(e){return e.error(i,n.state,t)}))}catch(t){0}e(t)}))}))}},d.prototype.subscribe=function(t,e){return p(t,this._subscribers,e)},d.prototype.subscribeAction=function(t,e){return p("function"==typeof t?{before:t}:t,this._actionSubscribers,e)},d.prototype.watch=function(t,e,n){var r=this;return this._watcherVM.$watch((function(){return t(r.state,r.getters)}),e,n)},d.prototype.replaceState=function(t){var e=this;this._withCommit((function(){e._vm._data.$$state=t}))},d.prototype.registerModule=function(t,e,n){void 0===n&&(n={}),"string"==typeof t&&(t=[t]),this._modules.register(t,e),v(this,this.state,t,this._modules.get(t),n.preserveState),m(this,this.state)},d.prototype.unregisterModule=function(t){var e=this;"string"==typeof t&&(t=[t]),this._modules.unregister(t),this._withCommit((function(){var n=g(e.state,t.slice(0,-1));u.delete(n,t[t.length-1])})),h(this)},d.prototype.hasModule=function(t){return"string"==typeof t&&(t=[t]),this._modules.isRegistered(t)},d.prototype.hotUpdate=function(t){this._modules.update(t),h(this,!0)},d.prototype._withCommit=function(t){var e=this._committing;this._committing=!0,t(),this._committing=e},Object.defineProperties(d.prototype,f);var _=S((function(t,e){var n={};return C(e).forEach((function(e){var r=e.key,a=e.val;n[r]=function(){var e=this.$store.state,n=this.$store.getters;if(t){var r=N(this.$store,"mapState",t);if(!r)return;e=r.context.state,n=r.context.getters}return"function"==typeof a?a.call(this,e,n):e[a]},n[r].vuex=!0})),n})),x=S((function(t,e){var n={};return C(e).forEach((function(e){var r=e.key,a=e.val;n[r]=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];var r=this.$store.commit;if(t){var o=N(this.$store,"mapMutations",t);if(!o)return;r=o.context.commit}return"function"==typeof a?a.apply(this,[r].concat(e)):r.apply(this.$store,[a].concat(e))}})),n})),w=S((function(t,e){var n={};return C(e).forEach((function(e){var r=e.key,a=e.val;a=t+a,n[r]=function(){if(!t||N(this.$store,"mapGetters",t))return this.$store.getters[a]},n[r].vuex=!0})),n})),$=S((function(t,e){var n={};return C(e).forEach((function(e){var r=e.key,a=e.val;n[r]=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];var r=this.$store.dispatch;if(t){var o=N(this.$store,"mapActions",t);if(!o)return;r=o.context.dispatch}return"function"==typeof a?a.apply(this,[r].concat(e)):r.apply(this.$store,[a].concat(e))}})),n})),k=function(t){return{mapState:_.bind(null,t),mapGetters:w.bind(null,t),mapMutations:x.bind(null,t),mapActions:$.bind(null,t)}};function C(t){return function(t){return Array.isArray(t)||i(t)}(t)?Array.isArray(t)?t.map((function(t){return{key:t,val:t}})):Object.keys(t).map((function(e){return{key:e,val:t[e]}})):[]}function S(t){return function(e,n){return"string"!=typeof e?(n=e,e=""):"/"!==e.charAt(e.length-1)&&(e+="/"),t(e,n)}}function N(t,e,n){return t._modulesNamespaceMap[n]}function I(t){void 0===t&&(t={});var e=t.collapsed;void 0===e&&(e=!0);var n=t.filter;void 0===n&&(n=function(t,e,n){return!0});var r=t.transformer;void 0===r&&(r=function(t){return t});var o=t.mutationTransformer;void 0===o&&(o=function(t){return t});var i=t.actionFilter;void 0===i&&(i=function(t,e){return!0});var s=t.actionTransformer;void 0===s&&(s=function(t){return t});var c=t.logMutations;void 0===c&&(c=!0);var l=t.logActions;void 0===l&&(l=!0);var u=t.logger;return void 0===u&&(u=console),function(t){var d=a(t.state);void 0!==u&&(c&&t.subscribe((function(t,i){var s=a(i);if(n(t,d,s)){var c=L(),l=o(t),f="mutation "+t.type+c;E(u,f,e),u.log("%c prev state","color: #9E9E9E; font-weight: bold",r(d)),u.log("%c mutation","color: #03A9F4; font-weight: bold",l),u.log("%c next state","color: #4CAF50; font-weight: bold",r(s)),A(u)}d=s})),l&&t.subscribeAction((function(t,n){if(i(t,n)){var r=L(),a=s(t),o="action "+t.type+r;E(u,o,e),u.log("%c action","color: #03A9F4; font-weight: bold",a),A(u)}})))}}function E(t,e,n){var r=n?t.groupCollapsed:t.group;try{r.call(t,e)}catch(n){t.log(e)}}function A(t){try{t.groupEnd()}catch(e){t.log("—— log end ——")}}function L(){var t=new Date;return" @ "+F(t.getHours(),2)+":"+F(t.getMinutes(),2)+":"+F(t.getSeconds(),2)+"."+F(t.getMilliseconds(),3)}function F(t,e){return n="0",r=e-t.toString().length,new Array(r+1).join(n)+t;var n,r}var O={Store:d,install:y,version:"3.6.2",mapState:_,mapMutations:x,mapGetters:w,mapActions:$,createNamespacedHelpers:k,createLogger:I};e.default=O}.call(this,n("yLpj"))},L7P6:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=s(n("gDS+")),a=n("mHBk"),o=n("DgvE"),i=s(n("bWg5"));function s(t){return t&&t.__esModule?t:{default:t}}e.default={name:"importAbi",components:{},props:{},data:function(){return{abiContent:"",abiForm:{contractAbi:null,contractAddress:"",contractName:""},loading:!1}},computed:{rules:function(){var t=this;return{contractAbi:[{required:!0,message:this.$t("rule.contractAbi"),trigger:"blur"},{validator:function(e,n,r){""===n?r(new Error(t.$t("rule.contractAbi"))):(0,o.isJson)(n)?r():r(new Error("Invalid input: Unexpected end of JSON input"))},trigger:"blur"}],contractAddress:[{required:!0,message:this.$t("rule.contractAddress"),trigger:"blur"}],contractName:[{required:!0,message:this.$t("rule.contractName"),trigger:"blur"},{required:!0,min:1,max:100,message:this.$t("rule.textLong1_100"),trigger:"blur"}]}}},watch:{},created:function(){},mounted:function(){},methods:{submit:function(t){var e=this;this.$refs[t].validate((function(t){if(!t)return!1;e.queryImportAbi()}))},queryImportAbi:function(){var t=this;this.loading=!0;var e={contractName:this.abiForm.contractName,contractAddress:this.abiForm.contractAddress,contractAbi:JSON.parse(this.abiForm.contractAbi),groupId:localStorage.getItem("groupId")};(0,a.importAbi)(e).then((function(e){t.loading=!1,0===e.data.code?(t.$emit("importSuccess"),t.$message({type:"success",message:t.$t("text.importSuccessed")}),t.setMethod()):t.$message({type:"error",message:t.$chooseLang(e.data.code)})})).catch((function(e){t.loading=!1,t.$message({type:"error",message:err.data||t.$t("text.systemError")})}))},setMethod:function(){var t=i.default,e=[];this.abiForm.contractAbi&&(JSON.parse(this.abiForm.contractAbi).forEach((function(n){if(n.name&&"function"==n.type){var a={},o=void 0;o=1==localStorage.getItem("encryptionId")?t.smEncodeFunctionSignature({name:n.name,type:n.type,inputs:n.inputs}):t.encodeFunctionSignature({name:n.name,type:n.type,inputs:n.inputs}),a.methodId=o.substr(0,10),a.abiInfo=(0,r.default)(n),a.methodType=n.type,e.push(a)}else if(n.name&&"event"==n.type){var i={},s=void 0;s=1==localStorage.getItem("encryptionId")?t.smEncodeEventSignature({name:n.name,type:n.type,inputs:n.inputs}):t.encodeEventSignature({name:n.name,type:n.type,inputs:n.inputs}),i.methodId=s.substr(0,10),i.abiInfo=(0,r.default)(n),i.methodType=n.type,e.push(i)}})),e.length&&this.addAbiMethod(e))},addAbiMethod:function(t){var e=this,n={groupId:localStorage.getItem("groupId"),methodHandleList:t};(0,a.addFunctionAbi)(n).then((function(t){0===t.data.code?console.log("method 保存成功!"):e.$message({message:e.$chooseLang(t.data.code),type:"error"})})).catch((function(t){message(constant.ERROR,"error")}))},close:function(){this.$emit("closeImport")}}}},LUH5:function(t,e,n){(t.exports=n("JPst")(!1)).push([t.i,"\n.send-wrapper[data-v-0db1b723] {\n}\n.send-item[data-v-0db1b723] {\r\n line-height: 30px;\r\n margin-bottom: 24px;\n}\n.send-btn[data-v-0db1b723] .el-button {\r\n padding: 9px 16px;\n}\n.java-class[data-v-0db1b723] {\r\n margin-top: 32px;\n}\n.func-color[data-v-0db1b723] {\r\n color: #409eff;\n}\n.func-name .el-select-dropdown__list .el-select-dropdown__item.selected[data-v-0db1b723] {\r\n color: #606266;\r\n font-weight: 700;\n}\n.user-explain[data-v-0db1b723] {\r\n margin-left: 4px;\n}\n.user-explain > span[data-v-0db1b723] {\r\n display: inline-block;\r\n max-width: 45px;\r\n height: 25px;\r\n line-height: 25px;\r\n position: relative;\r\n top: 9px;\n}\n.text-td[data-v-0db1b723] {\r\n white-space: nowrap;\n}\n.el-input .el-input--medium[data-v-0db1b723] {\n}\n.send-body[data-v-0db1b723] {\r\n overflow-y: scroll;\r\n max-height: 400px;\r\n min-height: 200px;\n}\n.send-item[data-v-0db1b723] .el-form-item__error {\r\n left: 180px !important;\n}\n.send-item[data-v-0db1b723] .el-input-group__prepend {\r\n width: 60px;\n}\n.send-item[data-v-0db1b723] .el-form-item {\r\n line-height: 30px;\r\n margin-bottom: 24px;\n}\n.send-item[data-v-0db1b723] {\r\n line-height: 30px;\r\n margin-bottom: 24px;\n}\n.send-item-title[data-v-0db1b723] {\r\n display: inline-block;\r\n width: 60px;\r\n text-align: right;\n}\n.send-item-params[data-v-0db1b723] {\r\n display: inline-block;\n}\n.send-item[data-v-0db1b723] .el-input__inner {\r\n height: 32px;\r\n line-height: 32px;\n}\r\n",""])},LkTR:function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return a}));var r=function(){return(0,this._self._c)("div")},a=[];r._withStripped=!0},M4yR:function(t,e,n){var r=n("OJT3");r.__esModule&&(r=r.default),"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals);(0,n("SZ7m").default)("9d3935e4",r,!1,{})},M54m:function(t,e,n){"use strict";n.r(e);var r=n("6jhe"),a=n("/zdE");for(var o in a)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return a[t]}))}(o);n("Yf/9");var i=n("KHd+"),s=Object(i.a)(a.default,r.a,r.b,!1,null,"24f60430",null);e.default=s.exports},MOXn:function(t,e,n){var r=n("YoL1");r.__esModule&&(r=r.default),"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals);(0,n("SZ7m").default)("47f4a033",r,!1,{})},MbGR:function(t,e,n){(t.exports=n("JPst")(!1)).push([t.i,"\n.demo-ruleForm[data-v-6374a768] .el-form-item__label {\r\n padding: 0 8px 0 0;\n}\r\n",""])},Mn8C:function(t,e,n){"use strict";n("NZVB")},"Mu+E":function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return a}));var r=function(){var t=this,e=t._self._c;return e("div",[e("el-dialog",{staticClass:"dialog-wrapper",attrs:{title:t.$t("title.selectDirectory"),visible:t.dialogVisible,"before-close":t.close,width:"433px",center:!0},on:{"update:visible":function(e){t.dialogVisible=e}}},[e("div",[e("el-form",{ref:"folderFrom",staticClass:"demo-ruleForm",attrs:{model:t.folderFrom,rules:t.rules,"label-width":"100px"}},[e("el-form-item",{staticStyle:{width:"330px"},attrs:{label:t.$t("dialog.folderName"),prop:"folderName"}},[e("el-select",{attrs:{placeholder:t.$t("placeholder.selected")},model:{value:t.folderFrom.folderName,callback:function(e){t.$set(t.folderFrom,"folderName",e)},expression:"folderFrom.folderName"}},t._l(t.options,(function(t){return e("el-option",{key:t.contractPath,attrs:{label:t.contractPath,value:t.contractPath}})})),1)],1)],1)],1),t._v(" "),e("div",{staticClass:"dialog-footer",attrs:{slot:"footer"},slot:"footer"},[e("el-button",{on:{click:t.close}},[t._v(t._s(t.$t("dialog.cancel")))]),t._v(" "),e("el-button",{attrs:{type:"primary"},on:{click:function(e){return t.submit("folderFrom")}}},[t._v(t._s(t.$t("dialog.confirm")))])],1)])],1)},a=[];r._withStripped=!0},N2p7:function(t,e,n){var r=n("kbWe");r.__esModule&&(r=r.default),"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals);(0,n("SZ7m").default)("7c1d1c0a",r,!1,{})},NATH:function(t,e,n){"use strict";n.r(e);var r=n("jcvq"),a=n.n(r);for(var o in r)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return r[t]}))}(o);e.default=a.a},NJ4U:function(t,e,n){t.exports=function(t,e){return a={},n.m=r=[function(t,e,n){"use strict";function r(t,e,n,r,a,o,i,s){var c,l,u="function"==typeof t?t.options:t;return e&&(u.render=e,u.staticRenderFns=n,u._compiled=!0),r&&(u.functional=!0),o&&(u._scopeId="data-v-"+o),i?(c=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),a&&a.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(i)},u._ssrRegister=c):a&&(c=s?function(){a.call(this,(u.functional?this.parent:this).$root.$options.shadowRoot)}:a),c&&(u.functional?(u._injectStyles=c,l=u.render,u.render=function(t,e){return c.call(e),l(t,e)}):(s=u.beforeCreate,u.beforeCreate=s?[].concat(s,c):[c])),{exports:t,options:u}}n.d(e,"a",(function(){return r}))},function(t,e,n){"use strict";n.r(e);var r,a=n(2),o=n.n(a);for(r in a)"default"!==r&&function(t){n.d(e,t,(function(){return a[t]}))}(r);e.default=o.a},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),i(n(29));var r=i(n(21)),a=i(n(41)),o=n(42);function i(t){return t&&t.__esModule?t:{default:t}}e.default={name:"JsonViewer",components:{JsonBox:r.default},props:{value:{type:[Object,Array,String,Number,Boolean,Function],required:!0},expanded:{type:Boolean,default:!1},expandDepth:{type:Number,default:1},copyable:{type:[Boolean,Object],default:!1},sort:{type:Boolean,default:!1},boxed:{type:Boolean,default:!1},theme:{type:String,default:"jv-light"},timeformat:{type:Function,default:function(t){return t.toLocaleString()}},previewMode:{type:Boolean,default:!1},showArrayIndex:{type:Boolean,default:!0},showDoubleQuotes:{type:Boolean,default:!1}},provide:function(){return{expandDepth:this.expandDepth,timeformat:this.timeformat,onKeyclick:this.onKeyclick}},data:function(){return{copied:!1,expandableCode:!1,expandCode:this.expanded}},computed:{jvClass:function(){return"jv-container "+this.theme+(this.boxed?" boxed":"")},copyText:function(){var t=this.copyable;return{copyText:t.copyText||"copy",copiedText:t.copiedText||"copied!",timeout:t.timeout||2e3,align:t.align}}},watch:{value:function(){this.onResized()}},mounted:function(){var t=this;this.debounceResized=(0,o.debounce)(this.debResized.bind(this),200),this.boxed&&this.$refs.jsonBox&&(this.onResized(),this.$refs.jsonBox.$el.addEventListener("resized",this.onResized,!0)),this.copyable&&new a.default(this.$refs.clip,{container:this.$refs.viewer,text:function(){return JSON.stringify(t.value,null,2)}}).on("success",(function(e){t.onCopied(e)}))},methods:{onResized:function(){this.debounceResized()},debResized:function(){var t=this;this.$nextTick((function(){t.$refs.jsonBox&&(250<=t.$refs.jsonBox.$el.clientHeight?t.expandableCode=!0:t.expandableCode=!1)}))},onCopied:function(t){var e=this;this.copied||(this.copied=!0,setTimeout((function(){e.copied=!1}),this.copyText.timeout),this.$emit("copied",t))},toggleExpandCode:function(){this.expandCode=!this.expandCode},onKeyclick:function(t){this.$emit("keyclick",t)}}}},function(t,e,n){"use strict";n.r(e);var r,a=n(4),o=n.n(a);for(r in a)"default"!==r&&function(t){n.d(e,t,(function(){return a[t]}))}(r);e.default=o.a},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},a=f(n(30)),o=f(n(31)),i=f(n(32)),s=f(n(33)),c=f(n(34)),l=f(n(35)),u=f(n(36)),d=f(n(37));function f(t){return t&&t.__esModule?t:{default:t}}e.default={name:"JsonBox",inject:["expandDepth","onKeyclick"],props:{value:{type:[Object,Array,String,Number,Boolean,Function,Date],default:null},keyName:{type:String,default:""},sort:Boolean,depth:{type:Number,default:0},previewMode:Boolean,forceExpand:Boolean,showArrayIndex:Boolean,showDoubleQuotes:Boolean,path:{type:String,default:"$"}},data:function(){return{expand:!0,forceExpandMe:this.forceExpand}},mounted:function(){this.expand=this.previewMode||!(this.depth>=this.expandDepth)||this.forceExpandMe},methods:{toggle:function(){this.expand=!this.expand,this.dispatchEvent()},toggleAll:function(){this.expand=!this.expand,this.forceExpandMe=this.expand,this.dispatchEvent()},dispatchEvent:function(){try{this.$el.dispatchEvent(new Event("resized"))}catch(e){var t=document.createEvent("Event");t.initEvent("resized",!0,!1),this.$el.dispatchEvent(t)}},getPath:function(){for(var t=[this.keyName],e=this.$parent;e.depth;)e.$el.classList.contains("jv-node")&&t.push(e.keyName),e=e.$parent;return t.reverse()}},render:function(t){var e=this,n=[],f=void 0;null===this.value||void 0===this.value?f=o.default:Array.isArray(this.value)?f=l.default:"[object Date]"===Object.prototype.toString.call(this.value)?f=d.default:"object"===r(this.value)?f=c.default:"number"==typeof this.value?f=i.default:"string"==typeof this.value?f=a.default:"boolean"==typeof this.value?f=s.default:"function"==typeof this.value&&(f=u.default);var p=this.keyName&&this.value&&(Array.isArray(this.value)||"object"===r(this.value)&&"[object Date]"!==Object.prototype.toString.call(this.value));return!this.previewMode&&p&&n.push(t("span",{class:{"jv-toggle":!0,open:!!this.expand},on:{click:function(t){t.altKey?e.toggleAll():e.toggle()}}})),this.keyName&&n.push(t("span",{class:{"jv-key":!0},domProps:{innerText:this.showDoubleQuotes?'"'+this.keyName+'":':this.keyName+":"},on:{click:function(){e.onKeyclick(e.path)}}})),n.push(t(f,{class:{"jv-push":!0},props:{jsonValue:this.value,keyName:this.keyName,sort:this.sort,depth:this.depth,expand:this.expand,previewMode:this.previewMode,forceExpand:this.forceExpandMe,showArrayIndex:this.showArrayIndex,showDoubleQuotes:this.showDoubleQuotes,path:this.path},on:{"update:expand":function(t){e.expand=t},"update:expandAll":function(t){e.expand=t,e.forceExpandMe=e.expand}}})),t("div",{class:{"jv-node":!0,"jv-key-node":Boolean(this.keyName)&&!p,toggle:!this.previewMode&&p}},n)}}},function(t,e,n){"use strict";n.r(e);var r,a=n(6),o=n.n(a);for(r in a)"default"!==r&&function(t){n.d(e,t,(function(){return a[t]}))}(r);e.default=o.a},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=/^\w+:\/\//;e.default={name:"JsonString",props:{jsonValue:{type:String,required:!0}},data:function(){return{expand:!0,canExtend:!1}},mounted:function(){this.$refs.itemRef.offsetHeight>this.$refs.holderRef.offsetHeight&&(this.canExtend=!0)},methods:{toggle:function(){this.expand=!this.expand}},render:function(t){var e=this.jsonValue,n=r.test(e),a=void 0;return this.expand?(a={class:{"jv-item":!0,"jv-string":!0},ref:"itemRef"}).domProps=n?{innerHTML:'"'+(e='
      '+e+"").toString()+'"'}:{innerText:'"'+e.toString()+'"'}:a={class:{"jv-ellipsis":!0},on:{click:this.toggle},domProps:{innerText:"..."}},t("span",{},[this.canExtend&&t("span",{class:{"jv-toggle":!0,open:this.expand},on:{click:this.toggle}}),t("span",{class:{"jv-holder-node":!0},ref:"holderRef"}),t("span",a)])}}},function(t,e,n){"use strict";n.r(e);var r,a=n(8),o=n.n(a);for(r in a)"default"!==r&&function(t){n.d(e,t,(function(){return a[t]}))}(r);e.default=o.a},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default={name:"JsonUndefined",functional:!0,props:{jsonValue:{type:Object,default:null}},render:function(t,e){return t("span",{class:{"jv-item":!0,"jv-undefined":!0},domProps:{innerText:null===e.props.jsonValue?"null":"undefined"}})}}},function(t,e,n){"use strict";n.r(e);var r,a=n(10),o=n.n(a);for(r in a)"default"!==r&&function(t){n.d(e,t,(function(){return a[t]}))}(r);e.default=o.a},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default={name:"JsonNumber",functional:!0,props:{jsonValue:{type:Number,required:!0}},render:function(t,e){var n=e.props;return t("span",{class:{"jv-item":!0,"jv-number":!0,"jv-number-integer":e=Number.isInteger(n.jsonValue),"jv-number-float":!e},domProps:{innerText:n.jsonValue.toString()}})}}},function(t,e,n){"use strict";n.r(e);var r,a=n(12),o=n.n(a);for(r in a)"default"!==r&&function(t){n.d(e,t,(function(){return a[t]}))}(r);e.default=o.a},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default={name:"JsonBoolean",functional:!0,props:{jsonValue:Boolean},render:function(t,e){return t("span",{class:{"jv-item":!0,"jv-boolean":!0},domProps:{innerText:e.props.jsonValue.toString()}})}}},function(t,e,n){"use strict";n.r(e);var r,a=n(14),o=n.n(a);for(r in a)"default"!==r&&function(t){n.d(e,t,(function(){return a[t]}))}(r);e.default=o.a},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=(n=n=n(21))&&n.__esModule?n:{default:n};e.default={name:"JsonObject",props:{jsonValue:{type:Object,required:!0},keyName:{type:String,default:""},depth:{type:Number,default:0},expand:Boolean,forceExpand:Boolean,sort:Boolean,previewMode:Boolean,showArrayIndex:Boolean,showDoubleQuotes:Boolean,path:String},data:function(){return{value:{}}},computed:{ordered:function(){var t=this;if(!this.sort)return this.value;var e={};return Object.keys(this.value).sort().forEach((function(n){e[n]=t.value[n]})),e}},watch:{jsonValue:function(t){this.setValue(t)}},mounted:function(){this.setValue(this.jsonValue)},methods:{setValue:function(t){var e=this;setTimeout((function(){e.value=t}),0)},toggle:function(){this.$emit("update:expand",!this.expand),this.dispatchEvent()},toggleAll:function(){this.$emit("update:expandAll",!this.expand),this.dispatchEvent()},dispatchEvent:function(){try{this.$el.dispatchEvent(new Event("resized"))}catch(e){var t=document.createEvent("Event");t.initEvent("resized",!0,!1),this.$el.dispatchEvent(t)}}},render:function(t){var e,n=this,a=[];if(this.previewMode||this.keyName||a.push(t("span",{class:{"jv-toggle":!0,open:!!this.expand},on:{click:function(t){t.altKey?n.toggleAll():n.toggle()}}})),a.push(t("span",{class:{"jv-item":!0,"jv-object":!0},domProps:{innerText:"{"}})),this.expand)for(var o in this.ordered)this.ordered.hasOwnProperty(o)&&(e=this.ordered[o],a.push(t(r.default,{key:o,props:{sort:this.sort,keyName:o,depth:this.depth+1,value:e,previewMode:this.previewMode,forceExpand:this.forceExpand,showArrayIndex:this.showArrayIndex,showDoubleQuotes:this.showDoubleQuotes,path:this.path+"."+o}})));return!this.expand&&Object.keys(this.value).length&&a.push(t("span",{class:{"jv-ellipsis":!0},on:{click:function(t){t.altKey?n.toggleAll():n.toggle()}},attrs:{title:"click to reveal object content (keys: "+Object.keys(this.ordered).join(", ")+")"},domProps:{innerText:"..."}})),a.push(t("span",{class:{"jv-item":!0,"jv-object":!0},domProps:{innerText:"}"}})),t("span",a)}}},function(t,e,n){"use strict";n.r(e);var r,a=n(16),o=n.n(a);for(r in a)"default"!==r&&function(t){n.d(e,t,(function(){return a[t]}))}(r);e.default=o.a},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=(n=n=n(21))&&n.__esModule?n:{default:n};e.default={name:"JsonArray",props:{jsonValue:{type:Array,required:!0},keyName:{type:String,default:""},depth:{type:Number,default:0},sort:Boolean,expand:Boolean,forceExpand:Boolean,previewMode:Boolean,showArrayIndex:Boolean,showDoubleQuotes:Boolean,path:String},data:function(){return{value:[]}},watch:{jsonValue:function(t){this.setValue(t)}},mounted:function(){this.setValue(this.jsonValue)},methods:{setValue:function(t){var e=this,n=1n&&(e.value.push(t[n]),e.setValue(t,n+1))}),0)},toggle:function(){this.$emit("update:expand",!this.expand),this.dispatchEvent()},toggleAll:function(){this.$emit("update:expandAll",!this.expand),this.dispatchEvent()},dispatchEvent:function(){try{this.$el.dispatchEvent(new Event("resized"))}catch(e){var t=document.createEvent("Event");t.initEvent("resized",!0,!1),this.$el.dispatchEvent(t)}}},render:function(t){var e=this,n=[];return this.previewMode||this.keyName||n.push(t("span",{class:{"jv-toggle":!0,open:!!this.expand},on:{click:function(t){t.altKey?e.toggleAll():e.toggle()}}})),n.push(t("span",{class:{"jv-item":!0,"jv-array":!0},domProps:{innerText:"["}})),this.expand&&this.value.forEach((function(a,o){n.push(t(r.default,{key:o,props:{sort:e.sort,keyName:e.showArrayIndex?""+o:"",depth:e.depth+1,value:a,previewMode:e.previewMode,forceExpand:e.forceExpand,showArrayIndex:e.showArrayIndex,showDoubleQuotes:e.showDoubleQuotes,path:e.path+"."+o}}))})),!this.expand&&this.value.length&&n.push(t("span",{class:{"jv-ellipsis":!0},on:{click:function(t){t.altKey?e.toggleAll():e.toggle()}},attrs:{title:"click to reveal "+this.value.length+" hidden items"},domProps:{innerText:"..."}})),n.push(t("span",{class:{"jv-item":!0,"jv-array":!0},domProps:{innerText:"]"}})),t("span",n)}}},function(t,e,n){"use strict";n.r(e);var r,a=n(18),o=n.n(a);for(r in a)"default"!==r&&function(t){n.d(e,t,(function(){return a[t]}))}(r);e.default=o.a},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default={name:"JsonFunction",functional:!0,props:{jsonValue:{type:Function,required:!0}},render:function(t,e){return t("span",{class:{"jv-item":!0,"jv-function":!0},attrs:{title:e.props.jsonValue.toString()},domProps:{innerHTML:"<function>"}})}}},function(t,e,n){"use strict";n.r(e);var r,a=n(20),o=n.n(a);for(r in a)"default"!==r&&function(t){n.d(e,t,(function(){return a[t]}))}(r);e.default=o.a},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default={name:"JsonDate",inject:["timeformat"],functional:!0,props:{jsonValue:{type:Date,required:!0}},render:function(t,e){var n=e.props;return e=e.injections,n=n.jsonValue,t("span",{class:{"jv-item":!0,"jv-string":!0},domProps:{innerText:'"'+(0,e.timeformat)(n)+'"'}})}}},function(t,e,n){"use strict";n.r(e);var r,a=n(3);for(r in a)"default"!==r&&function(t){n.d(e,t,(function(){return a[t]}))}(r);n(38);var o=n(0);(o=Object(o.a)(a.default,void 0,void 0,!1,null,null,null)).options.__file="lib/json-box.vue",e.default=o.exports},function(t,e,n){"use strict";function r(){var t=this,e=t.$createElement;return(e=t._self._c||e)("div",{ref:"viewer",class:t.jvClass},[t.copyable?e("div",{class:"jv-tooltip "+(t.copyText.align||"right")},[e("span",{ref:"clip",staticClass:"jv-button",class:{copied:t.copied}},[t._t("copy",(function(){return[t._v("\n "+t._s(t.copied?t.copyText.copiedText:t.copyText.copyText)+"\n ")]}),{copied:t.copied})],2)]):t._e(),t._v(" "),e("div",{staticClass:"jv-code",class:{open:t.expandCode,boxed:t.boxed}},[e("json-box",{ref:"jsonBox",attrs:{value:t.value,sort:t.sort,"preview-mode":t.previewMode,"show-array-index":t.showArrayIndex,"show-double-quotes":t.showDoubleQuotes},on:{keyclick:t.onKeyclick}})],1),t._v(" "),t.expandableCode&&t.boxed?e("div",{staticClass:"jv-more",on:{click:t.toggleExpandCode}},[e("span",{staticClass:"jv-toggle",class:{open:!!t.expandCode}})]):t._e()])}var a=[];r._withStripped=!0,n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return a}))},function(t,e,n){var r=n(39);"string"==typeof r&&(r=[[t.i,r,""]]),n(25)(r,{hmr:!0,transform:void 0}),r.locals&&(t.exports=r.locals)},function(t,e,n){"use strict";t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var n=function(t,e){var n=t[1]||"",r=t[3];return r?e&&"function"==typeof btoa?(t=function(t){return t=btoa(unescape(encodeURIComponent(JSON.stringify(t)))),t="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(t),"/*# ".concat(t," */")}(r),e=r.sources.map((function(t){return"/*# sourceURL=".concat(r.sourceRoot||"").concat(t," */")})),[n].concat(e).concat([t]).join("\n")):[n].join("\n"):n}(e,t);return e[2]?"@media ".concat(e[2]," {").concat(n,"}"):n})).join("")},e.i=function(t,n,r){"string"==typeof t&&(t=[[null,t,""]]);var a={};if(r)for(var o=0;o i[data-v-2115382f] {\r\n color: #fff;\r\n font-size: 14px;\n}\n.move[data-v-2115382f] {\r\n position: absolute;\r\n width: 100%;\r\n height: 3px;\r\n top: 0;\r\n left: 0;\r\n z-index: 9999;\r\n cursor: s-resize;\n}\n.contract-info-title i[data-v-2115382f] {\r\n padding-left: 8px;\r\n font-size: 10px;\r\n color: #aeb1b5;\n}\n.contract-info-list[data-v-2115382f] {\r\n padding: 5px 20px;\r\n width: 90%;\r\n margin: 0 auto;\r\n border: 1px solid #242e42;\r\n border-bottom: none;\r\n position: relative;\n}\n.contract-info-list-title[data-v-2115382f] {\r\n display: inline-block;\r\n width: 105px;\r\n vertical-align: top;\n}\n.contract-info-list-title[data-v-2115382f]::after {\r\n display: block;\r\n content: "";\r\n clear: both;\n}\n.ace-editor[data-v-2115382f] {\r\n height: 100% !important;\r\n position: relative;\r\n text-align: left;\r\n letter-spacing: 0.1px;\r\n text-rendering: geometricPrecision;\r\n -webkit-font-feature-settings: "liga" 0;\r\n font-feature-settings: "liga" 0;\r\n -webkit-font-variant-ligatures: none;\r\n font-variant-ligatures: none;\r\n font: 14px / normal "Monaco", "Menlo", "Ubuntu Mono", "Consolas",\r\n "source-code-pro", monospace !important;\n}\n.ace-editor[data-v-2115382f] .ace_print-margin {\r\n display: none;\r\n text-rendering: geometricPrecision;\n}\n.infoHide[data-v-2115382f] {\r\n height: calc(100% - 50px);\n}\n.code-spread[data-v-2115382f] {\r\n position: absolute;\r\n width: 33px;\r\n height: 33px;\r\n line-height: 33px;\r\n left: 412px;\r\n bottom: 0;\r\n border: 1px solid #242e42;\r\n color: #aeb1b5;\r\n background-color: #fff;\r\n text-align: center;\r\n z-index: 9999;\r\n cursor: pointer;\n}\n.code-spread i[data-v-2115382f] {\r\n font-size: 12px;\n}\n.contract-info[data-v-2115382f] {\r\n background-color: #2b374d;\r\n color: #fff;\n}\n.titleActive[data-v-2115382f] {\r\n padding-left: 40px;\n}\n.send-dialog[data-v-2115382f] .el-dialog--center .el-dialog__body {\n}\n.send-dialog[data-v-2115382f] .el-dialog__footer {\r\n padding-top: 0;\n}\n.send-btn[data-v-2115382f] .el-button {\r\n padding: 9px 16px;\n}\n.send-dialog[data-v-2115382f] .el-input__inner {\r\n height: 32px;\r\n line-height: 32px;\n}\n.showText[data-v-2115382f] {\r\n display: inline-block;\r\n width: calc(100% - 120px);\r\n word-wrap: break-word;\r\n max-height: 73px;\r\n overflow: hidden;\n}\n.copy-public-key[data-v-2115382f] {\r\n float: right;\n}\n.visibility-wrapper[data-v-2115382f] {\r\n position: absolute;\r\n bottom: 10px;\n}\n.error-item[data-v-2115382f] .el-collapse {\r\n border-bottom: 1px solid #2b374d;\r\n border-top: 1px solid #2b374d;\n}\n.error-item[data-v-2115382f] .el-collapse-item__header {\r\n color: inherit;\r\n background-color: inherit;\r\n height: inherit;\r\n line-height: inherit;\r\n border-bottom: 1px solid #2b374d;\r\n font-size: 12px;\r\n font-weight: none;\n}\n.error-item[data-v-2115382f] .el-collapse-item__content {\r\n background-color: #2b374d;\n}\n.error-item[data-v-2115382f] .el-collapse-item__wrap {\r\n border-bottom: 1px solid #2b374d;\n}\r\n',""])},Noje:function(t,e,n){"use strict";n.r(e);var r=n("+1zy"),a=n("+6+8");for(var o in a)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return a[t]}))}(o);n("Og09");var i=n("KHd+"),s=Object(i.a)(a.default,r.a,r.b,!1,null,"5ab5e543",null);e.default=s.exports},NsGE:function(t,e,n){"use strict";n("Qrz8")},NwLZ:function(t,e,n){var r=n("LUH5");r.__esModule&&(r=r.default),"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals);(0,n("SZ7m").default)("29909f10",r,!1,{})},"Nxm+":function(t,e,n){var r=n("U8sn");r.__esModule&&(r=r.default),"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals);(0,n("SZ7m").default)("7a452700",r,!1,{})},O20g:function(t,e,n){"use strict";n.r(e);var r=n("PI02"),a=n("/of/");for(var o in a)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return a[t]}))}(o);n("udoS");var i=n("KHd+"),s=Object(i.a)(a.default,r.a,r.b,!1,null,"7480fc39",null);e.default=s.exports},O6bC:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n("mHBk");e.default={name:"Folder",props:["folderVisible","folderItem"],computed:{rules:function(){return{folderName:[{required:!0,message:this.$t("dialog.pleaseType")+" "+this.$t("dialog.folderName"),trigger:"blur"},{min:1,max:32,message:this.$t("dialog.privateKeyVerifyLength1_32"),trigger:"blur"},{pattern:/^[A-Za-z0-9_]+$/,message:this.$t("dialog.folderNameIllegal"),trigger:"blur"}]}}},data:function(){return{options:[],folderFrom:{folderName:""},dialogVisible:this.folderVisible,pathList:[]}},mounted:function(){this.getContractPaths(),this.folderItem&&(this.folderFrom.folderName=this.folderItem.storeName_en)},methods:{getContractPaths:function(){var t=this;(0,r.getContractPathList)(localStorage.getItem("groupId")).then((function(e){if(200==e.status){var n=e.data;t.pathList=[],t.pathList=n.map((function(t){return t.contractPath}))}else t.$message({type:"error",message:t.$chooseLang(e.data.code)})}))},submit:function(t){var e=this;this.$refs[t].validate((function(t){if(t){if(!t||e.pathList.includes(e.folderFrom.folderName))return e.$message({type:"error",message:e.$t("text.folderIsExists")}),!1;e.$emit("success",e.folderFrom.folderName)}}))},close:function(){this.$emit("close")}}}},O6eT:function(t,e,n){var r=n("ixuh");r.__esModule&&(r=r.default),"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals);(0,n("SZ7m").default)("6dda407b",r,!1,{})},OAlh:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=i(n("Noje")),a=n("mHBk"),o=(i(n("oYx3")),i(n("p5Bo")));function i(t){return t&&t.__esModule?t:{default:t}}var s=n("bCcq").sha256;e.default={name:"mains",components:{"v-menu":r.default},data:function(){var t=this;return{menuShow:!0,menuHide:!1,loading:!1,accountStatus:sessionStorage.getItem("accountStatus"),account:localStorage.getItem("user"),encryptionId:null,rulePasswordForm:{oldPass:"",pass:"",checkPass:""},rules2:{oldPass:[{required:!0,message:"请输入旧密码",trigger:"blur"},{min:6,max:12,message:"长度在 6 到 12 个字符",trigger:"blur"}],pass:[{required:!0,validator:function(e,n,r){""===n?r(new Error("请输入密码")):(""!==t.rulePasswordForm.checkPass&&t.$refs.rulePasswordForm.validateField("checkPass"),r())},trigger:"blur"},{min:6,max:12,message:"长度在 6 到 12 个字符",trigger:"blur"},{pattern:/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{6,12}$/,message:"字母,数字组成,且至少包含一个大写字母和一个小写字母",trigger:"blur"}],checkPass:[{required:!0,validator:function(e,n,r){""===n?r(new Error("请再次输入密码")):n!==t.rulePasswordForm.pass?r(new Error("两次输入密码不一致!")):r()},trigger:"blur"},{min:6,max:12,message:"长度在 6 到 12 个字符",trigger:"blur"}]}}},computed:{show:function(){return this.menuShow}},created:function(){this.encryptionId=localStorage.getItem("encryptionId"),this.$store.dispatch("set_versionId_action",localStorage.getItem("versionId")),this.$store.dispatch("set_versionId_action",localStorage.getItem("solcName"))},mounted:function(){this.accountStatus=sessionStorage.getItem("accountStatus"),this.getEncryption()},methods:{getEncryption:function(){var t=this;(0,a.encryption)().then((function(e){200==e.status?(e.data!=t.encryptionId&&(localStorage.setItem("solcName",""),localStorage.setItem("versionId",null),t.$store.dispatch("set_versionId_action",localStorage.getItem("versionId")),t.$store.dispatch("set_versionId_action",localStorage.getItem("solcName"))),localStorage.setItem("encryptionId",e.data)):t.$message({type:"error",message:t.$chooseLang(e.data.code)})})).catch((function(e){t.$message({type:"error",message:e.data||t.$t("text.systemError")})}))},change:function(t){this.menuShow=!t,this.menuHide=t},submitForm:function(t){var e=this;this.$refs[t].validate((function(t){if(!t)return!1;e.loading=!0,e.getResetPassword()}))},resetForm:function(t){this.$refs[t].resetFields()},getResetPassword:function(){var t=this,e={oldAccountPwd:s(this.rulePasswordForm.oldPass),newAccountPwd:s(this.rulePasswordForm.pass)};(0,a.resetPassword)(e,{}).then((function(e){t.loading=!1,0===e.data.code?(t.$message({type:"success",message:"密码修改成功"}),t.accountStatus="2",sessionStorage.setItem("accountStatus",t.accountStatus)):t.$message({type:"error",message:o.default.errCode[e.data.code].en||"密码修改失败"})})).catch((function(e){t.$message({type:"error",message:"密码修改失败"})}))}}}},OHzG:function(t,e,n){"use strict";n.r(e);var r=n("PyAH"),a=n.n(r);for(var o in r)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return r[t]}))}(o);e.default=a.a},OJT3:function(t,e,n){(t.exports=n("JPst")(!1)).push([t.i,"\n.dialog-footer[data-v-17390d38] {\r\n text-align: right;\n}\n.event-info[data-v-17390d38] {\n}\n.event-item[data-v-17390d38] {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-orient: horizontal;\r\n -webkit-box-direction: normal;\r\n -ms-flex-direction: row;\r\n flex-direction: row;\n}\r\n",""])},OOXg:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n("mHBk");e.default={name:"transactionDetail",props:{transHash:{type:String}},data:function(){return{activeName:"txInfo",showDecode:!0,showReceiptDecode:!0,btnText:"解码",btnReceiptText:"解码",autosizeMao:{minRows:2,maxRows:5},txInfoMap:{},txInfoReceiptMap:{},group:localStorage.getItem("groupId")?localStorage.getItem("groupId"):"1",txInfoList:["blockHash","blockNumber","gas","from","transactionIndex","to","nonceRaw","value","hash","gasPrice","input"],txReceiptInfoList:["output","blockHash","gasUsed","blockNumber","contractAddress","from","transactionIndex","to","logsBloom","transactionHash","status","logs"]}},mounted:function(){this.getTxInfo()},methods:{getTxInfo:function(){var t=this;(0,r.queryTxInfo)(this.group,this.transHash).then((function(e){var n=e.data;200===e.status?t.txInfoMap=n:t.$message({type:"error",message:t.$chooseLang(e.data.code)})})).catch((function(e){t.$message({type:"error",message:e.data||t.$t("text.systemError")})}))},decodeInputfun:function(){},decodeLogsFun:function(){},handleClick:function(t){"txReceiptInfo"==t.name&&this.getTxReceiptInfo()},getTxReceiptInfo:function(){var t=this;(0,r.queryTxReceiptInfo)(this.group,this.transHash).then((function(e){var n=e.data;200===e.status?t.txInfoReceiptMap=n:t.$message({type:"error",message:t.$chooseLang(e.data.code)})})).catch((function(e){t.$message({type:"error",message:e.data||t.$t("text.systemError")})}))},txStatusColor:function(t){return"0x0"==t?"#67C23A":"#F56C6C"}}}},ORAn:function(t,e,n){"use strict";n.r(e);var r=n("JBxo"),a=n("tQrf");for(var o in a)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return a[t]}))}(o);n("YLPz");var i=n("KHd+"),s=Object(i.a)(a.default,r.a,r.b,!1,null,"5f186c31",null);e.default=s.exports},Og09:function(t,e,n){"use strict";n("QFk+")},OrPJ:function(t,e,n){(t.exports=n("JPst")(!1)).push([t.i,"\n /* .el-form-item__label {\n display: block;\n line-height: 32px;\n float: none;\n text-align: left;\n} */\n",""])},OvvR:function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return a}));var r=function(){var t=this._self._c;return t("svg",this._g({class:this.svgClass,attrs:{"aria-hidden":"true"}},this.$listeners),[t("use",{attrs:{"xlink:href":this.iconName}})])},a=[];r._withStripped=!0},"P+bJ":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=l(n("JuEE")),a=l(n("zKdh")),o=l(n("qse9")),i=n("mHBk"),s=l(n("9e9m")),c=l(n("rmmL"));function l(t){return t&&t.__esModule?t:{default:t}}e.default={name:"contract",components:{"v-menu":r.default,"v-code":a.default,"v-content-head":o.default},watch:{$route:function(){this.urlQuery=this.$root.$route.query},menuHide:function(t){this.menuWidth=t?180:0},getVersionId:function(){this.version=localStorage.getItem("solcName"),this.versionId=localStorage.getItem("versionId")}},data:function(){return{contractData:{},showCode:!1,menuHide:!0,changeWidth:!1,contractHide:!1,menuWidth:240,urlQuery:this.$root.$route.query,loading:!1,allVersion:[],versionList:[],version:localStorage.getItem("solcName")?localStorage.getItem("solcName"):"",baseURLWasm:"./static/js",versionId:localStorage.getItem("versionId")?localStorage.getItem("versionId"):"",host:location.host,solcList:[],allVersionList:[]}},computed:{contentWidth:function(){return this.menuWidth?"calc(100% - "+this.menuWidth+"px)":"100%"},getVersionId:function(){return this.$store.state.versionId}},beforeDestroy:function(){s.default.$off("changeGroup"),this.$store.state.worker&&(this.$store.state.worker.terminate(),this.$store.state.worker=null)},mounted:function(){var t=this;s.default.$on("changeGroup",(function(e){t.changeGroup()})),this.allVersion=[{solcName:"v0.4.25",versionId:0,url:"http://"+this.host+"/WeBASE-Front/static/js/v0.4.25.js",encryptType:0,net:1},{solcName:"v0.4.25-gm",versionId:1,url:"http://"+this.host+"/WeBASE-Front/static/js/v0.4.25-gm.js",encryptType:1,net:1},{solcName:"v0.5.2",url:"http://"+this.host+"/WeBASE-Front/static/js/v0.5.2.js",versionId:2,encryptType:0,net:1},{solcName:"v0.5.2-gm",versionId:3,url:"http://"+this.host+"/WeBASE-Front/static/js/v0.5.2-gm.js",encryptType:1,net:1},{solcName:"v0.6.10",versionId:4,url:"http://"+this.host+"/WeBASE-Front/static/js/v0.6.10.js",encryptType:0,net:1},{solcName:"v0.6.10-gm",versionId:5,url:"http://"+this.host+"/WeBASE-Front/static/js/v0.6.10-gm.js",encryptType:1,net:1}],console.log(void 0),this.getEncryption(this.querySolcList)},methods:{querySolcList:function(){for(var t=0;t180&&(e.menuWidth=r+a)},document.onmouseup=function(t){document.onmousemove=null,document.onmouseup=null}},changeCode:function(t){this.contractData=t,this.showCode=!0},add:function(t){this.$refs.menu.saveContact(t)},compile:function(t){this.loading=t},deploy:function(t){this.$refs.menu.saveContact(t)},uploadLoading:function(t){this.loading=t}}}},"PH/m":function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return a}));var r=function(){var t=this,e=t._self._c;return e("el-dialog",{attrs:{title:t.$t("title.detailsTxn"),visible:t.editorDialog,width:"650px",top:"10vh"},on:{"update:visible":function(e){t.editorDialog=e},close:t.modelClose}},[t.transationData?t._e():e("div",[t._v(t._s(t.$t("text.noData")))]),t._v(" "),t.transationData&&t.transationData.logs?e("div",{staticStyle:{"overflow-y":"auto"},style:{height:t.editorHeight+"px"},attrs:{slot:""},slot:"default"},[e("div",[t._v("{")]),t._v(" "),t._l(t.transationData,(function(n,r){return e("div",{staticStyle:{"padding-left":"10px"}},["logs"!=r&&"output"!=r?e("div",["status"==r?[e("span",{staticClass:"transation-title"},[t._v(t._s(r)+":")]),t._v(" "),e("span",{style:{color:t.txStatusColor(n)}},[t._v(t._s(n))])]:[e("span",{staticClass:"transation-title"},[t._v(t._s(r)+":")]),t._v(" "),"string"==typeof n?e("span",{staticClass:"transation-content string-color"},[t._v('"'+t._s(n)+'"')]):null===n?e("span",{staticClass:"transation-content null-color"},[t._v(t._s(n)+"null")]):e("span","object"==typeof n?{staticClass:"transation-content"}:{staticClass:"transation-content other-color"},[t._v(t._s(n))])]],2):"output"==r?e("div",[e("span",{staticClass:"transation-title"},[t._v(t._s(r)+":")]),t._v(" "),t.showDecode?e("span",{staticClass:"transation-content string-color"},[t._v('"'+t._s(n)+'"')]):t._e(),t._v(" "),t.showDecode?t._e():e("div",{staticClass:"transation-data",staticStyle:{width:"500px"}},[e("div",{staticClass:"input-label"},[e("span",{staticClass:"label"},[t._v("function")]),t._v(" "),e("span",[t._v(t._s(t.funcData+"("+t.abiType+") "+t.outputType))])]),t._v(" "),e("div",{staticClass:"input-label"},[e("span",{staticClass:"label"},[t._v("data:")]),t._v(" "),t.inputData.length?e("el-table",{staticStyle:{display:"inline-block",width:"350px"},attrs:{data:t.inputData}},[e("el-table-column",{attrs:{prop:"name",label:"name",align:"left"}}),t._v(" "),e("el-table-column",{attrs:{prop:"type",label:"type",align:"left"}}),t._v(" "),e("el-table-column",{attrs:{prop:"data",label:"data",align:"left","show-overflow-tooltip":!0},scopedSlots:t._u([{key:"default",fn:function(n){return[e("i",{staticClass:"wbs-icon-baocun font-12 copy-public-key",attrs:{title:t.$t("title.copy")},on:{click:function(e){return t.copyPubilcKey(n.row.data)}}}),t._v(" "),e("span",[t._v(t._s(n.row.data))])]}}],null,!0)})],1):t._e()],1)]),t._v(" "),e("div",{directives:[{name:"show",rawName:"v-show",value:t.inputButtonShow,expression:"inputButtonShow"}],staticClass:"item"},[e("span",{staticClass:"label"}),t._v(" "),e("el-button",{attrs:{type:"primary"},on:{click:t.decodeOutput}},[t._v(t._s(t.buttonTitle))])],1)]):t._e(),t._v(" "),"logs"==r?e("div",[e("span",[t._v(t._s(r)+":")]),t._v(" "),n.length?t._e():e("span",[t._v(t._s(n))]),t._v(" "),n.length?e("span",[t._v("[\n "),t._l(n,(function(n){return e("div",{staticStyle:{"padding-left":"10px"}},[e("div",[t._v("{")]),t._v(" "),e("div",{staticStyle:{"padding-left":"10px"}},[e("div",[e("span",{staticClass:"transation-title"},[t._v("removed:")]),t._v(" "),e("span",{staticClass:"transation-content other-color"},[t._v(t._s(n.removed))])]),t._v(" "),e("div",[e("span",{staticClass:"transation-title"},[t._v("logIndex:")]),t._v(" "),"string"==typeof n.logIndex?e("span",{staticClass:"transation-content string-color"},[t._v(t._s(n.logIndex))]):null===n.logIndex?e("span",{staticClass:"transation-content null-color"},[t._v(t._s(n.logIndex)+"null")]):e("span",{staticClass:"transation-content"},[t._v(t._s(n.logIndex))])]),t._v(" "),e("div",[e("span",{staticClass:"transation-title"},[t._v("transactionIndex:")]),t._v(" "),null===n.transactionIndex?e("span",{staticClass:"transation-content null-color"},[t._v(t._s(n.transactionIndex)+"null")]):e("span",{staticClass:"transation-content"},[t._v(t._s(n.transactionIndex))])]),t._v(" "),e("div",[e("span",{staticClass:"transation-title"},[t._v("transactionHash:")]),t._v(" "),"string"==typeof n.transactionHash?e("span",{staticClass:"transation-content string-color"},[t._v(t._s(n.transactionHash))]):null===n.transactionHash?e("span",{staticClass:"transation-content null-color"},[t._v(t._s(n.transactionHash)+"null")]):e("span",{staticClass:"transation-content"},[t._v(t._s(n.transactionHash))])]),t._v(" "),e("div",[e("span",{staticClass:"transation-title"},[t._v("blockHash:")]),t._v(" "),"string"==typeof n.blockHash?e("span",{staticClass:"transation-content string-color"},[t._v(t._s(n.blockHash))]):null===n.blockHash?e("span",{staticClass:"transation-content null-color"},[t._v(t._s(n.blockHash)+"null")]):e("span",{staticClass:"transation-content"},[t._v(t._s(n.blockHash))])]),t._v(" "),e("div",[e("span",{staticClass:"transation-title"},[t._v("blockNumber:")]),t._v(" "),null===n.blockNumber?e("span",{staticClass:"transation-content null-color"},[t._v(t._s(n.blockNumber)+"null")]):e("span",{staticClass:"transation-content"},[t._v(t._s(n.blockNumber))])]),t._v(" "),e("div",[e("span",{staticClass:"transation-title"},[t._v("address:")]),t._v(" "),"string"==typeof n.address?e("span",{staticClass:"transation-content string-color"},[t._v(t._s(n.address))]):null===n.address?e("span",{staticClass:"transation-content null-color"},[t._v(t._s(n.address)+"null")]):e("span",{staticClass:"transation-content"},[t._v(t._s(n.address))])]),t._v(" "),n.eventDataShow&&t.eventSHow?e("div",[e("span",{staticClass:"transation-title"},[t._v("eventName :")]),t._v(" "),e("span",{staticClass:"transation-content"},[t._v(t._s(n.eventName))])]):t._e(),t._v(" "),e("div",[e("span",{staticClass:"transation-title"},[t._v("data:")]),t._v(" "),e("span",{directives:[{name:"show",rawName:"v-show",value:!n.eventDataShow&&t.eventSHow,expression:"!item.eventDataShow && eventSHow"}],staticClass:"transation-content string-color"},[t._v(t._s(n.data))]),t._v(" "),e("div",{directives:[{name:"show",rawName:"v-show",value:n.eventDataShow&&t.eventSHow,expression:"item.eventDataShow && eventSHow"}],staticClass:"transation-data"},[e("el-table",{staticClass:"input-data",staticStyle:{display:"inline-block",width:"100%"},attrs:{data:n.eventLgData}},[e("el-table-column",{attrs:{prop:"name",width:"150",label:"name",align:"left"}}),t._v(" "),e("el-table-column",{attrs:{prop:"data",label:"data",align:"left","show-overflow-tooltip":!0},scopedSlots:t._u([{key:"default",fn:function(n){return[e("i",{staticClass:"wbs-icon-baocun font-12 copy-public-key",attrs:{title:t.$t("title.copy")},on:{click:function(e){return t.copyPubilcKey(n.row.data)}}}),t._v(" "),e("span",[t._v(t._s(t.abc(n.row.data)))])]}}],null,!0)})],1)],1),t._v(" "),e("div",{staticClass:"item"},[e("span",{staticClass:"label"}),t._v(" "),e("el-button",{attrs:{type:"primary"},on:{click:function(e){return t.decode(n)}}},[t._v(t._s(t.eventTitle))])],1)]),t._v(" "),e("div",[e("span",{staticClass:"transation-title"},[t._v("type:")]),t._v(" "),"string"==typeof n.type?e("span",{staticClass:"transation-content string-color"},[t._v(t._s(n.type))]):null===n.type?e("span",{staticClass:"transation-content null-color"},[t._v(t._s(n.type)+"null")]):e("span",{staticClass:"transation-content"},[t._v(t._s(n.type))])]),t._v(" "),e("div",[e("span",{staticClass:"transation-title"},[t._v("topics:")]),t._v(" "),"string"==typeof n.topics?e("span",{staticClass:"transation-content string-color"},[t._v(t._s(n.topics))]):null===n.topics?e("span",{staticClass:"transation-content null-color"},[t._v(t._s(n.topics)+"null")]):e("span",{staticClass:"transation-content"},[t._v(t._s(n.topics))])]),t._v(" "),e("div",[e("span",{staticClass:"transation-title"},[t._v("logIndexRaw:")]),t._v(" "),"string"==typeof n.logIndexRaw?e("span",{staticClass:"transation-content string-color"},[t._v(t._s(n.logIndexRaw))]):null===n.logIndexRaw?e("span",{staticClass:"transation-content null-color"},[t._v(t._s(n.logIndexRaw)+"null")]):e("span",{staticClass:"transation-content"},[t._v(t._s(n.logIndexRaw))])])]),t._v(" "),e("div",[t._v("}")])])})),t._v("\n ]\n ")],2):t._e()]):t._e()])})),t._v(" "),e("div",[t._v("}")])],2):t._e()])},a=[];r._withStripped=!0},PI02:function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return a}));var r=function(){var t=this,e=t._self._c;return e("div",[e("v-content-head",{attrs:{headTitle:t.$t("route.systemMonitoring"),headSubTitle:t.$t("route.nodeMetrics")},on:{changeGroup:t.changeGroup}}),t._v(" "),e("div",{staticClass:"module-wrapper"},[e("div",{staticClass:"more-search-table"},[e("div",{staticClass:"search-item"},[e("span",[t._v(t._s(t.$t("text.showDate")))]),t._v(" "),e("el-date-picker",{staticClass:"select-32",attrs:{type:"date",placeholder:t.$t("placeholder.selectedDay"),"picker-options":t.pickerOption,format:"yyyy - MM - dd","value-format":"yyyy-MM-dd","default-value":""+Date()},on:{change:t.changeCurrentDate},model:{value:t.currentDate,callback:function(e){t.currentDate=e},expression:"currentDate"}})],1),t._v(" "),e("div",{staticClass:"search-item"},[e("span",[t._v(t._s(t.$t("text.comparingDate")))]),t._v(" "),e("el-date-picker",{staticClass:"select-32",attrs:{type:"date",placeholder:t.$t("placeholder.selectedDay"),"picker-options":t.pickerOption,format:"yyyy - MM - dd","value-format":"yyyy-MM-dd"},on:{change:t.changeContrastDate},model:{value:t.contrastDate,callback:function(e){t.contrastDate=e},expression:"contrastDate"}})],1),t._v(" "),e("div",{staticClass:"search-item"},[e("span",[t._v(t._s(t.$t("text.fromTo")))]),t._v(" "),e("el-time-picker",{staticClass:"time-select-32",attrs:{"is-range":"","range-separator":t.$t("placeholder.to"),"start-placeholder":t.$t("placeholder.startTime"),"end-placeholder":t.$t("placeholder.endTime"),placeholder:t.$t("placeholder.selectedTimeRange")},model:{value:t.startEndTime,callback:function(e){t.startEndTime=e},expression:"startEndTime"}})],1),t._v(" "),e("div",{staticClass:"search-item"},[e("span",[t._v(t._s(t.$t("text.dataGranularity")))]),t._v(" "),e("el-radio-group",{model:{value:t.timeGranularity,callback:function(e){t.timeGranularity=e},expression:"timeGranularity"}},[e("el-radio",{staticClass:"font-color-fff",attrs:{label:60}},[t._v("5"+t._s(t.$t("text.minutes")))]),t._v(" "),e("el-radio",{staticClass:"font-color-fff",attrs:{label:12}},[t._v("1"+t._s(t.$t("text.minutes")))]),t._v(" "),e("el-radio",{staticClass:"font-color-fff",attrs:{label:1}},[t._v("5"+t._s(t.$t("text.seconds")))])],1),t._v(" "),e("el-button",{staticStyle:{"margin-left":"12px"},attrs:{type:"primary",size:"small",loading:t.sureing},on:{click:function(e){return t.confirmParam()}}},[t._v(t._s(t.$t("text.confirm")))])],1)]),t._v(" "),e("div",{staticClass:"metric-content"},[e("div",{staticClass:"metric-split-line"}),t._v(" "),e("el-row",{directives:[{name:"loading",rawName:"v-loading",value:t.loadingInit,expression:"loadingInit"}]},[t._l(t.nodesHealthData,(function(n){return[e("el-col",{attrs:{xs:24,sm:24,md:24,lg:12,xl:12}},[e("v-metric-chart",{directives:[{name:"loading",rawName:"v-loading",value:t.loading,expression:"loading"}],attrs:{chartOption:n,reload:t.nodesReloadNum,metricName:"nodes"}})],1)]}))],2)],1)])],1)},a=[];r._withStripped=!0},PWKV:function(t,e,n){"use strict";n.r(e);var r=n("A14j"),a=n("JIJP");for(var o in a)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return a[t]}))}(o);n("Abg+");var i=n("KHd+"),s=Object(i.a)(a.default,r.a,r.b,!1,null,"07c48d17",null);e.default=s.exports},Pf3K:function(t,e,n){"use strict";n.r(e);var r=n("H+jS"),a=n("I77X");for(var o in a)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return a[t]}))}(o);n("zDA/");var i=n("KHd+"),s=Object(i.a)(a.default,r.a,r.b,!1,null,null,null);e.default=s.exports},PlYt:function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return a}));var r=function(){var t=this._self._c;return t("div",{staticStyle:{"padding-left":"30px","padding-bottom":"2px","marin-bottom":"12px"}},[t("div",{staticStyle:{height:"200px",margin:"0 auto"},attrs:{id:this.chartId}})])},a=[];r._withStripped=!0},PvbA:function(t,e,n){"use strict";n.r(e);var r=n("PlYt"),a=n("rUfb");for(var o in a)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return a[t]}))}(o);var i=n("KHd+"),s=Object(i.a)(a.default,r.a,r.b,!1,null,null,null);e.default=s.exports},PyAH:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n("mHBk");e.default={name:"blockEventDialog",components:{},props:{},data:function(){return{loading:!1,blockEventForm:{appId:"",exchangeName:"",queueName:"",groupId:localStorage.getItem("groupId")},groupList:localStorage.getItem("cluster")?JSON.parse(localStorage.getItem("cluster")):[]}},computed:{rules:function(){return{appId:[{required:!0,message:this.$t("dialog.appId"),trigger:"blur"}],exchangeName:[{required:!0,message:this.$t("dialog.exchangeName"),trigger:"blur"}],queueName:[{required:!0,message:this.$t("dialog.queueName"),trigger:"blur"}],groupId:[{required:!0,message:this.$t("dialog.groupId"),trigger:"change"}]}}},watch:{},created:function(){},mounted:function(){},methods:{submit:function(t){var e=this;this.$refs[t].validate((function(t){if(!t)return!1;e.queryAdd()}))},queryAdd:function(){var t=this;this.loading=!0,(0,r.addBlockEvent)(this.blockEventForm).then((function(e){t.loading=!1,0===e.data.code?(t.modelClose(),t.$emit("success")):t.$message({type:"error",message:t.$chooseLang(e.data.code)})})).catch((function(e){t.$message({type:"error",message:e.data||t.$t("text.systemError")})}))},modelClose:function(){this.$emit("close")}}}},"Q/tH":function(t,e,n){var r=n("Bxao");r.__esModule&&(r=r.default),"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals);(0,n("SZ7m").default)("4d1bb2f8",r,!1,{})},"QFk+":function(t,e,n){var r=n("1cOZ");r.__esModule&&(r=r.default),"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals);(0,n("SZ7m").default)("1b7159fc",r,!1,{})},QI9r:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=m(n("gDS+")),a=m(n("P2sY")),o=m(n("m1cH")),i=m(n("bU/s"));n("xJsF"),n("sX3c"),n("kiLR"),n("2nlJ");var s=m(n("BMaO")),c=m(n("fADq")),l=m(n("9e9m")),u=n("mHBk"),d=m(n("jFYa")),f=m(n("Zjsy")),p=m(n("bWg5")),h=m(n("795s"));function m(t){return t&&t.__esModule?t:{default:t}}n("NvTd");n("NvTd").Mode;var v=n("J66h").Base64;e.default={name:"codes",props:["show","changeStyle"],components:{"v-transaction":d.default,"v-user":f.default,"v-editor":c.default,mgmtCns:h.default},data:function(){return{successHide:!0,loadingAce:!1,content:"",successShow:!0,errorShow:!1,dialogVisible:!1,javaClassDialogVisible:!1,javaClassName:"",code:"",status:0,abiFile:"",abiEmpty:!0,bin:"",contractAddress:"",contractName:"",infoHeight:250,contractList:[],dialogUser:!1,compileinfo:"",errorInfo:"",errorMessage:"",successInfo:"",abiFileShow:!1,bytecodeBin:"",aceEditor:null,themePath:"ace/theme/monokai",modePath:"ace/mode/solidity",data:null,codeShow:!1,version:"",saveShow:!1,editorShow:!1,editorData:null,editorInput:null,editorOutput:null,showAbi:!0,showBin:!0,complieAbiTextHeight:!1,complieBinTextHeight:!1,mouseHover:!1,showCompileText:!0,keyword:"",searchVisibility:!1,modifyState:!1,sendErrorMessage:"",sendConstant:null,errorInfoVisible:!1,openErrorIndex:"",reqVersion:"",cnsName:"",mgmtCnsVisible:!1,mgmtCnsItem:{},activeNames:[],addContractAddressVisible:!1,contractForm:{contractAddress:""},nolimit:!0}},watch:{content:function(t){var e=v.decode(this.data.contractSource);this.saveShow=e!=t},successHide:function(t){this.infoHeight=t?250:0},keyword:function(t){this.aceEditor.find(""+t,{backwards:!1,wrap:!0,caseSensitive:!1,regExp:!1}),this.aceEditor.findPrevious()}},computed:{codeHight:function(){return this.infoHeight?"calc(100% - "+this.infoHeight+"px)":"100%"},changeWidth:function(){return!!this.changeStyle&&this.changeStyle},tipShow:function(){return!this.show}},created:function(){},beforeMount:function(){},mounted:function(){var t=this;this.initEditor(),l.default.$on("select",(function(e){t.codeShow=!0,t.refreshMessage(),t.code="",t.version="",t.status=null,t.abiFile="",t.abiEmpty=!0,t.contractAddress="",t.errorMessage="",t.contractName="",t.content="",t.bin="",t.data=e,t.code=v.decode(e.contractSource),t.content=t.code,t.aceEditor.setValue(t.content),t.status=e.contractStatus,t.abiFile=e.contractAbi,t.abiFile&&"[]"!=t.abiFile&&(t.abiEmpty=!1),t.contractAddress=e.contractAddress,t.errorMessage=e.description||"",t.contractName=e.contractName,t.bin=e.contractBin,t.bytecodeBin=e.bytecodeBin||"",t.version=e.version,t.complieAbiTextHeight=!1,t.complieBinTextHeight=!1,t.$nextTick((function(){"Asset"===t.contractName&&"template"===e.contractPath||"Evidence"===t.contractName&&"template"===e.contractPath||"EvidenceFactory"===t.contractName&&"template"===e.contractPath?t.aceEditor.setReadOnly(!0):t.aceEditor.setReadOnly(!1)})),t.data.contractAddress&&t.queryFindCnsInfo()})),l.default.$on("noData",(function(e){t.codeShow=!1,t.refreshMessage(),t.code="",t.version="",t.status=null,t.abiFile="",t.abiEmpty=!0,t.contractAddress="",t.errorMessage="",t.contractName="",t.content="",t.bin=""})),l.default.$on("limit",(function(e){t.nolimit=!1;var n=t;setTimeout((function(){n.nolimit=!0}),500)})),[].concat((0,o.default)(document.querySelectorAll(".noBlur"))).map((function(t){t.onmousedown=function(t){return t&&t.preventDefault?t.preventDefault():window.event.returnValue=!1,!1}}))},methods:{initEditor:function(){var t=this;this.aceEditor=i.default.edit(this.$refs.ace,{fontSize:14,fontFamily:"Consolas,Monaco,monospace",theme:this.themePath,mode:this.modePath,tabSize:4,useSoftTabs:!0}),this.aceEditor.setOptions({enableSnippets:!0,enableLiveAutocompletion:!0,enableBasicAutocompletion:!0,autoScrollEditorIntoView:!0,copyWithEmptySelection:!0}),this.aceEditor.commands.addCommand({name:"save",bindKey:{win:"Ctrl-S",mac:"Command-S"},exec:function(e){t.saveCode()}}),this.aceEditor.commands.addCommand({name:"compile",bindKey:{win:"Alt-C",mac:"Option-C"},exec:function(e){t.compile()}}),this.aceEditor.commands.addCommand({name:"deploying",bindKey:{win:"Alt-D",mac:"Option-D"},exec:function(e){t.deploying()}}),this.aceEditor.commands.addCommand({name:"send",bindKey:{win:"Alt-T",mac:"Option-T"},exec:function(e){t.send()}}),this.aceEditor.commands.addCommand({name:"search-keyword",bindKey:{win:"Ctrl-F",mac:"Command-F"},exec:function(e){t.searchKeyword()}});this.aceEditor.alignCursors();this.aceEditor.getSession().setUseWrapMode(!0),this.aceEditor.getSession().on("change",this.changeAce),this.aceEditor.setHighlightActiveLine(!0),this.aceEditor.on("blur",this.blurAce),this.aceEditor.resize()},blurAce:function(t){var e=this;console.log("blur");var n=v.encode(this.content);this.data.contractSource!=n&&this.nolimit&&(console.log("合约改变弹框提示"),this.$confirm(this.$t("text.unsavedContract")+"?",""+this.$t("text.title"),{confirmButtonText:this.$t("title.save"),center:!0,type:"warning",dangerouslyUseHTMLString:!0}).then((function(){e.saveCode()})).catch((function(){e.$message({type:"info",message:e.$t("text.noSave")})})))},saveCode:function(){this.data.contractSource=v.encode(this.content),l.default.$emit("save",this.data);this.data.id},resizeCode:function(){this.aceEditor.setOptions({maxLines:Math.ceil(this.$refs.codeContent.offsetHeight/17)-1}),this.aceEditor.resize()},dragDetailWeight:function(t){var e=this,n=t.clientY,r=this.infoHeight;document.onmousemove=function(t){var a=n-t.clientY;e.infoHeight=r+a},document.onmouseup=function(t){document.onmousemove=null,document.onmouseup=null},this.aceEditor.setOptions({maxLines:Math.ceil(this.$refs.codeContent.offsetHeight/17)-1,minLines:9})},sendSuccess:function(t){this.sendConstant=t.constant,this.dialogVisible=!1,this.editorShow=!0,this.editorData=null,this.editorData=t.resData,this.editorInput=t.input,this.editorOutput=t.data.outputs},editorClose:function(){this.editorShow=!1},changeAce:function(){var t=this;this.$nextTick((function(){if(t.content=t.aceEditor.getSession().getValue(),""==t.content.replace(/[\r\n\s]/g,""))return t.aceEditor.setValue(t.code),void(t.content=t.aceEditor.getSession().getValue());var e=t.data.id;v.decode(t.data.contractSource).length===t.content.length?l.default.$emit("modifyState",{id:e,modifyState:!1}):l.default.$emit("modifyState",(0,a.default)({},t.data,{id:e,modifyState:!0,contractSource:v.encode(t.content)}))}))},findImports:function(t){var e=this;this.contractList=this.$store.state.contractDataList;var n=t.split("/"),r=(n[n.length-1],0);if(n.length>1){var a=n[0],o=n[n.length-1],i=[];if(this.contractList.forEach((function(t){t.contractPath==a&&i.push(t)})),!i.length)return{error:"File not found"};for(var s=0;s1){for(var u=0;u span[data-v-b4f136a6] {\r\n display: inline-block;\r\n max-width: 45px;\n}\n.text-td[data-v-b4f136a6] {\r\n white-space: nowrap;\n}\n.parame-item-name[data-v-b4f136a6] {\r\n display: inline-block;\r\n max-width: 100px;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\n}\n.demo-ruleForm[data-v-b4f136a6] .el-form-item {\r\n margin-bottom: 0;\n}\n.demo-ruleForm[data-v-b4f136a6] .el-form-item__error {\r\n padding-top: 0;\r\n -webkit-transform: scale(0.9);\r\n transform: scale(0.9);\r\n top: 93%;\n}\r\n",""])},Qrz8:function(t,e,n){var r=n("kJtB");r.__esModule&&(r=r.default),"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals);(0,n("SZ7m").default)("dd127c5c",r,!1,{})},QwlL:function(t,e,n){"use strict";n.r(e);var r=n("Rycc"),a=n("o77N");for(var o in a)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return a[t]}))}(o);n("z27l");var i=n("KHd+"),s=Object(i.a)(a.default,r.a,r.b,!1,null,"8847701c",null);e.default=s.exports},R3mx:function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return a}));var r=function(){var t=this,e=t._self._c;return e("div",{staticClass:"rivate-key-management-wrapper"},[e("v-contentHead",{attrs:{headTitle:t.$t("route.contractManagementQ"),headSubTitle:t.$t("route.contractList")},on:{changeGroup:t.changeGroup}}),t._v(" "),e("div",{staticClass:"module-wrapper"},[e("div",{staticClass:"search-part"},[e("div",{staticClass:"search-part-right"},[e("el-input",{staticClass:"input-with-select",attrs:{placeholder:t.$t("placeholder.contractListSearch"),clearable:""},on:{clear:t.clearInput},model:{value:t.contractData,callback:function(e){t.contractData=e},expression:"contractData"}},[e("el-button",{attrs:{slot:"append",icon:"el-icon-search"},on:{click:t.search},slot:"append"})],1)],1)]),t._v(" "),e("div",{staticClass:"search-table"},[e("el-table",{directives:[{name:"loading",rawName:"v-loading",value:t.loading,expression:"loading"}],attrs:{data:t.contractList,"tooltip-effect":"dark"}},[e("el-table-column",{attrs:{prop:"contractName",label:t.$t("table.contractName"),"show-overflow-tooltip":"",width:"120",align:"center"},scopedSlots:t._u([{key:"default",fn:function(n){return[e("span",{staticStyle:{color:"#1f83e7",cursor:"pointer"},on:{click:function(e){return t.open(n.row)}}},[t._v(t._s(n.row.contractName))])]}}])}),t._v(" "),e("el-table-column",{attrs:{prop:"contractPath",label:t.$t("table.contractPath"),"show-overflow-tooltip":"",width:"120",align:"center"}}),t._v(" "),e("el-table-column",{attrs:{prop:"contractAddress",label:t.$t("table.contractAddress"),"show-overflow-tooltip":"",align:"center"},scopedSlots:t._u([{key:"default",fn:function(n){return[e("i",{staticClass:"wbs-icon-copy font-12 copy-public-key",attrs:{title:t.$t("title.copyContractAddress")},on:{click:function(e){return t.copyPubilcKey(n.row.contractAddress)}}}),t._v(" "),e("span",[t._v(t._s(n.row.contractAddress))])]}}])}),t._v(" "),e("el-table-column",{attrs:{prop:"contractAbi",label:t.$t("table.contractAbi"),"show-overflow-tooltip":"",align:"center"},scopedSlots:t._u([{key:"default",fn:function(n){return[e("i",{staticClass:"wbs-icon-copy font-12 copy-public-key",attrs:{title:t.$t("title.copyAbi")},on:{click:function(e){return t.copyPubilcKey(n.row.contractAbi)}}}),t._v(" "),e("span",{staticClass:"link",staticStyle:{color:"#1f83e7"},on:{click:function(e){return t.openAbi(n.row)}}},[t._v(t._s(n.row.contractAbi))])]}}])}),t._v(" "),e("el-table-column",{attrs:{prop:"contractBin",label:t.$t("table.contractBin"),"show-overflow-tooltip":"",align:"center"},scopedSlots:t._u([{key:"default",fn:function(n){return[e("i",{staticClass:"wbs-icon-copy font-12 copy-public-key",attrs:{title:t.$t("title.copyBin")},on:{click:function(e){return t.copyPubilcKey(n.row.contractBin)}}}),t._v(" "),e("span",[t._v(t._s(n.row.contractBin))])]}}])}),t._v(" "),e("el-table-column",{attrs:{prop:"createTime",label:t.$t("table.createdTime"),"show-overflow-tooltip":"",width:"150",align:"center"}}),t._v(" "),e("el-table-column",{attrs:{label:t.$t("table.actions"),width:"280"},scopedSlots:t._u([{key:"default",fn:function(n){return[e("el-button",{class:{grayColor:!n.row.contractAddress},attrs:{disabled:!n.row.contractAddress,type:"text",size:"small"},on:{click:function(e){return t.send(n.row)}}},[t._v(t._s(t.$t("title.callContract")))]),t._v(" "),e("el-button",{class:{grayColor:!n.row.contractAddress||!n.row.haveEvent},attrs:{disabled:!n.row.contractAddress||!n.row.haveEvent,type:"text",size:"small"},on:{click:function(e){return t.handleEvent(n.row)}}},[t._v(t._s(t.$t("title.checkEvent")))]),t._v(" "),e("el-button",{attrs:{type:"text",size:"small"},on:{click:function(e){return t.handleMgmtCns(n.row)}}},[t._v("CNS")])]}}])})],1),t._v(" "),e("el-pagination",{staticClass:"page",attrs:{"current-page":t.currentPage,"page-sizes":[10,20,30,50],"page-size":t.pageSize,layout:"total, sizes, prev, pager, next, jumper",total:t.total},on:{"size-change":t.handleSizeChange,"current-change":t.handleCurrentChange}})],1)]),t._v(" "),t.abiDialogShow?e("abi-dialog",{attrs:{show:t.abiDialogShow,data:t.abiData},on:{close:t.abiClose}}):t._e(),t._v(" "),t.dialogVisible?e("el-dialog",{staticClass:"send-dialog",attrs:{title:t.$t("title.callContract"),visible:t.dialogVisible,width:"600px","before-close":t.sendClose,center:""},on:{"update:visible":function(e){t.dialogVisible=e}}},[e("send-transation",{ref:"send",attrs:{data:t.data,abi:t.abiData,version:t.version},on:{success:function(e){return t.sendSuccess(e)},close:t.handleClose}})],1):t._e(),t._v(" "),t.editorShow?e("v-editor",{attrs:{show:t.editorShow,data:t.editorData,sendConstant:t.sendConstant,input:t.editorInput,editorOutput:t.editorOutput},on:{close:t.editorClose}}):t._e(),t._v(" "),e("el-dialog",{staticClass:"send-dialog",attrs:{title:t.$t("title.checkEvent"),visible:t.checkEventVisible,width:"470px",center:""},on:{"update:visible":function(e){t.checkEventVisible=e}}},[e("check-event-dialog",{attrs:{contractInfo:t.contractInfo},on:{checkEventSuccess:function(e){return t.checkEventSuccess(arguments)},checkEventClose:t.checkEventClose}})],1),t._v(" "),t.checkEventResultVisible?e("el-dialog",{staticClass:"send-dialog",attrs:{title:t.$t("table.checkEventResult"),visible:t.checkEventResultVisible,width:"1070px",center:""},on:{"update:visible":function(e){t.checkEventResultVisible=e}}},[e("check-event-result",{attrs:{checkEventResult:t.checkEventResult,contractInfo:t.contractInfo},on:{checkEventResultSuccess:function(e){return t.checkEventResultSuccess(e)},checkEventResultClose:t.checkEventResultClose}})],1):t._e(),t._v(" "),t.mgmtCnsVisible?e("el-dialog",{staticClass:"send-dialog",attrs:{title:t.$t("text.cns"),visible:t.mgmtCnsVisible,width:"470px",center:""},on:{"update:visible":function(e){t.mgmtCnsVisible=e}}},[e("mgmt-cns",{attrs:{mgmtCnsItem:t.mgmtCnsItem},on:{mgmtCnsResultSuccess:function(e){return t.mgmtCnsResultSuccess(e)},mgmtCnsResultClose:t.mgmtCnsResultClose}})],1):t._e()],1)},a=[];r._withStripped=!0},RcA4:function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return a}));var r=function(){var t=this,e=t._self._c;return e("div",[e("div",{},[e("div",{staticClass:"ace-wrapper"},[e("h2",{staticClass:"h2-inscription font-color-fff"},[t._v("\n "+t._s(this.$t("text.parseTitle"))+"\n ")]),t._v(" "),e("div",{ref:"ace",staticClass:"ace-editor"}),t._v(" "),t.errorMsg?e("span",{staticClass:"font-color-ed5454"},[t._v(t._s(t.errorMsg))]):t._e(),t._v(" "),e("div",{staticClass:"parse-button"},[e("el-button",{attrs:{type:"primary"},on:{click:t.parseAbi}},[t._v(t._s(this.$t("text.parse")))])],1)]),t._v(" "),e("div",{staticClass:"ace-wrapper"},[e("h2",{staticClass:"h2-inscription font-color-fff"},[t._v("\n "+t._s(this.$t("text.parseAbiManually"))+"\n ")]),t._v(" "),e("el-row",{staticStyle:{"margin-bottom":"10px"},attrs:{gutter:10}},[e("el-col",{attrs:{span:7}},[e("div",{staticClass:"font-color-fff"},[t._v(t._s(this.$t("text.functionType")))]),t._v(" "),e("el-select",{on:{change:t.changeFunType},model:{value:t.functionType,callback:function(e){t.functionType=e},expression:"functionType"}},t._l(t.functionList,(function(t,n){return e("el-option",{key:n,attrs:{label:t,value:t}})})),1)],1),t._v(" "),"constructor"!=t.functionType?e("el-col",{attrs:{span:17}},[e("span",{staticClass:"font-color-fff text-hidden"},[t._v("name")]),t._v(" "),e("el-input",{on:{input:t.inputFunctionValue},model:{value:t.functionValue,callback:function(e){t.functionValue=e},expression:"functionValue"}})],1):t._e()],1),t._v(" "),t._l(t.argumentList,(function(n,r){return e("el-row",{key:r,staticStyle:{"margin-bottom":"10px"},attrs:{gutter:10}},[e("el-col",{attrs:{span:7}},[e("div",{staticClass:"font-color-fff"},[t._v(t._s(n.name))]),t._v(" "),e("el-select",{on:{change:function(e){return t.changeArgType(r)}},model:{value:n.type,callback:function(e){t.$set(n,"type",e)},expression:"item.type"}},t._l(n.argumentOption,(function(t,n){return e("el-option",{key:n,attrs:{label:t,value:t}})})),1)],1),t._v(" "),e("el-col",{attrs:{span:17}},[e("span",{staticClass:"font-color-fff text-hidden"},[t._v("value")]),t._v(" "),e("input",{directives:[{name:"model",rawName:"v-model",value:n.argumentValue,expression:"item.argumentValue"}],staticClass:"input-inner",attrs:{type:"text"},domProps:{value:n.argumentValue},on:{input:[function(e){e.target.composing||t.$set(n,"argumentValue",e.target.value)},function(e){return t.inputArgumentValue(e,n.type)}]}})])],1)}))],2),t._v(" "),e("div",{staticClass:"add-abi"},[e("el-button",{attrs:{type:"primary"},on:{click:t.addAbiEncodeStroke}},[t._v(t._s(this.$t("text.addParameter")))]),t._v(" "),e("el-button",{on:{click:t.removeAbiEncodeStroke}},[t._v(t._s(this.$t("text.remove")))])],1),t._v(" "),e("div",{staticClass:"container copy-text"},[e("el-input",{attrs:{type:"textarea",autosize:{minRows:4}},model:{value:t.textarea,callback:function(e){t.textarea=e},expression:"textarea"}}),t._v(" "),e("el-button",{staticStyle:{margin:"20px auto",visibility:"hidden"},attrs:{type:"primary"},on:{click:t.copy}},[t._v(t._s(this.$t("text.copy")))])],1)])])},a=[];r._withStripped=!0},RhsW:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default={name:"abiDialog",props:["data","show"],data:function(){return{dialogVisible:this.show,noData:!1,blcokContent:null}},mounted:function(){JSON.parse(this.data);this.blcokContent=JSON.parse(this.data),this.$nextTick((function(){this.blcokContent?this.noData=!1:this.noData=!0}))},methods:{modelClose:function(){this.$emit("close")}}}},RlgU:function(t,e,n){var r=n("QhyY");r.__esModule&&(r=r.default),"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals);(0,n("SZ7m").default)("5d012600",r,!1,{})},Rycc:function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return a}));var r=function(){var t=this,e=t._self._c;return e("div",[e("v-content-head",{attrs:{headTitle:t.$t("route.subscribeEvent"),headSubTitle:t.$t("route.contractEvent")},on:{changeGroup:t.changeGroup}}),t._v(" "),e("div",{staticClass:"module-wrapper"},[e("div",{staticClass:"search-part"},[e("div",{staticStyle:{display:"flex"}},[e("el-button",{staticClass:"search-part-left-btn",attrs:{type:"primary"},on:{click:t.addContractEvent}},[t._v(t._s(t.$t("table.addContractEvent")))])],1)]),t._v(" "),e("div",{staticClass:"search-table"},[e("el-table",{directives:[{name:"loading",rawName:"v-loading",value:t.loading,expression:"loading"}],attrs:{data:t.eventList}},[t._l(t.eventHead,(function(n){return e("el-table-column",{key:n.enName,attrs:{label:n.name,"show-overflow-tooltip":"",align:"center"},scopedSlots:t._u([{key:"default",fn:function(r){return[e("span",[t._v(t._s(r.row[n.enName]))])]}}],null,!0)})})),t._v(" "),e("el-table-column",{attrs:{label:t.$t("table.actions"),width:"100"},scopedSlots:t._u([{key:"default",fn:function(n){return[e("el-button",{attrs:{type:"text",size:"mini"},on:{click:function(e){return t.checkEvent(n.row)}}},[t._v(t._s(t.$t("title.check")))]),t._v(" "),e("el-button",{attrs:{type:"text",size:"mini"},on:{click:function(e){return t.deleteEvent(n.row)}}},[t._v(t._s(t.$t("title.detele")))])]}}])})],2),t._v(" "),e("el-pagination",{staticClass:"page",attrs:{"current-page":t.currentPage,"page-sizes":[10,20,30,50],"page-size":t.pageSize,layout:"total, sizes, prev, pager, next, jumper",total:t.total},on:{"size-change":t.handleSizeChange,"current-change":t.handleCurrentChange}})],1)]),t._v(" "),e("el-dialog",{staticClass:"send-dialog",attrs:{title:t.$t("table.addContractEvent"),visible:t.creatContractEventVisible,width:"550px",center:""},on:{"update:visible":function(e){t.creatContractEventVisible=e}}},[e("contract-event-dialog",{on:{success:t.success,close:t.close}})],1),t._v(" "),t.checkBlockEventVisible?e("el-dialog",{staticClass:"send-dialog",attrs:{title:t.$t("table.blockEventInfo"),visible:t.checkBlockEventVisible,width:"850px",center:""},on:{"update:visible":function(e){t.checkBlockEventVisible=e}}},[e("el-table",{attrs:{data:t.eventDetail}},[e("el-table-column",{attrs:{"show-overflow-tooltip":"",property:"appId",label:t.$t("table.appId")}}),t._v(" "),e("el-table-column",{attrs:{"show-overflow-tooltip":"",property:"exchangeName",label:t.$t("table.exchangeName")}}),t._v(" "),e("el-table-column",{attrs:{"show-overflow-tooltip":"",property:"queueName",label:t.$t("table.queueName")}}),t._v(" "),e("el-table-column",{attrs:{"show-overflow-tooltip":"",property:"contractAbi",label:t.$t("table.contractAbi")}}),t._v(" "),e("el-table-column",{attrs:{"show-overflow-tooltip":"",property:"contractAddress",label:t.$t("table.contractAddress")}}),t._v(" "),e("el-table-column",{attrs:{"show-overflow-tooltip":"",property:"fromBlock",label:t.$t("table.fromBlock")}}),t._v(" "),e("el-table-column",{attrs:{"show-overflow-tooltip":"",property:"toBlock",label:t.$t("table.toBlock")}}),t._v(" "),e("el-table-column",{attrs:{"show-overflow-tooltip":"",property:"topicList",label:t.$t("table.topicList")}})],1)],1):t._e()],1)},a=[];r._withStripped=!0},RzEn:function(t,e,n){"use strict";n.r(e);var r=n("Etf8"),a=n("jSs/");for(var o in a)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return a[t]}))}(o);var i=n("KHd+"),s=Object(i.a)(a.default,r.a,r.b,!1,null,"73cc1046",null);e.default=s.exports},"S/TQ":function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return a}));var r=function(){var t=this,e=t._self._c;return e("div",{directives:[{name:"loading",rawName:"v-loading",value:t.loading,expression:"loading"}],staticClass:"contract-content"},[e("v-content-head",{attrs:{headTitle:t.$t("route.contractManagementQ"),headSubTitle:t.$t("route.contractIDE")},on:{changeGroup:t.changeGroup}}),t._v(" "),e("div",{staticClass:"code-menu-wrapper",style:{width:t.menuWidth+"px"}},[e("v-menu",{directives:[{name:"show",rawName:"v-show",value:t.menuHide,expression:"menuHide"}],ref:"menu",on:{change:function(e){return t.changeCode(e)}},scopedSlots:t._u([{key:"footer",fn:function(){return[e("div",{staticClass:"version-selector"},[e("el-select",{attrs:{placeholder:"请选择"},on:{change:t.onchangeLoadVersion},model:{value:t.version,callback:function(e){t.version=e},expression:"version"}},t._l(t.versionList,(function(t){return e("el-option",{key:t.versionId,attrs:{label:t.solcName,value:t.solcName}})})),1)],1)]},proxy:!0}])}),t._v(" "),e("div",{staticClass:"move",on:{mousedown:function(e){return t.dragDetailWeight(e)}}})],1),t._v(" "),e("div",{class:[t.menuHide?"code-detail-reset-wrapper":"code-detail-wrapper"],style:{width:t.contentWidth}},[e("v-code",{attrs:{changeStyle:t.changeWidth,data:t.contractData,show:t.showCode},on:{add:function(e){return t.add(e)},compile:function(e){return t.compile(e)},deploy:function(e){return t.deploy(e)}}})],1)],1)},a=[];r._withStripped=!0},"ST+L":function(t,e,n){"use strict";n.r(e);var r=n("I5MT"),a=n.n(r);for(var o in r)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return r[t]}))}(o);e.default=a.a},SZ7m:function(t,e,n){"use strict";function r(t,e){for(var n=[],r={},a=0;an.parts.length&&(r.parts.length=n.parts.length)}else{var i=[];for(a=0;a i[data-v-5c3f7907] {\r\n color: #fff;\r\n font-size: 14px;\n}\n.move[data-v-5c3f7907] {\r\n position: absolute;\r\n width: 100%;\r\n height: 3px;\r\n top: 0;\r\n left: 0;\r\n z-index: 9999;\r\n cursor: s-resize;\n}\n.contract-info-title i[data-v-5c3f7907] {\r\n padding-left: 8px;\r\n font-size: 10px;\r\n color: #aeb1b5;\n}\n.contract-info-list[data-v-5c3f7907] {\r\n padding: 5px 20px;\r\n width: 90%;\r\n margin: 0 auto;\r\n border: 1px solid #242e42;\r\n border-bottom: none;\r\n position: relative;\n}\n.contract-info-list-title[data-v-5c3f7907] {\r\n display: inline-block;\r\n width: 105px;\r\n vertical-align: top;\n}\n.contract-info-list-title[data-v-5c3f7907]::after {\r\n display: block;\r\n content: "";\r\n clear: both;\n}\n.ace-editor[data-v-5c3f7907] {\r\n height: 100% !important;\r\n position: relative;\r\n text-align: left;\r\n letter-spacing: 0.1px;\r\n text-rendering: geometricPrecision;\r\n -webkit-font-feature-settings: "liga" 0;\r\n font-feature-settings: "liga" 0;\r\n -webkit-font-variant-ligatures: none;\r\n font-variant-ligatures: none;\r\n font: 14px / normal "Monaco", "Menlo", "Ubuntu Mono", "Consolas",\r\n "source-code-pro", monospace !important;\n}\n.ace-editor[data-v-5c3f7907] .ace_print-margin {\r\n display: none;\r\n text-rendering: geometricPrecision;\n}\n.infoHide[data-v-5c3f7907] {\r\n height: calc(100% - 50px);\n}\n.code-spread[data-v-5c3f7907] {\r\n position: absolute;\r\n width: 33px;\r\n height: 33px;\r\n line-height: 33px;\r\n left: 412px;\r\n bottom: 0;\r\n border: 1px solid #242e42;\r\n color: #aeb1b5;\r\n background-color: #fff;\r\n text-align: center;\r\n z-index: 9999;\r\n cursor: pointer;\n}\n.code-spread i[data-v-5c3f7907] {\r\n font-size: 12px;\n}\n.contract-info[data-v-5c3f7907] {\r\n background-color: #2b374d;\r\n color: #fff;\n}\n.titleActive[data-v-5c3f7907] {\r\n padding-left: 40px;\n}\n.send-dialog[data-v-5c3f7907] .el-dialog--center .el-dialog__body {\r\n padding: 10px 25px 15px;\n}\n.send-dialog[data-v-5c3f7907] .el-dialog__footer {\r\n padding-top: 0;\n}\n.send-btn[data-v-5c3f7907] .el-button {\r\n padding: 9px 16px;\n}\n.send-dialog[data-v-5c3f7907] .el-input__inner {\r\n height: 32px;\r\n line-height: 32px;\n}\n.showText[data-v-5c3f7907] {\r\n display: inline-block;\r\n width: calc(100% - 120px);\r\n word-wrap: break-word;\r\n max-height: 73px;\r\n overflow: hidden;\n}\n.copy-public-key[data-v-5c3f7907] {\r\n float: right;\n}\n.visibility-wrapper[data-v-5c3f7907] {\r\n position: absolute;\r\n bottom: 10px;\n}\n.contract-info[data-v-5c3f7907] .markdown-body {\r\n color: #9da2ab;\n}\n.contract-info[data-v-5c3f7907] .v-note-wrapper {\r\n border: inherit\n}\r\n',""])},UA6h:function(t,e,n){var r=n("iSIJ");r.__esModule&&(r=r.default),"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals);(0,n("SZ7m").default)("3f4ebbea",r,!1,{})},UFKq:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,a=n("gDS+"),o=(r=a)&&r.__esModule?r:{default:r},i=n("mHBk");e.default={name:"editor",props:["data","show","input","editorOutput","sendConstant"],data:function(){return{editorShow:!0,aceEditor:null,transationData:this.data||null,modePath:"ace/mode/solidity",editorDialog:this.show||!1,eventSHow:!1,eventTitle:this.$t("text.txnEncodeBtn"),funcData:"",methodId:"",abiType:"",inputData:[],decodeData:"",showDecode:!0,buttonTitle:this.$t("text.txnDecodeBtn"),typesArray:this.input,inputButtonShow:!0,editorHeight:"",outputType:null}},mounted:function(){this.editorHeight=.75*document.body.offsetHeight,"0x"==this.transationData.output?this.inputButtonShow=!1:this.inputButtonShow=!0,this.transationData&&this.transationData.logs&&this.decodeEvent(),this.sendConstant||this.typesArray&&"0x"!=this.transationData.output&&this.decodefun()},methods:{abc:function(t){return Array.isArray(t)?"["+t.toString()+"]":t},modelClose:function(){this.$emit("close")},decodeOutput:function(){this.showDecode?(this.showDecode=!1,this.buttonTitle=this.$t("text.txnEncodeBtn")):(this.showDecode=!0,this.buttonTitle=this.$t("text.txnDecodeBtn"))},decodefun:function(){var t=this,e=n("qrFr");if(this.typesArray){if(this.typesArray.inputs.forEach((function(e,n){e&&n180&&(e.menuWidth=r+a)},document.onmouseup=function(t){document.onmousemove=null,document.onmouseup=null}},changeCode:function(t){this.contractData=t,this.showCode=!0},uploadLoading:function(t){this.loading=t}}}},"Yf/9":function(t,e,n){"use strict";n("FcO5")},Yhgt:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n("ProS");n("75ce"),n("Ynxi"),n("AH3D"),n("zRKj"),n("0o9m"),n("Cm0C"),e.default={name:"charts",props:["type","id","data","transactionDataArr","size"],data:function(){return{chartId:this.id,chartData:this.data,chartTransactionDataArr:this.transactionDataArr,chartSize:this.size,chart:""}},watch:{data:function(){this.chartId=this.id,this.chartData=this.data,this.chartTransactionDataArr=this.transactionDataArr,this.chartSize=this.size,this.chartShow()}},mounted:function(){this.$nextTick((function(){this.chartShow()}))},beforeDestroy:function(){window.onresize=null,this.chart&&this.chart.dispose()},methods:{chartShow:function(){var t=this;this.chart=r.init(document.getElementById(this.chartId));this.chartData.length;var e={legend:{height:this.chartSize.height,width:this.chartSize.width},tooltip:{show:!0,trigger:"axis",formatter:function(t){return''+t[0].name+'
      交易量:'+t[0].value+"笔
      "}},grid:{left:43,right:33,top:7,bottom:40},series:[{type:"line",symbolSize:1,itemStyle:{normal:{color:"#2878ff",lineStyle:{color:"#2878ff"}}},data:this.chartTransactionDataArr}],xAxis:{data:this.chartData,axisLine:{lineStyle:{color:"#e9e9e9",width:2}},axisLabel:{interval:1,textStyle:{color:"rgba(0,14,31,0.62)"}}},yAxis:{axisLine:{show:!1,lineStyle:{color:"#333"}},splitLine:{show:!0,lineStyle:{type:"dashed",color:"#e9e9e9"}},axisTick:{show:!1},axisLabel:{formatter:function(t,e){return t>1e3&&t<1e6?t/1e3+"K":t>1e6||1e6===t?t/1e6+"M":t+""},textStyle:{color:"rgba(0,14,31,0.62)"}}}};this.chart.setOption(e,!0),window.onresize=function(){t.chart.resize()}}}}},YoL1:function(t,e,n){(t.exports=n("JPst")(!1)).push([t.i,"\n.search-item[data-v-7480fc39] {\r\n display: inline-block;\r\n margin-bottom: 8px;\r\n margin-right: 12px;\n}\n.search-item > span[data-v-7480fc39] {\r\n margin-right: 5px;\r\n color: #f6f6f6;\n}\n.metric-content[data-v-7480fc39] {\r\n min-height: 700px;\n}\n.metric-split-line[data-v-7480fc39] {\r\n margin: 0 30px;\r\n border-top: 2px dashed #f6f6f6;\n}\r\n",""])},YvXZ:function(t,e,n){var r=n("UkLH");r.__esModule&&(r=r.default),"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals);(0,n("SZ7m").default)("90f13e12",r,!1,{})},Z0co:function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return a}));var r=function(){var t=this,e=t._self._c;return e("div",{staticClass:"contract-menu",staticStyle:{position:"relative",height:"100%"}},[e("div",{staticClass:"contract-menu-header"}),t._v(" "),e("div",{staticClass:"contract-menu-content"},[e("ul",t._l(t.folderList,(function(n){return e("li",{key:n.contractId,attrs:{id:n.contractFolderId}},[e("div",{staticClass:"contract-folder",attrs:{id:n.folderId}},[e("i",{staticClass:"cursor-pointer font-16 no-chase",class:n.folderIcon,attrs:{id:n.folderId},on:{click:function(e){return t.open(n)}}}),t._v(" "),e("i",{staticClass:"wbs-icon-folder cursor-pointer no-chase",staticStyle:{color:"#d19650"},attrs:{id:n.folderId},on:{click:function(e){return t.open(n)},contextmenu:function(e){return e.preventDefault(),t.handle(e,n)}}}),t._v(" "),e("span",{staticClass:"no-chase cursor-pointer",class:{colorActive:n.contractActive},attrs:{id:n.folderId},on:{click:function(e){return t.open(n)},contextmenu:function(e){return e.preventDefault(),t.handle(e,n)}}},[t._v(t._s(n.contractFolderName))]),t._v(" "),e("div",{directives:[{name:"show",rawName:"v-show",value:n.handleModel,expression:"item.handleModel"},{name:"Clickoutside",rawName:"v-Clickoutside",value:t.checkNull,expression:"checkNull"}],staticClass:"contract-menu-handle",style:{top:t.clentY,left:t.clentX}},[e("ul",[e("li",{staticClass:"contract-menu-handle-list",on:{click:function(e){return e.preventDefault(),t.exportToIde(n,"folder")}}},[t._v(t._s(t.$t("contracts.exportToIde")))])])]),t._v(" "),e("br"),t._v(" "),n.folderActive?e("ul",{directives:[{name:"Clickoutside",rawName:"v-Clickoutside",value:t.checkNull,expression:"checkNull"}],staticStyle:{"padding-left":"15px"}},t._l(n.child,(function(n){return e("li",{key:n.contractId,staticClass:"contract-file"},[e("i",{staticClass:"wbs-icon-file",on:{click:function(e){return t.select(n)}}}),t._v(" "),e("span",{class:{colorActive:n.contractActive},attrs:{id:n.contractId},on:{click:function(e){return t.select(n)},contextmenu:function(e){return e.preventDefault(),t.handleFile(e,n)}}},[t._v(t._s(n.contractName)+" ")]),t._v(" "),e("div",{directives:[{name:"show",rawName:"v-show",value:n.handleFile,expression:"list.handleFile"}],staticClass:"contract-menu-handle",style:{top:t.clentY,left:t.clentX}},[e("ul",[e("li",{staticClass:"contract-menu-handle-list",on:{click:function(e){return t.exportToIde(n,"file")}}},[t._v(t._s(t.$t("contracts.exportToIde")))])])])])})),0):t._e()])])})),0)]),t._v(" "),t.folderVisible?e("folder",{attrs:{folderVisible:t.folderVisible},on:{close:t.close,success:function(e){return t.success(e)}}}):t._e(),t._v(" "),t.fileVisible?e("file",{attrs:{fileVisible:t.fileVisible},on:{closeFile:t.closeFile,successFile:function(e){return t.successFile(e)}}}):t._e()],1)},a=[];r._withStripped=!0},ZK9r:function(t,e,n){"use strict";n("15Yw")},Zjsy:function(t,e,n){"use strict";n.r(e);var r=n("i11r"),a=n("yO30");for(var o in a)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return a[t]}))}(o);n("/MBm");var i=n("KHd+"),s=Object(i.a)(a.default,r.a,r.b,!1,null,"b4f136a6",null);e.default=s.exports},ZqOP:function(t,e,n){var r=n("VFrN");r.__esModule&&(r=r.default),"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals);(0,n("SZ7m").default)("14d12f49",r,!1,{})},ZwWB:function(t,e,n){"use strict";n("g4+7")},ZxHh:function(t,e,n){"use strict";n("ZqOP")},a5fh:function(t,e,n){"use strict";n("wvJY")},aPSD:function(t,e,n){"use strict";n.r(e);var r=n("dMFp"),a=n("Un3B");for(var o in a)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return a[t]}))}(o);var i=n("KHd+"),s=Object(i.a)(a.default,r.a,r.b,!1,null,"4c6e9846",null);e.default=s.exports},aeGo:function(t,e,n){"use strict";n("Dg7K")},bECx:function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return a}));var r=function(){var t=this,e=t._self._c;return e("el-radio-group",{attrs:{size:"mini"},on:{change:t.handleSetLanguage},model:{value:t.currentLang,callback:function(e){t.currentLang=e},expression:"currentLang"}},[e("el-radio-button",{attrs:{label:"zh"}},[t._v(" 中  文 ")]),t._v(" "),e("el-radio-button",{attrs:{label:"en"}},[t._v("English")])],1)},a=[];r._withStripped=!0},bGug:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,a=n("mHBk"),o=n("n+5x"),i=(r=o)&&r.__esModule?r:{default:r};e.default={name:"mgmtCns",components:{"v-createUser":i.default},props:["mgmtCnsItem"],data:function(){return{userName:"",userList:[],userId:null,placeholderText:this.$t("placeholder.selectedAccountAddress"),loading:!1,cnsList:[],cnsVersionFrom:{userId:"",cnsVersion:this.mgmtCnsItem.version,cnsName:this.mgmtCnsItem.contractName},reqVersion:"",creatUserNameVisible:!1,isShowAddUserBtn:!1}},computed:{cnsHead:function(){return[{enName:"contractName",name:this.$t("table.contractName"),tdWidth:"115px"},{enName:"version",name:this.$t("table.cnsVersion"),tdWidth:"200px"},{enName:"contractAddress",name:this.$t("table.contractAddress"),tdWidth:""}]},rules:function(){return{cnsVersion:[{required:!0,message:this.$t("dialog.cnsVersion"),trigger:"change"},{pattern:/^[A-Za-z0-9.]+$/,message:this.$t("dialog.cnsVersionPattern"),trigger:"blur"}],userId:[{required:!0,message:this.$t("placeholder.selectedAccountAddress"),trigger:"change"}],cnsName:[{required:!0,message:this.$t("dialog.cnsName"),trigger:"change"},{pattern:/^[A-Za-z0-9.]+$/,message:this.$t("dialog.cnsVersionPattern"),trigger:"blur"}]}}},watch:{},created:function(){},mounted:function(){this.getLocalKeyStores(),this.queryFindCnsInfo()},methods:{getLocalKeyStores:function(){var t=this;(0,a.queryLocalKeyStores)().then((function(e){var n=e.data;200===e.status?(t.userList=n,t.userList.length?t.cnsVersionFrom.userId=t.userList[0].address:(t.isShowAddUserBtn=!0,t.placeholderText=t.$t("placeholder.selectedNoUser"))):t.$message({type:"error",message:t.$chooseLang(e.data.code)})}))},changeId:function(){},submit:function(){var t=this;this.$refs.cnsVersionFrom.validate((function(e){if(!e)return!1;if(t.reqVersion){if(t.reqVersion==t.cnsVersionFrom.cnsVersion)return void t.$message({type:"warning",message:t.$t("text.registered")});t.$confirm(t.$t("text.updateRegister"),{type:"warning"}).then((function(){t.queryRegisterCns()})).catch((function(){}))}else t.queryRegisterCns()}))},queryRegisterCns:function(){var t=this,e={groupId:localStorage.getItem("groupId"),contractName:this.mgmtCnsItem.contractName,version:this.cnsVersionFrom.cnsVersion,abiInfo:JSON.parse(this.mgmtCnsItem.contractAbi),userAddress:this.cnsVersionFrom.userId,saveEnabled:!0,contractAddress:this.mgmtCnsItem.contractAddress,cnsName:this.cnsVersionFrom.cnsName,contractPath:this.mgmtCnsItem.contractPath};(0,a.registerCns)(e).then((function(e){e.data;200===e.status?(t.$message({type:"success",message:t.$t("text.registerSuccess")}),t.$emit("mgmtCnsResultSuccess")):t.$message({message:t.$chooseLang(e.data.code),type:"error"})}))},modelClose:function(){this.$emit("mgmtCnsResultClose")},queryFindCnsInfo:function(){var t=this,e={groupId:localStorage.getItem("groupId"),contractAddress:this.mgmtCnsItem.contractAddress};(0,a.findCnsInfo)(e).then((function(e){var n=e.data;200===e.status?n.data&&(t.reqVersion=n.data.version,t.cnsVersionFrom.cnsVersion=n.data.version):t.$message({type:"error",message:t.$chooseLang(e.data.code)})}))},createUser:function(){this.creatUserNameVisible=!0},createUserClose:function(t){this.userList=t,this.userList.length>0&&(this.isShowAddUserBtn=!1,this.cnsVersionFrom.userId=this.userList[0].address),this.creatUserNameVisible=!1}}}},bN7y:function(t,e,n){var r=n("OrPJ");r.__esModule&&(r=r.default),"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals);(0,n("SZ7m").default)("39a1423e",r,!1,{})},bVKU:function(t,e,n){"use strict";n.r(e);var r=n("JIbE"),a=n("V7wH");for(var o in a)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return a[t]}))}(o);n("HJl6");var i=n("KHd+"),s=Object(i.a)(a.default,r.a,r.b,!1,null,"1a96fd1b",null);e.default=s.exports},"bo/2":function(t,e,n){"use strict";n("Q/tH")},bpu7:function(t,e,n){(t.exports=n("JPst")(!1)).push([t.i,'\n.module-wrapper[data-v-fe3c822a] {\r\n height: 100%;\r\n background-color: #20293c;\n}\n.search-part[data-v-fe3c822a] {\r\n padding: 30px 41px 18px 42px;\r\n overflow: hidden;\n}\n.search-part[data-v-fe3c822a]::after {\r\n display: block;\r\n content: "";\r\n clear: both;\n}\n.search-part-left[data-v-fe3c822a] {\r\n float: left;\n}\n.search-part-left-btn[data-v-fe3c822a] {\r\n border-radius: 20px;\n}\n.search-part-right[data-v-fe3c822a] {\r\n float: right;\n}\n.search-table[data-v-fe3c822a] {\r\n /* padding: 0 40px 0 41px; */\r\n background-color: #2f3b52;\n}\n.search-table-content[data-v-fe3c822a] {\r\n width: 100%;\r\n background-color: #20293c;\n}\n.search-table-content[data-v-fe3c822a] td,\r\n.search-table-content[data-v-fe3c822a] th {\r\n padding: 8px 0;\r\n font-size: 12px;\n}\n.search-table-content[data-v-fe3c822a] th {\r\n color: #8598b0;\n}\n.search-table-content[data-v-fe3c822a] td {\r\n color: #737a86;\n}\n.search-table-detail[data-v-fe3c822a] {\r\n width: 91%;\r\n float: right;\n}\n.search-table-detail[data-v-fe3c822a] td,\r\n.search-table-detail[data-v-fe3c822a] th {\r\n color: #737a86;\n}\n.input-with-select[data-v-fe3c822a] .el-input__inner {\r\n border-top-left-radius: 20px;\r\n border-bottom-left-radius: 20px;\r\n border: 1px solid #eaedf3;\r\n -webkit-box-shadow: 0 3px 11px 0 rgba(159, 166, 189, 0.11);\r\n box-shadow: 0 3px 11px 0 rgba(159, 166, 189, 0.11);\n}\n.input-with-select[data-v-fe3c822a] .el-input-group__append {\r\n border-top-right-radius: 20px;\r\n border-bottom-right-radius: 20px;\r\n -webkit-box-shadow: 0 3px 11px 0 rgba(159, 166, 189, 0.11);\r\n box-shadow: 0 3px 11px 0 rgba(159, 166, 189, 0.11);\n}\n.input-with-select[data-v-fe3c822a] .el-button {\r\n border: 1px solid #1f83e7;\r\n border-radius: inherit;\r\n background: #1f83e7;\r\n color: #fff;\n}\r\n',""])},bxjF:function(t,e,n){"use strict";n.r(e);var r=n("HiQf"),a=n("BSt/");for(var o in a)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return a[t]}))}(o);n("Mn8C");var i=n("KHd+"),s=Object(i.a)(a.default,r.a,r.b,!1,null,"34d17682",null);e.default=s.exports},cAlG:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=c(n("qse9")),a=c(n("35fe")),o=n("mHBk"),i=n("DgvE"),s=c(n("9e9m"));function c(t){return t&&t.__esModule?t:{default:t}}e.default={name:"hostMetric",components:{"v-content-head":r.default,"v-metric-chart":a.default},data:function(){return{sureing:!1,loading:!1,loadingInit:!1,switchBtn:!1,currentDate:(0,i.format)((new Date).getTime(),"yyyy-MM-dd"),contrastDate:null,startEndTime:[new Date((new Date).toLocaleDateString()),new Date],timeGranularity:60,pickerOption:{disabledDate:function(t){return t.getTime()>Date.now()-864e4}},chartParam:{gap:60,beginDate:(0,i.format)((new Date).getTime(),"yyyy-MM-dd")+"T"+(0,i.format)(new Date((new Date).toLocaleDateString()).getTime(),"HH:mm:ss"),endDate:(0,i.format)((new Date).getTime(),"yyyy-MM-dd")+"T"+(0,i.format)((new Date).getTime(),"HH:mm:ss"),contrastBeginDate:"",contrastEndDate:"",group:localStorage.getItem("groupId")||null},reloadNum:1,metricData:[]}},beforeDestroy:function(){s.default.$off("changeGroup"),s.default.$off("chooselanguage")},mounted:function(){var t=this,e=localStorage.getItem("groupId");s.default.$on("changeGroup",(function(n){t.changeGroup(n),e=n})),s.default.$on("chooselanguage",(function(n){t.changeGroup(e)})),this.chartParam.group&&this.getChartData(),this.getPerformanceSwitch()},methods:{changeGroup:function(t){this.chartParam.group=t,this.getChartData()},changeCurrentDate:function(t){this.startEndTime=[new Date((new Date).toLocaleDateString()),new Date]},changeContrastDate:function(t){},getChartData:function(){var t=this;1===this.reloadNum&&(this.loadingInit=!0),this.loading=!0,this.sureing=!0;var e;e=this.chartParam,(0,o.metricInfo)({},e).then((function(e){t.loadingInit=!1,t.loading=!1,t.sureing=!1;var n=e.data,r=e.status;e.statusText;if(200===r){if(n[0].data.lineDataList.timestampList.length>0)var a=n[0].data.lineDataList.timestampList||[];else a=n[0].data.contrastDataList.timestampList||[];t.metricData=n,t.metricData.forEach((function(e){e.gap=t.timeGranularity,"cpu"===e.metricType?(e.metricName="CPU",e.metricUint=t.$t("text.usage"),e.metricU="%"):"memory"===e.metricType?(e.metricName=t.$t("text.memory"),e.metricUint=t.$t("text.usage"),e.metricU="%"):"disk"===e.metricType?(e.metricName=t.$t("text.hardDisk"),e.metricUint=t.$t("text.usage"),e.metricU="%"):"txbps"===e.metricType?(e.metricName=t.$t("text.uplink"),e.metricUint=t.$t("text.bandwidth"),e.metricU="KB/s"):"rxbps"===e.metricType&&(e.metricName=t.$t("text.downlink"),e.metricUint=t.$t("text.bandwidth"),e.metricU="KB/s"),t.chartParam.contrastBeginDate?e.data.contrastDataList.contractDataShow=!0:e.data.contrastDataList.contractDataShow=!1,e.data.contrastDataList.timestampList=a,e.data.lineDataList.timestampList=a})),t.reloadNum++}else t.$message({type:"error",message:t.$chooseLang(e.data.code)})})).catch((function(e){t.$message({type:"error",message:e.data||t.$t("text.systemError")})}))},confirmParam:function(){this.timeParam(),this.getChartData()},timeParam:function(){var t=(0,i.format)(new Date(this.startEndTime[0]).getTime(),"HH:mm:ss"),e=(0,i.format)(new Date(this.startEndTime[1]).getTime(),"HH:mm:ss");this.currentDate&&(this.beginDate=this.currentDate+"T"+t,this.endDate=this.currentDate+"T"+e),this.currentDate&&this.contrastDate&&(this.beginDate=this.currentDate+"T"+t,this.endDate=this.currentDate+"T"+e,this.contrastBeginDate=this.contrastDate+"T"+t,this.contrastEndDate=this.contrastDate+"T"+e),this.contrastDate||(this.beginDate=this.currentDate+"T"+t,this.endDate=this.currentDate+"T"+e,this.contrastBeginDate="",this.contrastEndDate=""),this.chartParam.beginDate=this.beginDate,this.chartParam.endDate=this.endDate,this.chartParam.contrastBeginDate=this.contrastBeginDate,this.chartParam.contrastEndDate=this.contrastEndDate,this.chartParam.gap=this.timeGranularity,this.chartParam.groupId=localStorage.getItem("groupId")?localStorage.getItem("groupId"):"1"},getPerformanceSwitch:function(){var t=this;(0,o.performanceSwitch)().then((function(e){var n=e.data;0===n.code&&(t.switchBtn=n.data)}))},changeToggle:function(t){var e=this,n={enable:t};(0,o.postPerformanceSwitch)(n).then((function(t){0===t.data.code?e.$message({type:"success",message:e.$t("text.toggleSuccessed")}):e.$message({type:"error",message:e.$t("text.toggleFailed")})}))}}}},cD3H:function(t,e,n){"use strict";n("bN7y")},cMD2:function(t,e,n){"use strict";n("gX80")},"cr+O":function(t,e,n){(t.exports=n("JPst")(!1)).push([t.i,"\n.hash-title[data-v-308a2766] {\r\n border-bottom: 1px solid;\r\n padding: 10px 0;\n}\n.text-title[data-v-308a2766] {\r\n padding: 10px 0;\n}\n.hash-wrapper[data-v-308a2766] {\r\n padding: 0px 20px;\n}\n.result[data-v-308a2766] {\r\n /* padding: 5px;\r\n border: 1px solid; */\n}\n.copy-hash[data-v-308a2766] {\r\n position: absolute;\r\n z-index: 1;\r\n right: 10px;\n}\n.upload-file-hash[data-v-308a2766] {\r\n width: 450px;\n}\n.upload-file-hash[data-v-308a2766] .el-upload-dragger {\r\n background-color: unset;\r\n height: 130px;\r\n width: 440px;\r\n border-radius: 4px;\n}\n.upload-file-hash[data-v-308a2766] .el-upload-dragger .el-upload__text {\r\n color: #fff;\n}\n.upload-file-hash[data-v-308a2766] .el-upload-dragger .el-icon-upload {\r\n margin-top: 16px;\n}\n.el-upload__tip[data-v-308a2766] {\r\n color: #fff;\n}\r\n",""])},cxox:function(t,e,n){var r=n("MbGR");r.__esModule&&(r=r.default),"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals);(0,n("SZ7m").default)("9d9a75f6",r,!1,{})},d7gD:function(t,e,n){"use strict";n.r(e);var r=n("3AjV"),a=n("VGbE");for(var o in a)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return a[t]}))}(o);n("ZK9r");var i=n("KHd+"),s=Object(i.a)(a.default,r.a,r.b,!1,null,"6c9907a8",null);e.default=s.exports},dCna:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default={name:"Loading",data:function(){return{visible:!1}}}},dDFR:function(t,e,n){"use strict";n("+XKn")},dMFp:function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return a}));var r=function(){var t=this,e=t._self._c;return e("div",[e("el-form",{ref:"abiForm",attrs:{model:t.abiForm,rules:t.rules,"label-width":"90px"}},[e("el-form-item",{attrs:{label:t.$t("contracts.contractAbi"),prop:"contractAbi"}},[e("el-input",{attrs:{type:"textarea",autosize:{minRows:4}},model:{value:t.abiForm.contractAbi,callback:function(e){t.$set(t.abiForm,"contractAbi",e)},expression:"abiForm.contractAbi"}})],1)],1),t._v(" "),e("div",{staticClass:"text-right send-btn"},[e("el-button",{on:{click:t.close}},[t._v(t._s(this.$t("dialog.cancel")))]),t._v(" "),e("el-button",{attrs:{type:"primary",loading:t.loading},on:{click:function(e){return t.submit("abiForm")}}},[t._v(t._s(this.$t("dialog.confirm")))])],1)],1)},a=[];r._withStripped=!0},dUtL:function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return a}));var r=function(){var t=this,e=t._self._c;return e("div",{staticClass:"send-wrapper"},[t.sendErrorMessage?e("div",{staticClass:"font-color-ed5454 text-center"},[t._v("\n "+t._s(t.sendErrorMessage)+"\n ")]):t._e(),t._v(" "),e("div",{staticClass:"send-body"},[e("div",{staticClass:"send-item"},[e("span",{staticClass:"send-item-title"},[t._v(t._s(t.$t("text.contractName"))+":")]),t._v(" "),e("span",{staticClass:"font-color-fff"},[t._v(t._s(t.data.contractName))])]),t._v(" "),e("div",{staticClass:"send-item"},[e("span",{staticClass:"send-item-title"},[t._v("CNS:")]),t._v(" "),e("el-checkbox",{on:{change:t.changeCns},model:{value:t.isCNS,callback:function(e){t.isCNS=e},expression:"isCNS"}})],1),t._v(" "),t.isCNS?e("div",{staticClass:"send-item"},[e("span",{staticClass:"send-item-title"}),t._v(" "),e("el-input",{staticStyle:{width:"400px"},attrs:{placeholder:t.$t("dialog.cnsName")},model:{value:t.cnsName,callback:function(e){t.cnsName="string"==typeof e?e.trim():e},expression:"cnsName"}},[e("template",{slot:"prepend"},[e("span",[t._v("name")])])],2)],1):t._e(),t._v(" "),t.isCNS?e("div",{staticClass:"send-item"},[e("span",{staticClass:"send-item-title"}),t._v(" "),e("el-input",{staticStyle:{width:"400px"},attrs:{placeholder:t.$t("dialog.cnsVersion")},model:{value:t.cnsVersion,callback:function(e){t.cnsVersion="string"==typeof e?e.trim():e},expression:"cnsVersion"}},[e("template",{slot:"prepend"},[e("span",[t._v("version")])])],2)],1):e("div",{staticClass:"send-item"},[e("span",{staticClass:"send-item-title"},[t._v(t._s(t.$t("text.contractAddress"))+":")]),t._v(" "),e("el-input",{staticStyle:{width:"400px","margin-bottom":"4px"},attrs:{placeholder:t.$t("placeholder.selectedContractAddress")},model:{value:t.contractAddress,callback:function(e){t.contractAddress="string"==typeof e?e.trim():e},expression:"contractAddress"}}),t._v(" "),e("el-tooltip",{staticClass:"item",attrs:{effect:"dark",content:t.$t("title.txnContractAddExp"),placement:"top-start"}},[e("i",{staticClass:"el-icon-info"})])],1),t._v(" "),e("div",{staticClass:"send-item"},[e("span",{staticClass:"send-item-title"},[t._v(t._s(t.$t("text.sendFunction"))+":")]),t._v(" "),t.funcList.length>0?e("el-select",{staticStyle:{width:"400px"},attrs:{filterable:"",placeholder:t.$t("placeholder.functionName"),"popper-class":"func-name"},on:{change:t.changeFunc},model:{value:t.transation.funcName,callback:function(e){t.$set(t.transation,"funcName",e)},expression:"transation.funcName"}},t._l(t.funcList,(function(n){return e("el-option",{key:n.funcId,attrs:{label:n.name,value:n.funcId}},[e("span",{class:{"func-color":!n.constant}},[t._v(t._s(n.name))])])})),1):t._e()],1),t._v(" "),e("div",{directives:[{name:"show",rawName:"v-show",value:t.showUser,expression:"showUser"}],staticClass:"send-item"},[e("span",{staticClass:"send-item-title"},[t._v(t._s(t.$t("text.acountAddress"))+":")]),t._v(" "),e("el-select",{staticClass:"plac-op",staticStyle:{width:"400px","margin-bottom":"4px"},on:{change:t.changeId},model:{value:t.transation.userName,callback:function(e){t.$set(t.transation,"userName",e)},expression:"transation.userName"}},t._l(t.userList,(function(n,r){return e("el-option",{key:n.address,attrs:{label:n.address,value:n.address}},[e("span",{staticClass:"font-12"},[t._v(t._s(n.userName))]),t._v(" "),e("span",[t._v(t._s(n.address))])])})),1),t._v(" "),e("span",{directives:[{name:"show",rawName:"v-show",value:t.userId,expression:"userId"}],staticClass:"user-explain"},[t._v("\n ("),e("span",{staticClass:"ellipsis-info"},[t._v(t._s(t.userId))]),t._v(")\n ")]),t._v(" "),t.isShowAddUserBtn?e("el-button",{attrs:{type:"text",size:"mini"},on:{click:function(e){return t.createUser()}}},[t._v(t._s(t.$t("privateKey.addUser")))]):t._e()],1),t._v(" "),e("div",{directives:[{name:"show",rawName:"v-show",value:t.form.pramasData.length,expression:"form.pramasData.length"}],staticClass:"send-item"},[e("el-form",{directives:[{name:"show",rawName:"v-show",value:t.form.pramasData.length,expression:"form.pramasData.length"}],ref:"sendTransation",staticClass:"send-item",staticStyle:{"line-height":"25px"},attrs:{rules:t.rules,model:t.form}},[e("span",{staticClass:"send-item-title",staticStyle:{position:"relative",top:"5px"}},[t._v(t._s(this.$t("contracts.params"))+":")]),t._v(" "),t._l(t.form.pramasData,(function(n,r){return e("div",{key:r},[e("el-form-item",{staticStyle:{position:"relative",top:"-25px"},attrs:{prop:"pramasData."+r+".value",rules:t.rules[n.type]}},[e("span",{staticClass:"send-item-title"}),t._v(" "),"string"==n.type?[e("el-input",{staticStyle:{width:"400px"},attrs:{placeholder:n.type},model:{value:n.value,callback:function(e){t.$set(n,"value",e)},expression:"item.value"}},[e("template",{slot:"prepend"},[e("span",{},[t._v(t._s(n.name))])])],2)]:[e("el-input",{staticStyle:{width:"400px"},attrs:{placeholder:t.placeholderText(n.type)},model:{value:n.value,callback:function(e){t.$set(n,"value",e)},expression:"item.value"}},[e("template",{slot:"prepend"},[e("span",{},[t._v(t._s(n.name))])])],2)]],2)],1)})),t._v(" "),e("div",{staticStyle:{padding:"5px 0 0 28px",color:"'gray'"}},[e("i",{staticClass:"el-icon-info",staticStyle:{"padding-right":"4px"}}),t._v(t._s(this.$t("contracts.paramsInfo"))+"\n ")])],2)],1)]),t._v(" "),e("div",{staticClass:"text-right send-btn java-class"},[e("el-button",{on:{click:t.close}},[t._v(t._s(t.$t("dialog.cancel")))]),t._v(" "),e("el-button",{attrs:{type:"primary",disabled:t.buttonClick},on:{click:function(e){return t.submit("transation")}}},[t._v(t._s(t.$t("dialog.confirm")))])],1),t._v(" "),e("el-dialog",{staticClass:"dialog-wrapper",attrs:{title:t.$t("dialog.addUsername"),visible:t.creatUserNameVisible,"before-close":t.createUserClose,width:"640px",center:!0,"append-to-body":!0},on:{"update:visible":function(e){t.creatUserNameVisible=e}}},[e("v-createUser",{on:{close:t.createUserClose}})],1)],1)},a=[];r._withStripped=!0},deVT:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n("mHBk");e.default={name:"File",props:["fileVisible"],computed:{rules:function(){return{folderName:[{required:!0,message:this.$t("dialog.pleaseType")+" "+this.$t("dialog.folderName"),trigger:"blur"}]}}},data:function(){return{options:[],folderFrom:{folderName:"/"},dialogVisible:this.fileVisible,pathList:[]}},mounted:function(){this.getContractPaths()},methods:{getContractPaths:function(){var t=this;(0,r.getContractPathList)(localStorage.getItem("groupId")).then((function(e){if(200==e.status){var n=e.data;t.options=n.filter((function(t){return"template"!=t.contractPath}))}else t.$message({type:"error",message:t.$chooseLang(e.data.code)})}))},submit:function(t){var e=this;this.$refs[t].validate((function(t){if(!t)return!1;e.$emit("successFile",e.folderFrom.folderName)}))},close:function(){this.$emit("closeFile")}}}},eBRm:function(t,e,n){"use strict";n("8fEG")},eBs1:function(t,e,n){"use strict";n.r(e);var r=n("VzaX"),a=n("TpmN");for(var o in a)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return a[t]}))}(o);n("NsGE");var i=n("KHd+"),s=Object(i.a)(a.default,r.a,r.b,!1,null,"52c249a4",null);e.default=s.exports},eED2:function(t,e,n){"use strict";n.r(e);var r=n("DXUC"),a=n("B2fc");for(var o in a)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return a[t]}))}(o);n("Kq0C");var i=n("KHd+"),s=Object(i.a)(a.default,r.a,r.b,!1,null,"308a2766",null);e.default=s.exports},"eL/V":function(t,e,n){"use strict";n("YvXZ")},eRRQ:function(t,e,n){(t.exports=n("JPst")(!1)).push([t.i,"\n.footer-button[data-v-b2f3be20] {\r\n margin-right: 10px;\n}\n.dialog-footer[data-v-b2f3be20] {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-orient: horizontal;\r\n -webkit-box-direction: normal;\r\n -ms-flex-direction: row;\r\n flex-direction: row;\r\n -webkit-box-pack: end;\r\n -ms-flex-pack: end;\r\n justify-content: flex-end;\r\n padding-bottom: 20px;\n}\r\n",""])},eYDS:function(t,e,n){var r=n("skcv");r.__esModule&&(r=r.default),"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals);(0,n("SZ7m").default)("1026fb7c",r,!1,{})},ewDi:function(t,e,n){"use strict";n.r(e);var r=n("yyv2"),a=n.n(r);for(var o in r)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return r[t]}))}(o);e.default=a.a},f4y5:function(t,e,n){(t.exports=n("JPst")(!1)).push([t.i,"\n.demo-ruleForm[data-v-59e04747] .el-form-item__label {\r\n padding: 0 8px 0 0;\n}\r\n",""])},fADq:function(t,e,n){"use strict";n.r(e);var r=n("qwyl"),a=n("NUIJ");for(var o in a)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return a[t]}))}(o);n("a5fh");var i=n("KHd+"),s=Object(i.a)(a.default,r.a,r.b,!1,null,null,null);e.default=s.exports},fAfT:function(t,e,n){"use strict";n("NwLZ")},fK5m:function(t,e,n){"use strict";n.r(e);var r=n("VT2P"),a=n.n(r);for(var o in r)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return r[t]}))}(o);e.default=a.a},fv8I:function(t,e,n){"use strict";n("cxox")},"g4+7":function(t,e,n){var r=n("jXDK");r.__esModule&&(r=r.default),"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals);(0,n("SZ7m").default)("2d2a30c4",r,!1,{})},gGQn:function(t,e,n){"use strict";n.r(e);var r=n("+zty"),a=n.n(r);for(var o in r)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return r[t]}))}(o);e.default=a.a},gJbQ:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=u(n("qse9")),a=u(n("rVQ9")),o=u(n("WPEk")),i=n("mHBk"),s=u(n("NFKh")),c=u(n("9e9m")),l=u(n("n+5x"));function u(t){return t&&t.__esModule?t:{default:t}}n("BN7u");e.default={name:"onlineTools",components:{contentHead:r.default,parseAbi:a.default,eventCheck:o.default,"v-createUser":l.default},props:{},data:function(){return{inputFile:null,inputText:"",inputHash:"",inputSignHash:"",inputSign:"",signKey:["v","r","s"],algorithm:"sha256",algorithmOpt:[{label:"sha256",value:"sha256"}],privateKeyList:[],privateKey:"",loading:!1,activeName:"first",fileList:[],fileType:"file-first",placeholderText:this.$t("placeholder.selectedAccountAddress"),encryptionId:localStorage.getItem("encryptionId"),groupId:localStorage.getItem("groupId"),creatUserNameVisible:!1,isShowAddUserBtn:!1}},computed:{},watch:{$route:function(){this.queryInit()}},created:function(){},beforeDestroy:function(){c.default.$off("changeGroup")},mounted:function(){var t=this;c.default.$on("changeGroup",(function(e){t.changeGroup(e)})),this.queryInit(),this.getLocalKeyStores()},methods:{changeGroup:function(t){this.groupId=t,this.$refs.event.$emit("changeGroup",t)},queryInit:function(){this.$route.query.type?this.activeName="fourth":this.activeName="first"},encryption:function(){if("sha256"===this.algorithm){var t=void 0;if(this.inputText){t=this.inputText;var e=s.default.SHA256(t).toString();this.inputHash="0x"+e}else if(this.inputFile){var n=(t=this.inputFile).toString();this.inputHash="0x"+n}else{t="";var r=s.default.SHA256(t).toString();this.inputHash="0x"+r}}},getLocalKeyStores:function(){var t=this;(0,i.queryLocalKeyStores)().then((function(e){var n=e.data;200===e.status?(t.privateKeyList=n,t.privateKeyList.length?t.privateKey=t.privateKeyList[0].address:(t.isShowAddUserBtn=!0,t.placeholderText=t.$t("placeholder.selectedNoUser"))):t.$message({type:"error",message:t.$chooseLang(e.data.code)})}))},querySignHash:function(){var t=this;if(this.privateKey&&this.inputSignHash){this.loading=!0;var e={hash:this.inputSignHash,user:this.privateKey};(0,i.signHash)(e).then((function(e){t.loading=!1;e.data;200===e.status?t.inputSign=e.data:t.$message({type:"error",message:t.$chooseLang(e.data.code)})}))}},copyKey:function(t){var e=this;(t=t.toString())?this.$copyText(t).then((function(t){e.$message({type:"success",showClose:!0,message:e.$t("notice.copySuccessfully"),duration:2e3})})):this.$message({type:"fail",showClose:!0,message:this.$t("notice.copyFailure"),duration:2e3})},uploadCrt:function(t){var e=t.file,n=new FileReader,r=this,a=File.prototype.mozSlice||File.prototype.webkitSlice||File.prototype.slice,o=Math.ceil(e.size/6291456),i=0,c=s.default.algo.SHA256.create(),l=6291456*i,u=l+6291456>=e.size?e.size:l+6291456;n.readAsArrayBuffer(a.call(e,l,u)),n.onload=function(t){if(2==t.target.readyState){var s=t.target.result,l=r.arrayBufferToWordArray(s);if(c.update(l),s=null,l=null,(i+=1)=e.size?e.size:u+6291456;n.readAsArrayBuffer(a.call(e,u,d))}}},n.onloadend=function(){e=null;var t=c.finalize();r.inputFile=t,c=null,a=null,n=null,t=null}},arrayBufferToWordArray:function(t){for(var e=new Uint8Array(t),n=[],r=0;r0&&(this.isShowAddUserBtn=!1,this.privateKey=this.privateKeyList[0].address),this.creatUserNameVisible=!1}}}},gX80:function(t,e,n){var r=n("f4y5");r.__esModule&&(r=r.default),"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals);(0,n("SZ7m").default)("8f27bdee",r,!1,{})},gipY:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=h(n("qse9")),a=h(n("bxjF")),o=h(n("PvbA")),i=n("mHBk"),s=n("DgvE"),c=h(n("oYx3")),l=h(n("g+15")),u=h(n("VdDh")),d=h(n("6OVR")),f=h(n("2ule")),p=h(n("9e9m"));function h(t){return t&&t.__esModule?t:{default:t}}e.default={name:"home",components:{"v-content-head":r.default,"v-chart":o.default,"v-transaction-detail":a.default},data:function(){return{blockImg:l.default,nodesImg:u.default,transationImg:d.default,transationPeddingImg:f.default,loadingNumber:!1,loadingCharts:!1,loadingNodes:!1,loadingBlock:!1,loadingTransaction:!1,searchLoading:!1,numberFormat:s.numberFormat,format:s.format,detailsList:[{label:"节点个数",name:"nodeCount",value:0,color:"#8693f3"},{label:"合约块高",name:"contractCount",value:0,color:"#bc8dee"},{label:"区块数量",name:"latestBlock",value:0,color:"#ffa897"},{label:"交易数量",name:"transactionCount",value:0,color:"#89c3f8"}],networkDetails:null,chartStatistics:{show:!1,date:[],dataArr:[],chartSize:{width:0,height:0}},reloadNumber:!0,networkId:localStorage.getItem("networkId"),nodeHead:[{enName:"orgName",name:"机构名称"},{enName:"nodeName",name:"节点名称"},{enName:"blockNumber",name:"块高"},{enName:"pbftView",name:"pbftView"},{enName:"nodeIp",name:"ip"},{enName:"p2pPort",name:"p2p端口"},{enName:"rpcPort",name:"rpc端口"},{enName:"nodeActive",name:"状态"}],nodeData:[],blockData:[],transactionList:[],keyword:"",reqQuery:{},getRowKeys:function(t){return t.transHash},overviewBlockNumber:"",overviewNodesNumber:"",overviewTxNumber:"",overviewPendingTxNumber:"",group:localStorage.getItem("groupId"),searchMap:{}}},beforeDestroy:function(){p.default.$off("changeGroup")},mounted:function(){var t=this;p.default.$on("changeGroup",(function(e){t.changeGroup(e)})),this.networkId=localStorage.getItem("networkId"),this.group?this.getAllOverview():this.getGroup(),this.$nextTick((function(){}))},destroyed:function(){},methods:{getGroup:function(){var t=this;(0,i.queryGroup)().then((function(e){var n=e.data;if(200===e.status&&n&&n.length&&n&&n.length){var r=n.sort((function(t,e){return t-e}));t.group=r[0],t.getAllOverview()}})).catch((function(e){console.log(e),t.$message({type:"error",message:e.data||t.$t("text.systemError")})}))},getAllOverview:function(){this.getBlockNumber(),this.getNodesNumber(),this.getTxNumber(),this.getPendingTxNumber()},changeGroup:function(t){this.group=t,this.blockData=[],this.transactionList=[],this.keyword="",this.getBlockNumber(),this.getNodesNumber(),this.getTxNumber(),this.getPendingTxNumber()},getBlockNumber:function(){var t=this;(0,i.queryBlockNumber)(this.group).then((function(e){var n=e.data;200===e.status?t.overviewBlockNumber=n:t.$message({type:"error",message:t.$chooseLang(e.data.code)})})).catch((function(e){t.$message({type:"error",message:e.data||t.$t("text.systemError")})}))},getNodesNumber:function(){var t=this;(0,i.queryNodesNumber)(this.group).then((function(e){var n=e.data;200===e.status?t.overviewNodesNumber=n.length:t.$message({type:"error",message:t.$chooseLang(e.data.code)})})).catch((function(e){t.$message({type:"error",message:e.data||t.$t("text.systemError")})}))},getTxNumber:function(){var t=this;(0,i.queryTxNumber)(this.group).then((function(e){var n=e.data;200===e.status?t.overviewTxNumber=n.txSum:t.$message({type:"error",message:t.$chooseLang(e.data.code)})})).catch((function(e){t.$message({type:"error",message:e.data||t.$t("text.systemError")})}))},getPendingTxNumber:function(){var t=this;(0,i.queryPendingTxNumber)(this.group).then((function(e){var n=e.data;200===e.status?t.overviewPendingTxNumber=n:t.$message({type:"error",message:t.$chooseLang(e.data.code)})})).catch((function(e){t.$message({type:"error",message:e.data||t.$t("text.systemError")})}))},getHomeSearch:function(){var t=this,e={input:this.keyword};(0,i.queryHomeSearch)(this.group,e).then((function(e){var n=e.data;if(200===e.status)if(n){var r=[];t.blockData=[],t.transactionList=[],66==t.keyword.length?(t.searchMap=n,r.push({blockNumber:n.blockNumber,transHash:n.hash}),t.transactionList=r):(t.searchMap=n,r.push({blockNumber:n.number,pkHash:n.hash}),t.blockData=r)}else t.blockData=[],t.transactionList=[],t.$message({type:"error",message:t.$t("text.searchEmpty")});else t.blockData=[],t.transactionList=[],t.$message({type:"error",message:t.$chooseLang(e.data.code)})})).catch((function(e){t.$message({type:"error",message:e.data||t.$t("text.systemError")})}))},getNetworkDetails:function(){var t=this;this.loadingNumber=!0;var e=this.networkId;(0,i.getNetworkStatistics)(e).then((function(e){t.loadingNumber=!1,0===e.data.code?t.detailsList.forEach((function(t,n){for(var r in e.data.data)t.name===r&&(t.value=e.data.data[r])})):t.$message({type:"error",message:t.$chooseLang(e.data.code)})})).catch((function(e){t.$message({type:"error",message:e.data||t.$t("text.systemError")})}))},getChart:function(){var t=this;this.loadingCharts=!0,this.chartStatistics.show=!1,this.chartStatistics.date=[],this.chartStatistics.dataArr=[];var e=localStorage.getItem("networkId");(0,i.getChartData)(e).then((function(e){if(t.loadingCharts=!1,0===e.data.code){for(var n=(0,s.changWeek)(e.data.data),r=0;r p[data-v-6c9907a8] {\r\n padding: 26px 18px 0px 22px;\r\n border-bottom: 1px solid #f2f2f2;\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-pack: justify;\r\n -ms-flex-pack: justify;\r\n justify-content: space-between;\n}\n.overview-title[data-v-6c9907a8] {\r\n font-size: 15px;\r\n color: #2e384d;\r\n padding-bottom: 22px;\r\n border-bottom: 2px solid #2e384d;\n}\n.overview-more[data-v-6c9907a8] {\r\n font-size: 14px;\r\n color: #2fcdd1;\n}\n.block-item[data-v-6c9907a8] {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-orient: horizontal;\r\n -webkit-box-direction: normal;\r\n -ms-flex-flow: row;\r\n flex-flow: row;\r\n -webkit-box-pack: justify;\r\n -ms-flex-pack: justify;\r\n justify-content: space-between;\r\n padding-bottom: 10px;\n}\n.block-amount[data-v-6c9907a8] {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-orient: vertical;\r\n -webkit-box-direction: normal;\r\n -ms-flex-flow: column;\r\n flex-flow: column;\n}\n.overview-item-base[data-v-6c9907a8] {\r\n margin: 26px 18px 30px 22px;\n}\n.block-miner[data-v-6c9907a8] {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-orient: horizontal;\r\n -webkit-box-direction: normal;\r\n -ms-flex-flow: row wrap;\r\n flex-flow: row wrap;\n}\n.block-miner > p[data-v-6c9907a8] {\r\n max-width: 80px;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n margin-left: 10px;\n}\n.trans-hash[data-v-6c9907a8] {\r\n max-width: 300px;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\n}\n.node-ip[data-v-6c9907a8] {\r\n color: #2d5f9e;\n}\n.block-table-content[data-v-6c9907a8] .el-table__row {\r\n cursor: pointer;\n}\r\n',""])},ixuh:function(t,e,n){(t.exports=n("JPst")(!1)).push([t.i,"\n.addAbi .el-form-item[data-v-72492dcc] {\r\n margin-bottom: 24px;\n}\r\n",""])},jE9Z:function(t,e,n){"use strict";function r(t,e){for(var n in e)t[n]=e[n];return t}n.r(e),n.d(e,"NavigationFailureType",(function(){return bt})),n.d(e,"RouterLink",(function(){return K})),n.d(e,"RouterView",(function(){return x})),n.d(e,"START_LOCATION",(function(){return m})),n.d(e,"default",(function(){return Ut})),n.d(e,"isNavigationFailure",(function(){return kt})),n.d(e,"version",(function(){return Jt}));var a=/[!'()*]/g,o=function(t){return"%"+t.charCodeAt(0).toString(16)},i=/%2C/g,s=function(t){return encodeURIComponent(t).replace(a,o).replace(i,",")};function c(t){try{return decodeURIComponent(t)}catch(t){0}return t}var l=function(t){return null==t||"object"==typeof t?t:String(t)};function u(t){var e={};return(t=t.trim().replace(/^(\?|#|&)/,""))?(t.split("&").forEach((function(t){var n=t.replace(/\+/g," ").split("="),r=c(n.shift()),a=n.length>0?c(n.join("=")):null;void 0===e[r]?e[r]=a:Array.isArray(e[r])?e[r].push(a):e[r]=[e[r],a]})),e):e}function d(t){var e=t?Object.keys(t).map((function(e){var n=t[e];if(void 0===n)return"";if(null===n)return s(e);if(Array.isArray(n)){var r=[];return n.forEach((function(t){void 0!==t&&(null===t?r.push(s(e)):r.push(s(e)+"="+s(t)))})),r.join("&")}return s(e)+"="+s(n)})).filter((function(t){return t.length>0})).join("&"):null;return e?"?"+e:""}var f=/\/?$/;function p(t,e,n,r){var a=r&&r.options.stringifyQuery,o=e.query||{};try{o=h(o)}catch(t){}var i={name:e.name||t&&t.name,meta:t&&t.meta||{},path:e.path||"/",hash:e.hash||"",query:o,params:e.params||{},fullPath:g(e,a),matched:t?v(t):[]};return n&&(i.redirectedFrom=g(n,a)),Object.freeze(i)}function h(t){if(Array.isArray(t))return t.map(h);if(t&&"object"==typeof t){var e={};for(var n in t)e[n]=h(t[n]);return e}return t}var m=p(null,{path:"/"});function v(t){for(var e=[];t;)e.unshift(t),t=t.parent;return e}function g(t,e){var n=t.path,r=t.query;void 0===r&&(r={});var a=t.hash;return void 0===a&&(a=""),(n||"/")+(e||d)(r)+a}function b(t,e,n){return e===m?t===e:!!e&&(t.path&&e.path?t.path.replace(f,"")===e.path.replace(f,"")&&(n||t.hash===e.hash&&y(t.query,e.query)):!(!t.name||!e.name)&&(t.name===e.name&&(n||t.hash===e.hash&&y(t.query,e.query)&&y(t.params,e.params))))}function y(t,e){if(void 0===t&&(t={}),void 0===e&&(e={}),!t||!e)return t===e;var n=Object.keys(t).sort(),r=Object.keys(e).sort();return n.length===r.length&&n.every((function(n,a){var o=t[n];if(r[a]!==n)return!1;var i=e[n];return null==o||null==i?o===i:"object"==typeof o&&"object"==typeof i?y(o,i):String(o)===String(i)}))}function _(t){for(var e=0;e=0&&(e=t.slice(r),t=t.slice(0,r));var a=t.indexOf("?");return a>=0&&(n=t.slice(a+1),t=t.slice(0,a)),{path:t,query:n,hash:e}}(o.path||""),f=e&&e.path||"/",p=d.path?$(d.path,f,n||o.append):f,h=function(t,e,n){void 0===e&&(e={});var r,a=n||u;try{r=a(t||"")}catch(t){r={}}for(var o in e){var i=e[o];r[o]=Array.isArray(i)?i.map(l):l(i)}return r}(d.query,o.query,a&&a.options.parseQuery),m=o.hash||d.hash;return m&&"#"!==m.charAt(0)&&(m="#"+m),{_normalized:!0,path:p,query:h,hash:m}}var q,U=function(){},K={name:"RouterLink",props:{to:{type:[String,Object],required:!0},tag:{type:String,default:"a"},custom:Boolean,exact:Boolean,exactPath:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,ariaCurrentValue:{type:String,default:"page"},event:{type:[String,Array],default:"click"}},render:function(t){var e=this,n=this.$router,a=this.$route,o=n.resolve(this.to,a,this.append),i=o.location,s=o.route,c=o.href,l={},u=n.options.linkActiveClass,d=n.options.linkExactActiveClass,h=null==u?"router-link-active":u,m=null==d?"router-link-exact-active":d,v=null==this.activeClass?h:this.activeClass,g=null==this.exactActiveClass?m:this.exactActiveClass,y=s.redirectedFrom?p(null,z(s.redirectedFrom),null,n):s;l[g]=b(a,y,this.exactPath),l[v]=this.exact||this.exactPath?l[g]:function(t,e){return 0===t.path.replace(f,"/").indexOf(e.path.replace(f,"/"))&&(!e.hash||t.hash===e.hash)&&function(t,e){for(var n in e)if(!(n in t))return!1;return!0}(t.query,e.query)}(a,y);var _=l[g]?this.ariaCurrentValue:null,x=function(t){J(t)&&(e.replace?n.replace(i,U):n.push(i,U))},w={click:J};Array.isArray(this.event)?this.event.forEach((function(t){w[t]=x})):w[this.event]=x;var $={class:l},k=!this.$scopedSlots.$hasNormal&&this.$scopedSlots.default&&this.$scopedSlots.default({href:c,route:s,navigate:x,isActive:l[v],isExactActive:l[g]});if(k){if(1===k.length)return k[0];if(k.length>1||!k.length)return 0===k.length?t():t("span",{},k)}if("a"===this.tag)$.on=w,$.attrs={href:c,"aria-current":_};else{var C=function t(e){var n;if(e)for(var r=0;r-1&&(s.params[f]=n.params[f]);return s.path=H(u.path,s.params),c(u,s,i)}if(s.path){s.params={};for(var p=0;p-1}function kt(t,e){return $t(t)&&t._isRouter&&(null==e||t.type===e)}function Ct(t,e,n){var r=function(a){a>=t.length?n():t[a]?e(t[a],(function(){r(a+1)})):r(a+1)};r(0)}function St(t){return function(e,n,r){var a=!1,o=0,i=null;Nt(t,(function(t,e,n,s){if("function"==typeof t&&void 0===t.cid){a=!0,o++;var c,l=At((function(e){var a;((a=e).__esModule||Et&&"Module"===a[Symbol.toStringTag])&&(e=e.default),t.resolved="function"==typeof e?e:q.extend(e),n.components[s]=e,--o<=0&&r()})),u=At((function(t){var e="Failed to resolve async component "+s+": "+t;i||(i=$t(t)?t:new Error(e),r(i))}));try{c=t(l,u)}catch(t){u(t)}if(c)if("function"==typeof c.then)c.then(l,u);else{var d=c.component;d&&"function"==typeof d.then&&d.then(l,u)}}})),a||r()}}function Nt(t,e){return It(t.map((function(t){return Object.keys(t.components).map((function(n){return e(t.components[n],t.instances[n],t,n)}))})))}function It(t){return Array.prototype.concat.apply([],t)}var Et="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;function At(t){var e=!1;return function(){for(var n=[],r=arguments.length;r--;)n[r]=arguments[r];if(!e)return e=!0,t.apply(this,n)}}var Lt=function(t,e){this.router=t,this.base=function(t){if(!t)if(G){var e=document.querySelector("base");t=(t=e&&e.getAttribute("href")||"/").replace(/^https?:\/\/[^\/]+/,"")}else t="/";"/"!==t.charAt(0)&&(t="/"+t);return t.replace(/\/$/,"")}(e),this.current=m,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[],this.listeners=[]};function Ft(t,e,n,r){var a=Nt(t,(function(t,r,a,o){var i=function(t,e){"function"!=typeof t&&(t=q.extend(t));return t.options[e]}(t,e);if(i)return Array.isArray(i)?i.map((function(t){return n(t,r,a,o)})):n(i,r,a,o)}));return It(r?a.reverse():a)}function Ot(t,e){if(e)return function(){return t.apply(e,arguments)}}Lt.prototype.listen=function(t){this.cb=t},Lt.prototype.onReady=function(t,e){this.ready?t():(this.readyCbs.push(t),e&&this.readyErrorCbs.push(e))},Lt.prototype.onError=function(t){this.errorCbs.push(t)},Lt.prototype.transitionTo=function(t,e,n){var r,a=this;try{r=this.router.match(t,this.current)}catch(t){throw this.errorCbs.forEach((function(e){e(t)})),t}var o=this.current;this.confirmTransition(r,(function(){a.updateRoute(r),e&&e(r),a.ensureURL(),a.router.afterHooks.forEach((function(t){t&&t(r,o)})),a.ready||(a.ready=!0,a.readyCbs.forEach((function(t){t(r)})))}),(function(t){n&&n(t),t&&!a.ready&&(kt(t,bt.redirected)&&o===m||(a.ready=!0,a.readyErrorCbs.forEach((function(e){e(t)}))))}))},Lt.prototype.confirmTransition=function(t,e,n){var r=this,a=this.current;this.pending=t;var o,i,s=function(t){!kt(t)&&$t(t)&&(r.errorCbs.length?r.errorCbs.forEach((function(e){e(t)})):console.error(t)),n&&n(t)},c=t.matched.length-1,l=a.matched.length-1;if(b(t,a)&&c===l&&t.matched[c]===a.matched[l])return this.ensureURL(),t.hash&&it(this.router,a,t,!1),s(((i=xt(o=a,t,bt.duplicated,'Avoided redundant navigation to current location: "'+o.fullPath+'".')).name="NavigationDuplicated",i));var u=function(t,e){var n,r=Math.max(t.length,e.length);for(n=0;n0)){var e=this.router,n=e.options.scrollBehavior,r=mt&&n;r&&this.listeners.push(ot());var a=function(){var n=t.current,a=Tt(t.base);t.current===m&&a===t._startLocation||t.transitionTo(a,(function(t){r&&it(e,t,n,!0)}))};window.addEventListener("popstate",a),this.listeners.push((function(){window.removeEventListener("popstate",a)}))}},e.prototype.go=function(t){window.history.go(t)},e.prototype.push=function(t,e,n){var r=this,a=this.current;this.transitionTo(t,(function(t){vt(k(r.base+t.fullPath)),it(r.router,t,a,!1),e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this,a=this.current;this.transitionTo(t,(function(t){gt(k(r.base+t.fullPath)),it(r.router,t,a,!1),e&&e(t)}),n)},e.prototype.ensureURL=function(t){if(Tt(this.base)!==this.current.fullPath){var e=k(this.base+this.current.fullPath);t?vt(e):gt(e)}},e.prototype.getCurrentLocation=function(){return Tt(this.base)},e}(Lt);function Tt(t){var e=window.location.pathname,n=e.toLowerCase(),r=t.toLowerCase();return!t||n!==r&&0!==n.indexOf(k(r+"/"))||(e=e.slice(t.length)),(e||"/")+window.location.search+window.location.hash}var jt=function(t){function e(e,n,r){t.call(this,e,n),r&&function(t){var e=Tt(t);if(!/^\/#/.test(e))return window.location.replace(k(t+"/#"+e)),!0}(this.base)||Pt()}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.setupListeners=function(){var t=this;if(!(this.listeners.length>0)){var e=this.router.options.scrollBehavior,n=mt&&e;n&&this.listeners.push(ot());var r=function(){var e=t.current;Pt()&&t.transitionTo(Mt(),(function(r){n&&it(t.router,r,e,!0),mt||Rt(r.fullPath)}))},a=mt?"popstate":"hashchange";window.addEventListener(a,r),this.listeners.push((function(){window.removeEventListener(a,r)}))}},e.prototype.push=function(t,e,n){var r=this,a=this.current;this.transitionTo(t,(function(t){Vt(t.fullPath),it(r.router,t,a,!1),e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this,a=this.current;this.transitionTo(t,(function(t){Rt(t.fullPath),it(r.router,t,a,!1),e&&e(t)}),n)},e.prototype.go=function(t){window.history.go(t)},e.prototype.ensureURL=function(t){var e=this.current.fullPath;Mt()!==e&&(t?Vt(e):Rt(e))},e.prototype.getCurrentLocation=function(){return Mt()},e}(Lt);function Pt(){var t=Mt();return"/"===t.charAt(0)||(Rt("/"+t),!1)}function Mt(){var t=window.location.href,e=t.indexOf("#");return e<0?"":t=t.slice(e+1)}function Bt(t){var e=window.location.href,n=e.indexOf("#");return(n>=0?e.slice(0,n):e)+"#"+t}function Vt(t){mt?vt(Bt(t)):window.location.hash=t}function Rt(t){mt?gt(Bt(t)):window.location.replace(Bt(t))}var Ht=function(t){function e(e,n){t.call(this,e,n),this.stack=[],this.index=-1}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.push=function(t,e,n){var r=this;this.transitionTo(t,(function(t){r.stack=r.stack.slice(0,r.index+1).concat(t),r.index++,e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this;this.transitionTo(t,(function(t){r.stack=r.stack.slice(0,r.index).concat(t),e&&e(t)}),n)},e.prototype.go=function(t){var e=this,n=this.index+t;if(!(n<0||n>=this.stack.length)){var r=this.stack[n];this.confirmTransition(r,(function(){var t=e.current;e.index=n,e.updateRoute(r),e.router.afterHooks.forEach((function(e){e&&e(r,t)}))}),(function(t){kt(t,bt.duplicated)&&(e.index=n)}))}},e.prototype.getCurrentLocation=function(){var t=this.stack[this.stack.length-1];return t?t.fullPath:"/"},e.prototype.ensureURL=function(){},e}(Lt),zt=function(t){void 0===t&&(t={}),this.app=null,this.apps=[],this.options=t,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=X(t.routes||[],this);var e=t.mode||"hash";switch(this.fallback="history"===e&&!mt&&!1!==t.fallback,this.fallback&&(e="hash"),G||(e="abstract"),this.mode=e,e){case"history":this.history=new Dt(this,t.base);break;case"hash":this.history=new jt(this,t.base,this.fallback);break;case"abstract":this.history=new Ht(this,t.base);break;default:0}},qt={currentRoute:{configurable:!0}};zt.prototype.match=function(t,e,n){return this.matcher.match(t,e,n)},qt.currentRoute.get=function(){return this.history&&this.history.current},zt.prototype.init=function(t){var e=this;if(this.apps.push(t),t.$once("hook:destroyed",(function(){var n=e.apps.indexOf(t);n>-1&&e.apps.splice(n,1),e.app===t&&(e.app=e.apps[0]||null),e.app||e.history.teardown()})),!this.app){this.app=t;var n=this.history;if(n instanceof Dt||n instanceof jt){var r=function(t){n.setupListeners(),function(t){var r=n.current,a=e.options.scrollBehavior;mt&&a&&"fullPath"in t&&it(e,t,r,!1)}(t)};n.transitionTo(n.getCurrentLocation(),r,r)}n.listen((function(t){e.apps.forEach((function(e){e._route=t}))}))}},zt.prototype.beforeEach=function(t){return Kt(this.beforeHooks,t)},zt.prototype.beforeResolve=function(t){return Kt(this.resolveHooks,t)},zt.prototype.afterEach=function(t){return Kt(this.afterHooks,t)},zt.prototype.onReady=function(t,e){this.history.onReady(t,e)},zt.prototype.onError=function(t){this.history.onError(t)},zt.prototype.push=function(t,e,n){var r=this;if(!e&&!n&&"undefined"!=typeof Promise)return new Promise((function(e,n){r.history.push(t,e,n)}));this.history.push(t,e,n)},zt.prototype.replace=function(t,e,n){var r=this;if(!e&&!n&&"undefined"!=typeof Promise)return new Promise((function(e,n){r.history.replace(t,e,n)}));this.history.replace(t,e,n)},zt.prototype.go=function(t){this.history.go(t)},zt.prototype.back=function(){this.go(-1)},zt.prototype.forward=function(){this.go(1)},zt.prototype.getMatchedComponents=function(t){var e=t?t.matched?t:this.resolve(t).route:this.currentRoute;return e?[].concat.apply([],e.matched.map((function(t){return Object.keys(t.components).map((function(e){return t.components[e]}))}))):[]},zt.prototype.resolve=function(t,e,n){var r=z(t,e=e||this.history.current,n,this),a=this.match(r,e),o=a.redirectedFrom||a.fullPath;return{location:r,route:a,href:function(t,e,n){var r="hash"===n?"#"+e:e;return t?k(t+"/"+r):r}(this.history.base,o,this.mode),normalizedTo:r,resolved:a}},zt.prototype.getRoutes=function(){return this.matcher.getRoutes()},zt.prototype.addRoute=function(t,e){this.matcher.addRoute(t,e),this.history.current!==m&&this.history.transitionTo(this.history.getCurrentLocation())},zt.prototype.addRoutes=function(t){this.matcher.addRoutes(t),this.history.current!==m&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(zt.prototype,qt);var Ut=zt;function Kt(t,e){return t.push(e),function(){var n=t.indexOf(e);n>-1&&t.splice(n,1)}}zt.install=function t(e){if(!t.installed||q!==e){t.installed=!0,q=e;var n=function(t){return void 0!==t},r=function(t,e){var r=t.$options._parentVnode;n(r)&&n(r=r.data)&&n(r=r.registerRouteInstance)&&r(t,e)};e.mixin({beforeCreate:function(){n(this.$options.router)?(this._routerRoot=this,this._router=this.$options.router,this._router.init(this),e.util.defineReactive(this,"_route",this._router.history.current)):this._routerRoot=this.$parent&&this.$parent._routerRoot||this,r(this,this)},destroyed:function(){r(this)}}),Object.defineProperty(e.prototype,"$router",{get:function(){return this._routerRoot._router}}),Object.defineProperty(e.prototype,"$route",{get:function(){return this._routerRoot._route}}),e.component("RouterView",x),e.component("RouterLink",K);var a=e.config.optionMergeStrategies;a.beforeRouteEnter=a.beforeRouteLeave=a.beforeRouteUpdate=a.created}},zt.version="3.6.5",zt.isNavigationFailure=kt,zt.NavigationFailureType=bt,zt.START_LOCATION=m,G&&window.Vue&&window.Vue.use(zt);var Jt="3.6.5"},"jF/l":function(t,e,n){"use strict";n.r(e);var r=n("+73H"),a=n.n(r);for(var o in r)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return r[t]}))}(o);e.default=a.a},jFYa:function(t,e,n){"use strict";n.r(e);var r=n("dUtL"),a=n("ST+L");for(var o in a)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return a[t]}))}(o);n("fAfT");var i=n("KHd+"),s=Object(i.a)(a.default,r.a,r.b,!1,null,"0db1b723",null);e.default=s.exports},"jSs/":function(t,e,n){"use strict";n.r(e);var r=n("o/nU"),a=n.n(r);for(var o in r)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return r[t]}))}(o);e.default=a.a},jXDK:function(t,e,n){(t.exports=n("JPst")(!1)).push([t.i,"\n.icon[data-v-9268f86e] {\r\n font-weight: bold;\n}\n.contract-menu[data-v-9268f86e] {\r\n color: #fff;\r\n background-color: #2f3b52;\n}\n.contract-menu-header[data-v-9268f86e] {\r\n width: calc(100% + 1px);\r\n height: 48px;\r\n line-height: 48px;\r\n border-bottom: 2px solid #20293c;\r\n color: #4f6178;\n}\n.contract-icon[data-v-9268f86e] {\r\n vertical-align: middle;\r\n padding-left: 10px;\r\n cursor: pointer;\r\n color: #98a7b9;\n}\n.checkContract-upload[data-v-9268f86e] {\r\n display: block;\r\n position: absolute;\r\n height: 30px;\r\n left: 0;\r\n margin-top: -30px;\r\n width: 100%;\r\n opacity: 0;\r\n z-index: 9;\r\n cursor: pointer;\n}\n.contract-file[data-v-9268f86e] {\r\n position: relative;\r\n padding-left: 25px;\n}\n.contract-folder[data-v-9268f86e] {\r\n padding-left: 5px;\n}\n.contract-file span[data-v-9268f86e] {\r\n cursor: pointer;\n}\n.contract-file i[data-v-9268f86e] {\r\n cursor: pointer;\n}\n.uploads[data-v-9268f86e] {\r\n position: absolute;\r\n width: 18px;\r\n height: 18px;\r\n left: 10px;\r\n top: 0;\r\n opacity: 0;\r\n z-index: 999;\r\n cursor: pointer;\n}\n.colorActive[data-v-9268f86e] {\r\n color: rgb(55, 238, 242);\n}\n.contract-delete[data-v-9268f86e] {\r\n padding-left: 20px;\r\n font-weight: 100;\r\n font-size: 16px;\n}\n.contract-file-handle[data-v-9268f86e] {\r\n position: absolute;\r\n width: 60px;\r\n top: 24px;\r\n padding: 10px;\r\n background-color: #fff;\r\n z-index: 9999;\r\n -webkit-box-shadow: 1px 1px 1px;\r\n box-shadow: 1px 1px 1px;\n}\n.contract-menu-content[data-v-9268f86e] {\r\n overflow: auto;\r\n height: calc(100% - 86px);\n}\n.contract-menu-content[data-v-9268f86e] .el-input__inner {\r\n width: 100px;\r\n height: 24px;\r\n line-height: 24px;\r\n padding: 0 5px;\n}\n.contract-menu-handle[data-v-9268f86e] {\r\n position: fixed;\r\n font-size: 0;\r\n width: 84px;\r\n cursor: pointer;\r\n font-size: 12px;\r\n text-align: center;\r\n background-color: #fff;\r\n z-index: 100;\n}\n.contract-menu-handle li[data-v-9268f86e] {\r\n font-size: 12px;\r\n height: 30px;\r\n line-height: 30px;\n}\n.contract-menu-handle-list[data-v-9268f86e] {\r\n cursor: pointer;\r\n color: #666;\n}\n.contract-menu-handle-list[data-v-9268f86e]:hover {\r\n color: rgb(55, 238, 242);\n}\n.solc-wrapper[data-v-9268f86e] {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-orient: horizontal;\r\n -webkit-box-direction: normal;\r\n -ms-flex-direction: row;\r\n flex-direction: row;\n}\n.solc-wrapper[data-v-9268f86e] .el-select {\r\n width: 100%;\n}\n.select-solc[data-v-9268f86e] {\r\n width: 100%;\n}\n.import-solc[data-v-9268f86e] {\r\n border: 1px solid;\r\n height: 36px;\r\n line-height: 36px;\n}\r\n",""])},jcvq:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=u(n("jWXv")),a=u(n("rfXi")),o=u(n("/f1G")),i=u(n("GQeE")),s=n("mHBk"),c=u(n("n+5x")),l=n("6lnf");function u(t){return t&&t.__esModule?t:{default:t}}var d=n("J66h").Base64;e.default={components:{"v-createUser":c.default},name:"exportProject",props:{folderList:{type:Array,default:[]},show:{type:Boolean,default:!1}},computed:{},data:function(){var t=this;return{tableData:[],dialogVisible:this.show,expands:[],getRowKeys:function(t){return t.contractPath},contractList:[],multipleSelection:[],selectDisabled:function(t,e){return!!t.contractAbi},userList:[],projectFrom:{artifactName:"demo",group:"org.example",userAddress:[],channelIp:"127.0.0.1",channelPort:""},queryPort:"",dynamicObject:{},selectedParentPath:"",multipleSelectedId:[],rules:{artifactName:[{required:!0,message:this.$t("rule.artifactName"),trigger:"blur"},{min:1,max:32,message:this.$t("rule.contractLong"),trigger:"blur"},{pattern:/^[a-zA-Z_]+([a-zA-Z_][a-zA-Z0-9_]*[_])*([a-zA-Z_][a-zA-Z0-9_]*)$/,message:this.$t("rule.contractRule"),trigger:"blur"}],group:[{required:!0,message:this.$t("rule.group"),trigger:"blur"},{min:1,max:32,message:this.$t("rule.contractLong"),trigger:"blur"},{pattern:/^[a-zA-Z_]+([a-zA-Z_][a-zA-Z0-9_]*[.])*([a-zA-Z_][a-zA-Z0-9_]*)$/,message:this.$t("rule.contractGroupRule"),trigger:"blur"}],p12Password:[{required:!0,message:this.$t("privateKey.placeholderPassword"),trigger:"blur"}],channelIp:[{required:!0,message:this.$t("rule.ipName"),trigger:"blur"},{pattern:/^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/,message:this.$t("rule.IpRule"),trigger:"blur"}],channelPort:[{validator:function(e,n,r){""===n?r(new Error(t.$t("rule.isPort"))):/^([0-9]|[1-9]\d|[1-9]\d{2}|[1-9]\d{3}|[1-5]\d{4}|6[0-4]\d{3}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])$/.test(n)?r():r(new Error(t.$t("rule.portRule")))},trigger:"change"}]},creatUserNameVisible:!1,isShowAddUserBtn:!1}},destroyed:function(){this.$store.state.exportProjectShow=!1},mounted:function(){this.getList(),this.getUserInfoData(),this.queryChannelPort()},methods:{getList:function(){var t=this;this.expands=[],this.tableData=this.folderList.map((function(t){return t.contractList=[],t})),this.expands.push(this.$store.state.selectedContracts.contractPath),this.$nextTick((function(){t.getContractList(t.$store.state.selectedContracts)}))},getUserInfoData:function(){var t=this;(0,s.queryLocalKeyStores)().then((function(e){var n=e.data;200===e.status?(t.userList=n,0==t.userList.length&&(t.isShowAddUserBtn=!0)):t.$message({type:"error",message:t.$chooseLang(e.data.code)})})).catch((function(e){t.$message({type:"error",message:e.data||t.$t("text.systemError")})}))},modelClose:function(){this.$emit("close")},handleExpand:function(t){this.getContractList(t,"ExpandEvent")},clickTable:function(t,e,n){var r=this;this.$nextTick((function(){"I"!==n.target.nodeName&&(r.$refs.refTable.toggleRowExpansion(t),r.getContractList(t,"ExpandEvent"))}))},getContractList:function(t,e){var n=this,r={groupId:localStorage.getItem("groupId"),contractPathList:[t.contractPath]};(0,s.searchContract)(r).then((function(r){if(0===r.data.code){n.contractList=r.data.data;var a=void 0;if(n.tableData.forEach((function(e,r){e.contractPath===t.contractPath&&(t.contractList=n.contractList,a=r)})),n.$set(n.tableData,a,t),!e){for(var o={},s={},c=0;c0&&n.tableData.unshift(o);for(c=0;c0&&n.tableData.unshift(s)}}else n.$message({type:"error",message:n.$chooseLang(r.data.code)})})).catch((function(t){n.$message({type:"error",message:t.data||n.$t("text.systemError")})}))},handleSelectionChange:function(t,e){var n=this,i=0;this.selectedParentPath=e.contractPath,this.multipleSelection=t,this.selectedParentPath&&(this.dynamicObject[this.selectedParentPath]=this.multipleSelection);var s=(0,o.default)(this.dynamicObject);this.multipleSelectedId=[],s.forEach((function(t){t.forEach((function(t){n.multipleSelectedId.push(t.id),t.contractAbi||(i++,(0,l.complie)(t,n))}))})),i>0&&setTimeout((function(){i=0,n.getContractList(e,!0)}),3e3),this.multipleSelectedId=(0,a.default)(new r.default(this.multipleSelectedId))},submit:function(t){var e=this;0===this.multipleSelectedId.length?this.$message({type:"error",message:this.$t("rule.checkContract"),customClass:"zZindex"}):this.$refs[t].validate((function(t){if(!t)return!1;e.export()}))},handleSelectAll:function(t){},export:function(){var t=this,e={contractIdList:this.multipleSelectedId,group:this.projectFrom.group,artifactName:this.projectFrom.artifactName,groupId:localStorage.getItem("groupId"),channelIp:this.projectFrom.channelIp,channelPort:this.projectFrom.channelPort};this.projectFrom.userAddress&&(e.userAddressList=this.projectFrom.userAddress),(0,s.exportJavaProject)(e).then((function(e){if(0===e.data.code){var n=d.toUint8Array(e.data.data.fileStreamBase64),r=new Blob([n],{type:"application/zip;charset=utf-8"}),a=e.data.data.fileName;if("download"in document.createElement("a")){var o=document.createElement("a");o.download=a,o.style.display="none",o.href=URL.createObjectURL(r),document.body.appendChild(o),o.click(),URL.revokeObjectURL(o.href),document.body.removeChild(o)}else navigator.msSaveBlob(r,a);t.$message({type:"success",message:t.$t("text.exportSuccessed"),customClass:"zZindex"})}else t.$message({type:"error",message:t.$chooseLang(e.data.code),customClass:"zZindex"})}))},queryChannelPort:function(){var t=this;(0,s.fetchChannelPort)(localStorage.getItem("groupId")).then((function(e){var n=e.data;200===e.status?"null"==n.channelPort?t.projectFrom.channelPort="":(t.queryPort=!0,t.projectFrom.channelPort=n.channelPort):t.$message({type:"error",message:t.$chooseLang(e.data.code)})}))},checkChannelIP:function(){var t=this;if(!this.projectFrom.channelIp||!this.projectFrom.channelPort)return this.$message({message:"channelIp 和 channelPort 必填",type:"error",duration:2e3}),!1;var e={nodeIp:this.projectFrom.channelIp,channelPort:this.projectFrom.channelPort};(0,s.queryChannelIP)(e).then((function(e){0===e.data.code?e.data.data?t.$message({type:"success",message:t.$t("text.pass")}):t.$message({message:t.$t("text.no"),type:"error"}):t.$message({message:t.$chooseLang(e.data.code),type:"error",duration:2e3})}))},createUser:function(){this.creatUserNameVisible=!0},createUserClose:function(t){this.creatUserNameVisible=!1,this.userList=t,this.userList.length>0&&(this.isShowAddUserBtn=!1)}}}},jiEr:function(t,e,n){(t.exports=n("JPst")(!1)).push([t.i,'\n.search-part[data-v-8847701c]::after {\r\n display: block;\r\n content: "";\r\n clear: both;\n}\n.search-part-left-btn[data-v-8847701c] {\r\n border-radius: 20px;\n}\r\n',""])},kAJm:function(t,e,n){var r=n("3V1O");r.__esModule&&(r=r.default),"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals);(0,n("SZ7m").default)("161a2cfe",r,!1,{})},kDOY:function(t,e,n){(t.exports=n("JPst")(!1)).push([t.i,'\n.contract-content[data-v-423fc83b] {\r\n width: 100%;\r\n height: 100%;\r\n font-size: 0;\n}\n.contract-content[data-v-423fc83b]::after {\r\n display: block;\r\n content: "";\r\n clear: both;\n}\n.code-menu-wrapper[data-v-423fc83b] {\r\n float: left;\r\n position: relative;\r\n padding-left: 20px;\r\n height: calc(100% - 57px);\r\n font-size: 12px;\r\n -webkit-box-sizing: border-box;\r\n box-sizing: border-box;\n}\n.move[data-v-423fc83b] {\r\n position: absolute;\r\n top: 0;\r\n left: 98%;\r\n width: 3px;\r\n height: 100%;\r\n z-index: 9999;\r\n cursor: w-resize;\n}\n.menu-spread[data-v-423fc83b] {\r\n position: relative;\r\n width: 31px;\r\n height: 47px;\r\n line-height: 47px;\r\n border: 1px solid #e7ebf0;\r\n border-bottom: 2px solid #e7ebf0;\r\n color: #aeb1b5;\r\n background-color: #fff;\r\n text-align: center;\r\n cursor: pointer;\n}\n.menu-spread i[data-v-423fc83b] {\r\n font-size: 12px;\n}\n.code-detail-wrapper[data-v-423fc83b] {\r\n float: left;\r\n height: calc(100% - 57px);\r\n padding-right: 20px;\r\n font-size: 12px;\r\n -webkit-box-sizing: border-box;\r\n box-sizing: border-box;\r\n overflow-y: scroll;\n}\n.code-detail-reset-wrapper[data-v-423fc83b] {\r\n overflow: auto;\r\n float: left;\r\n height: calc(100% - 57px);\r\n padding-right: 20px;\r\n font-size: 12px;\r\n -webkit-box-sizing: border-box;\r\n box-sizing: border-box;\n}\n.menu-drag[data-v-423fc83b] {\r\n position: absolute;\r\n width: 36px;\r\n height: 36px;\r\n line-height: 32px;\r\n border: 1px solid #e8e8e8;\r\n left: 370px;\r\n top: 50%;\r\n background-color: #fff;\r\n cursor: pointer;\n}\n.version-selector[data-v-423fc83b] {\r\n position: absolute;\r\n top: 1px;\r\n right: 5px;\r\n z-index: 1;\r\n -webkit-box-sizing: border-box;\r\n box-sizing: border-box;\n}\n.version-selector[data-v-423fc83b] .el-select {\r\n width: 100%;\r\n max-width: 118px;\n}\r\n',""])},kEg0:function(t,e,n){"use strict";n.r(e);var r=n("5E/E"),a=n("J2XI");for(var o in a)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return a[t]}))}(o);n("eBRm");var i=n("KHd+"),s=Object(i.a)(a.default,r.a,r.b,!1,null,"1c5b619c",null);e.default=s.exports},kJtB:function(t,e,n){(t.exports=n("JPst")(!1)).push([t.i,"\n.loading-wrap[data-v-52c249a4] {\r\n position: absolute;\r\n left: 0;\r\n right: 0;\r\n top: 0;\r\n bottom: 0;\r\n background: rgba(255, 255, 255, 0.5);\n}\n.loading-box[data-v-52c249a4] {\r\n position: absolute;\r\n left: 50%;\r\n top: 50%;\r\n height: 60px;\r\n width: 60px;\r\n margin-top: -30px;\r\n margin-left: -30px;\n}\r\n",""])},kQlD:function(t,e,n){"use strict";n.r(e);var r=n("QM06"),a=n.n(r);for(var o in r)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return r[t]}))}(o);e.default=a.a},kbWe:function(t,e,n){(t.exports=n("JPst")(!1)).push([t.i,"\n.demo-ruleForm[data-v-887da9dc] .el-form-item__label {\r\n padding: 0 8px 0 0;\n}\r\n",""])},kkwt:function(t,e,n){"use strict";n.r(e);var r=n("m23K"),a=n("sckT");for(var o in a)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return a[t]}))}(o);n("A4cI");var i=n("KHd+"),s=Object(i.a)(a.default,r.a,r.b,!1,null,"72492dcc",null);e.default=s.exports},kxZ0:function(t,e,n){(t.exports=n("JPst")(!1)).push([t.i,"\n.footer-button[data-v-5b5782cb] {\r\n margin-right: 10px;\n}\n.dialog-footer[data-v-5b5782cb] {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-orient: horizontal;\r\n -webkit-box-direction: normal;\r\n -ms-flex-direction: row;\r\n flex-direction: row;\r\n -webkit-box-pack: end;\r\n -ms-flex-pack: end;\r\n justify-content: flex-end;\r\n padding-bottom: 20px;\n}\r\n",""])},kxz1:function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return a}));var r=function(){var t=this,e=t._self._c;return e("div",[e("el-dialog",{staticClass:"dialog-wrapper",attrs:{title:t.$t("title.detailsAbi"),visible:t.dialogVisible,"before-close":t.modelClose,width:"600px"},on:{"update:visible":function(e){t.dialogVisible=e}}},[e("div",[e("json-viewer",{attrs:{value:t.blcokContent,"expand-depth":5,copyable:"",sort:"",boxed:""}}),t._v(" "),t.noData?e("div",{staticStyle:{"text-align":"center"}},[t._v(t._s(t.$t("text.noData")))]):t._e()],1)])],1)},a=[];r._withStripped=!0},"lN/e":function(t,e,n){"use strict";n.r(e);var r=n("S/TQ"),a=n("zqpy");for(var o in a)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return a[t]}))}(o);n("yaKp");var i=n("KHd+"),s=Object(i.a)(a.default,r.a,r.b,!1,null,"423fc83b",null);e.default=s.exports},lo2a:function(t,e,n){"use strict";n.r(e);var r=n("FkXU"),a=n.n(r);for(var o in r)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return r[t]}))}(o);e.default=a.a},lxCx:function(t,e,n){"use strict";n("TB6b")},lz3G:function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return a}));var r=function(){var t=this,e=t._self._c;return e("div",[e("el-form",{ref:"contractEventForm",staticClass:"demo-ruleForm",attrs:{model:t.contractEventForm,rules:t.rules,"label-width":"135px"}},[e("el-form-item",{attrs:{label:t.$t("table.appId"),prop:"appId"}},[e("el-input",{staticStyle:{width:"240px"},attrs:{placeholder:t.$t("text.appId"),clearable:""},model:{value:t.contractEventForm.appId,callback:function(e){t.$set(t.contractEventForm,"appId","string"==typeof e?e.trim():e)},expression:"contractEventForm.appId"}}),t._v(" "),e("el-tooltip",{staticClass:"item",attrs:{effect:"dark",content:t.$t("text.appId"),placement:"right"}},[e("i",{staticClass:"el-icon-info"})])],1),t._v(" "),e("el-form-item",{attrs:{label:t.$t("table.exchangeName"),prop:"exchangeName"}},[e("el-input",{staticStyle:{width:"240px"},attrs:{placeholder:t.$t("text.exchangeName"),clearable:""},model:{value:t.contractEventForm.exchangeName,callback:function(e){t.$set(t.contractEventForm,"exchangeName","string"==typeof e?e.trim():e)},expression:"contractEventForm.exchangeName"}}),t._v(" "),e("el-tooltip",{staticClass:"item",attrs:{effect:"dark",content:t.$t("text.exchangeName"),placement:"right"}},[e("i",{staticClass:"el-icon-info"})])],1),t._v(" "),e("el-form-item",{attrs:{label:t.$t("table.queueName"),prop:"queueName"}},[e("el-input",{staticStyle:{width:"240px"},attrs:{placeholder:t.$t("text.queueName"),clearable:""},model:{value:t.contractEventForm.queueName,callback:function(e){t.$set(t.contractEventForm,"queueName","string"==typeof e?e.trim():e)},expression:"contractEventForm.queueName"}}),t._v(" "),e("el-tooltip",{staticClass:"item",attrs:{effect:"dark",content:t.$t("text.queueName"),placement:"right"}},[e("i",{staticClass:"el-icon-info"})])],1),t._v(" "),e("el-form-item",{attrs:{label:t.$t("table.contractAddress"),prop:"contractAddress"}},[e("el-input",{staticStyle:{width:"240px"},attrs:{clearable:""},model:{value:t.contractEventForm.contractAddress,callback:function(e){t.$set(t.contractEventForm,"contractAddress","string"==typeof e?e.trim():e)},expression:"contractEventForm.contractAddress"}}),t._v(" "),e("el-tooltip",{staticClass:"item",attrs:{effect:"dark",content:t.$t("text.contractAddress"),placement:"right"}},[e("i",{staticClass:"el-icon-info"})])],1),t._v(" "),e("el-form-item",{attrs:{label:t.$t("table.fromBlock"),prop:"fromBlock"}},[e("el-input",{staticStyle:{width:"240px"},attrs:{clearable:""},model:{value:t.contractEventForm.fromBlock,callback:function(e){t.$set(t.contractEventForm,"fromBlock","string"==typeof e?e.trim():e)},expression:"contractEventForm.fromBlock"}}),t._v(" "),e("el-tooltip",{staticClass:"item",attrs:{effect:"dark",content:t.$t("text.fromBlock"),placement:"right"}},[e("i",{staticClass:"el-icon-info"})])],1),t._v(" "),e("el-form-item",{attrs:{label:t.$t("table.toBlock"),prop:"toBlock"}},[e("el-input",{staticStyle:{width:"240px"},attrs:{clearable:""},model:{value:t.contractEventForm.toBlock,callback:function(e){t.$set(t.contractEventForm,"toBlock","string"==typeof e?e.trim():e)},expression:"contractEventForm.toBlock"}}),t._v(" "),e("el-tooltip",{staticClass:"item",attrs:{effect:"dark",content:t.$t("text.toBlock"),placement:"right"}},[e("i",{staticClass:"el-icon-info"})])],1),t._v(" "),e("el-form-item",{attrs:{label:t.$t("table.topicList"),prop:"topicList"}},[e("el-input",{staticStyle:{width:"240px"},attrs:{clearable:""},model:{value:t.contractEventForm.topicList,callback:function(e){t.$set(t.contractEventForm,"topicList","string"==typeof e?e.trim():e)},expression:"contractEventForm.topicList"}}),t._v(" "),e("el-tooltip",{staticClass:"item",attrs:{effect:"dark",content:t.$t("text.topicList"),placement:"right"}},[e("i",{staticClass:"el-icon-info"})])],1),t._v(" "),e("el-form-item",{attrs:{label:t.$t("table.contractAbi"),prop:"contractAbi"}},[e("el-input",{staticStyle:{width:"240px"},attrs:{type:"textarea",clearable:""},model:{value:t.contractEventForm.contractAbi,callback:function(e){t.$set(t.contractEventForm,"contractAbi","string"==typeof e?e.trim():e)},expression:"contractEventForm.contractAbi"}}),t._v(" "),e("el-tooltip",{staticClass:"item",attrs:{effect:"dark",content:t.$t("text.contractAbi"),placement:"right"}},[e("i",{staticClass:"el-icon-info"})])],1)],1),t._v(" "),e("div",{staticClass:"dialog-footer",attrs:{slot:"footer"},slot:"footer"},[e("el-button",{on:{click:t.modelClose}},[t._v(t._s(t.$t("dialog.cancel")))]),t._v(" "),e("el-button",{attrs:{type:"primary",loading:t.loading},on:{click:function(e){return t.submit("contractEventForm")}}},[t._v(t._s(t.$t("dialog.confirm")))])],1)],1)},a=[];r._withStripped=!0},m23K:function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return a}));var r=function(){var t=this,e=t._self._c;return e("div",{staticClass:"addAbi"},[e("el-form",{ref:"abiForm",attrs:{model:t.abiForm,rules:t.rules,"label-width":"90px"}},[e("el-form-item",{attrs:{label:t.$t("contracts.contractName"),prop:"contractName"}},[e("el-input",{model:{value:t.abiForm.contractName,callback:function(e){t.$set(t.abiForm,"contractName",e)},expression:"abiForm.contractName"}})],1),t._v(" "),e("el-form-item",{attrs:{label:t.$t("contracts.contractAddress"),prop:"contractAddress"}},[e("el-input",{model:{value:t.abiForm.contractAddress,callback:function(e){t.$set(t.abiForm,"contractAddress",e)},expression:"abiForm.contractAddress"}})],1),t._v(" "),e("el-form-item",{attrs:{label:t.$t("contracts.contractAbi"),prop:"contractAbi"}},[e("el-input",{staticStyle:{"overflow-y":"scroll","max-height":"300px"},attrs:{type:"textarea",autosize:{minRows:4}},model:{value:t.abiForm.contractAbi,callback:function(e){t.$set(t.abiForm,"contractAbi",e)},expression:"abiForm.contractAbi"}})],1)],1),t._v(" "),e("div",{staticClass:"text-right send-btn"},[e("el-button",{on:{click:t.close}},[t._v(t._s(this.$t("dialog.cancel")))]),t._v(" "),e("el-button",{attrs:{type:"primary",loading:t.loading},on:{click:function(e){return t.submit("abiForm")}}},[t._v(t._s(this.$t("dialog.confirm")))])],1)],1)},a=[];r._withStripped=!0},mFiM:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=i(n("gDS+")),a=(i(n("oYx3")),n("mHBk")),o=i(n("9e9m"));function i(t){return t&&t.__esModule?t:{default:t}}e.default={name:"sidebar",props:["minMenu"],data:function(){return{activeIndex:0,active:"",userRole:localStorage.getItem("root"),routesList:[],groupName:"",groupVisible:!1,groupList:[],version:"",group:null,screenWidth:null,buttomNone:!0}},computed:{menuShowC:function(){return!!this.minMenu&&this.minMenu},routesListC:function(){var t=this,e=this.routesList;return e.forEach((function(e){switch(e.enName){case"contractManagement":e.name=t.$t("route.contractManagement");break;case"systemMonitoring":e.name=t.$t("route.systemMonitoring");break;case"subscribeEvent":e.name=t.$t("route.subscribeEvent")}e.children&&e.children.forEach((function(e){switch(e.enName){case"statistics":e.name=t.$t("route.statistics");break;case"nodeManagement":e.name=t.$t("route.nodeManagement");break;case"contractIDE":e.name=t.$t("route.contractIDE");break;case"contractList":e.name=t.$t("route.contractList");break;case"abiList":e.name=t.$t("route.abiList");break;case"parseAbi":e.name=t.$t("route.parseAbi");break;case"hostMetrics":e.name=t.$t("route.hostMetrics");break;case"nodeMetrics":e.name=t.$t("route.nodeMetrics");break;case"testUserList":e.name=t.$t("route.testUserList");break;case"blockEvent":e.name=t.$t("route.blockEvent");break;case"contractEvent":e.name=t.$t("route.contractEvent");break;case"eventCheck":e.name=t.$t("route.eventCheck");break;case"onlineTools":e.name=t.$t("route.onlineTools");break;case"contractWarehouse":e.name=t.$t("route.contractWarehouse")}}))})),e},activeRoute:function(){return this.active?this.active:this.$route.path}},watch:{$route:function(t,e){console.log(),this.$route.path===t.path&&(this.active=this.$route.path),"/hostDetail"===this.$route.path&&(this.active="/front"),"/parseAbi"===this.$route.path&&(this.active="/contractList")}},mounted:function(){localStorage.getItem("groupId")&&(this.group=localStorage.getItem("groupId")),localStorage.getItem("groupName")&&(this.groupName=localStorage.getItem("groupName")),this.$nextTick((function(){this.getGroup(this.getClientVersion),localStorage.setItem("sidebarHide",!1),this.changeRouter(),this.$refs.sidebarContent.offsetHeight>document.body.clientHeight?this.buttomNone=!1:this.buttomNone=!0}));var t=this;window.onresize=function(){t.$refs.sidebarContent.offsetHeight>document.body.clientHeight?t.buttomNone=!1:t.buttomNone=!0}},methods:{changeGroup:function(t){this.group=t.group,this.groupName=t.groupName,localStorage.setItem("groupId",this.group),localStorage.setItem("groupName",this.groupName),o.default.$emit("changeGroup",this.group),this.getClientVersion()},getClientVersion:function(){var t=this;(0,a.queryClientVersion)(this.group).then((function(e){var n=e.data,r=e.status;e.statusText;200===r?(t.version=n["FISCO-BCOS Version"],localStorage.setItem("fisco-bcos-version",t.version)):t.$message({type:"error",message:t.$chooseLang(e.data.code)})})).catch((function(e){t.$message({type:"error",message:e.data||t.$t("text.systemError")})}))},getGroup:function(t){var e=this;(0,a.queryGroup)().then((function(n){var a=n.data,o=n.status;n.statusText;if(200===o&&a&&a.length){for(var i=a.sort((function(t,e){return t-e})),s=[],c=0;c=0&&Math.floor(e)===e&&isFinite(t)}function m(t){return i(t)&&"function"==typeof t.then&&"function"==typeof t.catch}function v(t){return null==t?"":Array.isArray(t)||f(t)&&t.toString===d?JSON.stringify(t,null,2):String(t)}function g(t){var e=parseFloat(t);return isNaN(e)?t:e}function b(t,e){for(var n=Object.create(null),r=t.split(","),a=0;a-1)return t.splice(r,1)}}var w=Object.prototype.hasOwnProperty;function $(t,e){return w.call(t,e)}function k(t){var e=Object.create(null);return function(n){return e[n]||(e[n]=t(n))}}var C=/-(\w)/g,S=k((function(t){return t.replace(C,(function(t,e){return e?e.toUpperCase():""}))})),N=k((function(t){return t.charAt(0).toUpperCase()+t.slice(1)})),I=/\B([A-Z])/g,E=k((function(t){return t.replace(I,"-$1").toLowerCase()}));var A=Function.prototype.bind?function(t,e){return t.bind(e)}:function(t,e){function n(n){var r=arguments.length;return r?r>1?t.apply(e,arguments):t.call(e,n):t.call(e)}return n._length=t.length,n};function L(t,e){e=e||0;for(var n=t.length-e,r=new Array(n);n--;)r[n]=t[n+e];return r}function F(t,e){for(var n in e)t[n]=e[n];return t}function O(t){for(var e={},n=0;n0,Q=Z&&Z.indexOf("edge/")>0;Z&&Z.indexOf("android");var tt=Z&&/iphone|ipad|ipod|ios/.test(Z);Z&&/chrome\/\d+/.test(Z),Z&&/phantomjs/.test(Z);var et,nt=Z&&Z.match(/firefox\/(\d+)/),rt={}.watch,at=!1;if(W)try{var ot={};Object.defineProperty(ot,"passive",{get:function(){at=!0}}),window.addEventListener("test-passive",null,ot)}catch(t){}var it=function(){return void 0===et&&(et=!W&&void 0!==t&&(t.process&&"server"===t.process.env.VUE_ENV)),et},st=W&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function ct(t){return"function"==typeof t&&/native code/.test(t.toString())}var lt,ut="undefined"!=typeof Symbol&&ct(Symbol)&&"undefined"!=typeof Reflect&&ct(Reflect.ownKeys);lt="undefined"!=typeof Set&&ct(Set)?Set:function(){function t(){this.set=Object.create(null)}return t.prototype.has=function(t){return!0===this.set[t]},t.prototype.add=function(t){this.set[t]=!0},t.prototype.clear=function(){this.set=Object.create(null)},t}();var dt=null;function ft(){return dt&&{proxy:dt}}function pt(t){void 0===t&&(t=null),t||dt&&dt._scope.off(),dt=t,t&&t._scope.on()}var ht=function(){function t(t,e,n,r,a,o,i,s){this.tag=t,this.data=e,this.children=n,this.text=r,this.elm=a,this.ns=void 0,this.context=o,this.fnContext=void 0,this.fnOptions=void 0,this.fnScopeId=void 0,this.key=e&&e.key,this.componentOptions=i,this.componentInstance=void 0,this.parent=void 0,this.raw=!1,this.isStatic=!1,this.isRootInsert=!0,this.isComment=!1,this.isCloned=!1,this.isOnce=!1,this.asyncFactory=s,this.asyncMeta=void 0,this.isAsyncPlaceholder=!1}return Object.defineProperty(t.prototype,"child",{get:function(){return this.componentInstance},enumerable:!1,configurable:!0}),t}(),mt=function(t){void 0===t&&(t="");var e=new ht;return e.text=t,e.isComment=!0,e};function vt(t){return new ht(void 0,void 0,void 0,String(t))}function gt(t){var e=new ht(t.tag,t.data,t.children&&t.children.slice(),t.text,t.elm,t.context,t.componentOptions,t.asyncFactory);return e.ns=t.ns,e.isStatic=t.isStatic,e.key=t.key,e.isComment=t.isComment,e.fnContext=t.fnContext,e.fnOptions=t.fnOptions,e.fnScopeId=t.fnScopeId,e.asyncMeta=t.asyncMeta,e.isCloned=!0,e}var bt=0,yt=[],_t=function(){function t(){this._pending=!1,this.id=bt++,this.subs=[]}return t.prototype.addSub=function(t){this.subs.push(t)},t.prototype.removeSub=function(t){this.subs[this.subs.indexOf(t)]=null,this._pending||(this._pending=!0,yt.push(this))},t.prototype.depend=function(e){t.target&&t.target.addDep(this)},t.prototype.notify=function(t){var e=this.subs.filter((function(t){return t}));for(var n=0,r=e.length;n0&&(he((l=t(l,"".concat(n||"","_").concat(r)))[0])&&he(d)&&(f[u]=vt(d.text+l[0].text),l.shift()),f.push.apply(f,l)):c(l)?he(d)?f[u]=vt(d.text+l):""!==l&&f.push(vt(l)):he(l)&&he(d)?f[u]=vt(d.text+l.text):(s(e._isVList)&&i(l.tag)&&o(l.key)&&i(n)&&(l.key="__vlist".concat(n,"_").concat(r,"__")),f.push(l)));return f}(t):void 0}function he(t){return i(t)&&i(t.text)&&!1===t.isComment}function me(t,e,n,r,d,f){return(a(n)||c(n))&&(d=r,r=n,n=void 0),s(f)&&(d=2),function(t,e,n,r,c){if(i(n)&&i(n.__ob__))return mt();i(n)&&i(n.is)&&(e=n.is);if(!e)return mt();0;a(r)&&l(r[0])&&((n=n||{}).scopedSlots={default:r[0]},r.length=0);2===c?r=pe(r):1===c&&(r=function(t){for(var e=0;e0,s=e?!!e.$stable:!i,c=e&&e.$key;if(e){if(e._normalized)return e._normalized;if(s&&a&&a!==r&&c===a.$key&&!i&&!a.$hasNormal)return a;for(var l in o={},e)e[l]&&"$"!==l[0]&&(o[l]=Te(t,n,l,e[l]))}else o={};for(var u in n)u in o||(o[u]=je(n,u));return e&&Object.isExtensible(e)&&(e._normalized=o),K(o,"$stable",s),K(o,"$key",c),K(o,"$hasNormal",i),o}function Te(t,e,n,r){var o=function(){var e=dt;pt(t);var n=arguments.length?r.apply(null,arguments):r({}),o=(n=n&&"object"==typeof n&&!a(n)?[n]:pe(n))&&n[0];return pt(e),n&&(!o||1===n.length&&o.isComment&&!Oe(o))?void 0:n};return r.proxy&&Object.defineProperty(e,n,{get:o,enumerable:!0,configurable:!0}),o}function je(t,e){return function(){return t[e]}}function Pe(t){return{get attrs(){if(!t._attrsProxy){var e=t._attrsProxy={};K(e,"_v_attr_proxy",!0),Me(e,t.$attrs,r,t,"$attrs")}return t._attrsProxy},get listeners(){t._listenersProxy||Me(t._listenersProxy={},t.$listeners,r,t,"$listeners");return t._listenersProxy},get slots(){return function(t){t._slotsProxy||Ve(t._slotsProxy={},t.$scopedSlots);return t._slotsProxy}(t)},emit:A(t.$emit,t),expose:function(e){e&&Object.keys(e).forEach((function(n){return Qt(t,e,n)}))}}}function Me(t,e,n,r,a){var o=!1;for(var i in e)i in t?e[i]!==n[i]&&(o=!0):(o=!0,Be(t,i,r,a));for(var i in t)i in e||(o=!0,delete t[i]);return o}function Be(t,e,n,r){Object.defineProperty(t,e,{enumerable:!0,configurable:!0,get:function(){return n[r][e]}})}function Ve(t,e){for(var n in e)t[n]=e[n];for(var n in t)n in e||delete t[n]}function Re(){return qe().slots}function He(){return qe().attrs}function ze(){return qe().listeners}function qe(){var t=dt;return t._setupContext||(t._setupContext=Pe(t))}function Ue(t,e){var n=a(t)?t.reduce((function(t,e){return t[e]={},t}),{}):t;for(var r in e){var o=n[r];o?a(o)||l(o)?n[r]={type:o,default:e[r]}:o.default=e[r]:null===o&&(n[r]={default:e[r]})}return n}var Ke,Je=null;function Ge(t,e){return(t.__esModule||ut&&"Module"===t[Symbol.toStringTag])&&(t=t.default),u(t)?e.extend(t):t}function We(t){if(a(t))for(var e=0;edocument.createEvent("Event").timeStamp&&(pn=function(){return hn.now()})}var mn=function(t,e){if(t.post){if(!e.post)return 1}else if(e.post)return-1;return t.id-e.id};function vn(){var t,e;for(fn=pn(),un=!0,on.sort(mn),dn=0;dndn&&on[n].id>t.id;)n--;on.splice(n+1,0,t)}else on.push(t);ln||(ln=!0,Wn(vn))}}var bn="".concat("watcher"," callback"),yn="".concat("watcher"," getter"),_n="".concat("watcher"," cleanup");function xn(t,e){return Nn(t,null,e)}function wn(t,e){return Nn(t,null,{flush:"post"})}function $n(t,e){return Nn(t,null,{flush:"sync"})}var kn,Cn={};function Sn(t,e,n){return Nn(t,e,n)}function Nn(t,e,n){var o=void 0===n?r:n,i=o.immediate,s=o.deep,c=o.flush,u=void 0===c?"pre":c;o.onTrack,o.onTrigger;var d,f,p=dt,h=function(t,e,n){return void 0===n&&(n=null),Pn(t,null,n,p,e)},m=!1,v=!1;if(Kt(t)?(d=function(){return t.value},m=Rt(t)):Vt(t)?(d=function(){return t.__ob__.dep.depend(),t},s=!0):a(t)?(v=!0,m=t.some((function(t){return Vt(t)||Rt(t)})),d=function(){return t.map((function(t){return Kt(t)?t.value:Vt(t)?vr(t):l(t)?h(t,yn):void 0}))}):d=l(t)?e?function(){return h(t,yn)}:function(){if(!p||!p._isDestroyed)return f&&f(),h(t,"watcher",[b])}:D,e&&s){var g=d;d=function(){return vr(g())}}var b=function(t){f=y.onStop=function(){h(t,_n)}};if(it())return b=D,e?i&&h(e,bn,[d(),v?[]:void 0,b]):d(),D;var y=new br(dt,d,D,{lazy:!0});y.noRecurse=!e;var _=v?[]:Cn;return y.run=function(){if(y.active)if(e){var t=y.get();(s||m||(v?t.some((function(t,e){return V(t,_[e])})):V(t,_)))&&(f&&f(),h(e,bn,[t,_===Cn?void 0:_,b]),_=t)}else y.get()},"sync"===u?y.update=y.run:"post"===u?(y.post=!0,y.update=function(){return gn(y)}):y.update=function(){if(p&&p===dt&&!p._isMounted){var t=p._preWatchers||(p._preWatchers=[]);t.indexOf(y)<0&&t.push(y)}else gn(y)},e?i?y.run():_=y.get():"post"===u&&p?p.$once("hook:mounted",(function(){return y.get()})):y.get(),function(){y.teardown()}}var In=function(){function t(t){void 0===t&&(t=!1),this.detached=t,this.active=!0,this.effects=[],this.cleanups=[],this.parent=kn,!t&&kn&&(this.index=(kn.scopes||(kn.scopes=[])).push(this)-1)}return t.prototype.run=function(t){if(this.active){var e=kn;try{return kn=this,t()}finally{kn=e}}else 0},t.prototype.on=function(){kn=this},t.prototype.off=function(){kn=this.parent},t.prototype.stop=function(t){if(this.active){var e=void 0,n=void 0;for(e=0,n=this.effects.length;e1)return n&&l(e)?e.call(r):e}else 0}function Tn(t,e,n){return me(dt,t,e,n,2,!0)}function jn(t,e,n){wt();try{if(e)for(var r=e;r=r.$parent;){var a=r.$options.errorCaptured;if(a)for(var o=0;o-1)if(o&&!$(a,"default"))i=!1;else if(""===i||i===E(t)){var c=Xr(String,a.type);(c<0||s-1:"string"==typeof t?t.split(",").indexOf(e)>-1:!!p(t)&&t.test(e)}function na(t,e){var n=t.cache,r=t.keys,a=t._vnode;for(var o in n){var i=n[o];if(i){var s=i.name;s&&!e(s)&&ra(n,o,r,a)}}}function ra(t,e,n,r){var a=t[e];!a||r&&a.tag===r.tag||a.componentInstance.$destroy(),t[e]=null,x(n,e)}!function(t){t.prototype._init=function(t){var e=this;e._uid=Ir++,e._isVue=!0,e.__v_skip=!0,e._scope=new In(!0),e._scope._vm=!0,t&&t._isComponent?function(t,e){var n=t.$options=Object.create(t.constructor.options),r=e._parentVnode;n.parent=e.parent,n._parentVnode=r;var a=r.componentOptions;n.propsData=a.propsData,n._parentListeners=a.listeners,n._renderChildren=a.children,n._componentTag=a.tag,e.render&&(n.render=e.render,n.staticRenderFns=e.staticRenderFns)}(e,t):e.$options=Ur(Er(e.constructor),t||{},e),e._renderProxy=e,e._self=e,function(t){var e=t.$options,n=e.parent;if(n&&!e.abstract){for(;n.$options.abstract&&n.$parent;)n=n.$parent;n.$children.push(t)}t.$parent=n,t.$root=n?n.$root:t,t.$children=[],t.$refs={},t._provided=n?n._provided:Object.create(null),t._watcher=null,t._inactive=null,t._directInactive=!1,t._isMounted=!1,t._isDestroyed=!1,t._isBeingDestroyed=!1}(e),function(t){t._events=Object.create(null),t._hasHookEvent=!1;var e=t.$options._parentListeners;e&&Qe(t,e)}(e),function(t){t._vnode=null,t._staticTrees=null;var e=t.$options,n=t.$vnode=e._parentVnode,a=n&&n.context;t.$slots=Le(e._renderChildren,a),t.$scopedSlots=n?De(t.$parent,n.data.scopedSlots,t.$slots):r,t._c=function(e,n,r,a){return me(t,e,n,r,a,!1)},t.$createElement=function(e,n,r,a){return me(t,e,n,r,a,!0)};var o=n&&n.data;Ot(t,"$attrs",o&&o.attrs||r,null,!0),Ot(t,"$listeners",e._parentListeners||r,null,!0)}(e),an(e,"beforeCreate",void 0,!1),function(t){var e=Nr(t.$options.inject,t);e&&(Et(!1),Object.keys(e).forEach((function(n){Ot(t,n,e[n])})),Et(!0))}(e),xr(e),function(t){var e=t.$options.provide;if(e){var n=l(e)?e.call(t):e;if(!u(n))return;for(var r=On(t),a=ut?Reflect.ownKeys(n):Object.keys(n),o=0;o1?L(n):n;for(var r=L(arguments,1),a='event handler for "'.concat(t,'"'),o=0,i=n.length;oparseInt(this.max)&&ra(t,e[0],e,this._vnode),this.vnodeToCache=null}}},created:function(){this.cache=Object.create(null),this.keys=[]},destroyed:function(){for(var t in this.cache)ra(this.cache,t,this.keys)},mounted:function(){var t=this;this.cacheVNode(),this.$watch("include",(function(e){na(t,(function(t){return ea(e,t)}))})),this.$watch("exclude",(function(e){na(t,(function(t){return!ea(e,t)}))}))},updated:function(){this.cacheVNode()},render:function(){var t=this.$slots.default,e=We(t),n=e&&e.componentOptions;if(n){var r=ta(n),a=this.include,o=this.exclude;if(a&&(!r||!ea(a,r))||o&&r&&ea(o,r))return e;var i=this.cache,s=this.keys,c=null==e.key?n.Ctor.cid+(n.tag?"::".concat(n.tag):""):e.key;i[c]?(e.componentInstance=i[c].componentInstance,x(s,c),s.push(c)):(this.vnodeToCache=e,this.keyToCache=c),e.data.keepAlive=!0}return e||t&&t[0]}}};!function(t){var e={get:function(){return z}};Object.defineProperty(t,"config",e),t.util={warn:Mr,extend:F,mergeOptions:Ur,defineReactive:Ot},t.set=Dt,t.delete=Tt,t.nextTick=Wn,t.observable=function(t){return Ft(t),t},t.options=Object.create(null),R.forEach((function(e){t.options[e+"s"]=Object.create(null)})),t.options._base=t,F(t.options.components,oa),function(t){t.use=function(t){var e=this._installedPlugins||(this._installedPlugins=[]);if(e.indexOf(t)>-1)return this;var n=L(arguments,1);return n.unshift(this),l(t.install)?t.install.apply(t,n):l(t)&&t.apply(null,n),e.push(t),this}}(t),function(t){t.mixin=function(t){return this.options=Ur(this.options,t),this}}(t),Qr(t),function(t){R.forEach((function(e){t[e]=function(t,n){return n?("component"===e&&f(n)&&(n.name=n.name||t,n=this.options._base.extend(n)),"directive"===e&&l(n)&&(n={bind:n,update:n}),this.options[e+"s"][t]=n,n):this.options[e+"s"][t]}}))}(t)}(Yr),Object.defineProperty(Yr.prototype,"$isServer",{get:it}),Object.defineProperty(Yr.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(Yr,"FunctionalRenderContext",{value:Ar}),Yr.version=pr;var ia=b("style,class"),sa=b("input,textarea,option,select,progress"),ca=function(t,e,n){return"value"===n&&sa(t)&&"button"!==e||"selected"===n&&"option"===t||"checked"===n&&"input"===t||"muted"===n&&"video"===t},la=b("contenteditable,draggable,spellcheck"),ua=b("events,caret,typing,plaintext-only"),da=b("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,truespeed,typemustmatch,visible"),fa="http://www.w3.org/1999/xlink",pa=function(t){return":"===t.charAt(5)&&"xlink"===t.slice(0,5)},ha=function(t){return pa(t)?t.slice(6,t.length):""},ma=function(t){return null==t||!1===t};function va(t){for(var e=t.data,n=t,r=t;i(r.componentInstance);)(r=r.componentInstance._vnode)&&r.data&&(e=ga(r.data,e));for(;i(n=n.parent);)n&&n.data&&(e=ga(e,n.data));return function(t,e){if(i(t)||i(e))return ba(t,ya(e));return""}(e.staticClass,e.class)}function ga(t,e){return{staticClass:ba(t.staticClass,e.staticClass),class:i(t.class)?[t.class,e.class]:e.class}}function ba(t,e){return t?e?t+" "+e:t:e||""}function ya(t){return Array.isArray(t)?function(t){for(var e,n="",r=0,a=t.length;r-1?Ua(t,e,n):da(e)?ma(n)?t.removeAttribute(e):(n="allowfullscreen"===e&&"EMBED"===t.tagName?"true":e,t.setAttribute(e,n)):la(e)?t.setAttribute(e,function(t,e){return ma(e)||"false"===e?"false":"contenteditable"===t&&ua(e)?e:"true"}(e,n)):pa(e)?ma(n)?t.removeAttributeNS(fa,ha(e)):t.setAttributeNS(fa,e,n):Ua(t,e,n)}function Ua(t,e,n){if(ma(n))t.removeAttribute(e);else{if(X&&!Y&&"TEXTAREA"===t.tagName&&"placeholder"===e&&""!==n&&!t.__ieph){var r=function(e){e.stopImmediatePropagation(),t.removeEventListener("input",r)};t.addEventListener("input",r),t.__ieph=!0}t.setAttribute(e,n)}}var Ka={create:za,update:za};function Ja(t,e){var n=e.elm,r=e.data,a=t.data;if(!(o(r.staticClass)&&o(r.class)&&(o(a)||o(a.staticClass)&&o(a.class)))){var s=va(e),c=n._transitionClasses;i(c)&&(s=ba(s,ya(c))),s!==n._prevClass&&(n.setAttribute("class",s),n._prevClass=s)}}var Ga,Wa,Za,Xa,Ya,Qa,to={create:Ja,update:Ja},eo=/[\w).+\-_$\]]/;function no(t){var e,n,r,a,o,i=!1,s=!1,c=!1,l=!1,u=0,d=0,f=0,p=0;for(r=0;r=0&&" "===(m=t.charAt(h));h--);m&&eo.test(m)||(l=!0)}}else void 0===a?(p=r+1,a=t.slice(0,r).trim()):v();function v(){(o||(o=[])).push(t.slice(p,r).trim()),p=r+1}if(void 0===a?a=t.slice(0,r).trim():0!==p&&v(),o)for(r=0;r-1?{exp:t.slice(0,Xa),key:'"'+t.slice(Xa+1)+'"'}:{exp:t,key:null};Wa=t,Xa=Ya=Qa=0;for(;!_o();)xo(Za=yo())?$o(Za):91===Za&&wo(Za);return{exp:t.slice(0,Ya),key:t.slice(Ya+1,Qa)}}(t);return null===n.key?"".concat(t,"=").concat(e):"$set(".concat(n.exp,", ").concat(n.key,", ").concat(e,")")}function yo(){return Wa.charCodeAt(++Xa)}function _o(){return Xa>=Ga}function xo(t){return 34===t||39===t}function wo(t){var e=1;for(Ya=Xa;!_o();)if(xo(t=yo()))$o(t);else if(91===t&&e++,93===t&&e--,0===e){Qa=Xa;break}}function $o(t){for(var e=t;!_o()&&(t=yo())!==e;);}var ko;function Co(t,e,n){var r=ko;return function a(){var o=e.apply(null,arguments);null!==o&&Io(t,a,n,r)}}var So=Rn&&!(nt&&Number(nt[1])<=53);function No(t,e,n,r){if(So){var a=fn,o=e;e=o._wrapper=function(t){if(t.target===t.currentTarget||t.timeStamp>=a||t.timeStamp<=0||t.target.ownerDocument!==document)return o.apply(this,arguments)}}ko.addEventListener(t,e,at?{capture:n,passive:r}:n)}function Io(t,e,n,r){(r||ko).removeEventListener(t,e._wrapper||e,n)}function Eo(t,e){if(!o(t.data.on)||!o(e.data.on)){var n=e.data.on||{},r=t.data.on||{};ko=e.elm||t.elm,function(t){if(i(t.__r)){var e=X?"change":"input";t[e]=[].concat(t.__r,t[e]||[]),delete t.__r}i(t.__c)&&(t.change=[].concat(t.__c,t.change||[]),delete t.__c)}(n),ue(n,r,No,Io,Co,e.context),ko=void 0}}var Ao,Lo={create:Eo,update:Eo,destroy:function(t){return Eo(t,Fa)}};function Fo(t,e){if(!o(t.data.domProps)||!o(e.data.domProps)){var n,r,a=e.elm,c=t.data.domProps||{},l=e.data.domProps||{};for(n in(i(l.__ob__)||s(l._v_attr_proxy))&&(l=e.data.domProps=F({},l)),c)n in l||(a[n]="");for(n in l){if(r=l[n],"textContent"===n||"innerHTML"===n){if(e.children&&(e.children.length=0),r===c[n])continue;1===a.childNodes.length&&a.removeChild(a.childNodes[0])}if("value"===n&&"PROGRESS"!==a.tagName){a._value=r;var u=o(r)?"":String(r);Oo(a,u)&&(a.value=u)}else if("innerHTML"===n&&wa(a.tagName)&&o(a.innerHTML)){(Ao=Ao||document.createElement("div")).innerHTML="".concat(r,"");for(var d=Ao.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;d.firstChild;)a.appendChild(d.firstChild)}else if(r!==c[n])try{a[n]=r}catch(t){}}}}function Oo(t,e){return!t.composing&&("OPTION"===t.tagName||function(t,e){var n=!0;try{n=document.activeElement!==t}catch(t){}return n&&t.value!==e}(t,e)||function(t,e){var n=t.value,r=t._vModifiers;if(i(r)){if(r.number)return g(n)!==g(e);if(r.trim)return n.trim()!==e.trim()}return n!==e}(t,e))}var Do={create:Fo,update:Fo},To=k((function(t){var e={},n=/:(.+)/;return t.split(/;(?![^(]*\))/g).forEach((function(t){if(t){var r=t.split(n);r.length>1&&(e[r[0].trim()]=r[1].trim())}})),e}));function jo(t){var e=Po(t.style);return t.staticStyle?F(t.staticStyle,e):e}function Po(t){return Array.isArray(t)?O(t):"string"==typeof t?To(t):t}var Mo,Bo=/^--/,Vo=/\s*!important$/,Ro=function(t,e,n){if(Bo.test(e))t.style.setProperty(e,n);else if(Vo.test(n))t.style.setProperty(E(e),n.replace(Vo,""),"important");else{var r=zo(e);if(Array.isArray(n))for(var a=0,o=n.length;a-1?e.split(Ko).forEach((function(e){return t.classList.add(e)})):t.classList.add(e);else{var n=" ".concat(t.getAttribute("class")||""," ");n.indexOf(" "+e+" ")<0&&t.setAttribute("class",(n+e).trim())}}function Go(t,e){if(e&&(e=e.trim()))if(t.classList)e.indexOf(" ")>-1?e.split(Ko).forEach((function(e){return t.classList.remove(e)})):t.classList.remove(e),t.classList.length||t.removeAttribute("class");else{for(var n=" ".concat(t.getAttribute("class")||""," "),r=" "+e+" ";n.indexOf(r)>=0;)n=n.replace(r," ");(n=n.trim())?t.setAttribute("class",n):t.removeAttribute("class")}}function Wo(t){if(t){if("object"==typeof t){var e={};return!1!==t.css&&F(e,Zo(t.name||"v")),F(e,t),e}return"string"==typeof t?Zo(t):void 0}}var Zo=k((function(t){return{enterClass:"".concat(t,"-enter"),enterToClass:"".concat(t,"-enter-to"),enterActiveClass:"".concat(t,"-enter-active"),leaveClass:"".concat(t,"-leave"),leaveToClass:"".concat(t,"-leave-to"),leaveActiveClass:"".concat(t,"-leave-active")}})),Xo=W&&!Y,Yo="transition",Qo="transitionend",ti="animation",ei="animationend";Xo&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(Yo="WebkitTransition",Qo="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(ti="WebkitAnimation",ei="webkitAnimationEnd"));var ni=W?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(t){return t()};function ri(t){ni((function(){ni(t)}))}function ai(t,e){var n=t._transitionClasses||(t._transitionClasses=[]);n.indexOf(e)<0&&(n.push(e),Jo(t,e))}function oi(t,e){t._transitionClasses&&x(t._transitionClasses,e),Go(t,e)}function ii(t,e,n){var r=ci(t,e),a=r.type,o=r.timeout,i=r.propCount;if(!a)return n();var s="transition"===a?Qo:ei,c=0,l=function(){t.removeEventListener(s,u),n()},u=function(e){e.target===t&&++c>=i&&l()};setTimeout((function(){c0&&(n="transition",u=i,d=o.length):"animation"===e?l>0&&(n="animation",u=l,d=c.length):d=(n=(u=Math.max(i,l))>0?i>l?"transition":"animation":null)?"transition"===n?o.length:c.length:0,{type:n,timeout:u,propCount:d,hasTransform:"transition"===n&&si.test(r[Yo+"Property"])}}function li(t,e){for(;t.length1}function mi(t,e){!0!==e.data.show&&di(e)}var vi=function(t){var e,n,r={},l=t.modules,u=t.nodeOps;for(e=0;eh?_(t,o(n[g+1])?null:n[g+1].elm,n,p,g,r):p>g&&w(e,d,h)}(d,m,g,n,l):i(g)?(i(t.text)&&u.setTextContent(d,""),_(d,null,g,0,g.length-1,n)):i(m)?w(m,0,m.length-1):i(t.text)&&u.setTextContent(d,""):t.text!==e.text&&u.setTextContent(d,e.text),i(h)&&i(p=h.hook)&&i(p=p.postpatch)&&p(t,e)}}}function S(t,e,n){if(s(n)&&i(t.parent))t.parent.data.pendingInsert=e;else for(var r=0;r-1,i.selected!==o&&(i.selected=o);else if(P(xi(i),r))return void(t.selectedIndex!==s&&(t.selectedIndex=s));a||(t.selectedIndex=-1)}}function _i(t,e){return e.every((function(e){return!P(e,t)}))}function xi(t){return"_value"in t?t._value:t.value}function wi(t){t.target.composing=!0}function $i(t){t.target.composing&&(t.target.composing=!1,ki(t.target,"input"))}function ki(t,e){var n=document.createEvent("HTMLEvents");n.initEvent(e,!0,!0),t.dispatchEvent(n)}function Ci(t){return!t.componentInstance||t.data&&t.data.transition?t:Ci(t.componentInstance._vnode)}var Si={model:gi,show:{bind:function(t,e,n){var r=e.value,a=(n=Ci(n)).data&&n.data.transition,o=t.__vOriginalDisplay="none"===t.style.display?"":t.style.display;r&&a?(n.data.show=!0,di(n,(function(){t.style.display=o}))):t.style.display=r?o:"none"},update:function(t,e,n){var r=e.value;!r!=!e.oldValue&&((n=Ci(n)).data&&n.data.transition?(n.data.show=!0,r?di(n,(function(){t.style.display=t.__vOriginalDisplay})):fi(n,(function(){t.style.display="none"}))):t.style.display=r?t.__vOriginalDisplay:"none")},unbind:function(t,e,n,r,a){a||(t.style.display=t.__vOriginalDisplay)}}},Ni={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function Ii(t){var e=t&&t.componentOptions;return e&&e.Ctor.options.abstract?Ii(We(e.children)):t}function Ei(t){var e={},n=t.$options;for(var r in n.propsData)e[r]=t[r];var a=n._parentListeners;for(var r in a)e[S(r)]=a[r];return e}function Ai(t,e){if(/\d-keep-alive$/.test(e.tag))return t("keep-alive",{props:e.componentOptions.propsData})}var Li=function(t){return t.tag||Oe(t)},Fi=function(t){return"show"===t.name},Oi={name:"transition",props:Ni,abstract:!0,render:function(t){var e=this,n=this.$slots.default;if(n&&(n=n.filter(Li)).length){0;var r=this.mode;0;var a=n[0];if(function(t){for(;t=t.parent;)if(t.data.transition)return!0}(this.$vnode))return a;var o=Ii(a);if(!o)return a;if(this._leaving)return Ai(t,a);var i="__transition-".concat(this._uid,"-");o.key=null==o.key?o.isComment?i+"comment":i+o.tag:c(o.key)?0===String(o.key).indexOf(i)?o.key:i+o.key:o.key;var s=(o.data||(o.data={})).transition=Ei(this),l=this._vnode,u=Ii(l);if(o.data.directives&&o.data.directives.some(Fi)&&(o.data.show=!0),u&&u.data&&!function(t,e){return e.key===t.key&&e.tag===t.tag}(o,u)&&!Oe(u)&&(!u.componentInstance||!u.componentInstance._vnode.isComment)){var d=u.data.transition=F({},s);if("out-in"===r)return this._leaving=!0,de(d,"afterLeave",(function(){e._leaving=!1,e.$forceUpdate()})),Ai(t,a);if("in-out"===r){if(Oe(o))return l;var f,p=function(){f()};de(s,"afterEnter",p),de(s,"enterCancelled",p),de(d,"delayLeave",(function(t){f=t}))}}return a}}},Di=F({tag:String,moveClass:String},Ni);function Ti(t){t.elm._moveCb&&t.elm._moveCb(),t.elm._enterCb&&t.elm._enterCb()}function ji(t){t.data.newPos=t.elm.getBoundingClientRect()}function Pi(t){var e=t.data.pos,n=t.data.newPos,r=e.left-n.left,a=e.top-n.top;if(r||a){t.data.moved=!0;var o=t.elm.style;o.transform=o.WebkitTransform="translate(".concat(r,"px,").concat(a,"px)"),o.transitionDuration="0s"}}delete Di.mode;var Mi={Transition:Oi,TransitionGroup:{props:Di,beforeMount:function(){var t=this,e=this._update;this._update=function(n,r){var a=en(t);t.__patch__(t._vnode,t.kept,!1,!0),t._vnode=t.kept,a(),e.call(t,n,r)}},render:function(t){for(var e=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),r=this.prevChildren=this.children,a=this.$slots.default||[],o=this.children=[],i=Ei(this),s=0;s-1?Ca[t]=e.constructor===window.HTMLUnknownElement||e.constructor===window.HTMLElement:Ca[t]=/HTMLUnknownElement/.test(e.toString())},F(Yr.options.directives,Si),F(Yr.options.components,Mi),Yr.prototype.__patch__=W?vi:D,Yr.prototype.$mount=function(t,e){return function(t,e,n){var r;t.$el=e,t.$options.render||(t.$options.render=mt),an(t,"beforeMount"),r=function(){t._update(t._render(),n)},new br(t,r,D,{before:function(){t._isMounted&&!t._isDestroyed&&an(t,"beforeUpdate")}},!0),n=!1;var a=t._preWatchers;if(a)for(var o=0;o\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,Zi=/^\s*((?:v-[\w-]+:|@|:|#)\[[^=]+?\][^\s"'<>\/=]*)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,Xi="[a-zA-Z_][\\-\\.0-9_a-zA-Z".concat(q.source,"]*"),Yi="((?:".concat(Xi,"\\:)?").concat(Xi,")"),Qi=new RegExp("^<".concat(Yi)),ts=/^\s*(\/?)>/,es=new RegExp("^<\\/".concat(Yi,"[^>]*>")),ns=/^]+>/i,rs=/^",""":'"',"&":"&"," ":"\n"," ":"\t","'":"'"},cs=/&(?:lt|gt|quot|amp|#39);/g,ls=/&(?:lt|gt|quot|amp|#39|#10|#9);/g,us=b("pre,textarea",!0),ds=function(t,e){return t&&us(t)&&"\n"===e[0]};function fs(t,e){var n=e?ls:cs;return t.replace(n,(function(t){return ss[t]}))}function ps(t,e){for(var n,r,a=[],o=e.expectHTML,i=e.isUnaryTag||T,s=e.canBeLeftOpenTag||T,c=0,l=function(){if(n=t,r&&os(r)){var l=0,f=r.toLowerCase(),p=is[f]||(is[f]=new RegExp("([\\s\\S]*?)(]*>)","i"));w=t.replace(p,(function(t,n,r){return l=r.length,os(f)||"noscript"===f||(n=n.replace(//g,"$1").replace(//g,"$1")),ds(f,n)&&(n=n.slice(1)),e.chars&&e.chars(n),""}));c+=t.length-w.length,t=w,d(f,c-l,c)}else{var h=t.indexOf("<");if(0===h){if(rs.test(t)){var m=t.indexOf("--\x3e");if(m>=0)return e.shouldKeepComment&&e.comment&&e.comment(t.substring(4,m),c,c+m+3),u(m+3),"continue"}if(as.test(t)){var v=t.indexOf("]>");if(v>=0)return u(v+2),"continue"}var g=t.match(ns);if(g)return u(g[0].length),"continue";var b=t.match(es);if(b){var y=c;return u(b[0].length),d(b[1],y,c),"continue"}var _=function(){var e=t.match(Qi);if(e){var n={tagName:e[1],attrs:[],start:c};u(e[0].length);for(var r=void 0,a=void 0;!(r=t.match(ts))&&(a=t.match(Zi)||t.match(Wi));)a.start=c,u(a[0].length),a.end=c,n.attrs.push(a);if(r)return n.unarySlash=r[1],u(r[0].length),n.end=c,n}}();if(_)return function(t){var n=t.tagName,c=t.unarySlash;o&&("p"===r&&Gi(n)&&d(r),s(n)&&r===n&&d(n));for(var l=i(n)||!!c,u=t.attrs.length,f=new Array(u),p=0;p=0){for(w=t.slice(h);!(es.test(w)||Qi.test(w)||rs.test(w)||as.test(w)||($=w.indexOf("<",1))<0);)h+=$,w=t.slice(h);x=t.substring(0,h)}h<0&&(x=t),x&&u(x.length),e.chars&&x&&e.chars(x,c-x.length,c)}if(t===n)return e.chars&&e.chars(t),"break"};t;){if("break"===l())break}function u(e){c+=e,t=t.substring(e)}function d(t,n,o){var i,s;if(null==n&&(n=c),null==o&&(o=c),t)for(s=t.toLowerCase(),i=a.length-1;i>=0&&a[i].lowerCasedTag!==s;i--);else i=0;if(i>=0){for(var l=a.length-1;l>=i;l--)e.end&&e.end(a[l].tag,n,o);a.length=i,r=i&&a[i-1].tag}else"br"===s?e.start&&e.start(t,[],!0,n,o):"p"===s&&(e.start&&e.start(t,[],!1,n,o),e.end&&e.end(t,n,o))}d()}var hs,ms,vs,gs,bs,ys,_s,xs,ws=/^@|^v-on:/,$s=/^v-|^@|^:|^#/,ks=/([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/,Cs=/,([^,\}\]]*)(?:,([^,\}\]]*))?$/,Ss=/^\(|\)$/g,Ns=/^\[.*\]$/,Is=/:(.*)$/,Es=/^:|^\.|^v-bind:/,As=/\.[^.\]]+(?=[^\]]*$)/g,Ls=/^v-slot(:|$)|^#/,Fs=/[\r\n]/,Os=/[ \f\t\r\n]+/g,Ds=k(Ui);function Ts(t,e,n){return{type:1,tag:t,attrsList:e,attrsMap:Hs(e),rawAttrsMap:{},parent:n,children:[]}}function js(t,e){hs=e.warn||ao,ys=e.isPreTag||T,_s=e.mustUseProp||T,xs=e.getTagNamespace||T;var n=e.isReservedTag||T;(function(t){return!(!(t.component||t.attrsMap[":is"]||t.attrsMap["v-bind:is"])&&(t.attrsMap.is?n(t.attrsMap.is):n(t.tag)))}),vs=oo(e.modules,"transformNode"),gs=oo(e.modules,"preTransformNode"),bs=oo(e.modules,"postTransformNode"),ms=e.delimiters;var r,a,o=[],i=!1!==e.preserveWhitespace,s=e.whitespace,c=!1,l=!1;function u(t){if(d(t),c||t.processed||(t=Ps(t,e)),o.length||t===r||r.if&&(t.elseif||t.else)&&Bs(r,{exp:t.elseif,block:t}),a&&!t.forbidden)if(t.elseif||t.else)i=t,(s=function(t){for(var e=t.length;e--;){if(1===t[e].type)return t[e];t.pop()}}(a.children))&&s.if&&Bs(s,{exp:i.elseif,block:i});else{if(t.slotScope){var n=t.slotTarget||'"default"';(a.scopedSlots||(a.scopedSlots={}))[n]=t}a.children.push(t),t.parent=a}var i,s;t.children=t.children.filter((function(t){return!t.slotScope})),d(t),t.pre&&(c=!1),ys(t.tag)&&(l=!1);for(var u=0;uc&&(s.push(o=t.slice(c,a)),i.push(JSON.stringify(o)));var l=no(r[1].trim());i.push("_s(".concat(l,")")),s.push({"@binding":l}),c=a+r[0].length}return c-1")+("true"===o?":(".concat(e,")"):":_q(".concat(e,",").concat(o,")"))),fo(t,"change","var $$a=".concat(e,",")+"$$el=$event.target,"+"$$c=$$el.checked?(".concat(o,"):(").concat(i,");")+"if(Array.isArray($$a)){"+"var $$v=".concat(r?"_n("+a+")":a,",")+"$$i=_i($$a,$$v);"+"if($$el.checked){$$i<0&&(".concat(bo(e,"$$a.concat([$$v])"),")}")+"else{$$i>-1&&(".concat(bo(e,"$$a.slice(0,$$i).concat($$a.slice($$i+1))"),")}")+"}else{".concat(bo(e,"$$c"),"}"),null,!0)}(t,r,a);else if("input"===o&&"radio"===i)!function(t,e,n){var r=n&&n.number,a=po(t,"value")||"null";a=r?"_n(".concat(a,")"):a,io(t,"checked","_q(".concat(e,",").concat(a,")")),fo(t,"change",bo(e,a),null,!0)}(t,r,a);else if("input"===o||"textarea"===o)!function(t,e,n){var r=t.attrsMap.type;0;var a=n||{},o=a.lazy,i=a.number,s=a.trim,c=!o&&"range"!==r,l=o?"change":"range"===r?"__r":"input",u="$event.target.value";s&&(u="$event.target.value.trim()");i&&(u="_n(".concat(u,")"));var d=bo(e,u);c&&(d="if($event.target.composing)return;".concat(d));io(t,"value","(".concat(e,")")),fo(t,l,d,null,!0),(s||i)&&fo(t,"blur","$forceUpdate()")}(t,r,a);else{if(!z.isReservedTag(o))return go(t,r,a),!1}return!0},text:function(t,e){e.value&&io(t,"textContent","_s(".concat(e.value,")"),e)},html:function(t,e){e.value&&io(t,"innerHTML","_s(".concat(e.value,")"),e)}},isPreTag:function(t){return"pre"===t},isUnaryTag:Ki,mustUseProp:ca,canBeLeftOpenTag:Ji,isReservedTag:$a,getTagNamespace:ka,staticKeys:function(t){return t.reduce((function(t,e){return t.concat(e.staticKeys||[])}),[]).join(",")}(Ks)},Zs=k((function(t){return b("type,tag,attrsList,attrsMap,plain,parent,children,attrs,start,end,rawAttrsMap"+(t?","+t:""))}));function Xs(t,e){t&&(Js=Zs(e.staticKeys||""),Gs=e.isReservedTag||T,function t(e){if(e.static=function(t){if(2===t.type)return!1;if(3===t.type)return!0;return!(!t.pre&&(t.hasBindings||t.if||t.for||y(t.tag)||!Gs(t.tag)||function(t){for(;t.parent;){if("template"!==(t=t.parent).tag)return!1;if(t.for)return!0}return!1}(t)||!Object.keys(t).every(Js)))}(e),1===e.type){if(!Gs(e.tag)&&"slot"!==e.tag&&null==e.attrsMap["inline-template"])return;for(var n=0,r=e.children.length;n|^function(?:\s+[\w$]+)?\s*\(/,Qs=/\([^)]*?\);*$/,tc=/^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['[^']*?']|\["[^"]*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*$/,ec={esc:27,tab:9,enter:13,space:32,up:38,left:37,right:39,down:40,delete:[8,46]},nc={esc:["Esc","Escape"],tab:"Tab",enter:"Enter",space:[" ","Spacebar"],up:["Up","ArrowUp"],left:["Left","ArrowLeft"],right:["Right","ArrowRight"],down:["Down","ArrowDown"],delete:["Backspace","Delete","Del"]},rc=function(t){return"if(".concat(t,")return null;")},ac={stop:"$event.stopPropagation();",prevent:"$event.preventDefault();",self:rc("$event.target !== $event.currentTarget"),ctrl:rc("!$event.ctrlKey"),shift:rc("!$event.shiftKey"),alt:rc("!$event.altKey"),meta:rc("!$event.metaKey"),left:rc("'button' in $event && $event.button !== 0"),middle:rc("'button' in $event && $event.button !== 1"),right:rc("'button' in $event && $event.button !== 2")};function oc(t,e){var n=e?"nativeOn:":"on:",r="",a="";for(var o in t){var i=ic(t[o]);t[o]&&t[o].dynamic?a+="".concat(o,",").concat(i,","):r+='"'.concat(o,'":').concat(i,",")}return r="{".concat(r.slice(0,-1),"}"),a?n+"_d(".concat(r,",[").concat(a.slice(0,-1),"])"):n+r}function ic(t){if(!t)return"function(){}";if(Array.isArray(t))return"[".concat(t.map((function(t){return ic(t)})).join(","),"]");var e=tc.test(t.value),n=Ys.test(t.value),r=tc.test(t.value.replace(Qs,""));if(t.modifiers){var a="",o="",i=[],s=function(e){if(ac[e])o+=ac[e],ec[e]&&i.push(e);else if("exact"===e){var n=t.modifiers;o+=rc(["ctrl","shift","alt","meta"].filter((function(t){return!n[t]})).map((function(t){return"$event.".concat(t,"Key")})).join("||"))}else i.push(e)};for(var c in t.modifiers)s(c);i.length&&(a+=function(t){return"if(!$event.type.indexOf('key')&&"+"".concat(t.map(sc).join("&&"),")return null;")}(i)),o&&(a+=o);var l=e?"return ".concat(t.value,".apply(null, arguments)"):n?"return (".concat(t.value,").apply(null, arguments)"):r?"return ".concat(t.value):t.value;return"function($event){".concat(a).concat(l,"}")}return e||n?t.value:"function($event){".concat(r?"return ".concat(t.value):t.value,"}")}function sc(t){var e=parseInt(t,10);if(e)return"$event.keyCode!==".concat(e);var n=ec[t],r=nc[t];return"_k($event.keyCode,"+"".concat(JSON.stringify(t),",")+"".concat(JSON.stringify(n),",")+"$event.key,"+"".concat(JSON.stringify(r))+")"}var cc={on:function(t,e){t.wrapListeners=function(t){return"_g(".concat(t,",").concat(e.value,")")}},bind:function(t,e){t.wrapData=function(n){return"_b(".concat(n,",'").concat(t.tag,"',").concat(e.value,",").concat(e.modifiers&&e.modifiers.prop?"true":"false").concat(e.modifiers&&e.modifiers.sync?",true":"",")")}},cloak:D},lc=function(t){this.options=t,this.warn=t.warn||ao,this.transforms=oo(t.modules,"transformCode"),this.dataGenFns=oo(t.modules,"genData"),this.directives=F(F({},cc),t.directives);var e=t.isReservedTag||T;this.maybeComponent=function(t){return!!t.component||!e(t.tag)},this.onceId=0,this.staticRenderFns=[],this.pre=!1};function uc(t,e){var n=new lc(e),r=t?"script"===t.tag?"null":dc(t,n):'_c("div")';return{render:"with(this){return ".concat(r,"}"),staticRenderFns:n.staticRenderFns}}function dc(t,e){if(t.parent&&(t.pre=t.pre||t.parent.pre),t.staticRoot&&!t.staticProcessed)return fc(t,e);if(t.once&&!t.onceProcessed)return pc(t,e);if(t.for&&!t.forProcessed)return mc(t,e);if(t.if&&!t.ifProcessed)return hc(t,e);if("template"!==t.tag||t.slotTarget||e.pre){if("slot"===t.tag)return function(t,e){var n=t.slotName||'"default"',r=yc(t,e),a="_t(".concat(n).concat(r?",function(){return ".concat(r,"}"):""),o=t.attrs||t.dynamicAttrs?wc((t.attrs||[]).concat(t.dynamicAttrs||[]).map((function(t){return{name:S(t.name),value:t.value,dynamic:t.dynamic}}))):null,i=t.attrsMap["v-bind"];!o&&!i||r||(a+=",null");o&&(a+=",".concat(o));i&&(a+="".concat(o?"":",null",",").concat(i));return a+")"}(t,e);var n=void 0;if(t.component)n=function(t,e,n){var r=e.inlineTemplate?null:yc(e,n,!0);return"_c(".concat(t,",").concat(vc(e,n)).concat(r?",".concat(r):"",")")}(t.component,t,e);else{var r=void 0,a=e.maybeComponent(t);(!t.plain||t.pre&&a)&&(r=vc(t,e));var o=void 0,i=e.options.bindings;a&&i&&!1!==i.__isScriptSetup&&(o=function(t,e){var n=S(e),r=N(n),a=function(a){return t[e]===a?e:t[n]===a?n:t[r]===a?r:void 0},o=a("setup-const")||a("setup-reactive-const");if(o)return o;var i=a("setup-let")||a("setup-ref")||a("setup-maybe-ref");if(i)return i}(i,t.tag)),o||(o="'".concat(t.tag,"'"));var s=t.inlineTemplate?null:yc(t,e,!0);n="_c(".concat(o).concat(r?",".concat(r):"").concat(s?",".concat(s):"",")")}for(var c=0;c>>0}(i)):"",")")}(t,t.scopedSlots,e),",")),t.model&&(n+="model:{value:".concat(t.model.value,",callback:").concat(t.model.callback,",expression:").concat(t.model.expression,"},")),t.inlineTemplate){var o=function(t,e){var n=t.children[0];0;if(n&&1===n.type){var r=uc(n,e.options);return"inlineTemplate:{render:function(){".concat(r.render,"},staticRenderFns:[").concat(r.staticRenderFns.map((function(t){return"function(){".concat(t,"}")})).join(","),"]}")}}(t,e);o&&(n+="".concat(o,","))}return n=n.replace(/,$/,"")+"}",t.dynamicAttrs&&(n="_b(".concat(n,',"').concat(t.tag,'",').concat(wc(t.dynamicAttrs),")")),t.wrapData&&(n=t.wrapData(n)),t.wrapListeners&&(n=t.wrapListeners(n)),n}function gc(t){return 1===t.type&&("slot"===t.tag||t.children.some(gc))}function bc(t,e){var n=t.attrsMap["slot-scope"];if(t.if&&!t.ifProcessed&&!n)return hc(t,e,bc,"null");if(t.for&&!t.forProcessed)return mc(t,e,bc);var r="_empty_"===t.slotScope?"":String(t.slotScope),a="function(".concat(r,"){")+"return ".concat("template"===t.tag?t.if&&n?"(".concat(t.if,")?").concat(yc(t,e)||"undefined",":undefined"):yc(t,e)||"undefined":dc(t,e),"}"),o=r?"":",proxy:true";return"{key:".concat(t.slotTarget||'"default"',",fn:").concat(a).concat(o,"}")}function yc(t,e,n,r,a){var o=t.children;if(o.length){var i=o[0];if(1===o.length&&i.for&&"template"!==i.tag&&"slot"!==i.tag){var s=n?e.maybeComponent(i)?",1":",0":"";return"".concat((r||dc)(i,e)).concat(s)}var c=n?function(t,e){for(var n=0,r=0;r':'
      ',Nc.innerHTML.indexOf(" ")>0}var Ac=!!W&&Ec(!1),Lc=!!W&&Ec(!0),Fc=k((function(t){var e=Na(t);return e&&e.innerHTML})),Oc=Yr.prototype.$mount;Yr.prototype.$mount=function(t,e){if((t=t&&Na(t))===document.body||t===document.documentElement)return this;var n=this.$options;if(!n.render){var r=n.template;if(r)if("string"==typeof r)"#"===r.charAt(0)&&(r=Fc(r));else{if(!r.nodeType)return this;r=r.innerHTML}else t&&(r=function(t){if(t.outerHTML)return t.outerHTML;var e=document.createElement("div");return e.appendChild(t.cloneNode(!0)),e.innerHTML}(t));if(r){0;var a=Ic(r,{outputSourceRange:!1,shouldDecodeNewlines:Ac,shouldDecodeNewlinesForHref:Lc,delimiters:n.delimiters,comments:n.comments},this),o=a.render,i=a.staticRenderFns;n.render=o,n.staticRenderFns=i}}return Oc.call(this,t,e)},Yr.compile=Ic}.call(this,n("yLpj"))},oGmI:function(t,e,n){"use strict";n.r(e);var r=n("LkTR"),a=n("ViX+");for(var o in a)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return a[t]}))}(o);var i=n("KHd+"),s=Object(i.a)(a.default,r.a,r.b,!1,null,"446e9cec",null);e.default=s.exports},oWGP:function(t,e,n){(t.exports=n("JPst")(!1)).push([t.i,"\n.dialog-footer[data-v-07c48d17] {\r\n text-align: right;\n}\r\n",""])},oxoV:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=p(n("EJiy")),a=p(n("gDS+")),o=p(n("P2sY")),i=p(n("bU/s"));n("ZdjR"),n("xJsF"),n("6BBn"),n("kiLR"),n("VeWa"),n("2nlJ");var s=p(n("BMaO")),c=n("DgvE"),l=n("xUqo"),u=p(n("qse9")),d=p(n("bWg5")),f=p(n("vGGE"));function p(t){return t&&t.__esModule?t:{default:t}}var h=d.default;e.default={name:"parseAbi",components:{contentHead:u.default},directives:{inputFilter:f.default},props:{},data:function(){return{aceEditor:null,themePath:"ace/theme/monokai",modePath:"ace/mode/json",abiContent:"",abiList:[{name:"aaa",content:""},{name:"aaa",content:""},{name:"aaa",content:""},{name:"aaa",content:""}],functionList:[],functionType:"",functionValue:"",argumentList:[{argumentOption:s.default.ABI_ARGUMENT_TYPE,type:"string",argumentValue:"",name:this.$t("text.argument")}],textarea:"",errorMsg:"",abiJsonContent:[],errors:"参数输入有误,请重新输入"}},computed:{},watch:{},created:function(){},mounted:function(){this.initEditor(),this.initFuction(),console.log(h.encodeFunctionCall({name:"set",type:"set",inputs:[{type:"string[2]",name:"n"}]},[["1","1"]]))},methods:{changGroup:function(){},initEditor:function(){this.aceEditor=i.default.edit(this.$refs.ace,{fontSize:14,fontFamily:"Consolas,Monaco,monospace",theme:this.themePath,mode:this.modePath,tabSize:4,useSoftTabs:!0}),this.aceEditor.setOptions({enableSnippets:!0,enableLiveAutocompletion:!0,enableBasicAutocompletion:!0,autoScrollEditorIntoView:!0,copyWithEmptySelection:!0}),this.aceEditor.getSession().setUseWrapMode(!0),this.aceEditor.setHighlightActiveLine(!0),this.aceEditor.getSession().on("change",this.changeAce),this.aceEditor.resize()},emptyArgument:function(){this.argumentList=[]},initArgument:function(){this.argumentList=[{argumentOption:s.default.ABI_ARGUMENT_TYPE,type:"string",argumentValue:"",name:this.$t("text.argument")}]},initFuction:function(){this.functionList=["constructor","your function"],this.functionType="constructor"},changeAce:function(){this.textarea="",this.abiContent=this.aceEditor.getSession().getValue()},changeFunType:function(t){var e=this;if(this.validateArgumentValue(),this.abiJsonContent.length)if("constructor"===t)this.functionValue=t,this.emptyArgument(),this.abiJsonContent.forEach((function(t){if(e.functionType==t.type)for(var n=t.inputs,r=0;r span[data-v-24f60430] {\r\n margin-right: 5px;\r\n color: #f6f6f6;\n}\n.metric-content[data-v-24f60430] {\r\n min-height: 700px;\n}\n.metric-split-line[data-v-24f60430] {\r\n margin: 0 30px;\r\n border-top: 2px dashed #f6f6f6;\n}\r\n",""])},p3hQ:function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return a}));var r=function(){var t=this,e=t._self._c;return e("div",[e("el-dialog",{staticClass:"dialog-wrapper",attrs:{title:t.$t("title.detailsAbi"),visible:t.dialogVisible,"before-close":t.modelClose,width:"600px"},on:{"update:visible":function(e){t.dialogVisible=e}}},[e("div",[e("json-viewer",{attrs:{value:t.blcokContent,"expand-depth":5,copyable:"",sort:"",boxed:""}}),t._v(" "),t.noData?e("div",{staticStyle:{"text-align":"center"}},[t._v(t._s(t.$t("text.noData")))]):t._e()],1)])],1)},a=[];r._withStripped=!0},pdZy:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=s(n("qse9")),a=s(n("KpZx")),o=n("mHBk"),i=(n("DgvE"),s(n("9e9m")),s(n("KIAU")));function s(t){return t&&t.__esModule?t:{default:t}}e.default={name:"privateKeyManagement",components:{"v-contentHead":r.default,importKey:a.default,ExportKey:i.default},computed:{privateKeyHead:function(){return[{enName:"address",name:this.$t("table.address"),tdWidth:""},{enName:"publicKey",name:this.$t("table.publicKey"),tdWidth:""},{enName:"userName",name:this.$t("table.user"),tdWidth:""},{enName:"operate",name:this.$t("table.actions"),tdWidth:150}]},rules:function(){return{userName:[{required:!0,message:this.$t("dialog.pleaseEnterUserName"),trigger:"blur"},{pattern:/^[A-za-z0-9]+$/,message:this.$t("dialog.privateKeyVerifyFont"),trigger:"blur"},{trigger:"blur",min:3,max:32,message:this.$t("dialog.privateKeyVerifyLength")}]}}},data:function(){return{userForm:{userName:""},loading:!1,creatUserNameVisible:!1,privateKeyList:localStorage.getItem("privateKeyList")?JSON.parse(localStorage.getItem("privateKeyList")):[],fileString:"",uploadMap:{},exportInfo:{}}},mounted:function(){this.getLocalKeyStores(),this.getEncryption()},methods:{getEncryption:function(){var t=this;(0,o.encryption)().then((function(e){200==e.status?localStorage.setItem("encryptionId",e.data):t.$message({type:"error",message:t.$chooseLang(e.data.code)})})).catch((function(e){t.$message({type:"error",message:e.data||t.$t("text.systemError")})}))},creatUserBtn:function(){this.userForm.userName="",this.creatUserNameVisible=!0},initUserName:function(){this.userForm={userName:""}},closeCallback:function(){this.initUserName()},closeUserName:function(){this.creatUserNameVisible=!1,this.initUserName()},getLocalKeyStores:function(){var t=this;(0,o.queryLocalKeyStores)().then((function(e){var n=e.data;200===e.status?t.privateKeyList=n:t.$message({type:"error",message:t.$chooseLang(e.data.code)})})).catch((function(e){t.$message({type:"error",message:e.data||t.$t("text.systemError")})}))},sureUserName:function(t){var e=this;this.$refs[t].validate((function(t){if(!t)return!1;e.privateKeyList.map((function(t){return t.userName})).includes(e.userForm.userName)?e.$message({type:"error",message:e.$t("text.nameNoSame")}):(e.creatUserNameVisible=!1,e.addUser())}))},addUser:function(){var t=this;(0,o.queryCreatePrivateKey)({useAes:!1,type:0,userName:this.userForm.userName}).then((function(e){e.data;200===e.status?(t.getLocalKeyStores(),t.$message({type:"success",message:t.$t("text.addUserSuccessed")})):t.$message({type:"error",message:t.$chooseLang(e.data.code)})})).catch((function(e){t.$message({type:"error",message:e.data||t.$t("text.systemError")})}))},deleteFile:function(t){var e=this;this.$confirm(this.$t("dialog.sureDelete")+"?",{center:!0,dangerouslyUseHTMLString:!0}).then((function(){e.getDeleteFile(t)})).catch((function(){console.log("")}))},getDeleteFile:function(t){var e=this;(0,o.queryDeletePrivateKey)(t.address).then((function(t){t.data;200===t.status?(e.getLocalKeyStores(),e.$message({type:"success",message:e.$t("text.deleteUserSuccessed")})):e.$message({type:"error",message:e.$chooseLang(t.data.code)})})).catch((function(t){e.$message({type:"error",message:t.data||e.$t("text.systemError")})}))},copyPubilcKey:function(t){var e=this;t?this.$copyText(t).then((function(t){e.$message({type:"success",showClose:!0,message:e.$t("notice.copySuccessfully"),duration:2e3})})):this.$message({type:"fail",showClose:!0,message:this.$t("notice.copyFailure"),duration:2e3})},exportFile:function(t){this.exportInfo=t,this.$store.dispatch("switch_export_rivate_key_dialog")},importPrivateKeySuccess:function(){this.getLocalKeyStores()},exportPrivateKeySuccess:function(){this.$store.dispatch("switch_export_rivate_key_dialog")}}}},pfN8:function(t,e,n){var r=n("0OoW");r.__esModule&&(r=r.default),"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals);(0,n("SZ7m").default)("21db5cc8",r,!1,{})},qBtu:function(t,e,n){(t.exports=n("JPst")(!1)).push([t.i,"\n.noData[data-v-63dca592] {\n position: absolute;\n display: inline-block;\n top: 50%;\n left: 46%;\n color: #1f8efa;\n}\n",""])},qJcf:function(t,e,n){"use strict";n.r(e);var r=n("PH/m"),a=n("s0NJ");for(var o in a)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return a[t]}))}(o);n("bo/2");var i=n("KHd+"),s=Object(i.a)(a.default,r.a,r.b,!1,null,null,null);e.default=s.exports},qSUR:function(t,e,n){"use strict";n.r(e); +/*! + * vue-i18n v8.28.2 + * (c) 2022 kazuya kawaguchi + * Released under the MIT License. + */ +var r=["compactDisplay","currency","currencyDisplay","currencySign","localeMatcher","notation","numberingSystem","signDisplay","style","unit","unitDisplay","useGrouping","minimumIntegerDigits","minimumFractionDigits","maximumFractionDigits","minimumSignificantDigits","maximumSignificantDigits"],a=["dateStyle","timeStyle","calendar","localeMatcher","hour12","hourCycle","timeZone","formatMatcher","weekday","era","year","month","day","hour","minute","second","timeZoneName"];function o(t,e){"undefined"!=typeof console&&(console.warn("[vue-i18n] "+t),e&&console.warn(e.stack))}var i=Array.isArray;function s(t){return null!==t&&"object"==typeof t}function c(t){return"string"==typeof t}var l=Object.prototype.toString;function u(t){return"[object Object]"===l.call(t)}function d(t){return null==t}function f(t){return"function"==typeof t}function p(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];var n=null,r=null;return 1===t.length?s(t[0])||i(t[0])?r=t[0]:"string"==typeof t[0]&&(n=t[0]):2===t.length&&("string"==typeof t[0]&&(n=t[0]),(s(t[1])||i(t[1]))&&(r=t[1])),{locale:n,params:r}}function h(t){return JSON.parse(JSON.stringify(t))}function m(t,e){return!!~t.indexOf(e)}var v=Object.prototype.hasOwnProperty;function g(t,e){return v.call(t,e)}function b(t){for(var e=arguments,n=Object(t),r=1;r/g,">").replace(/"/g,""").replace(/'/g,"'"))})),t}var x={name:"i18n",functional:!0,props:{tag:{type:[String,Boolean,Object],default:"span"},path:{type:String,required:!0},locale:{type:String},places:{type:[Array,Object]}},render:function(t,e){var n=e.data,r=e.parent,a=e.props,o=e.slots,i=r.$i18n;if(i){var s=a.path,c=a.locale,l=a.places,u=o(),d=i.i(s,c,function(t){var e;for(e in t)if("default"!==e)return!1;return Boolean(e)}(u)||l?function(t,e){var n=e?function(t){0;return Array.isArray(t)?t.reduce($,{}):Object.assign({},t)}(e):{};if(!t)return n;var r=(t=t.filter((function(t){return t.tag||""!==t.text.trim()}))).every(k);0;return t.reduce(r?w:$,n)}(u.default,l):u),f=a.tag&&!0!==a.tag||!1===a.tag?a.tag:"span";return f?t(f,n,d):d}}};function w(t,e){return e.data&&e.data.attrs&&e.data.attrs.place&&(t[e.data.attrs.place]=e),t}function $(t,e,n){return t[n]=e,t}function k(t){return Boolean(t.data&&t.data.attrs&&t.data.attrs.place)}var C,S={name:"i18n-n",functional:!0,props:{tag:{type:[String,Boolean,Object],default:"span"},value:{type:Number,required:!0},format:{type:[String,Object]},locale:{type:String}},render:function(t,e){var n=e.props,a=e.parent,o=e.data,i=a.$i18n;if(!i)return null;var l=null,u=null;c(n.format)?l=n.format:s(n.format)&&(n.format.key&&(l=n.format.key),u=Object.keys(n.format).reduce((function(t,e){var a;return m(r,e)?Object.assign({},t,((a={})[e]=n.format[e],a)):t}),null));var d=n.locale||i.locale,f=i._ntp(n.value,d,l,u),p=f.map((function(t,e){var n,r=o.scopedSlots&&o.scopedSlots[t.type];return r?r(((n={})[t.type]=t.value,n.index=e,n.parts=f,n)):t.value})),h=n.tag&&!0!==n.tag||!1===n.tag?n.tag:"span";return h?t(h,{attrs:o.attrs,class:o.class,staticClass:o.staticClass},p):p}};function N(t,e,n){A(t,n)&&L(t,e,n)}function I(t,e,n,r){if(A(t,n)){var a=n.context.$i18n;(function(t,e){var n=e.context;return t._locale===n.$i18n.locale})(t,n)&&y(e.value,e.oldValue)&&y(t._localeMessage,a.getLocaleMessage(a.locale))||L(t,e,n)}}function E(t,e,n,r){if(n.context){var a=n.context.$i18n||{};e.modifiers.preserve||a.preserveDirectiveContent||(t.textContent=""),t._vt=void 0,delete t._vt,t._locale=void 0,delete t._locale,t._localeMessage=void 0,delete t._localeMessage}else o("Vue instance does not exists in VNode context")}function A(t,e){var n=e.context;return n?!!n.$i18n||(o("VueI18n instance does not exists in Vue instance"),!1):(o("Vue instance does not exists in VNode context"),!1)}function L(t,e,n){var r,a,i=function(t){var e,n,r,a;c(t)?e=t:u(t)&&(e=t.path,n=t.locale,r=t.args,a=t.choice);return{path:e,locale:n,args:r,choice:a}}(e.value),s=i.path,l=i.locale,d=i.args,f=i.choice;if(s||l||d)if(s){var p=n.context;t._vt=t.textContent=null!=f?(r=p.$i18n).tc.apply(r,[s,f].concat(F(l,d))):(a=p.$i18n).t.apply(a,[s].concat(F(l,d))),t._locale=p.$i18n.locale,t._localeMessage=p.$i18n.getLocaleMessage(p.$i18n.locale)}else o("`path` is required in v-t directive");else o("value type not supported")}function F(t,e){var n=[];return t&&n.push(t),e&&(Array.isArray(e)||u(e))&&n.push(e),n}function O(t,e){void 0===e&&(e={bridge:!1}),O.installed=!0;(C=t).version&&Number(C.version.split(".")[0]);(function(t){t.prototype.hasOwnProperty("$i18n")||Object.defineProperty(t.prototype,"$i18n",{get:function(){return this._i18n}}),t.prototype.$t=function(t){for(var e=[],n=arguments.length-1;n-- >0;)e[n]=arguments[n+1];var r=this.$i18n;return r._t.apply(r,[t,r.locale,r._getMessages(),this].concat(e))},t.prototype.$tc=function(t,e){for(var n=[],r=arguments.length-2;r-- >0;)n[r]=arguments[r+2];var a=this.$i18n;return a._tc.apply(a,[t,a.locale,a._getMessages(),this,e].concat(n))},t.prototype.$te=function(t,e){var n=this.$i18n;return n._te(t,n.locale,n._getMessages(),e)},t.prototype.$d=function(t){for(var e,n=[],r=arguments.length-1;r-- >0;)n[r]=arguments[r+1];return(e=this.$i18n).d.apply(e,[t].concat(n))},t.prototype.$n=function(t){for(var e,n=[],r=arguments.length-1;r-- >0;)n[r]=arguments[r+1];return(e=this.$i18n).n.apply(e,[t].concat(n))}})(C),C.mixin(function(t){function e(){this!==this.$root&&this.$options.__INTLIFY_META__&&this.$el&&this.$el.setAttribute("data-intlify",this.$options.__INTLIFY_META__)}return void 0===t&&(t=!1),t?{mounted:e}:{beforeCreate:function(){var t=this.$options;if(t.i18n=t.i18n||(t.__i18nBridge||t.__i18n?{}:null),t.i18n)if(t.i18n instanceof W){if(t.__i18nBridge||t.__i18n)try{var e=t.i18n&&t.i18n.messages?t.i18n.messages:{};(t.__i18nBridge||t.__i18n).forEach((function(t){e=b(e,JSON.parse(t))})),Object.keys(e).forEach((function(n){t.i18n.mergeLocaleMessage(n,e[n])}))}catch(t){0}this._i18n=t.i18n,this._i18nWatcher=this._i18n.watchI18nData()}else if(u(t.i18n)){var n=this.$root&&this.$root.$i18n&&this.$root.$i18n instanceof W?this.$root.$i18n:null;if(n&&(t.i18n.root=this.$root,t.i18n.formatter=n.formatter,t.i18n.fallbackLocale=n.fallbackLocale,t.i18n.formatFallbackMessages=n.formatFallbackMessages,t.i18n.silentTranslationWarn=n.silentTranslationWarn,t.i18n.silentFallbackWarn=n.silentFallbackWarn,t.i18n.pluralizationRules=n.pluralizationRules,t.i18n.preserveDirectiveContent=n.preserveDirectiveContent),t.__i18nBridge||t.__i18n)try{var r=t.i18n&&t.i18n.messages?t.i18n.messages:{};(t.__i18nBridge||t.__i18n).forEach((function(t){r=b(r,JSON.parse(t))})),t.i18n.messages=r}catch(t){0}var a=t.i18n.sharedMessages;a&&u(a)&&(t.i18n.messages=b(t.i18n.messages,a)),this._i18n=new W(t.i18n),this._i18nWatcher=this._i18n.watchI18nData(),(void 0===t.i18n.sync||t.i18n.sync)&&(this._localeWatcher=this.$i18n.watchLocale()),n&&n.onComponentInstanceCreated(this._i18n)}else 0;else this.$root&&this.$root.$i18n&&this.$root.$i18n instanceof W?this._i18n=this.$root.$i18n:t.parent&&t.parent.$i18n&&t.parent.$i18n instanceof W&&(this._i18n=t.parent.$i18n)},beforeMount:function(){var t=this.$options;t.i18n=t.i18n||(t.__i18nBridge||t.__i18n?{}:null),t.i18n?(t.i18n instanceof W||u(t.i18n))&&(this._i18n.subscribeDataChanging(this),this._subscribing=!0):(this.$root&&this.$root.$i18n&&this.$root.$i18n instanceof W||t.parent&&t.parent.$i18n&&t.parent.$i18n instanceof W)&&(this._i18n.subscribeDataChanging(this),this._subscribing=!0)},mounted:e,beforeDestroy:function(){if(this._i18n){var t=this;this.$nextTick((function(){t._subscribing&&(t._i18n.unsubscribeDataChanging(t),delete t._subscribing),t._i18nWatcher&&(t._i18nWatcher(),t._i18n.destroyVM(),delete t._i18nWatcher),t._localeWatcher&&(t._localeWatcher(),delete t._localeWatcher)}))}}}}(e.bridge)),C.directive("t",{bind:N,update:I,unbind:E}),C.component(x.name,x),C.component(S.name,S),C.config.optionMergeStrategies.i18n=function(t,e){return void 0===e?t:e}}var D=function(){this._caches=Object.create(null)};D.prototype.interpolate=function(t,e){if(!e)return[t];var n=this._caches[t];return n||(n=function(t){var e=[],n=0,r="";for(;n0)d--,u=4,f[0]();else{if(d=0,void 0===n)return!1;if(!1===(n=V(n)))return!1;f[1]()}};null!==u;)if(l++,"\\"!==(e=t[l])||!p()){if(a=B(e),8===(o=(s=P[u])[a]||s.else||8))return;if(u=o[0],(i=f[o[1]])&&(r=void 0===(r=o[2])?e:r,!1===i()))return;if(7===u)return c}}(t))&&(this._cache[t]=e),e||[]},R.prototype.getPathValue=function(t,e){if(!s(t))return null;var n=this.parsePath(e);if(0===n.length)return null;for(var r=n.length,a=t,o=0;o/,q=/(?:@(?:\.[a-zA-Z]+)?:(?:[\w\-_|./]+|\([\w\-_:|./]+\)))/g,U=/^@(?:\.([a-zA-Z]+))?:/,K=/[()]/g,J={upper:function(t){return t.toLocaleUpperCase()},lower:function(t){return t.toLocaleLowerCase()},capitalize:function(t){return""+t.charAt(0).toLocaleUpperCase()+t.substr(1)}},G=new D,W=function(t){var e=this;void 0===t&&(t={}),!C&&"undefined"!=typeof window&&window.Vue&&O(window.Vue);var n=t.locale||"en-US",r=!1!==t.fallbackLocale&&(t.fallbackLocale||"en-US"),a=t.messages||{},o=t.dateTimeFormats||t.datetimeFormats||{},i=t.numberFormats||{};this._vm=null,this._formatter=t.formatter||G,this._modifiers=t.modifiers||{},this._missing=t.missing||null,this._root=t.root||null,this._sync=void 0===t.sync||!!t.sync,this._fallbackRoot=void 0===t.fallbackRoot||!!t.fallbackRoot,this._fallbackRootWithEmptyString=void 0===t.fallbackRootWithEmptyString||!!t.fallbackRootWithEmptyString,this._formatFallbackMessages=void 0!==t.formatFallbackMessages&&!!t.formatFallbackMessages,this._silentTranslationWarn=void 0!==t.silentTranslationWarn&&t.silentTranslationWarn,this._silentFallbackWarn=void 0!==t.silentFallbackWarn&&!!t.silentFallbackWarn,this._dateTimeFormatters={},this._numberFormatters={},this._path=new R,this._dataListeners=new Set,this._componentInstanceCreatedListener=t.componentInstanceCreatedListener||null,this._preserveDirectiveContent=void 0!==t.preserveDirectiveContent&&!!t.preserveDirectiveContent,this.pluralizationRules=t.pluralizationRules||{},this._warnHtmlInMessage=t.warnHtmlInMessage||"off",this._postTranslation=t.postTranslation||null,this._escapeParameterHtml=t.escapeParameterHtml||!1,"__VUE_I18N_BRIDGE__"in t&&(this.__VUE_I18N_BRIDGE__=t.__VUE_I18N_BRIDGE__),this.getChoiceIndex=function(t,n){var r=Object.getPrototypeOf(e);if(r&&r.getChoiceIndex)return r.getChoiceIndex.call(e,t,n);var a,o;return e.locale in e.pluralizationRules?e.pluralizationRules[e.locale].apply(e,[t,n]):(a=t,o=n,a=Math.abs(a),2===o?a?a>1?1:0:1:a?Math.min(a,2):0)},this._exist=function(t,n){return!(!t||!n)&&(!d(e._path.getPathValue(t,n))||!!t[n])},"warn"!==this._warnHtmlInMessage&&"error"!==this._warnHtmlInMessage||Object.keys(a).forEach((function(t){e._checkLocaleMessage(t,e._warnHtmlInMessage,a[t])})),this._initVM({locale:n,fallbackLocale:r,messages:a,dateTimeFormats:o,numberFormats:i})},Z={vm:{configurable:!0},messages:{configurable:!0},dateTimeFormats:{configurable:!0},numberFormats:{configurable:!0},availableLocales:{configurable:!0},locale:{configurable:!0},fallbackLocale:{configurable:!0},formatFallbackMessages:{configurable:!0},missing:{configurable:!0},formatter:{configurable:!0},silentTranslationWarn:{configurable:!0},silentFallbackWarn:{configurable:!0},preserveDirectiveContent:{configurable:!0},warnHtmlInMessage:{configurable:!0},postTranslation:{configurable:!0},sync:{configurable:!0}};W.prototype._checkLocaleMessage=function(t,e,n){var r=function(t,e,n,a){if(u(n))Object.keys(n).forEach((function(o){var i=n[o];u(i)?(a.push(o),a.push("."),r(t,e,i,a),a.pop(),a.pop()):(a.push(o),r(t,e,i,a),a.pop())}));else if(i(n))n.forEach((function(n,o){u(n)?(a.push("["+o+"]"),a.push("."),r(t,e,n,a),a.pop(),a.pop()):(a.push("["+o+"]"),r(t,e,n,a),a.pop())}));else if(c(n)){if(z.test(n)){var s="Detected HTML in message '"+n+"' of keypath '"+a.join("")+"' at '"+e+"'. Consider component interpolation with '' to avoid XSS. See https://bit.ly/2ZqJzkp";"warn"===t?o(s):"error"===t&&function(t,e){"undefined"!=typeof console&&(console.error("[vue-i18n] "+t),e&&console.error(e.stack))}(s)}}};r(e,t,n,[])},W.prototype._initVM=function(t){var e=C.config.silent;C.config.silent=!0,this._vm=new C({data:t,__VUE18N__INSTANCE__:!0}),C.config.silent=e},W.prototype.destroyVM=function(){this._vm.$destroy()},W.prototype.subscribeDataChanging=function(t){this._dataListeners.add(t)},W.prototype.unsubscribeDataChanging=function(t){!function(t,e){if(t.delete(e));}(this._dataListeners,t)},W.prototype.watchI18nData=function(){var t=this;return this._vm.$watch("$data",(function(){for(var e,n,r=(e=t._dataListeners,n=[],e.forEach((function(t){return n.push(t)})),n),a=r.length;a--;)C.nextTick((function(){r[a]&&r[a].$forceUpdate()}))}),{deep:!0})},W.prototype.watchLocale=function(t){if(t){if(!this.__VUE_I18N_BRIDGE__)return null;var e=this,n=this._vm;return this.vm.$watch("locale",(function(r){n.$set(n,"locale",r),e.__VUE_I18N_BRIDGE__&&t&&(t.locale.value=r),n.$forceUpdate()}),{immediate:!0})}if(!this._sync||!this._root)return null;var r=this._vm;return this._root.$i18n.vm.$watch("locale",(function(t){r.$set(r,"locale",t),r.$forceUpdate()}),{immediate:!0})},W.prototype.onComponentInstanceCreated=function(t){this._componentInstanceCreatedListener&&this._componentInstanceCreatedListener(t,this)},Z.vm.get=function(){return this._vm},Z.messages.get=function(){return h(this._getMessages())},Z.dateTimeFormats.get=function(){return h(this._getDateTimeFormats())},Z.numberFormats.get=function(){return h(this._getNumberFormats())},Z.availableLocales.get=function(){return Object.keys(this.messages).sort()},Z.locale.get=function(){return this._vm.locale},Z.locale.set=function(t){this._vm.$set(this._vm,"locale",t)},Z.fallbackLocale.get=function(){return this._vm.fallbackLocale},Z.fallbackLocale.set=function(t){this._localeChainCache={},this._vm.$set(this._vm,"fallbackLocale",t)},Z.formatFallbackMessages.get=function(){return this._formatFallbackMessages},Z.formatFallbackMessages.set=function(t){this._formatFallbackMessages=t},Z.missing.get=function(){return this._missing},Z.missing.set=function(t){this._missing=t},Z.formatter.get=function(){return this._formatter},Z.formatter.set=function(t){this._formatter=t},Z.silentTranslationWarn.get=function(){return this._silentTranslationWarn},Z.silentTranslationWarn.set=function(t){this._silentTranslationWarn=t},Z.silentFallbackWarn.get=function(){return this._silentFallbackWarn},Z.silentFallbackWarn.set=function(t){this._silentFallbackWarn=t},Z.preserveDirectiveContent.get=function(){return this._preserveDirectiveContent},Z.preserveDirectiveContent.set=function(t){this._preserveDirectiveContent=t},Z.warnHtmlInMessage.get=function(){return this._warnHtmlInMessage},Z.warnHtmlInMessage.set=function(t){var e=this,n=this._warnHtmlInMessage;if(this._warnHtmlInMessage=t,n!==t&&("warn"===t||"error"===t)){var r=this._getMessages();Object.keys(r).forEach((function(t){e._checkLocaleMessage(t,e._warnHtmlInMessage,r[t])}))}},Z.postTranslation.get=function(){return this._postTranslation},Z.postTranslation.set=function(t){this._postTranslation=t},Z.sync.get=function(){return this._sync},Z.sync.set=function(t){this._sync=t},W.prototype._getMessages=function(){return this._vm.messages},W.prototype._getDateTimeFormats=function(){return this._vm.dateTimeFormats},W.prototype._getNumberFormats=function(){return this._vm.numberFormats},W.prototype._warnDefault=function(t,e,n,r,a,o){if(!d(n))return n;if(this._missing){var i=this._missing.apply(null,[t,e,r,a]);if(c(i))return i}else 0;if(this._formatFallbackMessages){var s=p.apply(void 0,a);return this._render(e,o,s.params,e)}return e},W.prototype._isFallbackRoot=function(t){return(this._fallbackRootWithEmptyString?!t:d(t))&&!d(this._root)&&this._fallbackRoot},W.prototype._isSilentFallbackWarn=function(t){return this._silentFallbackWarn instanceof RegExp?this._silentFallbackWarn.test(t):this._silentFallbackWarn},W.prototype._isSilentFallback=function(t,e){return this._isSilentFallbackWarn(e)&&(this._isFallbackRoot()||t!==this.fallbackLocale)},W.prototype._isSilentTranslationWarn=function(t){return this._silentTranslationWarn instanceof RegExp?this._silentTranslationWarn.test(t):this._silentTranslationWarn},W.prototype._interpolate=function(t,e,n,r,a,o,s){if(!e)return null;var l,p=this._path.getPathValue(e,n);if(i(p)||u(p))return p;if(d(p)){if(!u(e))return null;if(!c(l=e[n])&&!f(l))return null}else{if(!c(p)&&!f(p))return null;l=p}return c(l)&&(l.indexOf("@:")>=0||l.indexOf("@.")>=0)&&(l=this._link(t,e,l,r,"raw",o,s)),this._render(l,a,o,n)},W.prototype._link=function(t,e,n,r,a,o,s){var c=n,l=c.match(q);for(var u in l)if(l.hasOwnProperty(u)){var d=l[u],f=d.match(U),p=f[0],h=f[1],v=d.replace(p,"").replace(K,"");if(m(s,v))return c;s.push(v);var g=this._interpolate(t,e,v,r,"raw"===a?"string":a,"raw"===a?void 0:o,s);if(this._isFallbackRoot(g)){if(!this._root)throw Error("unexpected error");var b=this._root.$i18n;g=b._translate(b._getMessages(),b.locale,b.fallbackLocale,v,r,a,o)}g=this._warnDefault(t,v,g,r,i(o)?o:[o],a),this._modifiers.hasOwnProperty(h)?g=this._modifiers[h](g):J.hasOwnProperty(h)&&(g=J[h](g)),s.pop(),c=g?c.replace(d,g):c}return c},W.prototype._createMessageContext=function(t,e,n,r){var a=this,o=i(t)?t:[],c=s(t)?t:{},l=this._getMessages(),u=this.locale;return{list:function(t){return o[t]},named:function(t){return c[t]},values:t,formatter:e,path:n,messages:l,locale:u,linked:function(t){return a._interpolate(u,l[u]||{},t,null,r,void 0,[t])}}},W.prototype._render=function(t,e,n,r){if(f(t))return t(this._createMessageContext(n,this._formatter||G,r,e));var a=this._formatter.interpolate(t,n,r);return a||(a=G.interpolate(t,n,r)),"string"!==e||c(a)?a:a.join("")},W.prototype._appendItemToChain=function(t,e,n){var r=!1;return m(t,e)||(r=!0,e&&(r="!"!==e[e.length-1],e=e.replace(/!/g,""),t.push(e),n&&n[e]&&(r=n[e]))),r},W.prototype._appendLocaleToChain=function(t,e,n){var r,a=e.split("-");do{var o=a.join("-");r=this._appendItemToChain(t,o,n),a.splice(-1,1)}while(a.length&&!0===r);return r},W.prototype._appendBlockToChain=function(t,e,n){for(var r=!0,a=0;a0;)o[i]=arguments[i+4];if(!t)return"";var s=p.apply(void 0,o);this._escapeParameterHtml&&(s.params=_(s.params));var c=s.locale||e,l=this._translate(n,c,this.fallbackLocale,t,r,"string",s.params);if(this._isFallbackRoot(l)){if(!this._root)throw Error("unexpected error");return(a=this._root).$t.apply(a,[t].concat(o))}return l=this._warnDefault(c,t,l,r,o,"string"),this._postTranslation&&null!=l&&(l=this._postTranslation(l,t)),l},W.prototype.t=function(t){for(var e,n=[],r=arguments.length-1;r-- >0;)n[r]=arguments[r+1];return(e=this)._t.apply(e,[t,this.locale,this._getMessages(),null].concat(n))},W.prototype._i=function(t,e,n,r,a){var o=this._translate(n,e,this.fallbackLocale,t,r,"raw",a);if(this._isFallbackRoot(o)){if(!this._root)throw Error("unexpected error");return this._root.$i18n.i(t,e,a)}return this._warnDefault(e,t,o,r,[a],"raw")},W.prototype.i=function(t,e,n){return t?(c(e)||(e=this.locale),this._i(t,e,this._getMessages(),null,n)):""},W.prototype._tc=function(t,e,n,r,a){for(var o,i=[],s=arguments.length-5;s-- >0;)i[s]=arguments[s+5];if(!t)return"";void 0===a&&(a=1);var c={count:a,n:a},l=p.apply(void 0,i);return l.params=Object.assign(c,l.params),i=null===l.locale?[l.params]:[l.locale,l.params],this.fetchChoice((o=this)._t.apply(o,[t,e,n,r].concat(i)),a)},W.prototype.fetchChoice=function(t,e){if(!t||!c(t))return null;var n=t.split("|");return n[e=this.getChoiceIndex(e,n.length)]?n[e].trim():t},W.prototype.tc=function(t,e){for(var n,r=[],a=arguments.length-2;a-- >0;)r[a]=arguments[a+2];return(n=this)._tc.apply(n,[t,this.locale,this._getMessages(),null,e].concat(r))},W.prototype._te=function(t,e,n){for(var r=[],a=arguments.length-3;a-- >0;)r[a]=arguments[a+3];var o=p.apply(void 0,r).locale||e;return this._exist(n[o],t)},W.prototype.te=function(t,e){return this._te(t,this.locale,this._getMessages(),e)},W.prototype.getLocaleMessage=function(t){return h(this._vm.messages[t]||{})},W.prototype.setLocaleMessage=function(t,e){"warn"!==this._warnHtmlInMessage&&"error"!==this._warnHtmlInMessage||this._checkLocaleMessage(t,this._warnHtmlInMessage,e),this._vm.$set(this._vm.messages,t,e)},W.prototype.mergeLocaleMessage=function(t,e){"warn"!==this._warnHtmlInMessage&&"error"!==this._warnHtmlInMessage||this._checkLocaleMessage(t,this._warnHtmlInMessage,e),this._vm.$set(this._vm.messages,t,b(void 0!==this._vm.messages[t]&&Object.keys(this._vm.messages[t]).length?Object.assign({},this._vm.messages[t]):{},e))},W.prototype.getDateTimeFormat=function(t){return h(this._vm.dateTimeFormats[t]||{})},W.prototype.setDateTimeFormat=function(t,e){this._vm.$set(this._vm.dateTimeFormats,t,e),this._clearDateTimeFormat(t,e)},W.prototype.mergeDateTimeFormat=function(t,e){this._vm.$set(this._vm.dateTimeFormats,t,b(this._vm.dateTimeFormats[t]||{},e)),this._clearDateTimeFormat(t,e)},W.prototype._clearDateTimeFormat=function(t,e){for(var n in e){var r=t+"__"+n;this._dateTimeFormatters.hasOwnProperty(r)&&delete this._dateTimeFormatters[r]}},W.prototype._localizeDateTime=function(t,e,n,r,a,o){for(var i=e,s=r[i],c=this._getLocaleChain(e,n),l=0;l0;)e[n]=arguments[n+1];var r=this.locale,o=null,i=null;return 1===e.length?(c(e[0])?o=e[0]:s(e[0])&&(e[0].locale&&(r=e[0].locale),e[0].key&&(o=e[0].key)),i=Object.keys(e[0]).reduce((function(t,n){var r;return m(a,n)?Object.assign({},t,((r={})[n]=e[0][n],r)):t}),null)):2===e.length&&(c(e[0])&&(o=e[0]),c(e[1])&&(r=e[1])),this._d(t,r,o,i)},W.prototype.getNumberFormat=function(t){return h(this._vm.numberFormats[t]||{})},W.prototype.setNumberFormat=function(t,e){this._vm.$set(this._vm.numberFormats,t,e),this._clearNumberFormat(t,e)},W.prototype.mergeNumberFormat=function(t,e){this._vm.$set(this._vm.numberFormats,t,b(this._vm.numberFormats[t]||{},e)),this._clearNumberFormat(t,e)},W.prototype._clearNumberFormat=function(t,e){for(var n in e){var r=t+"__"+n;this._numberFormatters.hasOwnProperty(r)&&delete this._numberFormatters[r]}},W.prototype._getNumberFormatter=function(t,e,n,r,a,o){for(var i=e,s=r[i],c=this._getLocaleChain(e,n),l=0;l0;)e[n]=arguments[n+1];var a=this.locale,o=null,i=null;return 1===e.length?c(e[0])?o=e[0]:s(e[0])&&(e[0].locale&&(a=e[0].locale),e[0].key&&(o=e[0].key),i=Object.keys(e[0]).reduce((function(t,n){var a;return m(r,n)?Object.assign({},t,((a={})[n]=e[0][n],a)):t}),null)):2===e.length&&(c(e[0])&&(o=e[0]),c(e[1])&&(a=e[1])),this._n(t,a,o,i)},W.prototype._ntp=function(t,e,n,r){if(!W.availabilities.numberFormat)return[];if(!n)return(r?new Intl.NumberFormat(e,r):new Intl.NumberFormat(e)).formatToParts(t);var a=this._getNumberFormatter(t,e,this.fallbackLocale,this._getNumberFormats(),n,r),o=a&&a.formatToParts(t);if(this._isFallbackRoot(o)){if(!this._root)throw Error("unexpected error");return this._root.$i18n._ntp(t,e,n,r)}return o||[]},Object.defineProperties(W.prototype,Z),Object.defineProperty(W,"availabilities",{get:function(){if(!H){var t="undefined"!=typeof Intl;H={dateTimeFormat:t&&void 0!==Intl.DateTimeFormat,numberFormat:t&&void 0!==Intl.NumberFormat}}return H}}),W.install=O,W.version="8.28.2",e.default=W},qse9:function(t,e,n){"use strict";n.r(e);var r=n("9E+d"),a=n("kQlD");for(var o in a)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return a[t]}))}(o);n("aeGo");var i=n("KHd+"),s=Object(i.a)(a.default,r.a,r.b,!1,null,"f9a2edfe",null);e.default=s.exports},qwyl:function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return a}));var r=function(){var t=this,e=t._self._c;return e("el-dialog",{attrs:{title:t.$t("title.transactionReceipt"),visible:t.editorDialog,width:"650px",top:"10vh"},on:{"update:visible":function(e){t.editorDialog=e},close:t.modelClose}},[t.transationData?t._e():e("div",[t._v(t._s(t.$t("text.noData")))]),t._v(" "),t.transationData&&!t.transationData.logs?e("div",{staticStyle:{"overflow-y":"scroll",height:"500px"},attrs:{slot:""},slot:"default"},[e("json-viewer",{attrs:{value:t.transationData,"expand-depth":5,copyable:""}})],1):t._e(),t._v(" "),t.transationData&&t.transationData.logs?e("div",{staticStyle:{"overflow-y":"scroll",height:"500px"},attrs:{slot:""},slot:"default"},[e("div",[t._v("{")]),t._v(" "),t._l(t.transationData,(function(n,r){return e("div",{staticStyle:{"padding-left":"10px"}},["logs"!=r&&"output"!=r?e("div",["status"==r?[e("span",{staticClass:"transation-title"},[t._v(t._s(r)+":")]),t._v(" "),e("span",{style:{color:t.txStatusColor(n)}},[t._v(t._s(n))])]:[e("span",{staticClass:"transation-title"},[t._v(t._s(r)+":")]),t._v(" "),"string"==typeof n?e("span",{staticClass:"transation-content string-color"},[t._v('"'+t._s(n)+'"')]):null===n?e("span",{staticClass:"transation-content null-color"},[t._v(t._s(n)+"null")]):e("span","object"==typeof n?{staticClass:"transation-content"}:{staticClass:"transation-content other-color"},[t._v(t._s(n))])]],2):"output"==r?e("div",[e("span",{staticClass:"transation-title"},[t._v(t._s(r)+":")]),t._v(" "),t.showDecode?e("span",{staticClass:"transation-content string-color"},[t._v('"'+t._s(n)+'"')]):t._e(),t._v(" "),t.showDecode?t._e():e("div",{staticClass:"transation-data",staticStyle:{width:"500px"}},[e("div",{staticClass:"input-label"},[e("span",{staticClass:"label"},[t._v("function")]),t._v(" "),e("span",[t._v(t._s(t.funcData+"("+t.abiType+") "+t.outputType))])]),t._v(" "),e("div",{staticClass:"input-label"},[e("span",{staticClass:"label"},[t._v("data:")]),t._v(" "),t.inputData.length?e("el-table",{staticStyle:{display:"inline-block",width:"350px"},attrs:{data:t.inputData}},[e("el-table-column",{attrs:{prop:"name",label:"name",align:"left"}}),t._v(" "),e("el-table-column",{attrs:{prop:"type",label:"type",align:"left"}}),t._v(" "),e("el-table-column",{attrs:{prop:"data",label:"data",align:"left","show-overflow-tooltip":!0},scopedSlots:t._u([{key:"default",fn:function(n){return[e("i",{staticClass:"wbs-icon-baocun font-12 copy-public-key",attrs:{title:t.$t("title.copy")},on:{click:function(e){return t.copyPubilcKey(n.row.data)}}}),t._v(" "),e("span",[t._v(t._s(n.row.data))])]}}],null,!0)})],1):t._e()],1)]),t._v(" "),e("div",{directives:[{name:"show",rawName:"v-show",value:t.inputButtonShow,expression:"inputButtonShow"}],staticClass:"item"},[e("span",{staticClass:"label"}),t._v(" "),e("el-button",{attrs:{type:"primary"},on:{click:t.decodeOutput}},[t._v(t._s(t.buttonTitle))])],1)]):t._e(),t._v(" "),"logs"==r?e("div",[e("span",[t._v(t._s(r)+":")]),t._v(" "),n.length?t._e():e("span",[t._v(t._s(n))]),t._v(" "),n.length?e("span",[t._v("[\n "),t._l(n,(function(n){return e("div",{staticStyle:{"padding-left":"10px"}},[e("div",[t._v("{")]),t._v(" "),e("div",{staticStyle:{"padding-left":"10px"}},[e("div",[e("span",{staticClass:"transation-title"},[t._v("removed:")]),t._v(" "),e("span",{staticClass:"transation-content other-color"},[t._v(t._s(n.removed))])]),t._v(" "),e("div",[e("span",{staticClass:"transation-title"},[t._v("logIndex:")]),t._v(" "),e("span",{staticClass:"transation-content"},[t._v(t._s(n.logIndex))])]),t._v(" "),e("div",[e("span",{staticClass:"transation-title"},[t._v("transactionIndex:")]),t._v(" "),e("span",{staticClass:"transation-content"},[t._v(t._s(n.transactionIndex))])]),t._v(" "),e("div",[e("span",{staticClass:"transation-title"},[t._v("transactionHash:")]),t._v(" "),"string"==typeof n.transactionHash?e("span",{staticClass:"transation-content string-color"},[t._v(t._s(n.transactionHash))]):null===n.transactionHash?e("span",{staticClass:"transation-content null-color"},[t._v(t._s(n.transactionHash)+"null")]):e("span",{staticClass:"transation-content"},[t._v(t._s(n.transactionHash))])]),t._v(" "),e("div",[e("span",{staticClass:"transation-title"},[t._v("blockHash:")]),t._v(" "),"string"==typeof n.blockHash?e("span",{staticClass:"transation-content string-color"},[t._v(t._s(n.blockHash))]):null===n.blockHash?e("span",{staticClass:"transation-content null-color"},[t._v(t._s(n.blockHash)+"null")]):e("span",{staticClass:"transation-content"},[t._v(t._s(n.blockHash))])]),t._v(" "),e("div",[e("span",{staticClass:"transation-title"},[t._v("blockNumber:")]),t._v(" "),null===n.blockNumber?e("span",{staticClass:"transation-content null-color"},[t._v(t._s(n.blockNumber)+"null")]):e("span",{staticClass:"transation-content"},[t._v(t._s(n.blockNumber))])]),t._v(" "),e("div",[e("span",{staticClass:"transation-title"},[t._v("address:")]),t._v(" "),"string"==typeof n.address?e("span",{staticClass:"transation-content string-color"},[t._v(t._s(n.address))]):null===n.address?e("span",{staticClass:"transation-content null-color"},[t._v(t._s(n.address)+"null")]):e("span",{staticClass:"transation-content"},[t._v(t._s(n.address))])]),t._v(" "),n.eventDataShow&&t.eventSHow?e("div",[e("span",{staticClass:"transation-title"},[t._v("eventName :")]),t._v(" "),e("span",{staticClass:"transation-content"},[t._v(t._s(n.eventName))])]):t._e(),t._v(" "),e("div",[e("span",{staticClass:"transation-title"},[t._v("data:")]),t._v(" "),e("span",{directives:[{name:"show",rawName:"v-show",value:!n.eventDataShow&&t.eventSHow,expression:"!item.eventDataShow && eventSHow"}],staticClass:"transation-content string-color"},[t._v(t._s(n.data))]),t._v(" "),e("div",{directives:[{name:"show",rawName:"v-show",value:n.eventDataShow&&t.eventSHow,expression:"item.eventDataShow && eventSHow"}],staticClass:"transation-data"},[e("el-table",{staticClass:"input-data",staticStyle:{display:"inline-block",width:"100%"},attrs:{data:n.eventLgData}},[e("el-table-column",{attrs:{prop:"name",width:"150",label:"name",align:"left"}}),t._v(" "),e("el-table-column",{attrs:{prop:"data",label:"data",align:"left","show-overflow-tooltip":!0},scopedSlots:t._u([{key:"default",fn:function(n){return[e("i",{staticClass:"wbs-icon-baocun font-12 copy-public-key",attrs:{title:t.$t("title.copy")},on:{click:function(e){return t.copyPubilcKey(n.row.data)}}}),t._v(" "),e("span",[t._v(t._s(t.abc(n.row.data)))])]}}],null,!0)})],1)],1),t._v(" "),e("div",{staticClass:"item"},[e("span",{staticClass:"label"}),t._v(" "),e("el-button",{attrs:{type:"primary"},on:{click:function(e){return t.decode(n)}}},[t._v(t._s(t.eventTitle))])],1)]),t._v(" "),e("div",[e("span",{staticClass:"transation-title"},[t._v("type:")]),t._v(" "),"string"==typeof n.type?e("span",{staticClass:"transation-content string-color"},[t._v(t._s(n.type))]):null===n.type?e("span",{staticClass:"transation-content null-color"},[t._v(t._s(n.type)+"null")]):e("span",{staticClass:"transation-content"},[t._v(t._s(n.type))])]),t._v(" "),e("div",[e("span",{staticClass:"transation-title"},[t._v("topics:")]),t._v(" "),"string"==typeof n.topics?e("span",{staticClass:"transation-content string-color"},[t._v(t._s(n.topics))]):null===n.topics?e("span",{staticClass:"transation-content null-color"},[t._v(t._s(n.topics)+"null")]):e("span",{staticClass:"transation-content"},[t._v(t._s(n.topics))])]),t._v(" "),e("div",[e("span",{staticClass:"transation-title"},[t._v("logIndexRaw:")]),t._v(" "),"string"==typeof n.logIndexRaw?e("span",{staticClass:"transation-content string-color"},[t._v(t._s(n.logIndexRaw))]):null===n.logIndexRaw?e("span",{staticClass:"transation-content null-color"},[t._v(t._s(n.logIndexRaw)+"null")]):e("span",{staticClass:"transation-content"},[t._v(t._s(n.logIndexRaw))])])]),t._v(" "),e("div",[t._v("}")])])})),t._v("\n ]\n ")],2):t._e()]):t._e()])})),t._v(" "),e("div",[t._v("}")])],2):t._e()])},a=[];r._withStripped=!0},r3OW:function(t,e,n){(t.exports=n("JPst")(!1)).push([t.i,"\n.svg-icon{\n width: 1em;\n height: 1em;\n vertical-align: -0.15em;\n fill: currentColor;\n overflow: hidden;\n}\n",""])},rKKp:function(t,e,n){"use strict";n("gs8L")},rPTz:function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return a}));var r=function(){var t=this,e=t._self._c;return e("div",[e("content-head",{attrs:{headTitle:t.$t("route.contractWarehouse")}}),t._v(" "),e("div",{directives:[{name:"loading",rawName:"v-loading",value:t.loading,expression:"loading"}],staticClass:"module-wrapper",staticStyle:{padding:"20px"}},[e("div",{staticClass:"contract-introduction"},[e("p",[t._v(t._s(t.$t("text.warehouseDes")))])]),t._v(" "),e("div",{staticClass:"contract-app"},[e("el-row",{attrs:{gutter:20}},[t._l(t.wareHouseList,(function(n,r){return e("el-col",{key:r,attrs:{span:12}},[e("li",{staticClass:"item-warehouse"},[e("div",{staticClass:"left-warehouse"},[e("svg-icon",{staticClass:"font-120",attrs:{"icon-class":n.storeIcon}})],1),t._v(" "),e("div",{staticClass:"right-warehouse"},[e("div",{staticClass:"right-warehouse-item store-name"},["zh"==t.language?e("p",[t._v(t._s(n.storeName))]):e("p",[t._v(t._s(n.storeName_en))])]),t._v(" "),e("div",{staticClass:"right-warehouse-item store-desc"},["zh"==t.language?e("p",[t._v(t._s(n.storeDesc))]):e("p",[t._v(t._s(n.storeDetail_en))])]),t._v(" "),e("div",{staticClass:"right-warehouse-item"},[e("el-button",{directives:[{name:"show",rawName:"v-show",value:1!=n.storeType,expression:"item.storeType!=1"}],staticClass:"btn-item",attrs:{type:"primary",size:"small"},on:{click:function(e){return t.exportContract(n)}}},[t._v(t._s(t.$t("contracts.exportToIde")))]),t._v(" "),e("el-button",{staticClass:"right-btn-item",attrs:{type:"primary",size:"small"},on:{click:function(e){return t.toDetail(n)}}},[t._v(t._s(t.$t("text.previewAndDescription")))])],1)])])])})),t._v(" "),e("el-col",{attrs:{span:12}},[e("li",{staticClass:"item-warehouse"},[e("div",{staticClass:"left-warehouse"},[e("svg-icon",{staticClass:"font-120",attrs:{"icon-class":"comingSoon"}})],1),t._v(" "),e("div",{staticClass:"item-warehouse-none right-warehouse"},[t._v("\n "+t._s(t.$t("text.developing"))+"\n ")])])])],2)],1),t._v(" "),t.folderVisible?e("folder",{attrs:{folderItem:t.folderItem,folderVisible:t.folderVisible},on:{close:t.close,success:function(e){return t.success(e)}}}):t._e()],1)],1)},a=[];r._withStripped=!0},rUfb:function(t,e,n){"use strict";n.r(e);var r=n("Yhgt"),a=n.n(r);for(var o in r)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return r[t]}))}(o);e.default=a.a},rVQ9:function(t,e,n){"use strict";n.r(e);var r=n("RcA4"),a=n("s6zC");for(var o in a)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return a[t]}))}(o);n("2TFe");var i=n("KHd+"),s=Object(i.a)(a.default,r.a,r.b,!1,null,"6b3cadb6",null);e.default=s.exports},rnb1:function(t,e,n){"use strict";n.r(e);var r=n("Cu5w"),a=n.n(r);for(var o in r)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return r[t]}))}(o);e.default=a.a},s0NJ:function(t,e,n){"use strict";n.r(e);var r=n("UFKq"),a=n.n(r);for(var o in r)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return r[t]}))}(o);e.default=a.a},s2O3:function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return a}));var r=function(){var t=this,e=t._self._c;return e("div",[e("el-dialog",{staticClass:"dialog-wrapper",attrs:{title:t.$t("title.selectDirectory"),visible:t.dialogVisible,"before-close":t.close,width:"460px",center:!0},on:{"update:visible":function(e){t.dialogVisible=e}}},[e("div",[e("el-form",{ref:"folderFrom",staticClass:"demo-ruleForm",attrs:{model:t.folderFrom,rules:t.rules,"label-width":"100px"}},[e("el-form-item",{staticStyle:{width:"330px"},attrs:{label:t.$t("dialog.folderName"),prop:"folderName"}},[e("el-select",{staticClass:"block-network",attrs:{placeholder:t.$t("placeholder.selected")},model:{value:t.folderFrom.folderName,callback:function(e){t.$set(t.folderFrom,"folderName",e)},expression:"folderFrom.folderName"}},t._l(t.options,(function(t){return e("el-option",{key:t.folderName,attrs:{label:t.folderName,value:t.folderName}})})),1),t._v(" "),e("span",{staticClass:"contract-code-done",staticStyle:{float:"right","margin-right":"-70px"},on:{click:t.addFolder}},[e("a",{staticStyle:{"font-size":"12px",cursor:"pointer",color:"#409eff"},attrs:{target:"_blank"}},[t._v(t._s(this.$t("contracts.createFolder")))])])],1)],1)],1),t._v(" "),e("div",{staticClass:"dialog-footer",attrs:{slot:"footer"},slot:"footer"},[e("el-button",{on:{click:t.close}},[t._v(t._s(t.$t("dialog.cancel")))]),t._v(" "),e("el-button",{attrs:{type:"primary"},on:{click:function(e){return t.submit("folderFrom")}}},[t._v(t._s(t.$t("dialog.confirm")))])],1)]),t._v(" "),t.foldershow?e("add-folder",{attrs:{foldershow:t.foldershow,isAddFile:t.isAddFile},on:{close:t.folderClose,success:t.folderSuccess}}):t._e()],1)},a=[];r._withStripped=!0},s5I3:function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return a}));var r=function(){var t=this,e=t._self._c;return e("div",[e("el-dialog",{staticClass:"dialog-wrapper",attrs:{title:t.$t("title.newFile"),visible:t.dialogVisible,"before-close":t.modelClose,width:"433px",center:!0},on:{"update:visible":function(e){t.dialogVisible=e}}},[e("div",[e("el-form",{ref:"fileFrom",staticClass:"demo-ruleForm",attrs:{model:t.fileFrom,rules:t.rules,"label-width":"116px"}},[e("el-form-item",{attrs:{label:t.$t("text.contractName"),prop:"contractName"}},[e("el-input",{staticStyle:{width:"210px"},model:{value:t.fileFrom.contractName,callback:function(e){t.$set(t.fileFrom,"contractName",e)},expression:"fileFrom.contractName"}})],1),t._v(" "),e("el-form-item",{attrs:{label:t.$t("text.filePath")}},[e("el-select",{attrs:{disabled:t.disabled,placeholder:t.$t("placeholder.selected")},model:{value:t.fileFrom.contractType,callback:function(e){t.$set(t.fileFrom,"contractType",e)},expression:"fileFrom.contractType"}},t._l(t.options,(function(t){return e("el-option",{key:t.folderName,attrs:{label:t.folderName,value:t.folderName}})})),1)],1)],1)],1),t._v(" "),e("div",{staticClass:"dialog-footer",attrs:{slot:"footer"},slot:"footer"},[e("el-button",{on:{click:t.modelClose}},[t._v(t._s(t.$t("dialog.cancel")))]),t._v(" "),e("el-button",{attrs:{type:"primary"},on:{click:function(e){return t.submit("fileFrom")}}},[t._v(t._s(t.$t("dialog.confirm")))])],1)]),t._v(" "),t.foldershow?e("add-folder",{attrs:{foldershow:t.foldershow,isAddFile:t.isAddFile},on:{close:t.folderClose}}):t._e()],1)},a=[];r._withStripped=!0},s6zC:function(t,e,n){"use strict";n.r(e);var r=n("oxoV"),a=n.n(r);for(var o in r)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return r[t]}))}(o);e.default=a.a},sG87:function(t,e,n){"use strict";n.r(e);var r=n("R3mx"),a=n("lo2a");for(var o in a)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return a[t]}))}(o);n("wPZ4");var i=n("KHd+"),s=Object(i.a)(a.default,r.a,r.b,!1,null,"2dc8ef95",null);e.default=s.exports},sSj5:function(t,e,n){"use strict";n.r(e);var r=n("QI9r"),a=n.n(r);for(var o in r)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return r[t]}))}(o);e.default=a.a},sTOi:function(t,e,n){var r=n("oWGP");r.__esModule&&(r=r.default),"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals);(0,n("SZ7m").default)("7b367a1a",r,!1,{})},sXBq:function(t,e,n){"use strict";n.r(e);var r=n("vZp1"),a=n.n(r);for(var o in r)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return r[t]}))}(o);e.default=a.a},saWo:function(t,e,n){"use strict";n.r(e);var r=n("EOHN"),a=n.n(r);for(var o in r)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return r[t]}))}(o);e.default=a.a},sckT:function(t,e,n){"use strict";n.r(e);var r=n("L7P6"),a=n.n(r);for(var o in r)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return r[t]}))}(o);e.default=a.a},skcv:function(t,e,n){(t.exports=n("JPst")(!1)).push([t.i,"\n.input-with-select[data-v-2dc8ef95] .el-input__inner {\r\n border-top-left-radius: 20px;\r\n border-bottom-left-radius: 20px;\r\n border: 1px solid #eaedf3;\r\n -webkit-box-shadow: 0 3px 11px 0 rgba(159, 166, 189, 0.11);\r\n box-shadow: 0 3px 11px 0 rgba(159, 166, 189, 0.11);\n}\n.input-with-select[data-v-2dc8ef95] .el-input-group__append {\r\n border-top-right-radius: 20px;\r\n border-bottom-right-radius: 20px;\r\n -webkit-box-shadow: 0 3px 11px 0 rgba(159, 166, 189, 0.11);\r\n box-shadow: 0 3px 11px 0 rgba(159, 166, 189, 0.11);\n}\n.input-with-select[data-v-2dc8ef95] .el-button {\r\n border: 1px solid #1f83e7;\r\n border-radius: inherit;\r\n background: #1f83e7;\r\n color: #fff;\n}\n.grayColor[data-v-2dc8ef95] {\r\n color: #666 !important;\n}\n.copy-public-key[data-v-2dc8ef95] {\r\n margin-right: 5px;\n}\r\n",""])},swmY:function(t,e,n){"use strict";n.r(e);var r=n("0v/p"),a=n.n(r);for(var o in r)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return r[t]}))}(o);e.default=a.a},"t+ym":function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n("mHBk"),a=c(n("9e9m")),o=c(n("kWk+")),i=c(n("kEg0")),s=c(n("uvp0"));function c(t){return t&&t.__esModule?t:{default:t}}n("J66h").Base64;e.default={name:"contractCatalog",props:{},components:{Folder:i.default,File:s.default},data:function(){return{storeId:"",folderList:[],folderData:null,folderVisible:!1,fileVisible:!1,folderItem:{},folderName:"",fileItem:{},fileName:"",clentX:0,clentY:0}},watch:{},beforeDestroy:function(){a.default.$off("code")},mounted:function(){var t=this;this.$route.query.storeId&&(this.storeId=this.$route.query.storeId,this.queryContractFolder()),a.default.$on("code",(function(e,n){t.exportToIde(e,n)}))},directives:{Clickoutside:o.default},methods:{checkNull:function(t){this.folderList.forEach((function(t){t.handleModel=!1,t.child.forEach((function(t){t.handleFile=!1}))}))},queryContractFolder:function(){var t=this;(0,r.getFolderItemListByStoreId)(this.storeId).then((function(e){if(0===e.data.code){var n=e.data.data;if(n.length){n.forEach((function(t,e){t.folderIcon=0==e?"el-icon-caret-bottom":"el-icon-caret-right",t.contractActive=!1,t.folderActive=!1,t.child=[],t.handleModel=!1,t.handleFile=!1})),t.folderList=n;var r=n[0];t.open(r),t.queryContract(r)}}else t.$message({type:"error",message:t.$chooseLang(e.data.code)})}))},open:function(t){t.folderActive?(this.$set(t,"folderActive",!1),this.$set(t,"folderIcon","el-icon-caret-right")):(this.$set(t,"folderActive",!0),this.$set(t,"folderIcon","el-icon-caret-bottom"),this.queryContract(t,"open"))},select:function(t){var e=this;this.folderList.forEach((function(n){e.$set(n,"contractActive",!1),n.child.forEach((function(n){n.contractId==t.contractId?e.$set(n,"contractActive",!0):e.$set(n,"contractActive",!1)}))})),a.default.$emit("select",t)},queryContract:function(t,e){var n=this;(0,r.getContractItemByFolderId)(t.contractFolderId).then((function(r){if(0===r.data.code){var a=r.data.data;a.forEach((function(t){t.handleFile=!1})),n.folderList.forEach((function(e){e.contractFolderId===t.contractFolderId&&(e.child=a)})),n.select(a[0]),"export"===e&&n.queryBatchSaveContract(a)}else n.$message({type:"error",message:n.$chooseLang(r.data.code)})}))},handle:function(t,e){this.checkNull(),e.handleModel=!0,this.clentX=t.clientX+"px",this.clentY=t.clientY+"px"},handleFile:function(t,e){this.checkNull(),"1"==this.storeId&&(e.handleFile=!0,this.clentX=t.clientX+"px",this.clentY=t.clientY+"px",console.log(this.folderList))},exportToIde:function(t,e){this.checkNull(),"folder"===e?(this.folderVisible=!0,this.folderItem=t):"file"==e&&(this.fileVisible=!0,this.fileItem=t)},exportFileToIde:function(t,e){},queryBatchSaveContract:function(t){var e=this,n={contractItems:t.map((function(t){return{contractName:t.contractName,contractSource:t.contractSrc}})),contractPath:this.folderName,groupId:localStorage.getItem("groupId")};(0,r.batchSaveContract)(n).then((function(t){0===t.data.code?e.$message({type:"success",message:e.$t("text.importSuccessed")}):e.$message({type:"error",message:e.$chooseLang(t.data.code)})}))},close:function(){this.folderVisible=!1},success:function(t){this.folderVisible=!1,this.folderName=t,this.queryContract(this.folderItem,"export")},closeFile:function(){this.fileVisible=!1},successFile:function(t){this.fileVisible=!1,this.folderName=t,this.querySaveContract()},querySaveContract:function(){var t=this,e={groupId:localStorage.getItem("groupId"),contractName:this.fileItem.contractName,contractPath:this.folderName,contractSource:this.fileItem.contractSrc};(0,r.saveChaincode)(e).then((function(e){e.data;200===e.status?t.$message({type:"success",message:t.$t("text.exportSuccessed")}):t.$message({type:"error",message:t.$chooseLang(e.data.code)})}))}}}},tBX4:function(t,e,n){"use strict";n("pfN8")},tQrf:function(t,e,n){"use strict";n.r(e);var r=n("pdZy"),a=n.n(r);for(var o in r)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return r[t]}))}(o);e.default=a.a},thUP:function(t,e,n){(t.exports=n("JPst")(!1)).push([t.i,"\n.icon[data-v-c4b2eb74] {\r\n font-weight: bold;\n}\n.contract-menu[data-v-c4b2eb74] {\r\n color: #fff;\r\n background-color: #2f3b52;\n}\n.contract-menu-header[data-v-c4b2eb74] {\r\n width: calc(100% + 1px);\r\n height: 48px;\r\n line-height: 48px;\r\n border-bottom: 2px solid #20293c;\r\n color: #4f6178;\n}\n.contract-icon[data-v-c4b2eb74] {\r\n vertical-align: middle;\r\n padding-left: 10px;\r\n cursor: pointer;\r\n color: #98a7b9;\n}\n.checkContract-upload[data-v-c4b2eb74] {\r\n display: block;\r\n position: absolute;\r\n height: 30px;\r\n left: 0;\r\n margin-top: -30px;\r\n width: 100%;\r\n opacity: 0;\r\n z-index: 9;\r\n cursor: pointer;\n}\n.contract-file[data-v-c4b2eb74] {\r\n position: relative;\r\n padding-left: 25px;\n}\n.contract-folder[data-v-c4b2eb74] {\r\n padding-left: 5px;\n}\n.contract-file span[data-v-c4b2eb74] {\r\n cursor: pointer;\n}\n.contract-file i[data-v-c4b2eb74] {\r\n cursor: pointer;\n}\n.uploads[data-v-c4b2eb74] {\r\n position: absolute;\r\n width: 18px;\r\n height: 18px;\r\n left: 10px;\r\n top: 0;\r\n opacity: 0;\r\n z-index: 999;\r\n cursor: pointer;\n}\n.colorActive[data-v-c4b2eb74] {\r\n color: rgb(55, 238, 242);\n}\n.contract-delete[data-v-c4b2eb74] {\r\n padding-left: 20px;\r\n font-weight: 100;\r\n font-size: 16px;\n}\n.contract-file-handle[data-v-c4b2eb74] {\r\n position: absolute;\r\n width: 60px;\r\n top: 24px;\r\n padding: 10px;\r\n background-color: #fff;\r\n z-index: 9999;\r\n -webkit-box-shadow: 1px 1px 1px;\r\n box-shadow: 1px 1px 1px;\n}\n.contract-menu-content[data-v-c4b2eb74] {\r\n overflow: auto;\r\n height: calc(100% - 86px);\n}\n.contract-menu-content[data-v-c4b2eb74] .el-input__inner {\r\n width: 100px;\r\n height: 24px;\r\n line-height: 24px;\r\n padding: 0 5px;\n}\n.contract-menu-handle[data-v-c4b2eb74] {\r\n position: fixed;\r\n font-size: 0;\r\n width: 70px;\r\n cursor: pointer;\r\n font-size: 12px;\r\n text-align: center;\r\n background-color: #fff;\r\n z-index: 100;\n}\n.contract-menu-handle li[data-v-c4b2eb74] {\r\n font-size: 12px;\r\n height: 30px;\r\n line-height: 30px;\n}\n.contract-menu-handle-list[data-v-c4b2eb74] {\r\n cursor: pointer;\r\n color: #666;\n}\n.contract-menu-handle-list[data-v-c4b2eb74]:hover {\r\n color: rgb(55, 238, 242);\n}\n.solc-wrapper[data-v-c4b2eb74] {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-orient: horizontal;\r\n -webkit-box-direction: normal;\r\n -ms-flex-direction: row;\r\n flex-direction: row;\n}\n.solc-wrapper[data-v-c4b2eb74] .el-select {\r\n width: 100%;\n}\n.select-solc[data-v-c4b2eb74] {\r\n width: 100%;\n}\n.import-solc[data-v-c4b2eb74] {\r\n border: 1px solid;\r\n height: 36px;\r\n line-height: 36px;\n}\r\n",""])},"uAt+":function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return a}));var r=function(){return(0,this._self._c)("div",[this._v("\n "+this._s(this.content)+"\n ")])},a=[];r._withStripped=!0},uO8V:function(t,e,n){"use strict";n.r(e);var r=n("UZLN"),a=n.n(r);for(var o in r)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return r[t]}))}(o);e.default=a.a},udoS:function(t,e,n){"use strict";n("MOXn")},uffS:function(t,e,n){"use strict";n.r(e);var r=n("Z0co"),a=n("CJff");for(var o in a)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return a[t]}))}(o);n("ZwWB");var i=n("KHd+"),s=Object(i.a)(a.default,r.a,r.b,!1,null,"9268f86e",null);e.default=s.exports},uvp0:function(t,e,n){"use strict";n.r(e);var r=n("Mu+E"),a=n("wXkq");for(var o in a)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return a[t]}))}(o);n("AZ93");var i=n("KHd+"),s=Object(i.a)(a.default,r.a,r.b,!1,null,"887da9dc",null);e.default=s.exports},vEEC:function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return a}));var r=function(){var t=this,e=t._self._c;return e("div",{directives:[{name:"loading",rawName:"v-loading",value:t.loadingAce,expression:"loadingAce"}],staticClass:"contract-code",class:{changeActive:t.changeWidth}},[e("div",{staticClass:"contract-code-head"},[e("span",{directives:[{name:"show",rawName:"v-show",value:t.codeShow,expression:"codeShow"}],staticClass:"contract-code-title",class:{titleActive:t.changeWidth}},[e("span",{ref:"setReadOnly"},[t._v(t._s(t.contractName+".sol"))])]),t._v(" "),e("span",{directives:[{name:"show",rawName:"v-show",value:t.codeShow&&"1"==t.urlQuery.storeType,expression:"codeShow&&urlQuery.storeType =='1'"}],staticClass:"contract-code-handle"},[e("el-button",{attrs:{type:"primary",size:"mini"},on:{click:t.exportToIde}},[t._v(t._s(t.$t("contracts.exportToIde")))])],1)]),t._v(" "),e("div",{staticClass:"contract-code-content",class:{infoHide:!t.successHide}},[e("div",{ref:"codeContent",staticClass:"contract-code-mirror",style:{height:t.codeHight}},[e("div",{directives:[{name:"show",rawName:"v-show",value:!t.codeShow,expression:"!codeShow"}],staticStyle:{"padding-top":"60px","text-align":"center"}},[e("span",{staticClass:"font-color-9da2ab"},[t._v(t._s(t.$t("text.noStoreContract")))])]),t._v(" "),e("div",{directives:[{name:"show",rawName:"v-show",value:t.codeShow,expression:"codeShow"}],ref:"ace",staticClass:"ace-editor"})]),t._v(" "),e("div",{directives:[{name:"show",rawName:"v-show",value:t.successHide,expression:"successHide"}],staticClass:"contract-info",style:{height:t.infoHeight+"px"}},[e("div",{staticClass:"move",on:{mousedown:function(e){return t.dragDetailWeight(e)},mouseup:t.resizeCode}}),t._v(" "),t.contractDesc?e("div",{staticClass:"md-text"},[e("mavon-editor",{ref:"md",attrs:{previewBackground:t.prop.previewBackground,toolbars:t.toolbars,subfield:t.prop.subfield,defaultOpen:t.prop.defaultOpen,toolbarsFlag:t.prop.toolbarsFlag,editable:t.prop.editable,scrollStyle:t.prop.scrollStyle,boxShadow:t.prop.boxShadow},model:{value:t.contractDesc,callback:function(e){t.contractDesc=e},expression:"contractDesc"}})],1):t._e()])])])},a=[];r._withStripped=!0},vZp1:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n("mHBk");e.default={name:"addFolder",props:["foldershow","isAddFile"],computed:{rules:function(){return{folderName:[{required:!0,message:this.$t("dialog.pleaseType")+" "+this.$t("dialog.folderName"),trigger:"blur"},{min:1,max:32,message:this.$t("dialog.privateKeyVerifyLength1_32"),trigger:"blur"},{pattern:/^[A-Za-z0-9_]+$/,message:this.$t("dialog.folderNameIllegal"),trigger:"blur"}]}}},data:function(){return{folderFrom:{folderName:""},dialogVisible:this.foldershow,folderList:[]}},mounted:function(){localStorage.getItem("folderList")&&(this.folderList=JSON.parse(localStorage.getItem("folderList")))},methods:{submit:function(t){var e=this;this.$refs[t].validate((function(t){if(!t)return!1;e.add()}))},modelClose:function(){this.$emit("close")},addSuccess:function(){this.$emit("success")},add:function(){var t=this,e={contractPath:this.folderFrom.folderName,groupId:localStorage.getItem("groupId")};(0,r.addContractPath)(e).then((function(e){200===e.status?t.addSuccess():t.$message({type:"error",message:t.$chooseLang(e.data.code)})})).catch((function(e){t.$message({type:"error",message:e.data||t.$t("text.systemError")})}))}}}},vlYk:function(t,e,n){"use strict";n.r(e);var r=n("6Vj4"),a=n("4DWs");for(var o in a)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return a[t]}))}(o);n("ADvF");var i=n("KHd+"),s=Object(i.a)(a.default,r.a,r.b,!1,null,"17390d38",null);e.default=s.exports},vm7M:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,a=n("mHBk"),o=n("DgvE"),i=n("n+5x"),s=(r=i)&&r.__esModule?r:{default:r};e.default={components:{"v-createUser":s.default},name:"changeUser",props:["abi","contractName"],data:function(){return{userName:"",userList:[],userId:null,inputs:[],parameter:[],abifile:JSON.parse(this.abi),version:"",versionShow:!1,errorInfo:"",placeholderText:this.$t("placeholder.selectedAccountAddress"),isCNS:!1,cnsVersionFrom:{cnsVersion:"",cnsName:this.contractName},isUserNameShow:!1,creatUserNameVisible:!1,isShowAddUserBtn:!1}},computed:{rules:function(){return{cnsVersion:[{required:!0,message:this.$t("dialog.cnsVersion"),trigger:"blur"},{pattern:/^[A-Za-z0-9.]+$/,message:this.$t("dialog.cnsVersionPattern"),trigger:"blur"},{min:1,max:10,message:this.$t("dialog.length1_10"),trigger:"blur"}],cnsName:[{required:!0,message:this.$t("dialog.cnsName"),trigger:"blur"},{pattern:/^[A-Za-z0-9.]+$/,message:this.$t("dialog.cnsVersionPattern"),trigger:"blur"},{min:1,max:32,message:this.$t("dialog.privateKeyVerifyLength1_32"),trigger:"blur"}]}}},mounted:function(){this.changeConstructor(),this.getLocalKeyStores()},methods:{getLocalKeyStores:function(){var t=this;(0,a.queryLocalKeyStores)().then((function(e){var n=e.data;200===e.status?(t.userList=n,t.userList.length?(t.userId=t.userList[0].address,t.userName=t.userList[0].userName):(t.isShowAddUserBtn=!0,t.placeholderText=t.$t("placeholder.selectedNoUser"))):t.$message({type:"error",message:t.$chooseLang(e.data.code)})})).catch((function(e){t.$message({type:"error",message:e.data||t.$t("text.systemError")})}))},changeConstructor:function(){var t=this;this.abifile.length&&this.abifile.forEach((function(e){"constructor"===e.type&&(t.inputs=e.inputs)}))},changeId:function(t){var e=this;this.userList.forEach((function(n){t===n.address&&(e.userName=n.userName)}))},close:function(){this.$emit("close")},submit:function(){var t=this;if(this.isCNS){if(!this.cnsVersionFrom.cnsName)return;this.$refs.cnsVersionFrom.validate((function(e){if(!e)return!1;t.queryDeploy()}))}else this.queryDeploy()},queryDeploy:function(){this.versionShow=!1,this.errorInfo="";for(var t=[],e=0;e0&&(this.userId=this.userList[0].address,this.userName=this.userList[0].userName,this.isShowAddUserBtn=!1),this.creatUserNameVisible=!1}}}},vsCA:function(t,e,n){"use strict";n("ER+H")},"w++O":function(t,e,n){var r=n("r3OW");r.__esModule&&(r=r.default),"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals);(0,n("SZ7m").default)("572a00e3",r,!1,{})},"w1+O":function(t,e,n){var r=n("kxZ0");r.__esModule&&(r=r.default),"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals);(0,n("SZ7m").default)("549814ce",r,!1,{})},w3d5:function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return a}));var r=function(){var t=this,e=t._self._c;return e("div",{staticClass:"main-wrapper"},["1"===t.accountStatus?e("div",{attrs:{id:"shade"}}):t._e(),t._v(" "),"1"===t.accountStatus?e("div",{attrs:{id:"reset-password"}},[e("div",{staticClass:"reset-password-title"},[t._v("\n 修改密码\n ")]),t._v(" "),e("el-form",{ref:"rulePasswordForm",staticClass:"demo-ruleForm",attrs:{model:t.rulePasswordForm,"status-icon":"",rules:t.rules2,"label-width":"100px"}},[e("el-form-item",{attrs:{label:"旧密码",prop:"oldPass"}},[e("el-input",{attrs:{type:"password",autocomplete:"off"},model:{value:t.rulePasswordForm.oldPass,callback:function(e){t.$set(t.rulePasswordForm,"oldPass",e)},expression:"rulePasswordForm.oldPass"}})],1),t._v(" "),e("el-form-item",{attrs:{label:"新密码",prop:"pass"}},[e("el-input",{attrs:{type:"password",autocomplete:"off"},model:{value:t.rulePasswordForm.pass,callback:function(e){t.$set(t.rulePasswordForm,"pass",e)},expression:"rulePasswordForm.pass"}})],1),t._v(" "),e("el-form-item",{attrs:{label:"确认密码",prop:"checkPass"}},[e("el-input",{attrs:{type:"password",autocomplete:"off"},model:{value:t.rulePasswordForm.checkPass,callback:function(e){t.$set(t.rulePasswordForm,"checkPass",e)},expression:"rulePasswordForm.checkPass"}})],1),t._v(" "),e("el-form-item",[e("el-button",{attrs:{type:"primary",loading:t.loading},on:{click:function(e){return t.submitForm("rulePasswordForm")}}},[t._v("提交")]),t._v(" "),e("el-button",{on:{click:function(e){return t.resetForm("rulePasswordForm")}}},[t._v("重置")])],1)],1)],1):t._e(),t._v(" "),e("div",{staticClass:"menu-wrapper header",class:{"menu-show":t.menuShow,"menu-hide":t.menuHide}},[e("v-menu",{attrs:{minMenu:t.show},on:{sidebarChange:function(e){return t.change(e)}}})],1),t._v(" "),e("div",{staticClass:"view-wrapper",class:{"view-show":t.menuShow,"view-hide":t.menuHide}},[e("router-view")],1)])},a=[];r._withStripped=!0},wAo7:function(t,e,n){"use strict";n.r(e);var r=n("OvvR"),a=n("jF/l");for(var o in a)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return a[t]}))}(o);n("Ww4K");var i=n("KHd+"),s=Object(i.a)(a.default,r.a,r.b,!1,null,null,null);e.default=s.exports},wJUu:function(t,e,n){"use strict";n.d(e,"a",(function(){return r})),n.d(e,"b",(function(){return a}));var r=function(){var t=this,e=t._self._c;return e("div",[e("el-form",{ref:"blockEventForm",staticClass:"demo-ruleForm",attrs:{model:t.blockEventForm,rules:t.rules,"label-width":"125px"}},[e("el-form-item",{attrs:{label:t.$t("table.appId"),prop:"appId"}},[e("el-input",{staticStyle:{width:"240px"},attrs:{placeholder:t.$t("text.appId"),clearable:""},model:{value:t.blockEventForm.appId,callback:function(e){t.$set(t.blockEventForm,"appId","string"==typeof e?e.trim():e)},expression:"blockEventForm.appId"}}),t._v(" "),e("el-tooltip",{staticClass:"item",attrs:{effect:"dark",content:t.$t("text.appId"),placement:"right"}},[e("i",{staticClass:"el-icon-info"})])],1),t._v(" "),e("el-form-item",{attrs:{label:t.$t("table.exchangeName"),prop:"exchangeName"}},[e("el-input",{staticStyle:{width:"240px"},attrs:{placeholder:t.$t("text.exchangeName"),clearable:""},model:{value:t.blockEventForm.exchangeName,callback:function(e){t.$set(t.blockEventForm,"exchangeName","string"==typeof e?e.trim():e)},expression:"blockEventForm.exchangeName"}}),t._v(" "),e("el-tooltip",{staticClass:"item",attrs:{effect:"dark",content:t.$t("text.exchangeName"),placement:"right"}},[e("i",{staticClass:"el-icon-info"})])],1),t._v(" "),e("el-form-item",{attrs:{label:t.$t("table.queueName"),prop:"queueName"}},[e("el-input",{staticStyle:{width:"240px"},attrs:{placeholder:t.$t("text.queueName"),clearable:""},model:{value:t.blockEventForm.queueName,callback:function(e){t.$set(t.blockEventForm,"queueName","string"==typeof e?e.trim():e)},expression:"blockEventForm.queueName"}}),t._v(" "),e("el-tooltip",{staticClass:"item",attrs:{effect:"dark",content:t.$t("text.queueName"),placement:"right"}},[e("i",{staticClass:"el-icon-info"})])],1)],1),t._v(" "),e("div",{staticClass:"dialog-footer",attrs:{slot:"footer"},slot:"footer"},[e("el-button",{on:{click:t.modelClose}},[t._v(t._s(t.$t("dialog.cancel")))]),t._v(" "),e("el-button",{attrs:{type:"primary",loading:t.loading},on:{click:function(e){return t.submit("blockEventForm")}}},[t._v(t._s(t.$t("dialog.confirm")))])],1)],1)},a=[];r._withStripped=!0},wPZ4:function(t,e,n){"use strict";n("eYDS")},wXkq:function(t,e,n){"use strict";n.r(e);var r=n("deVT"),a=n.n(r);for(var o in r)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return r[t]}))}(o);e.default=a.a},wrC2:function(t,e,n){"use strict";n.r(e);var r=n("EaIt"),a=n.n(r);for(var o in r)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return r[t]}))}(o);e.default=a.a},wvJY:function(t,e,n){var r=n("9czs");r.__esModule&&(r=r.default),"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals);(0,n("SZ7m").default)("d0ab5a0c",r,!1,{})},xIJ9:function(t,e,n){"use strict";n("Y46H")},xUFc:function(t,e,n){var r=n("Ij+I");r.__esModule&&(r=r.default),"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals);(0,n("SZ7m").default)("7586acd6",r,!1,{})},xdFh:function(t,e,n){(t.exports=n("JPst")(!1)).push([t.i,"\n.table-content[data-v-2ddac198] {\r\n max-height: 270px;\r\n overflow: auto;\n}\n.block-table-content[data-v-2ddac198] .el-table__row {\r\n cursor: pointer;\n}\n.zZindex[data-v-2ddac198] {\r\n z-index: 3000 !important;\n}\r\n",""])},yO30:function(t,e,n){"use strict";n.r(e);var r=n("vm7M"),a=n.n(r);for(var o in r)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return r[t]}))}(o);e.default=a.a},yRlC:function(t,e,n){var r=n("xdFh");r.__esModule&&(r=r.default),"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals);(0,n("SZ7m").default)("2b24a8af",r,!1,{})},yaKp:function(t,e,n){"use strict";n("UMBi")},yyv2:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default={name:"abiDialog",props:["data","show"],data:function(){return{dialogVisible:this.show,noData:!1,blcokContent:null}},mounted:function(){JSON.parse(this.data);this.blcokContent=JSON.parse(this.data),this.$nextTick((function(){this.blcokContent?this.noData=!1:this.noData=!0}))},methods:{modelClose:function(){this.$emit("close")}}}},z27l:function(t,e,n){"use strict";n("QOn9")},"zDA/":function(t,e,n){"use strict";n("xUFc")},zKdh:function(t,e,n){"use strict";n.r(e);var r=n("h7GZ"),a=n("sSj5");for(var o in a)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return a[t]}))}(o);n("xIJ9");var i=n("KHd+"),s=Object(i.a)(a.default,r.a,r.b,!1,null,"2115382f",null);e.default=s.exports},zqpy:function(t,e,n){"use strict";n.r(e);var r=n("P+bJ"),a=n.n(r);for(var o in r)["default"].indexOf(o)<0&&function(t){n.d(e,t,(function(){return r[t]}))}(o);e.default=a.a}}]); \ No newline at end of file diff --git a/web/dist/static/js/0.f3d0801f519d6afb5ad4.js.gz b/web/dist/static/js/0.f3d0801f519d6afb5ad4.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..b5fb8aec9fcc35452eff5e1b8eb6dbdef3e52844 GIT binary patch literal 171083 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
      ",s.escapeHTML((e=t.snippet,n={},e.replace(/\${(\d+)(:(.*?))?}/g,(function(t,e,i,r){return n[e]=r||""})).replace(/\$(\d+?)/g,(function(t,e){return n[e]}))))].join(""))}},h=[u,l,c];e.setCompleters=function(t){h.length=0,t&&h.push.apply(h,t)},e.addCompleter=function(t){h.push(t)},e.textCompleter=l,e.keyWordCompleter=c,e.snippetCompleter=u;var d={name:"expandSnippet",exec:function(t){return i.expandWithTab(t)},bindKey:"Tab"},f=function(t,e){p(e.session.$mode)},p=function(t){"string"==typeof t&&(t=o.$modes[t]),t&&(i.files||(i.files={}),g(t.$id,t.snippetFileId),t.modes&&t.modes.forEach(p))},g=function(t,e){e&&t&&!i.files[t]&&(i.files[t]={},o.loadModule(e,(function(e){e&&(i.files[t]=e,!e.snippets&&e.snippetText&&(e.snippets=i.parseSnippetFile(e.snippetText)),i.register(e.snippets||[],e.scope),e.includeScopes&&(i.snippetMap[e.scope].includeScopes=e.includeScopes,e.includeScopes.forEach((function(t){p("ace/mode/"+t)}))))})))},m=function(t){var e=t.editor,n=e.completer&&e.completer.activated;if("backspace"===t.command.name)n&&!a.getCompletionPrefix(e)&&e.completer.detach();else if("insertstring"===t.command.name){if(a.getCompletionPrefix(e)&&!n){var i=r.for(e);i.autoInsert=!1,i.showPopup(e)}}},v=t("../editor").Editor;t("../config").defineOptions(v.prototype,"editor",{enableBasicAutocompletion:{set:function(t){t?(this.completers||(this.completers=Array.isArray(t)?t:h),this.commands.addCommand(r.startCommand)):this.commands.removeCommand(r.startCommand)},value:!1},enableLiveAutocompletion:{set:function(t){t?(this.completers||(this.completers=Array.isArray(t)?t:h),this.commands.on("afterExec",m)):this.commands.removeListener("afterExec",m)},value:!1},enableSnippets:{set:function(t){t?(this.commands.addCommand(d),this.on("changeMode",f),f(0,this)):(this.commands.removeCommand(d),this.off("changeMode",f))},value:!1}})})),ace.require(["ace/ext/language_tools"],(function(e){t&&(t.exports=e)}))}).call(this,n("YuTi")(t))},"2s4E":function(t,e,n){t.exports=n.p+"70b5b576c3a31d2ab78f6be5fc147539.js"},"2tkK":function(t,e,n){t.exports=n.p+"9e7b410d51fc77840842aea653f8aee1.js"},"33Ds":function(t,e,n){var i=n("ProS"),r=n("b9oc"),o=n("Kagy"),s=n("IUWy"),a=o.toolbox.restore;function l(t){this.model=t}l.defaultOption={show:!0,icon:"M3.8,33.4 M47,18.9h9.8V8.7 M56.3,20.1 C52.1,9,40.5,0.6,26.8,2.1C12.6,3.7,1.6,16.2,2.1,30.6 M13,41.1H3.1v10.2 M3.7,39.9c4.2,11.1,15.8,19.5,29.5,18 c14.2-1.6,25.2-14.1,24.7-28.5",title:a.title},l.prototype.onclick=function(t,e,n){r.clear(t),e.dispatchAction({type:"restore",from:this.uid})},s.register("restore",l),i.registerAction({type:"restore",event:"restore",update:"prepareAndUpdate"},(function(t,e){e.resetOption("recreate")}));var c=l;t.exports=c},"39Hq":function(t,e,n){t.exports=n.p+"64537e0da9421afadc14d7c91e2f6ae1.js"},"3C/r":function(t,e){var n=function(t,e){this.image=t,this.repeat=e,this.type="pattern"};n.prototype.getCanvasPattern=function(t){return t.createPattern(this.image,this.repeat||"repeat")};var i=n;t.exports=i},"3LNs":function(t,e,n){var i=n("bYtY"),r=n("Yl7c"),o=n("IwbS"),s=n("zTMp"),a=n("YH21"),l=n("iLNv"),c=(0,n("4NO4").makeInner)(),u=i.clone,h=i.bind;function d(){}function f(t,e,n,r){(function t(e,n){if(i.isObject(e)&&i.isObject(n)){var r=!0;return i.each(n,(function(n,i){r=r&&t(e[i],n)})),!!r}return e===n})(c(n).lastProp,r)||(c(n).lastProp=r,e?o.updateProps(n,r,t):(n.stopAnimation(),n.attr(r)))}function p(t,e){t[e.get("label.show")?"show":"hide"]()}function g(t){return{position:t.position.slice(),rotation:t.rotation||0}}function m(t,e,n){var i=e.get("z"),r=e.get("zlevel");t&&t.traverse((function(t){"group"!==t.type&&(null!=i&&(t.z=i),null!=r&&(t.zlevel=r),t.silent=n)}))}d.prototype={_group:null,_lastGraphicKey:null,_handle:null,_dragging:!1,_lastValue:null,_lastStatus:null,_payloadInfo:null,animationThreshold:15,render:function(t,e,n,r){var s=e.get("value"),a=e.get("status");if(this._axisModel=t,this._axisPointerModel=e,this._api=n,r||this._lastValue!==s||this._lastStatus!==a){this._lastValue=s,this._lastStatus=a;var l=this._group,c=this._handle;if(!a||"hide"===a)return l&&l.hide(),void(c&&c.hide());l&&l.show(),c&&c.show();var u={};this.makeElOption(u,s,t,e,n);var h=u.graphicKey;h!==this._lastGraphicKey&&this.clear(n),this._lastGraphicKey=h;var d=this._moveAnimation=this.determineAnimation(t,e);if(l){var p=i.curry(f,e,d);this.updatePointerEl(l,u,p,e),this.updateLabelEl(l,u,p,e)}else l=this._group=new o.Group,this.createPointerEl(l,u,t,e),this.createLabelEl(l,u,t,e),n.getZr().add(l);m(l,e,!0),this._renderHandle(s)}},remove:function(t){this.clear(t)},dispose:function(t){this.clear(t)},determineAnimation:function(t,e){var n=e.get("animation"),i=t.axis,r="category"===i.type,o=e.get("snap");if(!o&&!r)return!1;if("auto"===n||null==n){var a=this.animationThreshold;if(r&&i.getBandWidth()>a)return!0;if(o){var l=s.getAxisInfo(t).seriesDataCount,c=i.getExtent();return Math.abs(c[0]-c[1])/l>a}return!1}return!0===n},makeElOption:function(t,e,n,i,r){},createPointerEl:function(t,e,n,i){var r=e.pointer;if(r){var s=c(t).pointerEl=new o[r.type](u(e.pointer));t.add(s)}},createLabelEl:function(t,e,n,i){if(e.label){var r=c(t).labelEl=new o.Rect(u(e.label));t.add(r),p(r,i)}},updatePointerEl:function(t,e,n){var i=c(t).pointerEl;i&&e.pointer&&(i.setStyle(e.pointer.style),n(i,{shape:e.pointer.shape}))},updateLabelEl:function(t,e,n,i){var r=c(t).labelEl;r&&(r.setStyle(e.label.style),n(r,{shape:e.label.shape,position:e.label.position}),p(r,i))},_renderHandle:function(t){if(!this._dragging&&this.updateHandleTransform){var e,n=this._axisPointerModel,r=this._api.getZr(),s=this._handle,c=n.getModel("handle"),u=n.get("status");if(!c.get("show")||!u||"hide"===u)return s&&r.remove(s),void(this._handle=null);this._handle||(e=!0,s=this._handle=o.createIcon(c.get("icon"),{cursor:"move",draggable:!0,onmousemove:function(t){a.stop(t.event)},onmousedown:h(this._onHandleDragMove,this,0,0),drift:h(this._onHandleDragMove,this),ondragend:h(this._onHandleDragEnd,this)}),r.add(s)),m(s,n,!1);s.setStyle(c.getItemStyle(null,["color","borderColor","borderWidth","opacity","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY"]));var d=c.get("size");i.isArray(d)||(d=[d,d]),s.attr("scale",[d[0]/2,d[1]/2]),l.createOrUpdate(this,"_doDispatchAxisPointer",c.get("throttle")||0,"fixRate"),this._moveHandleToValue(t,e)}},_moveHandleToValue:function(t,e){f(this._axisPointerModel,!e&&this._moveAnimation,this._handle,g(this.getHandleTransform(t,this._axisModel,this._axisPointerModel)))},_onHandleDragMove:function(t,e){var n=this._handle;if(n){this._dragging=!0;var i=this.updateHandleTransform(g(n),[t,e],this._axisModel,this._axisPointerModel);this._payloadInfo=i,n.stopAnimation(),n.attr(g(i)),c(n).lastProp=null,this._doDispatchAxisPointer()}},_doDispatchAxisPointer:function(){if(this._handle){var t=this._payloadInfo,e=this._axisModel;this._api.dispatchAction({type:"updateAxisPointer",x:t.cursorPoint[0],y:t.cursorPoint[1],tooltipOption:t.tooltipOption,axesInfo:[{axisDim:e.axis.dim,axisIndex:e.componentIndex}]})}},_onHandleDragEnd:function(t){if(this._dragging=!1,this._handle){var e=this._axisPointerModel.get("value");this._moveHandleToValue(e),this._api.dispatchAction({type:"hideTip"})}},getHandleTransform:null,updateHandleTransform:null,clear:function(t){this._lastValue=null,this._lastStatus=null;var e=t.getZr(),n=this._group,i=this._handle;e&&n&&(this._lastGraphicKey=null,n&&e.remove(n),i&&e.remove(i),this._group=null,this._handle=null,this._payloadInfo=null)},doClear:function(){},buildLabel:function(t,e,n){return{x:t[n=n||0],y:t[1-n],width:e[n],height:e[1-n]}}},d.prototype.constructor=d,r.enableClassExtend(d);var v=d;t.exports=v},"3NCs":function(t,e,n){"use strict";t.exports=s;var i=n("1t2c"),r=Object.create(n("Onz0"));function o(t,e){var n=this._transformState;n.transforming=!1;var i=n.writecb;if(!i)return this.emit("error",new Error("write callback called multiple times"));n.writechunk=null,n.writecb=null,null!=e&&this.push(e),i(t);var r=this._readableState;r.reading=!1,(r.needReadable||r.length1&&d/u>2&&(h=Math.round(Math.ceil(h/u)*u));var f=c(t),p=s.get("showMinLabel")||f,g=s.get("showMaxLabel")||f;p&&h!==o[0]&&v(o[0]);for(var m=h;m<=o[1];m+=u)v(m);function v(t){l.push(n?t:{formattedLabel:i(t),rawLabel:r.getLabel(t),tickValue:t})}return g&&m-u!==o[1]&&v(o[1]),l}function m(t,e,n){var r=t.scale,o=a(t),s=[];return i.each(r.getTicks(),(function(t){var i=r.getLabel(t);e(t,i)&&s.push(n?t:{formattedLabel:o(t),rawLabel:i,tickValue:t})})),s}e.createAxisLabels=function(t){return"category"===t.type?function(t){var e=t.getLabelModel(),n=h(t,e);return!e.get("show")||t.scale.isBlank()?{labels:[],labelCategoryInterval:n.labelCategoryInterval}:n}(t):function(t){var e=t.scale.getTicks(),n=a(t);return{labels:i.map(e,(function(e,i){return{formattedLabel:n(e,i),rawLabel:t.scale.getLabel(e),tickValue:e}}))}}(t)},e.createAxisTicks=function(t,e){return"category"===t.type?function(t,e){var n,r,o=d(t,"ticks"),s=l(e),a=f(o,s);if(a)return a;e.get("show")&&!t.scale.isBlank()||(n=[]);if(i.isFunction(s))n=m(t,s,!0);else if("auto"===s){var c=h(t,t.getLabelModel());r=c.labelCategoryInterval,n=i.map(c.labels,(function(t){return t.tickValue}))}else n=g(t,r=s,!0);return p(o,s,{ticks:n,tickCategoryInterval:r})}(t,e):{ticks:t.scale.getTicks()}},e.calculateCategoryInterval=function(t){var e=function(t){var e=t.getLabelModel();return{axisRotate:t.getRotate?t.getRotate():t.isHorizontal&&!t.isHorizontal()?90:0,labelRotate:e.get("rotate")||0,font:e.getFont()}}(t),n=a(t),i=(e.axisRotate-e.labelRotate)/180*Math.PI,o=t.scale,s=o.getExtent(),l=o.count();if(s[1]-s[0]<1)return 0;var c=1;l>40&&(c=Math.max(1,Math.floor(l/40)));for(var h=s[0],d=t.dataToCoord(h+1)-t.dataToCoord(h),f=Math.abs(d*Math.cos(i)),p=Math.abs(d*Math.sin(i)),g=0,m=0;h<=s[1];h+=c){var v,b,y=r.getBoundingRect(n(h),e.font,"center","top");v=1.3*y.width,b=1.3*y.height,g=Math.max(g,v,7),m=Math.max(m,b,7)}var w=g/f,x=m/p;isNaN(w)&&(w=1/0),isNaN(x)&&(x=1/0);var _=Math.max(0,Math.floor(Math.min(w,x))),M=u(t.model),S=t.getExtent(),A=M.lastAutoInterval,k=M.lastTickCount;return null!=A&&null!=k&&Math.abs(A-_)<=1&&Math.abs(k-l)<=1&&A>_&&M.axisExtend0===S[0]&&M.axisExtend1===S[1]?_=A:(M.lastTickCount=l,M.lastAutoInterval=_,M.axisExtend0=S[0],M.axisExtend1=S[1]),_}},"4HPa":function(t,e,n){(function(e){const{Transform:i}=n("45ke");t.exports=t=>class n extends i{constructor(e,n,i,r,o){super(o),this._rate=e,this._capacity=n,this._delimitedSuffix=i,this._hashBitLength=r,this._options=o,this._state=new t,this._state.initialize(e,n),this._finalized=!1}_transform(t,e,n){let i=null;try{this.update(t,e)}catch(t){i=t}n(i)}_flush(t){let e=null;try{this.push(this.digest())}catch(t){e=t}t(e)}update(t,n){if(!e.isBuffer(t)&&"string"!=typeof t)throw new TypeError("Data must be a string or a buffer");if(this._finalized)throw new Error("Digest already called");return e.isBuffer(t)||(t=e.from(t,n)),this._state.absorb(t),this}digest(t){if(this._finalized)throw new Error("Digest already called");this._finalized=!0,this._delimitedSuffix&&this._state.absorbLastFewBits(this._delimitedSuffix);let e=this._state.squeeze(this._hashBitLength/8);return void 0!==t&&(e=e.toString(t)),this._resetState(),e}_resetState(){return this._state.initialize(this._rate,this._capacity),this}_clone(){const t=new n(this._rate,this._capacity,this._delimitedSuffix,this._hashBitLength,this._options);return this._state.copy(t._state),t._finalized=this._finalized,t}}}).call(this,n("tjlA").Buffer)},"4I8g":function(t,e,n){t.exports=n.p+"34f52a56877a14fbb7e9d37469ebbf15.js"},"4LGm":function(t,e,n){t.exports=n.p+"3cfffbb4555d5856b82186750e7b2b65.js"},"4NO4":function(t,e,n){var i=n("bYtY"),r=n("ItGF"),o=i.each,s=i.isObject,a=i.isArray;function l(t){return t instanceof Array?t:null==t?[]:[t]}function c(t){return s(t)&&t.id&&0===(t.id+"").indexOf("\0_ec_\0")}var u=0;function h(t,e){return t&&t.hasOwnProperty(e)}e.normalizeToArray=l,e.defaultEmphasis=function(t,e,n){if(t){t[e]=t[e]||{},t.emphasis=t.emphasis||{},t.emphasis[e]=t.emphasis[e]||{};for(var i=0,r=n.length;i=n.length&&n.push({option:t})}})),n},e.makeIdAndName=function(t){var e=i.createHashMap();o(t,(function(t,n){var i=t.exist;i&&e.set(i.id,t)})),o(t,(function(t,n){var r=t.option;i.assert(!r||null==r.id||!e.get(r.id)||e.get(r.id)===t,"id duplicates: "+(r&&r.id)),r&&null!=r.id&&e.set(r.id,t),!t.keyInfo&&(t.keyInfo={})})),o(t,(function(t,n){var i=t.exist,r=t.option,o=t.keyInfo;if(s(r)){if(o.name=null!=r.name?r.name+"":i?i.name:"series\0"+n,i)o.id=i.id;else if(null!=r.id)o.id=r.id+"";else{var a=0;do{o.id="\0"+o.name+"\0"+a++}while(e.get(o.id))}e.set(o.id,t)}}))},e.isNameSpecified=function(t){var e=t.name;return!(!e||!e.indexOf("series\0"))},e.isIdInner=c,e.compressBatches=function(t,e){var n={},i={};return r(t||[],n),r(e||[],i,n),[o(n),o(i)];function r(t,e,n){for(var i=0,r=t.length;i=e[0]&&t<=e[1]},r.prototype.normalize=function(t){var e=this._extent;return e[1]===e[0]?.5:(t-e[0])/(e[1]-e[0])},r.prototype.scale=function(t){var e=this._extent;return t*(e[1]-e[0])+e[0]},r.prototype.unionExtent=function(t){var e=this._extent;t[0]e[1]&&(e[1]=t[1])},r.prototype.unionExtentFromData=function(t,e){this.unionExtent(t.getApproximateExtent(e))},r.prototype.getExtent=function(){return this._extent.slice()},r.prototype.setExtent=function(t,e){var n=this._extent;isNaN(t)||(n[0]=t),isNaN(e)||(n[1]=e)},r.prototype.isBlank=function(){return this._isBlank},r.prototype.setBlank=function(t){this._isBlank=t},r.prototype.getLabel=null,i.enableClassExtend(r),i.enableClassManagement(r,{registerWhenExtend:!0});var o=r;t.exports=o},"4Tkn":function(t,e,n){t.exports=n.p+"f6493d95eaf3c21810134f4fc28531c7.js"},"4Vdd":function(t,e,n){t.exports=n.p+"031eff2932c3edf3ad690d1e3abe2dde.js"},"4Vmv":function(t,e,n){t.exports=n.p+"966a0905960f7cf236a398b68d3a4c6c.js"},"4VtH":function(t,e,n){t.exports=n.p+"c3ee66447735372b0459983d11153db5.js"},"4fz+":function(t,e,n){var i=n("bYtY"),r=n("1bdT"),o=n("mFDi"),s=function(t){for(var e in t=t||{},r.call(this,t),t)t.hasOwnProperty(e)&&(this[e]=t[e]);this._children=[],this.__storage=null,this.__dirty=!0};s.prototype={constructor:s,isGroup:!0,type:"group",silent:!1,children:function(){return this._children.slice()},childAt:function(t){return this._children[t]},childOfName:function(t){for(var e=this._children,n=0;n=0&&(n.splice(i,0,t),this._doAdd(t))}return this},_doAdd:function(t){t.parent&&t.parent.remove(t),t.parent=this;var e=this.__storage,n=this.__zr;e&&e!==t.__storage&&(e.addToStorage(t),t instanceof s&&t.addChildrenToStorage(e)),n&&n.refresh()},remove:function(t){var e=this.__zr,n=this.__storage,r=this._children,o=i.indexOf(r,t);return o<0||(r.splice(o,1),t.parent=null,n&&(n.delFromStorage(t),t instanceof s&&t.delChildrenFromStorage(n)),e&&e.refresh()),this},removeAll:function(){var t,e,n=this._children,i=this.__storage;for(e=0;e1e-4)return p[0]=t-n,p[1]=e-r,g[0]=t+n,void(g[1]=e+r);if(u[0]=l(o)*n+t,u[1]=a(o)*r+e,h[0]=l(s)*n+t,h[1]=a(s)*r+e,m(p,u,h),v(g,u,h),(o%=c)<0&&(o+=c),(s%=c)<0&&(s+=c),o>s&&!f?s+=c:oo&&(d[0]=l(w)*n+t,d[1]=a(w)*r+e,m(p,d,p),v(g,d,g))}},"4oVz":function(t,e,n){t.exports=n.p+"9e357a97da26127713394684a51946b8.js"},"4vq3":function(t,e,n){t.exports=n.p+"f50d7c4ce743ce495230d19bd33fefab.js"},"5/Xo":function(t,e,n){t.exports=n.p+"d37f0f78c06e883be0e04a3be861fb68.js"},"52wA":function(t,e,n){t.exports=n.p+"758c22ddcb0f7f798a0977e45b44e905.js"},"53rP":function(t,e,n){t.exports=n.p+"5977b934a4c6b480790864ea01303173.js"},"547h":function(t,e,n){t.exports=n.p+"1c71dfe2ae40884baae78d14e2568eb1.js"},"59Ip":function(t,e,n){var i=n("Sj9i");e.containStroke=function(t,e,n,r,o,s,a,l,c,u,h){if(0===c)return!1;var d=c;return!(h>e+d&&h>r+d&&h>s+d&&h>l+d||ht+d&&u>n+d&&u>o+d&&u>a+d||ue)return t[i];return t[n-1]}(c,n):l;if((u=u||l)&&u.length){var h=u[r];return t&&(a[t]=h),i.colorIdx=(r+1)%u.length,h}}};t.exports=a},"5NHt":function(t,e,n){n("aTJb"),n("OlYY"),n("fc+c"),n("N5BQ"),n("IyUQ"),n("LBfv"),n("noeP")},"5YDr":function(t,e,n){t.exports=n.p+"7d46cd8e5efaac33d5bf823ed4268841.js"},"5fp7":function(t,e,n){t.exports=n.p+"ab224e40ec1be852b08440ae5b93334a.js"},"5maX":function(t,e,n){"use strict";(function(e){var i=Object.keys||function(t){var e=[];for(var n in t)e.push(n);return e};t.exports=a;const r=n("QlAO"),o=n("Gerr");n("P7XM")(a,r);{const t=i(o.prototype);for(var s=0;s=0&&l<0)&&(s=g,l=p,r=u,o.length=0),a(h,(function(t){o.push({seriesIndex:e.seriesIndex,dataIndexInside:t,dataIndex:e.getData().getRawIndex(t)})})))}})),{payloadBatch:o,snapToValue:r}}(e,t),c=l.payloadBatch,u=l.snapToValue;c[0]&&null==o.seriesIndex&&i.extend(o,c[0]),!r&&t.snap&&s.containData(u)&&null!=u&&(e=u),n.showPointer(t,e,c,o),n.showTooltip(t,l,u)}else n.showPointer(t,e)}function h(t,e,n,i){t[e.key]={value:n,payloadBatch:i}}function d(t,e,n,i){var r=n.payloadBatch,s=e.axis,a=s.model,l=e.axisPointerModel;if(e.triggerTooltip&&r.length){var c=e.coordSys.model,u=o.makeKey(c),h=t.map[u];h||(h=t.map[u]={coordSysId:c.id,coordSysIndex:c.componentIndex,coordSysType:c.type,coordSysMainType:c.mainType,dataByAxis:[]},t.list.push(h)),h.dataByAxis.push({axisDim:s.dim,axisIndex:a.componentIndex,axisType:a.type,axisId:a.id,value:i,valueLabelOpt:{precision:l.get("label.precision"),formatter:l.get("label.formatter")},seriesDataIndices:r.slice()})}}function f(t){var e=t.axis.model,n={},i=n.axisDim=t.axis.dim;return n.axisIndex=n[i+"AxisIndex"]=e.componentIndex,n.axisName=n[i+"AxisName"]=e.name,n.axisId=n[i+"AxisId"]=e.id,n}function p(t){return!t||null==t[0]||isNaN(t[0])||null==t[1]||isNaN(t[1])}t.exports=function(t,e,n){var r=t.currTrigger,o=[t.x,t.y],g=t,m=t.dispatchAction||i.bind(n.dispatchAction,n),v=e.getComponent("axisPointer").coordSysAxesInfo;if(v){p(o)&&(o=s({seriesIndex:g.seriesIndex,dataIndex:g.dataIndex},e).point);var b=p(o),y=g.axesInfo,w=v.axesInfo,x="leave"===r||p(o),_={},M={},S={list:[],map:{}},A={showPointer:l(h,M),showTooltip:l(d,S)};a(v.coordSysMap,(function(t,e){var n=b||t.containPoint(o);a(v.coordSysAxesInfo[e],(function(t,e){var i=t.axis,r=function(t,e){for(var n=0;n<(t||[]).length;n++){var i=t[n];if(e.axis.dim===i.axisDim&&e.axis.model.componentIndex===i.axisIndex)return i}}(y,t);if(!x&&n&&(!y||r)){var s=r&&r.value;null!=s||b||(s=i.pointToData(o)),null!=s&&u(t,s,A,!1,_)}}))}));var k={};return a(w,(function(t,e){var n=t.linkGroup;n&&!M[e]&&a(n.axesInfo,(function(e,i){var r=M[i];if(e!==t&&r){var o=r.value;n.mapper&&(o=t.axis.scale.parse(n.mapper(o,f(e),f(t)))),k[t.key]=o}}))})),a(k,(function(t,e){u(w[e],t,A,!0,_)})),function(t,e,n){var i=n.axesInfo=[];a(e,(function(e,n){var r=e.axisPointerModel.option,o=t[n];o?(!e.useHandle&&(r.status="show"),r.value=o.value,r.seriesDataIndices=(o.payloadBatch||[]).slice()):!e.useHandle&&(r.status="hide"),"show"===r.status&&i.push({axisDim:e.axis.dim,axisIndex:e.axis.model.componentIndex,value:r.value})}))}(M,w,_),function(t,e,n,i){if(p(e)||!t.list.length)return void i({type:"hideTip"});var r=((t.list[0].dataByAxis[0]||{}).seriesDataIndices||[])[0]||{};i({type:"showTip",escapeConnect:!0,x:e[0],y:e[1],tooltipOption:n.tooltipOption,position:n.position,dataIndexInside:r.dataIndexInside,dataIndex:r.dataIndex,seriesIndex:r.seriesIndex,dataByCoordSys:t.list})}(S,o,t,m),function(t,e,n){var r=n.getZr(),o=c(r).axisPointerLastHighlights||{},s=c(r).axisPointerLastHighlights={};a(t,(function(t,e){var n=t.axisPointerModel.option;"show"===n.status&&a(n.seriesDataIndices,(function(t){var e=t.seriesIndex+" | "+t.dataIndex;s[e]=t}))}));var l=[],u=[];i.each(o,(function(t,e){!s[e]&&u.push(t)})),i.each(s,(function(t,e){!o[e]&&l.push(t)})),u.length&&n.dispatchAction({type:"downplay",escapeConnect:!0,batch:u}),l.length&&n.dispatchAction({type:"highlight",escapeConnect:!0,batch:l})}(w,0,n),_}}},"6BBn":function(t,e,n){(function(t){ace.define("ace/theme/chrome.css",["require","exports","module"],(function(t,e,n){n.exports='.ace-chrome .ace_gutter {\n background: #ebebeb;\n color: #333;\n overflow : hidden;\n}\n\n.ace-chrome .ace_print-margin {\n width: 1px;\n background: #e8e8e8;\n}\n\n.ace-chrome {\n background-color: #FFFFFF;\n color: black;\n}\n\n.ace-chrome .ace_cursor {\n color: black;\n}\n\n.ace-chrome .ace_invisible {\n color: rgb(191, 191, 191);\n}\n\n.ace-chrome .ace_constant.ace_buildin {\n color: rgb(88, 72, 246);\n}\n\n.ace-chrome .ace_constant.ace_language {\n color: rgb(88, 92, 246);\n}\n\n.ace-chrome .ace_constant.ace_library {\n color: rgb(6, 150, 14);\n}\n\n.ace-chrome .ace_invalid {\n background-color: rgb(153, 0, 0);\n color: white;\n}\n\n.ace-chrome .ace_fold {\n}\n\n.ace-chrome .ace_support.ace_function {\n color: rgb(60, 76, 114);\n}\n\n.ace-chrome .ace_support.ace_constant {\n color: rgb(6, 150, 14);\n}\n\n.ace-chrome .ace_support.ace_type,\n.ace-chrome .ace_support.ace_class\n.ace-chrome .ace_support.ace_other {\n color: rgb(109, 121, 222);\n}\n\n.ace-chrome .ace_variable.ace_parameter {\n font-style:italic;\n color:#FD971F;\n}\n.ace-chrome .ace_keyword.ace_operator {\n color: rgb(104, 118, 135);\n}\n\n.ace-chrome .ace_comment {\n color: #236e24;\n}\n\n.ace-chrome .ace_comment.ace_doc {\n color: #236e24;\n}\n\n.ace-chrome .ace_comment.ace_doc.ace_tag {\n color: #236e24;\n}\n\n.ace-chrome .ace_constant.ace_numeric {\n color: rgb(0, 0, 205);\n}\n\n.ace-chrome .ace_variable {\n color: rgb(49, 132, 149);\n}\n\n.ace-chrome .ace_xml-pe {\n color: rgb(104, 104, 91);\n}\n\n.ace-chrome .ace_entity.ace_name.ace_function {\n color: #0000A2;\n}\n\n\n.ace-chrome .ace_heading {\n color: rgb(12, 7, 255);\n}\n\n.ace-chrome .ace_list {\n color:rgb(185, 6, 144);\n}\n\n.ace-chrome .ace_marker-layer .ace_selection {\n background: rgb(181, 213, 255);\n}\n\n.ace-chrome .ace_marker-layer .ace_step {\n background: rgb(252, 255, 0);\n}\n\n.ace-chrome .ace_marker-layer .ace_stack {\n background: rgb(164, 229, 101);\n}\n\n.ace-chrome .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgb(192, 192, 192);\n}\n\n.ace-chrome .ace_marker-layer .ace_active-line {\n background: rgba(0, 0, 0, 0.07);\n}\n\n.ace-chrome .ace_gutter-active-line {\n background-color : #dcdcdc;\n}\n\n.ace-chrome .ace_marker-layer .ace_selected-word {\n background: rgb(250, 250, 255);\n border: 1px solid rgb(200, 200, 250);\n}\n\n.ace-chrome .ace_storage,\n.ace-chrome .ace_keyword,\n.ace-chrome .ace_meta.ace_tag {\n color: rgb(147, 15, 128);\n}\n\n.ace-chrome .ace_string.ace_regex {\n color: rgb(255, 0, 0)\n}\n\n.ace-chrome .ace_string {\n color: #1A1AA6;\n}\n\n.ace-chrome .ace_entity.ace_other.ace_attribute-name {\n color: #994409;\n}\n\n.ace-chrome .ace_indent-guide {\n background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;\n}\n \n.ace-chrome .ace_indent-guide-active {\n background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC") right repeat-y;\n}\n'})),ace.define("ace/theme/chrome",["require","exports","module","ace/theme/chrome.css","ace/lib/dom"],(function(t,e,n){e.isDark=!1,e.cssClass="ace-chrome",e.cssText=t("./chrome.css"),t("../lib/dom").importCssString(e.cssText,e.cssClass,!1)})),ace.require(["ace/theme/chrome"],(function(e){t&&(t.exports=e)}))}).call(this,n("YuTi")(t))},"6Cyk":function(t,e,n){t.exports=n.p+"df14d63677343134a88e906bf460b997.js"},"6GrX":function(t,e,n){var i=n("mFDi"),r=n("Xnb7"),o=n("bYtY"),s=o.getContext,a=o.extend,l=o.retrieve2,c=o.retrieve3,u=o.trim,h={},d=0,f=/\{([a-zA-Z0-9_]+)\|([^}]*)\}/g,p={};function g(t,e){var n=t+":"+(e=e||"12px sans-serif");if(h[n])return h[n];for(var i=(t+"").split("\n"),r=0,o=0,s=i.length;o5e3&&(d=0,h={}),d++,h[n]=r,r}function m(t,e,n){return"right"===n?t-=e:"center"===n&&(t-=e/2),t}function v(t,e,n){return"middle"===n?t-=e/2:"bottom"===n&&(t-=e),t}function b(t,e,n){var i=e.textPosition,r=e.textDistance,o=n.x,s=n.y;r=r||0;var a=n.height,l=n.width,c=a/2,u="left",h="top";switch(i){case"left":o-=r,s+=c,u="right",h="middle";break;case"right":o+=r+l,s+=c,h="middle";break;case"top":o+=l/2,s-=r,u="center",h="bottom";break;case"bottom":o+=l/2,s+=a+r,u="center";break;case"inside":o+=l/2,s+=c,u="center",h="middle";break;case"insideLeft":o+=r,s+=c,h="middle";break;case"insideRight":o+=l-r,s+=c,u="right",h="middle";break;case"insideTop":o+=l/2,s+=r,u="center";break;case"insideBottom":o+=l/2,s+=a-r,u="center",h="bottom";break;case"insideTopLeft":o+=r,s+=r;break;case"insideTopRight":o+=l-r,s+=r,u="right";break;case"insideBottomLeft":o+=r,s+=a-r,h="bottom";break;case"insideBottomRight":o+=l-r,s+=a-r,u="right",h="bottom"}return(t=t||{}).x=o,t.y=s,t.textAlign=u,t.textVerticalAlign=h,t}function y(t,e,n,i,r){if(!e)return"";var o=(t+"").split("\n");r=w(e,n,i,r);for(var s=0,a=o.length;s=o;c++)s-=o;var u=g(n,e);return u>s&&(n="",u=0),s=t-u,i.ellipsis=n,i.ellipsisWidth=u,i.contentWidth=s,i.containerWidth=t,i}function x(t,e){var n=e.containerWidth,i=e.font,r=e.contentWidth;if(!n)return"";var o=g(t,i);if(o<=n)return t;for(var s=0;;s++){if(o<=r||s>=e.maxIterations){t+=e.ellipsis;break}var a=0===s?_(t,r,e.ascCharWidth,e.cnCharWidth):o>0?Math.floor(t.length*r/o):0;o=g(t=t.substr(0,a),i)}return""===t&&(t=e.placeholder),t}function _(t,e,n,i){for(var r=0,o=0,s=t.length;oh)t="",s=[];else if(null!=d)for(var f=w(d-(n?n[1]+n[3]:0),e,r.ellipsis,{minChar:r.minChar,placeholder:r.placeholder}),p=0,g=s.length;po&&C(n,t.substring(o,s)),C(n,i[2],i[1]),o=f.lastIndex}ob)return{lines:[],width:0,height:0};B.textWidth=g(B.text,E);var L=k.textWidth,I=null==L||"auto"===L;if("string"==typeof L&&"%"===L.charAt(L.length-1))B.percentWidth=L,d.push(B),L=0;else{if(I){L=B.textWidth;var O=k.textBackgroundColor,$=O&&O.image;$&&($=r.findExistImage($),r.isImageReady($)&&(L=Math.max(L,$.width*R/$.height)))}var P=T?T[1]+T[3]:0;L+=P;var D=null!=v?v-S:null;null!=D&&D=o.length,"The field ".concat(n.name," must not have more ").concat(n.length," bytes"))):n.allowZero&&0===o.length||!n.length||(0,r.default)(n.length===o.length,"The field ".concat(n.name," must have byte length of ").concat(n.length)),e.raw[i]=o}e._fields.push(n.name),Object.defineProperty(e,n.name,{enumerable:!0,configurable:!0,get:o,set:s}),n.default&&(e[n.name]=n.default),n.alias&&Object.defineProperty(e,n.alias,{enumerable:!1,configurable:!0,set:s,get:o})})),i)if("string"==typeof i&&(i=t.from((0,o.stripHexPrefix)(i),"hex")),t.isBuffer(i)&&(i=s.rlp.decode(i)),Array.isArray(i)){if(i.length>e._fields.length)throw new Error("wrong number of fields in data");i.forEach((function(t,n){e[e._fields[n]]=(0,a.toBuffer)(t)}))}else{if("object"!=typeof i)throw new Error("invalid data");var l=Object.keys(i);n.forEach((function(t){-1!==l.indexOf(t.name)&&(e[t.name]=i[t.name]),-1!==l.indexOf(t.alias)&&(e[t.alias]=i[t.alias])}))}}}).call(this,n("tjlA").Buffer)},"6UEL":function(t,e,n){t.exports=n.p+"a1126819c6d0a10f20464c174f78fcfb.js"},"6UMM":function(t,e,n){(function(t){!function(t,e){"use strict";function i(t,e){if(!t)throw new Error(e||"Assertion failed")}function r(t,e){t.super_=e;var n=function(){};n.prototype=e.prototype,t.prototype=new n,t.prototype.constructor=t}function o(t,e,n){if(o.isBN(t))return t;this.negative=0,this.words=null,this.length=0,this.red=null,null!==t&&("le"!==e&&"be"!==e||(n=e,e=10),this._init(t||0,e||10,n||"be"))}var s;"object"==typeof t?t.exports=o:e.BN=o,o.BN=o,o.wordSize=26;try{s=n("tjlA").Buffer}catch(t){}function a(t,e,n){for(var i=0,r=Math.min(t.length,n),o=e;o=49&&s<=54?s-49+10:s>=17&&s<=22?s-17+10:15&s}return i}function l(t,e,n,i){for(var r=0,o=Math.min(t.length,n),s=e;s=49?a-49+10:a>=17?a-17+10:a}return r}o.isBN=function(t){return t instanceof o||null!==t&&"object"==typeof t&&t.constructor.wordSize===o.wordSize&&Array.isArray(t.words)},o.max=function(t,e){return t.cmp(e)>0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,n){if("number"==typeof t)return this._initNumber(t,e,n);if("object"==typeof t)return this._initArray(t,e,n);"hex"===e&&(e=16),i(e===(0|e)&&e>=2&&e<=36);var r=0;"-"===(t=t.toString().replace(/\s+/g,""))[0]&&r++,16===e?this._parseHex(t,r):this._parseBase(t,e,r),"-"===t[0]&&(this.negative=1),this.strip(),"le"===n&&this._initArray(this.toArray(),e,n)},o.prototype._initNumber=function(t,e,n){t<0&&(this.negative=1,t=-t),t<67108864?(this.words=[67108863&t],this.length=1):t<4503599627370496?(this.words=[67108863&t,t/67108864&67108863],this.length=2):(i(t<9007199254740992),this.words=[67108863&t,t/67108864&67108863,1],this.length=3),"le"===n&&this._initArray(this.toArray(),e,n)},o.prototype._initArray=function(t,e,n){if(i("number"==typeof t.length),t.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(t.length/3),this.words=new Array(this.length);for(var r=0;r=0;r-=3)s=t[r]|t[r-1]<<8|t[r-2]<<16,this.words[o]|=s<>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);else if("le"===n)for(r=0,o=0;r>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);return this.strip()},o.prototype._parseHex=function(t,e){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var n=0;n=e;n-=6)r=a(t,n,n+6),this.words[i]|=r<>>26-o&4194303,(o+=24)>=26&&(o-=26,i++);n+6!==e&&(r=a(t,e,n+6),this.words[i]|=r<>>26-o&4194303),this.strip()},o.prototype._parseBase=function(t,e,n){this.words=[0],this.length=1;for(var i=0,r=1;r<=67108863;r*=e)i++;i--,r=r/e|0;for(var o=t.length-n,s=o%i,a=Math.min(o,o-s)+n,c=0,u=n;u1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?""};var c=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],u=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],h=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function d(t,e,n){n.negative=e.negative^t.negative;var i=t.length+e.length|0;n.length=i,i=i-1|0;var r=0|t.words[0],o=0|e.words[0],s=r*o,a=67108863&s,l=s/67108864|0;n.words[0]=a;for(var c=1;c>>26,h=67108863&l,d=Math.min(c,e.length-1),f=Math.max(0,c-t.length+1);f<=d;f++){var p=c-f|0;u+=(s=(r=0|t.words[p])*(o=0|e.words[f])+h)/67108864|0,h=67108863&s}n.words[c]=0|h,l=0|u}return 0!==l?n.words[c]=0|l:n.length--,n.strip()}o.prototype.toString=function(t,e){var n;if(e=0|e||1,16===(t=t||10)||"hex"===t){n="";for(var r=0,o=0,s=0;s>>24-r&16777215)||s!==this.length-1?c[6-l.length]+l+n:l+n,(r+=2)>=26&&(r-=26,s--)}for(0!==o&&(n=o.toString(16)+n);n.length%e!=0;)n="0"+n;return 0!==this.negative&&(n="-"+n),n}if(t===(0|t)&&t>=2&&t<=36){var d=u[t],f=h[t];n="";var p=this.clone();for(p.negative=0;!p.isZero();){var g=p.modn(f).toString(t);n=(p=p.idivn(f)).isZero()?g+n:c[d-g.length]+g+n}for(this.isZero()&&(n="0"+n);n.length%e!=0;)n="0"+n;return 0!==this.negative&&(n="-"+n),n}i(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(t,e){return i(void 0!==s),this.toArrayLike(s,t,e)},o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},o.prototype.toArrayLike=function(t,e,n){var r=this.byteLength(),o=n||Math.max(1,r);i(r<=o,"byte array longer than desired length"),i(o>0,"Requested array length <= 0"),this.strip();var s,a,l="le"===e,c=new t(o),u=this.clone();if(l){for(a=0;!u.isZero();a++)s=u.andln(255),u.iushrn(8),c[a]=s;for(;a=4096&&(n+=13,e>>>=13),e>=64&&(n+=7,e>>>=7),e>=8&&(n+=4,e>>>=4),e>=2&&(n+=2,e>>>=2),n+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,n=0;return 0==(8191&e)&&(n+=13,e>>>=13),0==(127&e)&&(n+=7,e>>>=7),0==(15&e)&&(n+=4,e>>>=4),0==(3&e)&&(n+=2,e>>>=2),0==(1&e)&&n++,n},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var n=0;nt.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,n;this.length>t.length?(e=this,n=t):(e=t,n=this);for(var i=0;it.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){i("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),n=t%26;this._expand(e),n>0&&e--;for(var r=0;r0&&(this.words[r]=~this.words[r]&67108863>>26-n),this.strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){i("number"==typeof t&&t>=0);var n=t/26|0,r=t%26;return this._expand(n+1),this.words[n]=e?this.words[n]|1<t.length?(n=this,i=t):(n=t,i=this);for(var r=0,o=0;o>>26;for(;0!==r&&o>>26;if(this.length=n.length,0!==r)this.words[this.length]=r,this.length++;else if(n!==this)for(;ot.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var n,i,r=this.cmp(t);if(0===r)return this.negative=0,this.length=1,this.words[0]=0,this;r>0?(n=this,i=t):(n=t,i=this);for(var o=0,s=0;s>26,this.words[s]=67108863&e;for(;0!==o&&s>26,this.words[s]=67108863&e;if(0===o&&s>>13,f=0|s[1],p=8191&f,g=f>>>13,m=0|s[2],v=8191&m,b=m>>>13,y=0|s[3],w=8191&y,x=y>>>13,_=0|s[4],M=8191&_,S=_>>>13,A=0|s[5],k=8191&A,C=A>>>13,T=0|s[6],E=8191&T,R=T>>>13,L=0|s[7],I=8191&L,O=L>>>13,$=0|s[8],P=8191&$,D=$>>>13,B=0|s[9],N=8191&B,F=B>>>13,j=0|a[0],U=8191&j,z=j>>>13,H=0|a[1],W=8191&H,V=H>>>13,q=0|a[2],G=8191&q,Y=q>>>13,K=0|a[3],Z=8191&K,X=K>>>13,J=0|a[4],Q=8191&J,tt=J>>>13,et=0|a[5],nt=8191&et,it=et>>>13,rt=0|a[6],ot=8191&rt,st=rt>>>13,at=0|a[7],lt=8191&at,ct=at>>>13,ut=0|a[8],ht=8191&ut,dt=ut>>>13,ft=0|a[9],pt=8191&ft,gt=ft>>>13;n.negative=t.negative^e.negative,n.length=19;var mt=(c+(i=Math.imul(h,U))|0)+((8191&(r=(r=Math.imul(h,z))+Math.imul(d,U)|0))<<13)|0;c=((o=Math.imul(d,z))+(r>>>13)|0)+(mt>>>26)|0,mt&=67108863,i=Math.imul(p,U),r=(r=Math.imul(p,z))+Math.imul(g,U)|0,o=Math.imul(g,z);var vt=(c+(i=i+Math.imul(h,W)|0)|0)+((8191&(r=(r=r+Math.imul(h,V)|0)+Math.imul(d,W)|0))<<13)|0;c=((o=o+Math.imul(d,V)|0)+(r>>>13)|0)+(vt>>>26)|0,vt&=67108863,i=Math.imul(v,U),r=(r=Math.imul(v,z))+Math.imul(b,U)|0,o=Math.imul(b,z),i=i+Math.imul(p,W)|0,r=(r=r+Math.imul(p,V)|0)+Math.imul(g,W)|0,o=o+Math.imul(g,V)|0;var bt=(c+(i=i+Math.imul(h,G)|0)|0)+((8191&(r=(r=r+Math.imul(h,Y)|0)+Math.imul(d,G)|0))<<13)|0;c=((o=o+Math.imul(d,Y)|0)+(r>>>13)|0)+(bt>>>26)|0,bt&=67108863,i=Math.imul(w,U),r=(r=Math.imul(w,z))+Math.imul(x,U)|0,o=Math.imul(x,z),i=i+Math.imul(v,W)|0,r=(r=r+Math.imul(v,V)|0)+Math.imul(b,W)|0,o=o+Math.imul(b,V)|0,i=i+Math.imul(p,G)|0,r=(r=r+Math.imul(p,Y)|0)+Math.imul(g,G)|0,o=o+Math.imul(g,Y)|0;var yt=(c+(i=i+Math.imul(h,Z)|0)|0)+((8191&(r=(r=r+Math.imul(h,X)|0)+Math.imul(d,Z)|0))<<13)|0;c=((o=o+Math.imul(d,X)|0)+(r>>>13)|0)+(yt>>>26)|0,yt&=67108863,i=Math.imul(M,U),r=(r=Math.imul(M,z))+Math.imul(S,U)|0,o=Math.imul(S,z),i=i+Math.imul(w,W)|0,r=(r=r+Math.imul(w,V)|0)+Math.imul(x,W)|0,o=o+Math.imul(x,V)|0,i=i+Math.imul(v,G)|0,r=(r=r+Math.imul(v,Y)|0)+Math.imul(b,G)|0,o=o+Math.imul(b,Y)|0,i=i+Math.imul(p,Z)|0,r=(r=r+Math.imul(p,X)|0)+Math.imul(g,Z)|0,o=o+Math.imul(g,X)|0;var wt=(c+(i=i+Math.imul(h,Q)|0)|0)+((8191&(r=(r=r+Math.imul(h,tt)|0)+Math.imul(d,Q)|0))<<13)|0;c=((o=o+Math.imul(d,tt)|0)+(r>>>13)|0)+(wt>>>26)|0,wt&=67108863,i=Math.imul(k,U),r=(r=Math.imul(k,z))+Math.imul(C,U)|0,o=Math.imul(C,z),i=i+Math.imul(M,W)|0,r=(r=r+Math.imul(M,V)|0)+Math.imul(S,W)|0,o=o+Math.imul(S,V)|0,i=i+Math.imul(w,G)|0,r=(r=r+Math.imul(w,Y)|0)+Math.imul(x,G)|0,o=o+Math.imul(x,Y)|0,i=i+Math.imul(v,Z)|0,r=(r=r+Math.imul(v,X)|0)+Math.imul(b,Z)|0,o=o+Math.imul(b,X)|0,i=i+Math.imul(p,Q)|0,r=(r=r+Math.imul(p,tt)|0)+Math.imul(g,Q)|0,o=o+Math.imul(g,tt)|0;var xt=(c+(i=i+Math.imul(h,nt)|0)|0)+((8191&(r=(r=r+Math.imul(h,it)|0)+Math.imul(d,nt)|0))<<13)|0;c=((o=o+Math.imul(d,it)|0)+(r>>>13)|0)+(xt>>>26)|0,xt&=67108863,i=Math.imul(E,U),r=(r=Math.imul(E,z))+Math.imul(R,U)|0,o=Math.imul(R,z),i=i+Math.imul(k,W)|0,r=(r=r+Math.imul(k,V)|0)+Math.imul(C,W)|0,o=o+Math.imul(C,V)|0,i=i+Math.imul(M,G)|0,r=(r=r+Math.imul(M,Y)|0)+Math.imul(S,G)|0,o=o+Math.imul(S,Y)|0,i=i+Math.imul(w,Z)|0,r=(r=r+Math.imul(w,X)|0)+Math.imul(x,Z)|0,o=o+Math.imul(x,X)|0,i=i+Math.imul(v,Q)|0,r=(r=r+Math.imul(v,tt)|0)+Math.imul(b,Q)|0,o=o+Math.imul(b,tt)|0,i=i+Math.imul(p,nt)|0,r=(r=r+Math.imul(p,it)|0)+Math.imul(g,nt)|0,o=o+Math.imul(g,it)|0;var _t=(c+(i=i+Math.imul(h,ot)|0)|0)+((8191&(r=(r=r+Math.imul(h,st)|0)+Math.imul(d,ot)|0))<<13)|0;c=((o=o+Math.imul(d,st)|0)+(r>>>13)|0)+(_t>>>26)|0,_t&=67108863,i=Math.imul(I,U),r=(r=Math.imul(I,z))+Math.imul(O,U)|0,o=Math.imul(O,z),i=i+Math.imul(E,W)|0,r=(r=r+Math.imul(E,V)|0)+Math.imul(R,W)|0,o=o+Math.imul(R,V)|0,i=i+Math.imul(k,G)|0,r=(r=r+Math.imul(k,Y)|0)+Math.imul(C,G)|0,o=o+Math.imul(C,Y)|0,i=i+Math.imul(M,Z)|0,r=(r=r+Math.imul(M,X)|0)+Math.imul(S,Z)|0,o=o+Math.imul(S,X)|0,i=i+Math.imul(w,Q)|0,r=(r=r+Math.imul(w,tt)|0)+Math.imul(x,Q)|0,o=o+Math.imul(x,tt)|0,i=i+Math.imul(v,nt)|0,r=(r=r+Math.imul(v,it)|0)+Math.imul(b,nt)|0,o=o+Math.imul(b,it)|0,i=i+Math.imul(p,ot)|0,r=(r=r+Math.imul(p,st)|0)+Math.imul(g,ot)|0,o=o+Math.imul(g,st)|0;var Mt=(c+(i=i+Math.imul(h,lt)|0)|0)+((8191&(r=(r=r+Math.imul(h,ct)|0)+Math.imul(d,lt)|0))<<13)|0;c=((o=o+Math.imul(d,ct)|0)+(r>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,i=Math.imul(P,U),r=(r=Math.imul(P,z))+Math.imul(D,U)|0,o=Math.imul(D,z),i=i+Math.imul(I,W)|0,r=(r=r+Math.imul(I,V)|0)+Math.imul(O,W)|0,o=o+Math.imul(O,V)|0,i=i+Math.imul(E,G)|0,r=(r=r+Math.imul(E,Y)|0)+Math.imul(R,G)|0,o=o+Math.imul(R,Y)|0,i=i+Math.imul(k,Z)|0,r=(r=r+Math.imul(k,X)|0)+Math.imul(C,Z)|0,o=o+Math.imul(C,X)|0,i=i+Math.imul(M,Q)|0,r=(r=r+Math.imul(M,tt)|0)+Math.imul(S,Q)|0,o=o+Math.imul(S,tt)|0,i=i+Math.imul(w,nt)|0,r=(r=r+Math.imul(w,it)|0)+Math.imul(x,nt)|0,o=o+Math.imul(x,it)|0,i=i+Math.imul(v,ot)|0,r=(r=r+Math.imul(v,st)|0)+Math.imul(b,ot)|0,o=o+Math.imul(b,st)|0,i=i+Math.imul(p,lt)|0,r=(r=r+Math.imul(p,ct)|0)+Math.imul(g,lt)|0,o=o+Math.imul(g,ct)|0;var St=(c+(i=i+Math.imul(h,ht)|0)|0)+((8191&(r=(r=r+Math.imul(h,dt)|0)+Math.imul(d,ht)|0))<<13)|0;c=((o=o+Math.imul(d,dt)|0)+(r>>>13)|0)+(St>>>26)|0,St&=67108863,i=Math.imul(N,U),r=(r=Math.imul(N,z))+Math.imul(F,U)|0,o=Math.imul(F,z),i=i+Math.imul(P,W)|0,r=(r=r+Math.imul(P,V)|0)+Math.imul(D,W)|0,o=o+Math.imul(D,V)|0,i=i+Math.imul(I,G)|0,r=(r=r+Math.imul(I,Y)|0)+Math.imul(O,G)|0,o=o+Math.imul(O,Y)|0,i=i+Math.imul(E,Z)|0,r=(r=r+Math.imul(E,X)|0)+Math.imul(R,Z)|0,o=o+Math.imul(R,X)|0,i=i+Math.imul(k,Q)|0,r=(r=r+Math.imul(k,tt)|0)+Math.imul(C,Q)|0,o=o+Math.imul(C,tt)|0,i=i+Math.imul(M,nt)|0,r=(r=r+Math.imul(M,it)|0)+Math.imul(S,nt)|0,o=o+Math.imul(S,it)|0,i=i+Math.imul(w,ot)|0,r=(r=r+Math.imul(w,st)|0)+Math.imul(x,ot)|0,o=o+Math.imul(x,st)|0,i=i+Math.imul(v,lt)|0,r=(r=r+Math.imul(v,ct)|0)+Math.imul(b,lt)|0,o=o+Math.imul(b,ct)|0,i=i+Math.imul(p,ht)|0,r=(r=r+Math.imul(p,dt)|0)+Math.imul(g,ht)|0,o=o+Math.imul(g,dt)|0;var At=(c+(i=i+Math.imul(h,pt)|0)|0)+((8191&(r=(r=r+Math.imul(h,gt)|0)+Math.imul(d,pt)|0))<<13)|0;c=((o=o+Math.imul(d,gt)|0)+(r>>>13)|0)+(At>>>26)|0,At&=67108863,i=Math.imul(N,W),r=(r=Math.imul(N,V))+Math.imul(F,W)|0,o=Math.imul(F,V),i=i+Math.imul(P,G)|0,r=(r=r+Math.imul(P,Y)|0)+Math.imul(D,G)|0,o=o+Math.imul(D,Y)|0,i=i+Math.imul(I,Z)|0,r=(r=r+Math.imul(I,X)|0)+Math.imul(O,Z)|0,o=o+Math.imul(O,X)|0,i=i+Math.imul(E,Q)|0,r=(r=r+Math.imul(E,tt)|0)+Math.imul(R,Q)|0,o=o+Math.imul(R,tt)|0,i=i+Math.imul(k,nt)|0,r=(r=r+Math.imul(k,it)|0)+Math.imul(C,nt)|0,o=o+Math.imul(C,it)|0,i=i+Math.imul(M,ot)|0,r=(r=r+Math.imul(M,st)|0)+Math.imul(S,ot)|0,o=o+Math.imul(S,st)|0,i=i+Math.imul(w,lt)|0,r=(r=r+Math.imul(w,ct)|0)+Math.imul(x,lt)|0,o=o+Math.imul(x,ct)|0,i=i+Math.imul(v,ht)|0,r=(r=r+Math.imul(v,dt)|0)+Math.imul(b,ht)|0,o=o+Math.imul(b,dt)|0;var kt=(c+(i=i+Math.imul(p,pt)|0)|0)+((8191&(r=(r=r+Math.imul(p,gt)|0)+Math.imul(g,pt)|0))<<13)|0;c=((o=o+Math.imul(g,gt)|0)+(r>>>13)|0)+(kt>>>26)|0,kt&=67108863,i=Math.imul(N,G),r=(r=Math.imul(N,Y))+Math.imul(F,G)|0,o=Math.imul(F,Y),i=i+Math.imul(P,Z)|0,r=(r=r+Math.imul(P,X)|0)+Math.imul(D,Z)|0,o=o+Math.imul(D,X)|0,i=i+Math.imul(I,Q)|0,r=(r=r+Math.imul(I,tt)|0)+Math.imul(O,Q)|0,o=o+Math.imul(O,tt)|0,i=i+Math.imul(E,nt)|0,r=(r=r+Math.imul(E,it)|0)+Math.imul(R,nt)|0,o=o+Math.imul(R,it)|0,i=i+Math.imul(k,ot)|0,r=(r=r+Math.imul(k,st)|0)+Math.imul(C,ot)|0,o=o+Math.imul(C,st)|0,i=i+Math.imul(M,lt)|0,r=(r=r+Math.imul(M,ct)|0)+Math.imul(S,lt)|0,o=o+Math.imul(S,ct)|0,i=i+Math.imul(w,ht)|0,r=(r=r+Math.imul(w,dt)|0)+Math.imul(x,ht)|0,o=o+Math.imul(x,dt)|0;var Ct=(c+(i=i+Math.imul(v,pt)|0)|0)+((8191&(r=(r=r+Math.imul(v,gt)|0)+Math.imul(b,pt)|0))<<13)|0;c=((o=o+Math.imul(b,gt)|0)+(r>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,i=Math.imul(N,Z),r=(r=Math.imul(N,X))+Math.imul(F,Z)|0,o=Math.imul(F,X),i=i+Math.imul(P,Q)|0,r=(r=r+Math.imul(P,tt)|0)+Math.imul(D,Q)|0,o=o+Math.imul(D,tt)|0,i=i+Math.imul(I,nt)|0,r=(r=r+Math.imul(I,it)|0)+Math.imul(O,nt)|0,o=o+Math.imul(O,it)|0,i=i+Math.imul(E,ot)|0,r=(r=r+Math.imul(E,st)|0)+Math.imul(R,ot)|0,o=o+Math.imul(R,st)|0,i=i+Math.imul(k,lt)|0,r=(r=r+Math.imul(k,ct)|0)+Math.imul(C,lt)|0,o=o+Math.imul(C,ct)|0,i=i+Math.imul(M,ht)|0,r=(r=r+Math.imul(M,dt)|0)+Math.imul(S,ht)|0,o=o+Math.imul(S,dt)|0;var Tt=(c+(i=i+Math.imul(w,pt)|0)|0)+((8191&(r=(r=r+Math.imul(w,gt)|0)+Math.imul(x,pt)|0))<<13)|0;c=((o=o+Math.imul(x,gt)|0)+(r>>>13)|0)+(Tt>>>26)|0,Tt&=67108863,i=Math.imul(N,Q),r=(r=Math.imul(N,tt))+Math.imul(F,Q)|0,o=Math.imul(F,tt),i=i+Math.imul(P,nt)|0,r=(r=r+Math.imul(P,it)|0)+Math.imul(D,nt)|0,o=o+Math.imul(D,it)|0,i=i+Math.imul(I,ot)|0,r=(r=r+Math.imul(I,st)|0)+Math.imul(O,ot)|0,o=o+Math.imul(O,st)|0,i=i+Math.imul(E,lt)|0,r=(r=r+Math.imul(E,ct)|0)+Math.imul(R,lt)|0,o=o+Math.imul(R,ct)|0,i=i+Math.imul(k,ht)|0,r=(r=r+Math.imul(k,dt)|0)+Math.imul(C,ht)|0,o=o+Math.imul(C,dt)|0;var Et=(c+(i=i+Math.imul(M,pt)|0)|0)+((8191&(r=(r=r+Math.imul(M,gt)|0)+Math.imul(S,pt)|0))<<13)|0;c=((o=o+Math.imul(S,gt)|0)+(r>>>13)|0)+(Et>>>26)|0,Et&=67108863,i=Math.imul(N,nt),r=(r=Math.imul(N,it))+Math.imul(F,nt)|0,o=Math.imul(F,it),i=i+Math.imul(P,ot)|0,r=(r=r+Math.imul(P,st)|0)+Math.imul(D,ot)|0,o=o+Math.imul(D,st)|0,i=i+Math.imul(I,lt)|0,r=(r=r+Math.imul(I,ct)|0)+Math.imul(O,lt)|0,o=o+Math.imul(O,ct)|0,i=i+Math.imul(E,ht)|0,r=(r=r+Math.imul(E,dt)|0)+Math.imul(R,ht)|0,o=o+Math.imul(R,dt)|0;var Rt=(c+(i=i+Math.imul(k,pt)|0)|0)+((8191&(r=(r=r+Math.imul(k,gt)|0)+Math.imul(C,pt)|0))<<13)|0;c=((o=o+Math.imul(C,gt)|0)+(r>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,i=Math.imul(N,ot),r=(r=Math.imul(N,st))+Math.imul(F,ot)|0,o=Math.imul(F,st),i=i+Math.imul(P,lt)|0,r=(r=r+Math.imul(P,ct)|0)+Math.imul(D,lt)|0,o=o+Math.imul(D,ct)|0,i=i+Math.imul(I,ht)|0,r=(r=r+Math.imul(I,dt)|0)+Math.imul(O,ht)|0,o=o+Math.imul(O,dt)|0;var Lt=(c+(i=i+Math.imul(E,pt)|0)|0)+((8191&(r=(r=r+Math.imul(E,gt)|0)+Math.imul(R,pt)|0))<<13)|0;c=((o=o+Math.imul(R,gt)|0)+(r>>>13)|0)+(Lt>>>26)|0,Lt&=67108863,i=Math.imul(N,lt),r=(r=Math.imul(N,ct))+Math.imul(F,lt)|0,o=Math.imul(F,ct),i=i+Math.imul(P,ht)|0,r=(r=r+Math.imul(P,dt)|0)+Math.imul(D,ht)|0,o=o+Math.imul(D,dt)|0;var It=(c+(i=i+Math.imul(I,pt)|0)|0)+((8191&(r=(r=r+Math.imul(I,gt)|0)+Math.imul(O,pt)|0))<<13)|0;c=((o=o+Math.imul(O,gt)|0)+(r>>>13)|0)+(It>>>26)|0,It&=67108863,i=Math.imul(N,ht),r=(r=Math.imul(N,dt))+Math.imul(F,ht)|0,o=Math.imul(F,dt);var Ot=(c+(i=i+Math.imul(P,pt)|0)|0)+((8191&(r=(r=r+Math.imul(P,gt)|0)+Math.imul(D,pt)|0))<<13)|0;c=((o=o+Math.imul(D,gt)|0)+(r>>>13)|0)+(Ot>>>26)|0,Ot&=67108863;var $t=(c+(i=Math.imul(N,pt))|0)+((8191&(r=(r=Math.imul(N,gt))+Math.imul(F,pt)|0))<<13)|0;return c=((o=Math.imul(F,gt))+(r>>>13)|0)+($t>>>26)|0,$t&=67108863,l[0]=mt,l[1]=vt,l[2]=bt,l[3]=yt,l[4]=wt,l[5]=xt,l[6]=_t,l[7]=Mt,l[8]=St,l[9]=At,l[10]=kt,l[11]=Ct,l[12]=Tt,l[13]=Et,l[14]=Rt,l[15]=Lt,l[16]=It,l[17]=Ot,l[18]=$t,0!==c&&(l[19]=c,n.length++),n};function p(t,e,n){return(new g).mulp(t,e,n)}function g(t,e){this.x=t,this.y=e}Math.imul||(f=d),o.prototype.mulTo=function(t,e){var n=this.length+t.length;return 10===this.length&&10===t.length?f(this,t,e):n<63?d(this,t,e):n<1024?function(t,e,n){n.negative=e.negative^t.negative,n.length=t.length+e.length;for(var i=0,r=0,o=0;o>>26)|0)>>>26,s&=67108863}n.words[o]=a,i=s,s=r}return 0!==i?n.words[o]=i:n.length--,n.strip()}(this,t,e):p(this,t,e)},g.prototype.makeRBT=function(t){for(var e=new Array(t),n=o.prototype._countBits(t)-1,i=0;i>=1;return i},g.prototype.permute=function(t,e,n,i,r,o){for(var s=0;s>>=1)r++;return 1<>>=13,n[2*s+1]=8191&o,o>>>=13;for(s=2*e;s>=26,e+=r/67108864|0,e+=o>>>26,this.words[n]=67108863&o}return 0!==e&&(this.words[n]=e,this.length++),this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=function(t){for(var e=new Array(t.bitLength()),n=0;n>>r}return e}(t);if(0===e.length)return new o(1);for(var n=this,i=0;i=0);var e,n=t%26,r=(t-n)/26,o=67108863>>>26-n<<26-n;if(0!==n){var s=0;for(e=0;e>>26-n}s&&(this.words[e]=s,this.length++)}if(0!==r){for(e=this.length-1;e>=0;e--)this.words[e+r]=this.words[e];for(e=0;e=0),r=e?(e-e%26)/26:0;var o=t%26,s=Math.min((t-o)/26,this.length),a=67108863^67108863>>>o<s)for(this.length-=s,c=0;c=0&&(0!==u||c>=r);c--){var h=0|this.words[c];this.words[c]=u<<26-o|h>>>o,u=h&a}return l&&0!==u&&(l.words[l.length++]=u),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(t,e,n){return i(0===this.negative),this.iushrn(t,e,n)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){i("number"==typeof t&&t>=0);var e=t%26,n=(t-e)/26,r=1<=0);var e=t%26,n=(t-e)/26;if(i(0===this.negative,"imaskn works only with positive numbers"),this.length<=n)return this;if(0!==e&&n++,this.length=Math.min(n,this.length),0!==e){var r=67108863^67108863>>>e<=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(i("number"==typeof t),i(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e>26)-(l/67108864|0),this.words[r+n]=67108863&o}for(;r>26,this.words[r+n]=67108863&o;if(0===a)return this.strip();for(i(-1===a),a=0,r=0;r>26,this.words[r]=67108863&o;return this.negative=1,this.strip()},o.prototype._wordDiv=function(t,e){var n=(this.length,t.length),i=this.clone(),r=t,s=0|r.words[r.length-1];0!==(n=26-this._countBits(s))&&(r=r.ushln(n),i.iushln(n),s=0|r.words[r.length-1]);var a,l=i.length-r.length;if("mod"!==e){(a=new o(null)).length=l+1,a.words=new Array(a.length);for(var c=0;c=0;h--){var d=67108864*(0|i.words[r.length+h])+(0|i.words[r.length+h-1]);for(d=Math.min(d/s|0,67108863),i._ishlnsubmul(r,d,h);0!==i.negative;)d--,i.negative=0,i._ishlnsubmul(r,1,h),i.isZero()||(i.negative^=1);a&&(a.words[h]=d)}return a&&a.strip(),i.strip(),"div"!==e&&0!==n&&i.iushrn(n),{div:a||null,mod:i}},o.prototype.divmod=function(t,e,n){return i(!t.isZero()),this.isZero()?{div:new o(0),mod:new o(0)}:0!==this.negative&&0===t.negative?(a=this.neg().divmod(t,e),"mod"!==e&&(r=a.div.neg()),"div"!==e&&(s=a.mod.neg(),n&&0!==s.negative&&s.iadd(t)),{div:r,mod:s}):0===this.negative&&0!==t.negative?(a=this.divmod(t.neg(),e),"mod"!==e&&(r=a.div.neg()),{div:r,mod:a.mod}):0!=(this.negative&t.negative)?(a=this.neg().divmod(t.neg(),e),"div"!==e&&(s=a.mod.neg(),n&&0!==s.negative&&s.isub(t)),{div:a.div,mod:s}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new o(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modn(t.words[0]))}:this._wordDiv(t,e);var r,s,a},o.prototype.div=function(t){return this.divmod(t,"div",!1).div},o.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},o.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var n=0!==e.div.negative?e.mod.isub(t):e.mod,i=t.ushrn(1),r=t.andln(1),o=n.cmp(i);return o<0||1===r&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modn=function(t){i(t<=67108863);for(var e=(1<<26)%t,n=0,r=this.length-1;r>=0;r--)n=(e*n+(0|this.words[r]))%t;return n},o.prototype.idivn=function(t){i(t<=67108863);for(var e=0,n=this.length-1;n>=0;n--){var r=(0|this.words[n])+67108864*e;this.words[n]=r/t|0,e=r%t}return this.strip()},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){i(0===t.negative),i(!t.isZero());var e=this,n=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var r=new o(1),s=new o(0),a=new o(0),l=new o(1),c=0;e.isEven()&&n.isEven();)e.iushrn(1),n.iushrn(1),++c;for(var u=n.clone(),h=e.clone();!e.isZero();){for(var d=0,f=1;0==(e.words[0]&f)&&d<26;++d,f<<=1);if(d>0)for(e.iushrn(d);d-- >0;)(r.isOdd()||s.isOdd())&&(r.iadd(u),s.isub(h)),r.iushrn(1),s.iushrn(1);for(var p=0,g=1;0==(n.words[0]&g)&&p<26;++p,g<<=1);if(p>0)for(n.iushrn(p);p-- >0;)(a.isOdd()||l.isOdd())&&(a.iadd(u),l.isub(h)),a.iushrn(1),l.iushrn(1);e.cmp(n)>=0?(e.isub(n),r.isub(a),s.isub(l)):(n.isub(e),a.isub(r),l.isub(s))}return{a:a,b:l,gcd:n.iushln(c)}},o.prototype._invmp=function(t){i(0===t.negative),i(!t.isZero());var e=this,n=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var r,s=new o(1),a=new o(0),l=n.clone();e.cmpn(1)>0&&n.cmpn(1)>0;){for(var c=0,u=1;0==(e.words[0]&u)&&c<26;++c,u<<=1);if(c>0)for(e.iushrn(c);c-- >0;)s.isOdd()&&s.iadd(l),s.iushrn(1);for(var h=0,d=1;0==(n.words[0]&d)&&h<26;++h,d<<=1);if(h>0)for(n.iushrn(h);h-- >0;)a.isOdd()&&a.iadd(l),a.iushrn(1);e.cmp(n)>=0?(e.isub(n),s.isub(a)):(n.isub(e),a.isub(s))}return(r=0===e.cmpn(1)?s:a).cmpn(0)<0&&r.iadd(t),r},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),n=t.clone();e.negative=0,n.negative=0;for(var i=0;e.isEven()&&n.isEven();i++)e.iushrn(1),n.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;n.isEven();)n.iushrn(1);var r=e.cmp(n);if(r<0){var o=e;e=n,n=o}else if(0===r||0===n.cmpn(1))break;e.isub(n)}return n.iushln(i)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0==(1&this.words[0])},o.prototype.isOdd=function(){return 1==(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){i("number"==typeof t);var e=t%26,n=(t-e)/26,r=1<>>26,a&=67108863,this.words[s]=a}return 0!==o&&(this.words[s]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e,n=t<0;if(0!==this.negative&&!n)return-1;if(0===this.negative&&n)return 1;if(this.strip(),this.length>1)e=1;else{n&&(t=-t),i(t<=67108863,"Number is too big");var r=0|this.words[0];e=r===t?0:rt.length)return 1;if(this.length=0;n--){var i=0|this.words[n],r=0|t.words[n];if(i!==r){ir&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return-1===this.cmpn(t)},o.prototype.lt=function(t){return-1===this.cmp(t)},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new _(t)},o.prototype.toRed=function(t){return i(!this.red,"Already a number in reduction context"),i(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return i(!this.red,"Already a number in reduction context"),this._forceRed(t)},o.prototype.redAdd=function(t){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},o.prototype.redISub=function(t){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},o.prototype.redShl=function(t){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},o.prototype.redMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return i(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var m={k256:null,p224:null,p192:null,p25519:null};function v(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function b(){v.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function y(){v.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function w(){v.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function x(){v.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function _(t){if("string"==typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else i(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function M(t){_.call(this,t),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}v.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},v.prototype.ireduce=function(t){var e,n=t;do{this.split(n,this.tmp),e=(n=(n=this.imulK(n)).iadd(this.tmp)).bitLength()}while(e>this.n);var i=e0?n.isub(this.p):n.strip(),n},v.prototype.split=function(t,e){t.iushrn(this.n,0,e)},v.prototype.imulK=function(t){return t.imul(this.k)},r(b,v),b.prototype.split=function(t,e){for(var n=Math.min(t.length,9),i=0;i>>22,r=o}r>>>=22,t.words[i-10]=r,0===r&&t.length>10?t.length-=10:t.length-=9},b.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,n=0;n>>=26,t.words[n]=r,e=i}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function(t){if(m[t])return m[t];var e;if("k256"===t)e=new b;else if("p224"===t)e=new y;else if("p192"===t)e=new w;else{if("p25519"!==t)throw new Error("Unknown prime "+t);e=new x}return m[t]=e,e},_.prototype._verify1=function(t){i(0===t.negative,"red works only with positives"),i(t.red,"red works only with red numbers")},_.prototype._verify2=function(t,e){i(0==(t.negative|e.negative),"red works only with positives"),i(t.red&&t.red===e.red,"red works only with red numbers")},_.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},_.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},_.prototype.add=function(t,e){this._verify2(t,e);var n=t.add(e);return n.cmp(this.m)>=0&&n.isub(this.m),n._forceRed(this)},_.prototype.iadd=function(t,e){this._verify2(t,e);var n=t.iadd(e);return n.cmp(this.m)>=0&&n.isub(this.m),n},_.prototype.sub=function(t,e){this._verify2(t,e);var n=t.sub(e);return n.cmpn(0)<0&&n.iadd(this.m),n._forceRed(this)},_.prototype.isub=function(t,e){this._verify2(t,e);var n=t.isub(e);return n.cmpn(0)<0&&n.iadd(this.m),n},_.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},_.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},_.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},_.prototype.isqr=function(t){return this.imul(t,t.clone())},_.prototype.sqr=function(t){return this.mul(t,t)},_.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(i(e%2==1),3===e){var n=this.m.add(new o(1)).iushrn(2);return this.pow(t,n)}for(var r=this.m.subn(1),s=0;!r.isZero()&&0===r.andln(1);)s++,r.iushrn(1);i(!r.isZero());var a=new o(1).toRed(this),l=a.redNeg(),c=this.m.subn(1).iushrn(1),u=this.m.bitLength();for(u=new o(2*u*u).toRed(this);0!==this.pow(u,c).cmp(l);)u.redIAdd(l);for(var h=this.pow(u,r),d=this.pow(t,r.addn(1).iushrn(1)),f=this.pow(t,r),p=s;0!==f.cmp(a);){for(var g=f,m=0;0!==g.cmp(a);m++)g=g.redSqr();i(m=0;i--){for(var c=e.words[i],u=l-1;u>=0;u--){var h=c>>u&1;r!==n[0]&&(r=this.sqr(r)),0!==h||0!==s?(s<<=1,s|=h,(4===++a||0===i&&0===u)&&(r=this.mul(r,n[s]),a=0,s=0)):a=0}l=26}return r},_.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},_.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new M(t)},r(M,_),M.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},M.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},M.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var n=t.imul(e),i=n.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),r=n.isub(i).iushrn(this.shift),o=r;return r.cmp(this.m)>=0?o=r.isub(this.m):r.cmpn(0)<0&&(o=r.iadd(this.m)),o._forceRed(this)},M.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var n=t.mul(e),i=n.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),r=n.isub(i).iushrn(this.shift),s=r;return r.cmp(this.m)>=0?s=r.isub(this.m):r.cmpn(0)<0&&(s=r.iadd(this.m)),s._forceRed(this)},M.prototype.invm=function(t){return this.imod(t._invmp(this.m).mul(this.r2))._forceRed(this)}}(t,this)}).call(this,n("YuTi")(t))},"6dZI":function(t,e,n){t.exports=n.p+"12738aa8461e4775d7f380a5d1953893.js"},"6j/w":function(t,e,n){t.exports=n.p+"a898336d92cb4d2c2b18e46d9d10c636.js"},"6lN/":function(t,e,n){"use strict";var i=n("gK+I"),r=n("86MQ"),o=r.getNAF,s=r.getJSF,a=r.assert;function l(t,e){this.type=t,this.p=new i(e.p,16),this.red=e.prime?i.red(e.prime):i.mont(this.p),this.zero=new i(0).toRed(this.red),this.one=new i(1).toRed(this.red),this.two=new i(2).toRed(this.red),this.n=e.n&&new i(e.n,16),this.g=e.g&&this.pointFromJSON(e.g,e.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n?this.n.bitLength():0;var n=this.n&&this.p.div(this.n);!n||n.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}function c(t,e){this.curve=t,this.type=e,this.precomputed=null}t.exports=l,l.prototype.point=function(){throw new Error("Not implemented")},l.prototype.validate=function(){throw new Error("Not implemented")},l.prototype._fixedNafMul=function(t,e){a(t.precomputed);var n=t._getDoubles(),i=o(e,1,this._bitLength),r=(1<=s;u--)l=(l<<1)+i[u];c.push(l)}for(var h=this.jpoint(null,null,null),d=this.jpoint(null,null,null),f=r;f>0;f--){for(s=0;s=0;c--){for(var u=0;c>=0&&0===s[c];c--)u++;if(c>=0&&u++,l=l.dblp(u),c<0)break;var h=s[c];a(0!==h),l="affine"===t.type?h>0?l.mixedAdd(r[h-1>>1]):l.mixedAdd(r[-h-1>>1].neg()):h>0?l.add(r[h-1>>1]):l.add(r[-h-1>>1].neg())}return"affine"===t.type?l.toP():l},l.prototype._wnafMulAdd=function(t,e,n,i,r){var a,l,c,u=this._wnafT1,h=this._wnafT2,d=this._wnafT3,f=0;for(a=0;a=1;a-=2){var g=a-1,m=a;if(1===u[g]&&1===u[m]){var v=[e[g],null,null,e[m]];0===e[g].y.cmp(e[m].y)?(v[1]=e[g].add(e[m]),v[2]=e[g].toJ().mixedAdd(e[m].neg())):0===e[g].y.cmp(e[m].y.redNeg())?(v[1]=e[g].toJ().mixedAdd(e[m]),v[2]=e[g].add(e[m].neg())):(v[1]=e[g].toJ().mixedAdd(e[m]),v[2]=e[g].toJ().mixedAdd(e[m].neg()));var b=[-3,-1,-5,-7,0,7,5,1,3],y=s(n[g],n[m]);for(f=Math.max(y[0].length,f),d[g]=new Array(f),d[m]=new Array(f),l=0;l=0;a--){for(var S=0;a>=0;){var A=!0;for(l=0;l=0&&S++,_=_.dblp(S),a<0)break;for(l=0;l0?c=h[l][k-1>>1]:k<0&&(c=h[l][-k-1>>1].neg()),_="affine"===c.type?_.mixedAdd(c):_.add(c))}}for(a=0;a=Math.ceil((t.bitLength()+1)/e.step)},c.prototype._getDoubles=function(t,e){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var n=[this],i=this,r=0;r0?-1:n<0?1:e?-1:1}}function i(t,e){return Math.min(null!=e[1]?e[1]:1/0,Math.max(null!=e[0]?e[0]:-1/0,t))}t.exports=function(t,e,r,o,s,a){t=t||0;var l=r[1]-r[0];if(null!=s&&(s=i(s,[0,l])),null!=a&&(a=Math.max(a,null!=s?s:0)),"all"===o){var c=Math.abs(e[1]-e[0]);c=i(c,[0,l]),s=a=i(c,[s,a]),o=0}e[0]=i(e[0],r),e[1]=i(e[1],r);var u=n(e,o);e[o]+=t;var h=s||0,d=r.slice();u.sign<0?d[0]+=h:d[1]-=h,e[o]=i(e[o],d);var f=n(e,o);return null!=s&&(f.sign!==u.sign||f.spana&&(e[1-o]=e[o]+f.sign*a),e}},"75ce":function(t,e,n){var i=n("ProS");n("IXuL"),n("8X+K");var r=n("f5Yq"),o=n("h8O9"),s=n("/d5a");n("Ae16"),i.registerVisual(r("line","circle","line")),i.registerLayout(o("line")),i.registerProcessor(i.PRIORITY.PROCESSOR.STATISTIC,s("line"))},7615:function(t,e,n){t.exports=n.p+"49429bb63ec76564dabe9c3abd7e5df7.js"},"77YJ":function(t,e,n){t.exports=n.p+"3a820eb0c0fb52f9b75e34214b5f8c9c.js"},"7AJT":function(t,e,n){var i=n("bYtY"),r=n("hM6l"),o=function(t,e,n,i,o){r.call(this,t,e,n),this.type=i||"value",this.position=o||"bottom"};o.prototype={constructor:o,index:0,getAxesOnZeroOf:null,model:null,isHorizontal:function(){var t=this.position;return"top"===t||"bottom"===t},getGlobalExtent:function(t){var e=this.getExtent();return e[0]=this.toGlobalCoord(e[0]),e[1]=this.toGlobalCoord(e[1]),t&&e[0]>e[1]&&e.reverse(),e},getOtherAxis:function(){this.grid.getOtherAxis()},pointToData:function(t,e){return this.coordToData(this.toLocalCoord(t["x"===this.dim?0:1]),e)},toLocalCoord:null,toGlobalCoord:null},i.inherits(o,r);var s=o;t.exports=s},"7DRL":function(t,e,n){n("Tghj").__DEV__;var i=n("bYtY"),r=i.createHashMap,o=i.isString,s=i.isArray,a=i.each,l=(i.assert,n("MEGo").parseXML),c=r(),u={registerMap:function(t,e,n){var i;return s(e)?i=e:e.svg?i=[{type:"svg",source:e.svg,specialAreas:e.specialAreas}]:(e.geoJson&&!e.features&&(n=e.specialAreas,e=e.geoJson),i=[{type:"geoJSON",source:e,specialAreas:n}]),a(i,(function(t){var e=t.type;"geoJson"===e&&(e=t.type="geoJSON"),(0,h[e])(t)})),c.set(t,i)},retrieveMap:function(t){return c.get(t)}},h={geoJSON:function(t){var e=t.source;t.geoJSON=o(e)?"undefined"!=typeof JSON&&JSON.parse?JSON.parse(e):new Function("return ("+e+");")():e},svg:function(t){t.svgXML=l(t.source)}};t.exports=u},"7G+c":function(t,e,n){var i=n("bYtY"),r=i.createHashMap,o=i.isTypedArray,s=n("Yl7c").enableClassCheck,a=n("k9D9"),l=a.SOURCE_FORMAT_ORIGINAL,c=a.SERIES_LAYOUT_BY_COLUMN,u=a.SOURCE_FORMAT_UNKNOWN,h=a.SOURCE_FORMAT_TYPED_ARRAY,d=a.SOURCE_FORMAT_KEYED_COLUMNS;function f(t){this.fromDataset=t.fromDataset,this.data=t.data||(t.sourceFormat===d?{}:[]),this.sourceFormat=t.sourceFormat||u,this.seriesLayoutBy=t.seriesLayoutBy||c,this.dimensionsDefine=t.dimensionsDefine,this.encodeDefine=t.encodeDefine&&r(t.encodeDefine),this.startIndex=t.startIndex||0,this.dimensionsDetectCount=t.dimensionsDetectCount}f.seriesDataToSource=function(t){return new f({data:t,sourceFormat:o(t)?h:l,fromDataset:!1})},s(f);var p=f;t.exports=p},"7HgW":function(t,e,n){t.exports=n.p+"30161c62d9dd1e5ac1ae07b10315d2e0.js"},"7M/r":function(t,e,n){t.exports=n.p+"3dfe9a3e745ca1e3755291ac5c5a4a24.js"},"7SHv":function(t,e,n){var i=n("LPTA").devicePixelRatio,r=n("bYtY"),o=n("SUKs"),s=n("mFDi"),a=n("BPZU"),l=n("Xmg4"),c=n("mLcG"),u=n("Dagg"),h=n("ItGF");function d(t){return parseInt(t,10)}var f=new s(0,0,0,0),p=new s(0,0,0,0);var g=function(t,e,n){this.type="canvas";var o=!t.nodeName||"CANVAS"===t.nodeName.toUpperCase();this._opts=n=r.extend({},n||{}),this.dpr=n.devicePixelRatio||i,this._singleCanvas=o,this.root=t;var s=t.style;s&&(s["-webkit-tap-highlight-color"]="transparent",s["-webkit-user-select"]=s["user-select"]=s["-webkit-touch-callout"]="none",t.innerHTML=""),this.storage=e;var a=this._zlevelList=[],c=this._layers={};if(this._layerConfig={},this._needsManuallyCompositing=!1,o){var u=t.width,h=t.height;null!=n.width&&(u=n.width),null!=n.height&&(h=n.height),this.dpr=n.devicePixelRatio||1,t.width=u*this.dpr,t.height=h*this.dpr,this._width=u,this._height=h;var d=new l(t,this,this.dpr);d.__builtin__=!0,d.initContext(),c[314159]=d,d.zlevel=314159,a.push(314159),this._domRoot=t}else{this._width=this._getSize(0),this._height=this._getSize(1);var f=this._domRoot=function(t,e){var n=document.createElement("div");return n.style.cssText=["position:relative","width:"+t+"px","height:"+e+"px","padding:0","margin:0","border-width:0"].join(";")+";",n}(this._width,this._height);t.appendChild(f)}this._hoverlayer=null,this._hoverElements=[]};g.prototype={constructor:g,getType:function(){return"canvas"},isSingleCanvas:function(){return this._singleCanvas},getViewportRoot:function(){return this._domRoot},getViewportRootOffset:function(){var t=this.getViewportRoot();if(t)return{offsetLeft:t.offsetLeft||0,offsetTop:t.offsetTop||0}},refresh:function(t){var e=this.storage.getDisplayList(!0),n=this._zlevelList;this._redrawId=Math.random(),this._paintList(e,t,this._redrawId);for(var i=0;i=0&&n.splice(i,1),t.__hoverMir=null},clearHover:function(t){for(var e=this._hoverElements,n=0;n15)break}l.__drawIndex=v,l.__drawIndex0&&t>i[0]){for(a=0;at);a++);s=n[i[a]]}if(i.splice(a+1,0,t),n[t]=e,!e.virtual)if(s){var c=s.dom;c.nextSibling?l.insertBefore(e.dom,c.nextSibling):l.appendChild(e.dom)}else l.firstChild?l.insertBefore(e.dom,l.firstChild):l.appendChild(e.dom)}else o("Layer of zlevel "+t+" is not valid")},eachLayer:function(t,e){var n,i,r=this._zlevelList;for(i=0;i0?.01:0),this._needsManuallyCompositing),l.__builtin__||o("ZLevel "+c+" has been used by unkown layer "+l.id),l!==r&&(l.__used=!0,l.__startIndex!==n&&(l.__dirty=!0),l.__startIndex=n,l.incremental?l.__drawIndex=-1:l.__drawIndex=n,e(n),r=l),a.__dirty&&(l.__dirty=!0,l.incremental&&l.__drawIndex<0&&(l.__drawIndex=n))}e(n),this.eachBuiltinLayer((function(t,e){!t.__used&&t.getElementCount()>0&&(t.__dirty=!0,t.__startIndex=t.__endIndex=t.__drawIndex=0),t.__dirty&&t.__drawIndex<0&&(t.__drawIndex=t.__startIndex)}))},clear:function(){return this.eachBuiltinLayer(this._clearLayer),this},_clearLayer:function(t){t.clear()},setBackgroundColor:function(t){this._backgroundColor=t},configLayer:function(t,e){if(e){var n=this._layerConfig;n[t]?r.merge(n[t],e,!0):n[t]=e;for(var i=0;i"'])/g,l={"&":"&","<":"<",">":">",'"':""","'":"'"};function c(t){return null==t?"":(t+"").replace(a,(function(t,e){return l[e]}))}var u=["a","b","c","d","e","f","g"],h=function(t,e){return"{"+t+(null==e?"":e)+"}"};function d(t,e){return"0000".substr(0,e-(t+="").length)+t}var f=r.truncateText;e.addCommas=function(t){return isNaN(t)?"-":(t=(t+"").split("."))[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g,"$1,")+(t.length>1?"."+t[1]:"")},e.toCamelCase=function(t,e){return t=(t||"").toLowerCase().replace(/-(.)/g,(function(t,e){return e.toUpperCase()})),e&&t&&(t=t.charAt(0).toUpperCase()+t.slice(1)),t},e.normalizeCssArray=s,e.encodeHTML=c,e.formatTpl=function(t,e,n){i.isArray(e)||(e=[e]);var r=e.length;if(!r)return"";for(var o=e[0].$vars||[],s=0;s':'':{renderMode:o,content:"{marker"+s+"|} ",style:{color:n}}:""},e.formatTime=function(t,e,n){"week"!==t&&"month"!==t&&"quarter"!==t&&"half-year"!==t&&"year"!==t||(t="MM-dd\nyyyy");var i=o.parseDate(e),r=n?"UTC":"",s=i["get"+r+"FullYear"](),a=i["get"+r+"Month"]()+1,l=i["get"+r+"Date"](),c=i["get"+r+"Hours"](),u=i["get"+r+"Minutes"](),h=i["get"+r+"Seconds"](),f=i["get"+r+"Milliseconds"]();return t=t.replace("MM",d(a,2)).replace("M",a).replace("yyyy",s).replace("yy",s%100).replace("dd",d(l,2)).replace("d",l).replace("hh",d(c,2)).replace("h",c).replace("mm",d(u,2)).replace("m",u).replace("ss",d(h,2)).replace("s",h).replace("SSS",d(f,3))},e.capitalFirst=function(t){return t?t.charAt(0).toUpperCase()+t.substr(1):t},e.truncateText=f,e.getTextBoundingRect=function(t){return r.getBoundingRect(t.text,t.font,t.textAlign,t.textVerticalAlign,t.textPadding,t.textLineHeight,t.rich,t.truncate)},e.getTextRect=function(t,e,n,i,o,s,a,l){return r.getBoundingRect(t,e,n,i,o,l,s,a)},e.windowOpen=function(t,e){if("_blank"===e||"blank"===e){var n=window.open();n.opener=null,n.location=t}else window.open(t,e)}},"7ckf":function(t,e,n){"use strict";var i=n("w8CP"),r=n("2j6C");function o(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}e.BlockHash=o,o.prototype.update=function(t,e){if(t=i.toArray(t,e),this.pending?this.pending=this.pending.concat(t):this.pending=t,this.pendingTotal+=t.length,this.pending.length>=this._delta8){var n=(t=this.pending).length%this._delta8;this.pending=t.slice(t.length-n,t.length),0===this.pending.length&&(this.pending=null),t=i.join32(t,0,t.length-n,this.endian);for(var r=0;r>>24&255,i[r++]=t>>>16&255,i[r++]=t>>>8&255,i[r++]=255&t}else for(i[r++]=255&t,i[r++]=t>>>8&255,i[r++]=t>>>16&255,i[r++]=t>>>24&255,i[r++]=0,i[r++]=0,i[r++]=0,i[r++]=0,o=8;o{e.writable||u()};var c=e._writableState&&e._writableState.finished;const u=()=>{a=!1,c=!0,s||o.call(e)};var h=e._readableState&&e._readableState.endEmitted;const d=()=>{s=!1,h=!0,a||o.call(e)},f=t=>{o.call(e,t)},p=()=>{let t;return s&&!h?(e._readableState&&e._readableState.ended||(t=new i),o.call(e,t)):a&&!c?(e._writableState&&e._writableState.ended||(t=new i),o.call(e,t)):void 0},g=()=>{e.req.on("finish",u)};return!function(t){return t.setHeader&&"function"==typeof t.abort}(e)?a&&!e._writableState&&(e.on("end",l),e.on("close",l)):(e.on("complete",u),e.on("abort",p),e.req?g():e.on("request",g)),e.on("end",d),e.on("finish",u),!1!==n.error&&e.on("error",f),e.on("close",p),function(){e.removeListener("complete",u),e.removeListener("abort",p),e.removeListener("request",g),e.req&&e.req.removeListener("finish",u),e.removeListener("end",l),e.removeListener("close",l),e.removeListener("finish",u),e.removeListener("end",d),e.removeListener("error",f),e.removeListener("close",p)}}},"86MQ":function(t,e,n){"use strict";var i=e,r=n("gK+I"),o=n("2j6C"),s=n("dlgc");i.assert=o,i.toArray=s.toArray,i.zero2=s.zero2,i.toHex=s.toHex,i.encode=s.encode,i.getNAF=function(t,e,n){var i=new Array(Math.max(t.bitLength(),n)+1);i.fill(0);for(var r=1<(r>>1)-1?(r>>1)-l:l,o.isubn(a)):a=0,i[s]=a,o.iushrn(1)}return i},i.getJSF=function(t,e){var n=[[],[]];t=t.clone(),e=e.clone();for(var i,r=0,o=0;t.cmpn(-r)>0||e.cmpn(-o)>0;){var s,a,l=t.andln(3)+r&3,c=e.andln(3)+o&3;3===l&&(l=-1),3===c&&(c=-1),s=0==(1&l)?0:3!==(i=t.andln(7)+r&7)&&5!==i||2!==c?l:-l,n[0].push(s),a=0==(1&c)?0:3!==(i=e.andln(7)+o&7)&&5!==i||2!==l?c:-c,n[1].push(a),2*r===s+1&&(r=1-r),2*o===a+1&&(o=1-o),t.iushrn(1),e.iushrn(1)}return n},i.cachedProperty=function(t,e,n){var i="_"+e;t.prototype[e]=function(){return void 0!==this[i]?this[i]:this[i]=n.call(this)}},i.parseBytes=function(t){return"string"==typeof t?i.toArray(t,"hex"):t},i.intFromLE=function(t){return new r(t,"hex","le")}},"8SMY":function(t,e,n){var i=n("n4Lv"),r=i.prepareDataCoordInfo,o=i.getStackedOnPoint;t.exports=function(t,e,n,i,s,a,l,c){for(var u=function(t,e){var n=[];return e.diff(t).add((function(t){n.push({cmd:"+",idx:t})})).update((function(t,e){n.push({cmd:"=",idx:e,idx1:t})})).remove((function(t){n.push({cmd:"-",idx:t})})).execute(),n}(t,e),h=[],d=[],f=[],p=[],g=[],m=[],v=[],b=r(s,e,l),y=r(a,t,c),w=0;wi)return!1;return!0}(a,e))){var l=e.mapDimension(a.dim),c={};return i.each(a.getViewLabels(),(function(t){c[t.tickValue]=1})),function(t){return!c.hasOwnProperty(e.get(l,t))}}}}function A(t,e,n){if("cartesian2d"===t.type){var i=t.getBaseAxis().isHorizontal(),r=b(t,e,n);if(!n.get("clip",!0)){var o=r.shape,s=Math.max(o.width,o.height);i?(o.y-=s,o.height+=2*s):(o.x-=s,o.width+=2*s)}return r}return y(t,e,n)}var k=f.extend({type:"line",init:function(){var t=new l.Group,e=new o;this.group.add(e.group),this._symbolDraw=e,this._lineGroup=t},render:function(t,e,n){var r=t.coordinateSystem,o=this.group,s=t.getData(),a=t.getModel("lineStyle"),c=t.getModel("areaStyle"),u=s.mapArray(s.getItemLayout),h="polar"===r.type,d=this._coordSys,f=this._symbolDraw,p=this._polyline,v=this._polygon,b=this._lineGroup,y=t.get("animation"),x=!c.isEmpty(),k=c.get("origin"),C=function(t,e,n){if(!n.valueDim)return[];for(var i=[],r=0,o=e.count();r=0;s--){var a=n[s].dimension,c=t.dimensions[a],u=t.getDimensionInfo(c);if("x"===(r=u&&u.coordDim)||"y"===r){o=n[s];break}}if(o){var h=e.getAxis(r),d=i.map(o.stops,(function(t){return{coord:h.toGlobalCoord(h.dataToCoord(t.value)),color:t.color}})),f=d.length,p=o.outerColors.slice();f&&d[0].coord>d[f-1].coord&&(d.reverse(),p.reverse());var g=d[0].coord-10,m=d[f-1].coord+10,v=m-g;if(v<.001)return"transparent";i.each(d,(function(t){t.offset=(t.coord-g)/v})),d.push({offset:f?d[f-1].offset:.5,color:p[1]||"transparent"}),d.unshift({offset:f?d[0].offset:.5,color:p[0]||"transparent"});var b=new l.LinearGradient(0,0,0,0,d,!0);return b[r]=g,b[r+"2"]=m,b}}}(s,r)||s.getVisual("color");p.useStyle(i.defaults(a.getLineStyle(),{fill:"none",stroke:O,lineJoin:"bevel"}));var $=t.get("smooth");if($=_(t.get("smooth")),p.setShape({smooth:$,smoothMonotone:t.get("smoothMonotone"),connectNulls:t.get("connectNulls")}),v){var P=s.getCalculationInfo("stackedOnSeries"),D=0;v.useStyle(i.defaults(c.getAreaStyle(),{fill:O,opacity:.7,lineJoin:"bevel"})),P&&(D=_(P.get("smooth"))),v.setShape({smooth:$,stackedOnSmooth:D,smoothMonotone:t.get("smoothMonotone"),connectNulls:t.get("connectNulls")})}this._data=s,this._coordSys=r,this._stackedOnPoints=C,this._points=u,this._step=I,this._valueOrigin=k},dispose:function(){},highlight:function(t,e,n,i){var r=t.getData(),o=c.queryDataIndex(r,i);if(!(o instanceof Array)&&null!=o&&o>=0){var a=r.getItemGraphicEl(o);if(!a){var l=r.getItemLayout(o);if(!l)return;if(this._clipShapeForSymbol&&!this._clipShapeForSymbol.contain(l[0],l[1]))return;(a=new s(r,o)).position=l,a.setZ(t.get("zlevel"),t.get("z")),a.ignore=isNaN(l[0])||isNaN(l[1]),a.__temp=!0,r.setItemGraphicEl(o,a),a.stopSymbolAnimation(!0),this.group.add(a)}a.highlight()}else f.prototype.highlight.call(this,t,e,n,i)},downplay:function(t,e,n,i){var r=t.getData(),o=c.queryDataIndex(r,i);if(null!=o&&o>=0){var s=r.getItemGraphicEl(o);s&&(s.__temp?(r.setItemGraphicEl(o,null),this.group.remove(s)):s.downplay())}else f.prototype.downplay.call(this,t,e,n,i)},_newPolyline:function(t){var e=this._polyline;return e&&this._lineGroup.remove(e),e=new h({shape:{points:t},silent:!0,z2:10}),this._lineGroup.add(e),this._polyline=e,e},_newPolygon:function(t,e){var n=this._polygon;return n&&this._lineGroup.remove(n),n=new d({shape:{points:t,stackedOnPoints:e},silent:!0}),this._lineGroup.add(n),this._polygon=n,n},_updateAnimation:function(t,e,n,i,r,o){var s=this._polyline,c=this._polygon,u=t.hostModel,h=a(this._data,t,this._stackedOnPoints,e,this._coordSys,n,this._valueOrigin,o),d=h.current,f=h.stackedOnCurrent,p=h.next,g=h.stackedOnNext;if(r&&(d=M(h.current,n,r),f=M(h.stackedOnCurrent,n,r),p=M(h.next,n,r),g=M(h.stackedOnNext,n,r)),x(d,p)>3e3||c&&x(f,g)>3e3)return s.setShape({points:p}),void(c&&c.setShape({points:p,stackedOnPoints:g}));s.shape.__points=h.current,s.shape.points=d,l.updateProps(s,{shape:{points:p}},u),c&&(c.setShape({points:d,stackedOnPoints:f}),l.updateProps(c,{shape:{points:p,stackedOnPoints:g}},u));for(var m=[],v=h.status,b=0;b=55296&&e<=56319&&r=55296&&t<=57343)throw Error("Lone surrogate U+"+t.toString(16).toUpperCase()+" is not a scalar value")}function a(t,e){return r(t>>e&63|128)}function l(t){if(0==(4294967168&t))return r(t);var e="";return 0==(4294965248&t)?e=r(t>>6&31|192):0==(4294901760&t)?(s(t),e=r(t>>12&15|224),e+=a(t,6)):0==(4292870144&t)&&(e=r(t>>18&7|240),e+=a(t,12),e+=a(t,6)),e+=r(63&t|128)}function c(){if(i>=n)throw Error("Invalid byte index");var t=255&e[i];if(i++,128==(192&t))return 63&t;throw Error("Invalid continuation byte")}function u(){var t,r;if(i>n)throw Error("Invalid byte index");if(i==n)return!1;if(t=255&e[i],i++,0==(128&t))return t;if(192==(224&t)){if((r=(31&t)<<6|c())>=128)return r;throw Error("Invalid continuation byte")}if(224==(240&t)){if((r=(15&t)<<12|c()<<6|c())>=2048)return s(r),r;throw Error("Invalid continuation byte")}if(240==(248&t)&&(r=(7&t)<<18|c()<<12|c()<<6|c())>=65536&&r<=1114111)return r;throw Error("Invalid UTF-8 detected")}t.version="3.0.0",t.encode=function(t){for(var e=o(t),n=e.length,i=-1,r="";++i65535&&(o+=r((e-=65536)>>>10&1023|55296),e=56320|1023&e),o+=r(e);return o}(a)}}(e)},"8hn6":function(t,e){var n=["#dd6b66","#759aa0","#e69d87","#8dc1a9","#ea7e53","#eedd78","#73a373","#73b9bc","#7289ab","#91ca8c","#f49f42"],i={color:n,backgroundColor:"#333",tooltip:{axisPointer:{lineStyle:{color:"#eee"},crossStyle:{color:"#eee"},label:{color:"#000"}}},legend:{textStyle:{color:"#eee"}},textStyle:{color:"#eee"},title:{textStyle:{color:"#eee"}},toolbox:{iconStyle:{normal:{borderColor:"#eee"}}},dataZoom:{textStyle:{color:"#eee"}},visualMap:{textStyle:{color:"#eee"}},timeline:{lineStyle:{color:"#eee"},itemStyle:{normal:{color:n[1]}},label:{normal:{textStyle:{color:"#eee"}}},controlStyle:{normal:{color:"#eee",borderColor:"#eee"}}},timeAxis:{axisLine:{lineStyle:{color:"#eee"}},axisTick:{lineStyle:{color:"#eee"}},axisLabel:{textStyle:{color:"#eee"}},splitLine:{lineStyle:{type:"dashed",color:"#aaa"}},splitArea:{areaStyle:{color:"#eee"}}},logAxis:{axisLine:{lineStyle:{color:"#eee"}},axisTick:{lineStyle:{color:"#eee"}},axisLabel:{textStyle:{color:"#eee"}},splitLine:{lineStyle:{type:"dashed",color:"#aaa"}},splitArea:{areaStyle:{color:"#eee"}}},valueAxis:{axisLine:{lineStyle:{color:"#eee"}},axisTick:{lineStyle:{color:"#eee"}},axisLabel:{textStyle:{color:"#eee"}},splitLine:{lineStyle:{type:"dashed",color:"#aaa"}},splitArea:{areaStyle:{color:"#eee"}}},categoryAxis:{axisLine:{lineStyle:{color:"#eee"}},axisTick:{lineStyle:{color:"#eee"}},axisLabel:{textStyle:{color:"#eee"}},splitLine:{lineStyle:{type:"dashed",color:"#aaa"}},splitArea:{areaStyle:{color:"#eee"}}},line:{symbol:"circle"},graph:{color:n},gauge:{title:{textStyle:{color:"#eee"}}},candlestick:{itemStyle:{normal:{color:"#FD1050",color0:"#0CF49B",borderColor:"#FD1050",borderColor0:"#0CF49B"}}}};i.categoryAxis.splitLine.show=!1;var r=i;t.exports=r},"8nMs":function(t,e,n){var i=n("bYtY"),r=n("IwbS"),o=n("+rIm"),s=n("Znkb"),a=n("AVZG"),l=n("WN+l"),c=l.rectCoordAxisBuildSplitArea,u=l.rectCoordAxisHandleRemove,h=["axisLine","axisTickLabel","axisName"],d=["splitArea","splitLine","minorSplitLine"],f=s.extend({type:"cartesianAxis",axisPointerClass:"CartesianAxisPointer",render:function(t,e,n,s){this.group.removeAll();var l=this._axisGroup;if(this._axisGroup=new r.Group,this.group.add(this._axisGroup),t.get("show")){var c=t.getCoordSysModel(),u=a.layout(c,t),p=new o(t,u);i.each(h,p.add,p),this._axisGroup.add(p.getGroup()),i.each(d,(function(e){t.get(e+".show")&&this["_"+e](t,c)}),this),r.groupTransition(l,this._axisGroup,t),f.superCall(this,"render",t,e,n,s)}},remove:function(){u(this)},_splitLine:function(t,e){var n=t.axis;if(!n.scale.isBlank()){var o=t.getModel("splitLine"),s=o.getModel("lineStyle"),a=s.get("color");a=i.isArray(a)?a:[a];for(var l=e.coordinateSystem.getRect(),c=n.isHorizontal(),u=0,h=n.getTicksCoords({tickModel:o}),d=[],f=[],p=s.getLineStyle(),g=0;g=1)&&(t=1),t}a===u&&c===h||(e="reset"),(this._dirty||"reset"===e)&&(this._dirty=!1,s=function(t,e){var n,i;t._dueIndex=t._outputDueEnd=t._dueEnd=0,t._settedOutputEnd=null,!e&&t._reset&&((n=t._reset(t.context))&&n.progress&&(i=n.forceFirstProgress,n=n.progress),r(n)&&!n.length&&(n=null));t._progress=n,t._modBy=t._modDataCount=null;var o=t._downstream;return o&&o.dirty(),i}(this,i)),this._modBy=u,this._modDataCount=h;var f=t&&t.step;if(this._dueEnd=n?n._outputDueEnd:this._count?this._count(this.context):1/0,this._progress){var p=this._dueIndex,g=Math.min(null!=f?this._dueIndex+f:1/0,this._dueEnd);if(!i&&(s||p1&&i>0?a:s}};return o;function s(){return e=t?null:o>>32-e}function c(t,e,n,i,r,o,s){return l(t+(e&n|~e&i)+r+o|0,s)+e|0}function u(t,e,n,i,r,o,s){return l(t+(e&i|n&~i)+r+o|0,s)+e|0}function h(t,e,n,i,r,o,s){return l(t+(e^n^i)+r+o|0,s)+e|0}function d(t,e,n,i,r,o,s){return l(t+(n^(e|~i))+r+o|0,s)+e|0}i(a,r),a.prototype._update=function(){for(var t=s,e=0;e<16;++e)t[e]=this._block.readInt32LE(4*e);var n=this._a,i=this._b,r=this._c,o=this._d;n=c(n,i,r,o,t[0],3614090360,7),o=c(o,n,i,r,t[1],3905402710,12),r=c(r,o,n,i,t[2],606105819,17),i=c(i,r,o,n,t[3],3250441966,22),n=c(n,i,r,o,t[4],4118548399,7),o=c(o,n,i,r,t[5],1200080426,12),r=c(r,o,n,i,t[6],2821735955,17),i=c(i,r,o,n,t[7],4249261313,22),n=c(n,i,r,o,t[8],1770035416,7),o=c(o,n,i,r,t[9],2336552879,12),r=c(r,o,n,i,t[10],4294925233,17),i=c(i,r,o,n,t[11],2304563134,22),n=c(n,i,r,o,t[12],1804603682,7),o=c(o,n,i,r,t[13],4254626195,12),r=c(r,o,n,i,t[14],2792965006,17),n=u(n,i=c(i,r,o,n,t[15],1236535329,22),r,o,t[1],4129170786,5),o=u(o,n,i,r,t[6],3225465664,9),r=u(r,o,n,i,t[11],643717713,14),i=u(i,r,o,n,t[0],3921069994,20),n=u(n,i,r,o,t[5],3593408605,5),o=u(o,n,i,r,t[10],38016083,9),r=u(r,o,n,i,t[15],3634488961,14),i=u(i,r,o,n,t[4],3889429448,20),n=u(n,i,r,o,t[9],568446438,5),o=u(o,n,i,r,t[14],3275163606,9),r=u(r,o,n,i,t[3],4107603335,14),i=u(i,r,o,n,t[8],1163531501,20),n=u(n,i,r,o,t[13],2850285829,5),o=u(o,n,i,r,t[2],4243563512,9),r=u(r,o,n,i,t[7],1735328473,14),n=h(n,i=u(i,r,o,n,t[12],2368359562,20),r,o,t[5],4294588738,4),o=h(o,n,i,r,t[8],2272392833,11),r=h(r,o,n,i,t[11],1839030562,16),i=h(i,r,o,n,t[14],4259657740,23),n=h(n,i,r,o,t[1],2763975236,4),o=h(o,n,i,r,t[4],1272893353,11),r=h(r,o,n,i,t[7],4139469664,16),i=h(i,r,o,n,t[10],3200236656,23),n=h(n,i,r,o,t[13],681279174,4),o=h(o,n,i,r,t[0],3936430074,11),r=h(r,o,n,i,t[3],3572445317,16),i=h(i,r,o,n,t[6],76029189,23),n=h(n,i,r,o,t[9],3654602809,4),o=h(o,n,i,r,t[12],3873151461,11),r=h(r,o,n,i,t[15],530742520,16),n=d(n,i=h(i,r,o,n,t[2],3299628645,23),r,o,t[0],4096336452,6),o=d(o,n,i,r,t[7],1126891415,10),r=d(r,o,n,i,t[14],2878612391,15),i=d(i,r,o,n,t[5],4237533241,21),n=d(n,i,r,o,t[12],1700485571,6),o=d(o,n,i,r,t[3],2399980690,10),r=d(r,o,n,i,t[10],4293915773,15),i=d(i,r,o,n,t[1],2240044497,21),n=d(n,i,r,o,t[8],1873313359,6),o=d(o,n,i,r,t[15],4264355552,10),r=d(r,o,n,i,t[6],2734768916,15),i=d(i,r,o,n,t[13],1309151649,21),n=d(n,i,r,o,t[4],4149444226,6),o=d(o,n,i,r,t[11],3174756917,10),r=d(r,o,n,i,t[2],718787259,15),i=d(i,r,o,n,t[9],3951481745,21),this._a=this._a+n|0,this._b=this._b+i|0,this._c=this._c+r|0,this._d=this._d+o|0},a.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var t=o.allocUnsafe(16);return t.writeInt32LE(this._a,0),t.writeInt32LE(this._b,4),t.writeInt32LE(this._c,8),t.writeInt32LE(this._d,12),t},t.exports=a},"9gtR":function(t,e,n){var i=n("tjlA"),r=i.Buffer;function o(t,e){for(var n in t)e[n]=t[n]}function s(t,e,n){return r(t,e,n)}r.from&&r.alloc&&r.allocUnsafe&&r.allocUnsafeSlow?t.exports=i:(o(i,e),e.Buffer=s),o(r,s),s.from=function(t,e,n){if("number"==typeof t)throw new TypeError("Argument must not be a number");return r(t,e,n)},s.alloc=function(t,e,n){if("number"!=typeof t)throw new TypeError("Argument must be a number");var i=r(t);return void 0!==e?"string"==typeof n?i.fill(e,n):i.fill(e):i.fill(0),i},s.allocUnsafe=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return r(t)},s.allocUnsafeSlow=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return i.SlowBuffer(t)}},"9lTW":function(t,e,n){"use strict";(function(e){var i=n("MgzW"); +/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + */function r(t,e){if(t===e)return 0;for(var n=t.length,i=e.length,r=0,o=Math.min(n,i);r=0;c--)if(u[c]!==h[c])return!1;for(c=u.length-1;c>=0;c--)if(a=u[c],!y(t[a],e[a],n,i))return!1;return!0}(t,e,n,i))}return n?t===e:t==e}function w(t){return"[object Arguments]"==Object.prototype.toString.call(t)}function x(t,e){if(!t||!e)return!1;if("[object RegExp]"==Object.prototype.toString.call(e))return e.test(t);try{if(t instanceof e)return!0}catch(t){}return!Error.isPrototypeOf(e)&&!0===e.call({},t)}function _(t,e,n,i){var r;if("function"!=typeof e)throw new TypeError('"block" argument must be a function');"string"==typeof n&&(i=n,n=null),r=function(t){var e;try{t()}catch(t){e=t}return e}(e),i=(n&&n.name?" ("+n.name+").":".")+(i?" "+i:"."),t&&!r&&v(r,n,"Missing expected exception"+i);var o="string"==typeof i,a=!t&&r&&!n;if((!t&&s.isError(r)&&o&&x(r,n)||a)&&v(r,n,"Got unwanted exception"+i),t&&r&&n&&!x(r,n)||!t&&r)throw r}d.AssertionError=function(t){this.name="AssertionError",this.actual=t.actual,this.expected=t.expected,this.operator=t.operator,t.message?(this.message=t.message,this.generatedMessage=!1):(this.message=function(t){return g(m(t.actual),128)+" "+t.operator+" "+g(m(t.expected),128)}(this),this.generatedMessage=!0);var e=t.stackStartFunction||v;if(Error.captureStackTrace)Error.captureStackTrace(this,e);else{var n=new Error;if(n.stack){var i=n.stack,r=p(e),o=i.indexOf("\n"+r);if(o>=0){var s=i.indexOf("\n",o+1);i=i.substring(s+1)}this.stack=i}}},s.inherits(d.AssertionError,Error),d.fail=v,d.ok=b,d.equal=function(t,e,n){t!=e&&v(t,e,n,"==",d.equal)},d.notEqual=function(t,e,n){t==e&&v(t,e,n,"!=",d.notEqual)},d.deepEqual=function(t,e,n){y(t,e,!1)||v(t,e,n,"deepEqual",d.deepEqual)},d.deepStrictEqual=function(t,e,n){y(t,e,!0)||v(t,e,n,"deepStrictEqual",d.deepStrictEqual)},d.notDeepEqual=function(t,e,n){y(t,e,!1)&&v(t,e,n,"notDeepEqual",d.notDeepEqual)},d.notDeepStrictEqual=function t(e,n,i){y(e,n,!0)&&v(e,n,i,"notDeepStrictEqual",t)},d.strictEqual=function(t,e,n){t!==e&&v(t,e,n,"===",d.strictEqual)},d.notStrictEqual=function(t,e,n){t===e&&v(t,e,n,"!==",d.notStrictEqual)},d.throws=function(t,e,n){_(!0,t,e,n)},d.doesNotThrow=function(t,e,n){_(!1,t,e,n)},d.ifError=function(t){if(t)throw t},d.strict=i((function t(e,n){e||v(e,!0,n,"==",t)}),d,{equal:d.strictEqual,deepEqual:d.deepStrictEqual,notEqual:d.notStrictEqual,notDeepEqual:d.notDeepStrictEqual}),d.strict.strict=d.strict;var M=Object.keys||function(t){var e=[];for(var n in t)a.call(t,n)&&e.push(n);return e}}).call(this,n("yLpj"))},"9mB6":function(t,e,n){t.exports=n.p+"cb133a447f7bbaa64d268360db08ac7a.js"},"9stc":function(t,e,n){t.exports=n.p+"2e4c8b961fd80b700a23d21f3d9bb4c5.js"},"9wZj":function(t,e,n){var i=n("IwbS"),r=n("FBjb"),o=n("bYtY").isObject;function s(t){this.group=new i.Group,this._symbolCtor=t||r}var a=s.prototype;function l(t,e,n,i){return e&&!isNaN(e[0])&&!isNaN(e[1])&&!(i.isIgnore&&i.isIgnore(n))&&!(i.clipShape&&!i.clipShape.contain(e[0],e[1]))&&"none"!==t.getItemVisual(n,"symbol")}function c(t){return null==t||o(t)||(t={isIgnore:t}),t||{}}function u(t){var e=t.hostModel;return{itemStyle:e.getModel("itemStyle").getItemStyle(["color"]),hoverItemStyle:e.getModel("emphasis.itemStyle").getItemStyle(),symbolRotate:e.get("symbolRotate"),symbolOffset:e.get("symbolOffset"),hoverAnimation:e.get("hoverAnimation"),labelModel:e.getModel("label"),hoverLabelModel:e.getModel("emphasis.label"),cursorStyle:e.get("cursor")}}a.updateData=function(t,e){e=c(e);var n=this.group,r=t.hostModel,o=this._data,s=this._symbolCtor,a=u(t);o||n.removeAll(),t.diff(o).add((function(i){var r=t.getItemLayout(i);if(l(t,r,i,e)){var o=new s(t,i,a);o.attr("position",r),t.setItemGraphicEl(i,o),n.add(o)}})).update((function(c,u){var h=o.getItemGraphicEl(u),d=t.getItemLayout(c);l(t,d,c,e)?(h?(h.updateData(t,c,a),i.updateProps(h,{position:d},r)):(h=new s(t,c)).attr("position",d),n.add(h),t.setItemGraphicEl(c,h)):n.remove(h)})).remove((function(t){var e=o.getItemGraphicEl(t);e&&e.fadeOut((function(){n.remove(e)}))})).execute(),this._data=t},a.isPersistent=function(){return!0},a.updateLayout=function(){var t=this._data;t&&t.eachItemGraphicEl((function(e,n){var i=t.getItemLayout(n);e.attr("position",i)}))},a.incrementalPrepareUpdate=function(t){this._seriesScope=u(t),this._data=null,this.group.removeAll()},a.incrementalUpdate=function(t,e,n){function i(t){t.isGroup||(t.incremental=t.useHoverLayer=!0)}n=c(n);for(var r=t.start;r{a=!0}),void 0===i&&(i=n("ZatM")),i(t,{readable:e,writable:r},t=>{if(t)return o(t);a=!0,o()});let l=!1;return e=>{if(!a&&!l)return l=!0,function(t){return t.setHeader&&"function"==typeof t.abort}(t)?t.abort():"function"==typeof t.destroy?t.destroy():void o(e||new s("pipe"))}}function c(t){t()}function u(t,e){return t.pipe(e)}function h(t){return t.length?"function"!=typeof t[t.length-1]?a:t.pop():a}t.exports=function(){for(var t=arguments.length,e=new Array(t),n=0;n0,(function(t){r||(r=t),t&&s.forEach(c),o||(s.forEach(c),i(r))}))}));return e.reduce(u)}},Adi7:function(t,e,n){t.exports=n.p+"60d06d7e01bd491fa7376e70f9859545.js"},Ae16:function(t,e,n){var i=n("ProS"),r=n("bYtY"),o=n("IwbS");n("Wqna"),n("rySg"),i.extendComponentView({type:"grid",render:function(t,e){this.group.removeAll(),t.get("show")&&this.group.add(new o.Rect({shape:t.coordinateSystem.getRect(),style:r.defaults({fill:t.get("backgroundColor")},t.getItemStyle()),silent:!0,z2:-1}))}}),i.registerPreprocessor((function(t){t.xAxis&&t.yAxis&&!t.grid&&(t.grid={})}))},AgDi:function(t,e,n){t.exports=n.p+"3cab7110c6a090f72c540dcc1cfbe3b5.js"},Ahtn:function(t,e,n){t.exports=n.p+"a77f254bc934c3d69dd51902da56f6f1.js"},An3H:function(t,e,n){t.exports=n("+qE3").EventEmitter},AuaA:function(t,e,n){t.exports=n.p+"17c85759d562794da4d2ff11f1b9b3bd.js"},"B/J0":function(t,e,n){"use strict";var i=n("w8CP"),r=n("bu2F");function o(){if(!(this instanceof o))return new o;r.call(this),this.h=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]}i.inherits(o,r),t.exports=o,o.blockSize=512,o.outSize=224,o.hmacStrength=192,o.padLength=64,o.prototype._digest=function(t){return"hex"===t?i.toHex32(this.h.slice(0,7),"big"):i.split32(this.h.slice(0,7),"big")}},"B/Zl":function(t,e,n){t.exports=n.p+"f233af729cc30f9b3af99d3e9a0a2409.js"},B0wF:function(t,e,n){t.exports=n.p+"e174a2c6143efab40c57c4660d6bf9bb.js"},B1VC:function(t,e,n){t.exports=n.p+"e86b459e406840ac8eaf63fcfcf817e5.js"},B9PQ:function(t,e,n){t.exports=n.p+"f4acea05f1f36de4fb003f20f7799de6.js"},B9Yq:function(t,e){t.exports=function(){throw new Error("define cannot be used indirect")}},B9fm:function(t,e,n){var i=n("bYtY"),r=n("Qe9p"),o=n("YH21"),s=n("Ze12"),a=n("ItGF"),l=n("7aKB"),c=i.each,u=l.toCamelCase,h=["","-webkit-","-moz-","-o-"];function d(t){var e,n,o=[],s=t.get("transitionDuration"),d=t.get("backgroundColor"),f=t.getModel("textStyle"),p=t.get("padding");return s&&o.push((n="left "+(e=s)+"s cubic-bezier(0.23, 1, 0.32, 1),top "+e+"s cubic-bezier(0.23, 1, 0.32, 1)",i.map(h,(function(t){return t+"transition:"+n})).join(";"))),d&&(a.canvasSupported?o.push("background-Color:"+d):(o.push("background-Color:#"+r.toHex(d)),o.push("filter:alpha(opacity=70)"))),c(["width","color","radius"],(function(e){var n="border-"+e,i=u(n),r=t.get(i);null!=r&&o.push(n+":"+r+("color"===e?"":"px"))})),o.push(function(t){var e=[],n=t.get("fontSize"),i=t.getTextColor();i&&e.push("color:"+i),e.push("font:"+t.getFont());var r=t.get("lineHeight");null==r&&(r=Math.round(3*n/2)),n&&e.push("line-height:"+r+"px");var o=t.get("textShadowColor"),s=t.get("textShadowBlur")||0,a=t.get("textShadowOffsetX")||0,l=t.get("textShadowOffsetY")||0;return s&&e.push("text-shadow:"+a+"px "+l+"px "+s+"px "+o),c(["decoration","align"],(function(n){var i=t.get(n);i&&e.push("text-"+n+":"+i)})),e.join(";")}(f)),null!=p&&o.push("padding:"+l.normalizeCssArray(p).join("px ")+"px"),o.join(";")+";"}function f(t,e,n,i,r){var o=e&&e.painter;if(n){var a=o&&o.getViewportRoot();a&&s.transformLocalCoord(t,a,document.body,i,r)}else{t[0]=i,t[1]=r;var l=o&&o.getViewportRootOffset();l&&(t[0]+=l.offsetLeft,t[1]+=l.offsetTop)}t[2]=t[0]/e.getWidth(),t[3]=t[1]/e.getHeight()}function p(t,e,n){if(a.wxa)return null;var i=document.createElement("div");i.domBelongToZr=!0,this.el=i;var r=this._zr=e.getZr(),s=this._appendToBody=n&&n.appendToBody;this._styleCoord=[0,0,0,0],f(this._styleCoord,r,s,e.getWidth()/2,e.getHeight()/2),s?document.body.appendChild(i):t.appendChild(i),this._container=t,this._show=!1,this._hideTimeout;var l=this;i.onmouseenter=function(){l._enterable&&(clearTimeout(l._hideTimeout),l._show=!0),l._inContent=!0},i.onmousemove=function(t){if(t=t||window.event,!l._enterable){var e=r.handler,n=r.painter.getViewportRoot();o.normalizeEvent(n,t,!0),e.dispatch("mousemove",t)}},i.onmouseleave=function(){l._enterable&&l._show&&l.hideLater(l._hideDelay),l._inContent=!1}}p.prototype={constructor:p,_enterable:!0,update:function(t){var e=this._container,n=e.currentStyle||document.defaultView.getComputedStyle(e),i=e.style;"absolute"!==i.position&&"absolute"!==n.position&&(i.position="relative"),t.get("alwaysShowContent")&&this._moveTooltipIfResized()},_moveTooltipIfResized:function(){var t=this._styleCoord[2],e=this._styleCoord[3],n=t*this._zr.getWidth(),i=e*this._zr.getHeight();this.moveTo(n,i)},show:function(t){clearTimeout(this._hideTimeout);var e=this.el,n=this._styleCoord;e.style.cssText="position:absolute;display:block;border-style:solid;white-space:nowrap;z-index:9999999;"+d(t)+";left:"+n[0]+"px;top:"+n[1]+"px;"+(t.get("extraCssText")||""),e.style.display=e.innerHTML?"block":"none",e.style.pointerEvents=this._enterable?"auto":"none",this._show=!0},setContent:function(t){this.el.innerHTML=null==t?"":t},setEnterable:function(t){this._enterable=t},getSize:function(){var t=this.el;return[t.clientWidth,t.clientHeight]},moveTo:function(t,e){var n=this._styleCoord;f(n,this._zr,this._appendToBody,t,e);var i=this.el.style;i.left=n[0]+"px",i.top=n[1]+"px"},hide:function(){this.el.style.display="none",this._show=!1},hideLater:function(t){!this._show||this._inContent&&this._enterable||(t?(this._hideDelay=t,this._show=!1,this._hideTimeout=setTimeout(i.bind(this.hide,this),t)):this.hide())},isShow:function(){return this._show},dispose:function(){this.el.parentNode.removeChild(this.el)},getOuterSize:function(){var t=this.el.clientWidth,e=this.el.clientHeight;if(document.defaultView&&document.defaultView.getComputedStyle){var n=document.defaultView.getComputedStyle(this.el);n&&(t+=parseInt(n.borderLeftWidth,10)+parseInt(n.borderRightWidth,10),e+=parseInt(n.borderTopWidth,10)+parseInt(n.borderBottomWidth,10))}return{width:t,height:e}}};var g=p;t.exports=g},BPZU:function(t,e){function n(t,e,n,i){var r=e+1;if(r===n)return 1;if(i(t[r++],t[e])<0){for(;r=0;)r++;return r-e}function i(t,e,n,i,r){for(i===e&&i++;i>>1])<0?l=o:a=o+1;var c=i-a;switch(c){case 3:t[a+3]=t[a+2];case 2:t[a+2]=t[a+1];case 1:t[a+1]=t[a];break;default:for(;c>0;)t[a+c]=t[a+c-1],c--}t[a]=s}}function r(t,e,n,i,r,o){var s=0,a=0,l=1;if(o(t,e[n+r])>0){for(a=i-r;l0;)s=l,(l=1+(l<<1))<=0&&(l=a);l>a&&(l=a),s+=r,l+=r}else{for(a=r+1;la&&(l=a);var c=s;s=r-l,l=r-c}for(s++;s>>1);o(t,e[n+u])>0?s=u+1:l=u}return l}function o(t,e,n,i,r,o){var s=0,a=0,l=1;if(o(t,e[n+r])<0){for(a=r+1;la&&(l=a);var c=s;s=r-l,l=r-c}else{for(a=i-r;l=0;)s=l,(l=1+(l<<1))<=0&&(l=a);l>a&&(l=a),s+=r,l+=r}for(s++;s>>1);o(t,e[n+u])<0?l=u:s=u+1}return l}function s(t,e){var n,i,s,a=7,l=0;n=t.length;var c=[];function u(n){var u=i[n],h=s[n],d=i[n+1],f=s[n+1];s[n]=h+f,n===l-3&&(i[n+1]=i[n+2],s[n+1]=s[n+2]),l--;var p=o(t[d],t,u,h,0,e);u+=p,0!==(h-=p)&&0!==(f=r(t[u+h-1],t,d,f,f-1,e))&&(h<=f?function(n,i,s,l){var u=0;for(u=0;u=7||g>=7);if(m)break;v<0&&(v=0),v+=2}if((a=v)<1&&(a=1),1===i){for(u=0;u=0;u--)t[g+u]=t[p+u];return void(t[f]=c[d])}var m=a;for(;;){var v=0,b=0,y=!1;do{if(e(c[d],t[h])<0){if(t[f--]=t[h--],v++,b=0,0==--i){y=!0;break}}else if(t[f--]=c[d--],b++,v=0,1==--l){y=!0;break}}while((v|b)=0;u--)t[g+u]=t[p+u];if(0===i){y=!0;break}}if(t[f--]=c[d--],1==--l){y=!0;break}if(0!==(b=l-r(t[h],c,0,l,l-1,e))){for(l-=b,g=(f-=b)+1,p=(d-=b)+1,u=0;u=7||b>=7);if(y)break;m<0&&(m=0),m+=2}(a=m)<1&&(a=1);if(1===l){for(g=(f-=i)+1,p=(h-=i)+1,u=i-1;u>=0;u--)t[g+u]=t[p+u];t[f]=c[d]}else{if(0===l)throw new Error;for(p=f-(l-1),u=0;u1;){var t=l-2;if(t>=1&&s[t-1]<=s[t]+s[t+1]||t>=2&&s[t-2]<=s[t]+s[t-1])s[t-1]s[t+1])break;u(t)}},this.forceMergeRuns=function(){for(;l>1;){var t=l-2;t>0&&s[t-1]=32;)e|=1&t,t>>=1;return t+e}(a);do{if((l=n(t,r,o,e))u&&(h=u),i(t,r,r+h,r+l,e),l=h}c.pushRun(r,l),c.mergeRuns(),a-=l,r+=l}while(0!==a);c.forceMergeRuns()}}}},BlVb:function(t,e,n){var i=n("hyiK");function r(t,e){return Math.abs(t-e)<1e-8}e.contain=function(t,e,n){var o=0,s=t[0];if(!s)return!1;for(var a=1;a.5?e:t}function h(t,e,n,i,r){var o=t.length;if(1===r)for(var s=0;sr)t.length=r;else for(var o=i;o=0&&!(C[n]<=e);n--);n=Math.min(n,w-2)}else{for(n=j;ne);n++);n=Math.min(n-1,w-2)}j=n,U=e;var i=C[n+1]-C[n];if(0!==i)if(P=(e-C[n])/i,y)if(B=T[n],D=T[0===n?n:n-1],N=T[n>w-2?w-1:n+1],F=T[n>w-3?w-1:n+2],M)p(D,B,N,F,P,P*P,P*P*P,m(t,a),k);else{if(S)r=p(D,B,N,F,P,P*P,P*P*P,z,1),r=v(z);else{if(A)return u(B,N,P);r=g(D,B,N,F,P,P*P,P*P*P)}b(t,a,r)}else if(M)h(T[n],T[n+1],P,m(t,a),k);else{var r;if(S)h(T[n],T[n+1],P,z,1),r=v(z);else{if(A)return u(T[n],T[n+1],P);r=c(T[n],T[n+1],P)}b(t,a,r)}},ondestroy:n});return e&&"spline"!==e&&(H.easing=e),H}}}var y=function(t,e,n,i){this._tracks={},this._target=t,this._loop=e||!1,this._getter=n||a,this._setter=i||l,this._clipCount=0,this._delay=0,this._doneList=[],this._onframeList=[],this._clipList=[]};y.prototype={when:function(t,e){var n=this._tracks;for(var i in e)if(e.hasOwnProperty(i)){if(!n[i]){n[i]=[];var r=this._getter(this._target,i);if(null==r)continue;0!==t&&n[i].push({time:0,value:m(r)})}n[i].push({time:t,value:e[i]})}return this},during:function(t){return this._onframeList.push(t),this},pause:function(){for(var t=0;t1&&r&&r.length>1){var a=o(r)/o(s);!isFinite(a)&&(a=1),e.pinchScale=a;var l=[((i=r)[0][0]+i[1][0])/2,(i[0][1]+i[1][1])/2];return e.pinchX=l[0],e.pinchY=l[1],{type:"pinch",target:t[0].target,event:e}}}}},a=r;t.exports=a},"C3+T":function(t,e,n){t.exports=n.p+"5d1543d89f404122d87ebbfb99b51a7a.js"},CH9F:function(t,e,n){var i=n("P7XM"),r=n("tnIz"),o=n("hwdV").Buffer,s=[1518500249,1859775393,-1894007588,-899497514],a=new Array(80);function l(){this.init(),this._w=a,r.call(this,64,56)}function c(t){return t<<30|t>>>2}function u(t,e,n,i){return 0===t?e&n|~e&i:2===t?e&n|e&i|n&i:e^n^i}i(l,r),l.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},l.prototype._update=function(t){for(var e,n=this._w,i=0|this._a,r=0|this._b,o=0|this._c,a=0|this._d,l=0|this._e,h=0;h<16;++h)n[h]=t.readInt32BE(4*h);for(;h<80;++h)n[h]=n[h-3]^n[h-8]^n[h-14]^n[h-16];for(var d=0;d<80;++d){var f=~~(d/20),p=0|((e=i)<<5|e>>>27)+u(f,r,o,a)+l+n[d]+s[f];l=a,a=o,o=c(r),r=i,i=p}this._a=i+this._a|0,this._b=r+this._b|0,this._c=o+this._c|0,this._d=a+this._d|0,this._e=l+this._e|0},l.prototype._hash=function(){var t=o.allocUnsafe(20);return t.writeInt32BE(0|this._a,0),t.writeInt32BE(0|this._b,4),t.writeInt32BE(0|this._c,8),t.writeInt32BE(0|this._d,12),t.writeInt32BE(0|this._e,16),t},t.exports=l},CM8r:function(t,e,n){t.exports=n.p+"fc6ba43496896432983dff35a140ed34.js"},CSio:function(t,e,n){t.exports=n.p+"88f84860305454c46b6dd7ac02cd5f90.js"},CTg8:function(t,e,n){t.exports=n.p+"05fa8ff839d67e3839195d1dc96d8d49.js"},Cbsr:function(t,e,n){t.exports=n.p+"faf460076b3383fdc3ecc224068964cf.js"},Cdxa:function(t,e,n){"use strict";t.exports=u;const i=n("nYpo").codes,r=i.ERR_METHOD_NOT_IMPLEMENTED,o=i.ERR_MULTIPLE_CALLBACK,s=i.ERR_TRANSFORM_ALREADY_TRANSFORMING,a=i.ERR_TRANSFORM_WITH_LENGTH_0,l=n("5maX");function c(t,e){var n=this._transformState;n.transforming=!1;var i=n.writecb;if(null===i)return this.emit("error",new o);n.writechunk=null,n.writecb=null,null!=e&&this.push(e),i(t);var r=this._readableState;r.reading=!1,(r.needReadable||r.length{d(this,t,e)})}function d(t,e,n){if(e)return t.emit("error",e);if(null!=n&&t.push(n),t._writableState.length)throw new a;if(t._transformState.transforming)throw new s;return t.push(null)}n("P7XM")(u,l),u.prototype.push=function(t,e){return this._transformState.needTransform=!1,l.prototype.push.call(this,t,e)},u.prototype._transform=function(t,e,n){n(new r("_transform()"))},u.prototype._write=function(t,e,n){var i=this._transformState;if(i.writecb=n,i.writechunk=t,i.writeencoding=e,!i.transforming){var r=this._readableState;(i.needTransform||r.needReadable||r.length{e(t)})}},Cg3s:function(t,e,n){t.exports=n.p+"bc26ab0797e975ba01e701683935864b.js"},ChLG:function(t,e,n){t.exports=n.p+"5eeee1acc01b04328cf42db0715bb7f5.js"},Cm0C:function(t,e,n){n("5NHt"),n("f3JH")},Cqch:function(t,e,n){t.exports=n.p+"b435aebcb57d65080cfd510e0a9d5d9d.js"},Cqe9:function(t,e,n){t.exports=n.p+"6373ffeee52d7649fd4d155b198644b2.js"},CrOw:function(t,e,n){t.exports=n.p+"a2892f98db7a4df3c9483669ddb59ec2.js"},CsPn:function(t,e,n){(e=t.exports=n("by5u")).Stream=e,e.Readable=e,e.Writable=n("b/oV"),e.Duplex=n("1t2c"),e.Transform=n("3NCs"),e.PassThrough=n("qml0")},CseK:function(t,e,n){t.exports=n.p+"8870430db332faf22d90e12f1620ee84.js"},CuOt:function(t,e,n){"use strict";t.exports=r;const i=n("Cdxa");function r(t){if(!(this instanceof r))return new r(t);i.call(this,t)}n("P7XM")(r,i),r.prototype._transform=function(t,e,n){n(null,t)}},D4gj:function(t,e,n){t.exports=n.p+"57227411250776fb517249d0a997a96f.js"},D5FD:function(t,e,n){t.exports=n.p+"2836e58974a8e2730a9b6bec1921dd3d.js"},D5nY:function(t,e,n){n("Tghj").__DEV__;var i=n("4NO4"),r=i.makeInner,o=i.getDataItemValue,s=n("bYtY"),a=s.createHashMap,l=s.each,c=s.map,u=s.isArray,h=s.isString,d=s.isObject,f=s.isTypedArray,p=s.isArrayLike,g=s.extend,m=(s.assert,n("7G+c")),v=n("k9D9"),b=v.SOURCE_FORMAT_ORIGINAL,y=v.SOURCE_FORMAT_ARRAY_ROWS,w=v.SOURCE_FORMAT_OBJECT_ROWS,x=v.SOURCE_FORMAT_KEYED_COLUMNS,_=v.SOURCE_FORMAT_UNKNOWN,M=v.SOURCE_FORMAT_TYPED_ARRAY,S=v.SERIES_LAYOUT_BY_ROW,A={Must:1,Might:2,Not:3},k=r();function C(t){if(t){var e=a();return c(t,(function(t,n){if(null==(t=g({},d(t)?t:{name:t})).name)return t;t.name+="",null==t.displayName&&(t.displayName=t.name);var i=e.get(t.name);return i?t.name+="-"+i.count++:e.set(t.name,{count:1}),t}))}}function T(t,e,n,i){if(null==i&&(i=1/0),e===S)for(var r=0;r=t.length&&(t=void 0),{value:t&&t[i++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")},r=this&&this.__read||function(t,e){var n="function"==typeof Symbol&&t[Symbol.iterator];if(!n)return t;var i,r,o=n.call(t),s=[];try{for(;(void 0===e||e-- >0)&&!(i=o.next()).done;)s.push(i.value)}catch(t){r={error:t}}finally{try{i&&!i.done&&(n=o.return)&&n.call(o)}finally{if(r)throw r.error}}return s};Object.defineProperty(e,"__esModule",{value:!0}),e.bufArrToArr=e.arrToBufArr=e.validateNoLeadingZeroes=e.baToJSON=e.toUtf8=e.addHexPrefix=e.toUnsigned=e.fromSigned=e.bufferToHex=e.bufferToInt=e.toBuffer=e.unpadHexString=e.unpadArray=e.unpadBuffer=e.setLengthRight=e.setLengthLeft=e.zeros=e.intToBuffer=e.intToHex=void 0;var o=n("zkNI"),s=n("szLb"),a=n("KbHX");e.intToHex=function(t){if(!Number.isSafeInteger(t)||t<0)throw new Error("Received an invalid integer type: ".concat(t));return"0x".concat(t.toString(16))};e.intToBuffer=function(n){var i=(0,e.intToHex)(n);return t.from((0,s.padToEven)(i.slice(2)),"hex")};e.zeros=function(e){return t.allocUnsafe(e).fill(0)};var l=function(t,n,i){var r=(0,e.zeros)(n);return i?t.length0&&"0"===e.toString();)e=(t=t.slice(1))[0];return t};e.unpadBuffer=function(t){return(0,a.assertIsBuffer)(t),c(t)};e.unpadArray=function(t){return(0,a.assertIsArray)(t),c(t)};e.unpadHexString=function(t){return(0,a.assertIsHexString)(t),t=(0,s.stripHexPrefix)(t),c(t)};e.toBuffer=function(n){if(null==n)return t.allocUnsafe(0);if(t.isBuffer(n))return t.from(n);if(Array.isArray(n)||n instanceof Uint8Array)return t.from(n);if("string"==typeof n){if(!(0,s.isHexString)(n))throw new Error("Cannot convert string to buffer. toBuffer only supports 0x-prefixed hex strings and this string was given: ".concat(n));return t.from((0,s.padToEven)((0,s.stripHexPrefix)(n)),"hex")}if("number"==typeof n)return(0,e.intToBuffer)(n);if(o.BN.isBN(n)){if(n.isNeg())throw new Error("Cannot convert negative BN to buffer. Given: ".concat(n));return n.toArrayLike(t)}if(n.toArray)return t.from(n.toArray());if(n.toBuffer)return t.from(n.toBuffer());throw new Error("invalid type")};e.bufferToInt=function(t){return new o.BN((0,e.toBuffer)(t)).toNumber()};e.bufferToHex=function(t){return"0x"+(t=(0,e.toBuffer)(t)).toString("hex")};e.fromSigned=function(t){return new o.BN(t).fromTwos(256)};e.toUnsigned=function(e){return t.from(e.toTwos(256).toArray())};e.addHexPrefix=function(t){return"string"!=typeof t||(0,s.isHexPrefixed)(t)?t:"0x"+t};e.toUtf8=function(e){if((e=(0,s.stripHexPrefix)(e)).length%2!=0)throw new Error("Invalid non-even hex string input for toUtf8() provided");return t.from(e.replace(/^(00)+|(00)+$/g,""),"hex").toString("utf8")};e.baToJSON=function(n){if(t.isBuffer(n))return"0x".concat(n.toString("hex"));if(n instanceof Array){for(var i=[],r=0;r0&&0===c[0])throw new Error("".concat(l," cannot have leading zeroes, received: ").concat(c.toString("hex")))}}catch(t){e={error:t}}finally{try{s&&!s.done&&(n=o.return)&&n.call(o)}finally{if(e)throw e.error}}},e.arrToBufArr=function e(n){return Array.isArray(n)?n.map((function(t){return e(t)})):t.from(n)},e.bufArrToArr=function t(e){return Array.isArray(e)?e.map((function(e){return t(e)})):Uint8Array.from(null!=e?e:[])}}).call(this,n("tjlA").Buffer)},DEW2:function(t,e,n){t.exports=n.p+"0c2b3b3b66a73e289e2ca47cf22ef150.js"},DLvh:function(t,e,n){"use strict";var i,r=e,o=n("fZJM"),s=n("QTa/"),a=n("86MQ").assert;function l(t){"short"===t.type?this.curve=new s.short(t):"edwards"===t.type?this.curve=new s.edwards(t):this.curve=new s.mont(t),this.g=this.curve.g,this.n=this.curve.n,this.hash=t.hash,a(this.g.validate(),"Invalid curve"),a(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}function c(t,e){Object.defineProperty(r,t,{configurable:!0,enumerable:!0,get:function(){var n=new l(e);return Object.defineProperty(r,t,{configurable:!0,enumerable:!0,value:n}),n}})}r.PresetCurve=l,c("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:o.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),c("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:o.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),c("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:o.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),c("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:o.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),c("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:o.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),c("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:o.sha256,gRed:!1,g:["9"]}),c("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:o.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});try{i=n("QJsb")}catch(t){i=void 0}c("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:o.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",i]})},DN4a:function(t,e,n){var i=n("Fofx"),r=n("QBsz"),o=i.identity;function s(t){return t>5e-5||t<-5e-5}var a=function(t){(t=t||{}).position||(this.position=[0,0]),null==t.rotation&&(this.rotation=0),t.scale||(this.scale=[1,1]),this.origin=this.origin||null},l=a.prototype;l.transform=null,l.needLocalTransform=function(){return s(this.rotation)||s(this.position[0])||s(this.position[1])||s(this.scale[0]-1)||s(this.scale[1]-1)};var c=[];l.updateTransform=function(){var t=this.parent,e=t&&t.transform,n=this.needLocalTransform(),r=this.transform;if(n||e){r=r||i.create(),n?this.getLocalTransform(r):o(r),e&&(n?i.mul(r,t.transform,r):i.copy(r,t.transform)),this.transform=r;var s=this.globalScaleRatio;if(null!=s&&1!==s){this.getGlobalScale(c);var a=c[0]<0?-1:1,l=c[1]<0?-1:1,u=((c[0]-a)*s+a)/c[0]||0,h=((c[1]-l)*s+l)/c[1]||0;r[0]*=u,r[1]*=u,r[2]*=h,r[3]*=h}this.invTransform=this.invTransform||i.create(),i.invert(this.invTransform,r)}else r&&o(r)},l.getLocalTransform=function(t){return a.getLocalTransform(this,t)},l.setTransform=function(t){var e=this.transform,n=t.dpr||1;e?t.setTransform(n*e[0],n*e[1],n*e[2],n*e[3],n*e[4],n*e[5]):t.setTransform(n,0,0,n,0,0)},l.restoreTransform=function(t){var e=t.dpr||1;t.setTransform(e,0,0,e,0,0)};var u=[],h=i.create();l.setLocalTransform=function(t){if(t){var e=t[0]*t[0]+t[1]*t[1],n=t[2]*t[2]+t[3]*t[3],i=this.position,r=this.scale;s(e-1)&&(e=Math.sqrt(e)),s(n-1)&&(n=Math.sqrt(n)),t[0]<0&&(e=-e),t[3]<0&&(n=-n),i[0]=t[4],i[1]=t[5],r[0]=e,r[1]=n,this.rotation=Math.atan2(-t[1]/n,t[0]/e)}},l.decomposeTransform=function(){if(this.transform){var t=this.parent,e=this.transform;t&&t.transform&&(i.mul(u,t.invTransform,e),e=u);var n=this.origin;n&&(n[0]||n[1])&&(h[4]=n[0],h[5]=n[1],i.mul(u,e,h),u[4]-=n[0],u[5]-=n[1],e=u),this.setLocalTransform(e)}},l.getGlobalScale=function(t){var e=this.transform;return t=t||[],e?(t[0]=Math.sqrt(e[0]*e[0]+e[1]*e[1]),t[1]=Math.sqrt(e[2]*e[2]+e[3]*e[3]),e[0]<0&&(t[0]=-t[0]),e[3]<0&&(t[1]=-t[1]),t):(t[0]=1,t[1]=1,t)},l.transformCoordToLocal=function(t,e){var n=[t,e],i=this.invTransform;return i&&r.applyTransform(n,n,i),n},l.transformCoordToGlobal=function(t,e){var n=[t,e],i=this.transform;return i&&r.applyTransform(n,n,i),n},a.getLocalTransform=function(t,e){o(e=e||[]);var n=t.origin,r=t.scale||[1,1],s=t.rotation||0,a=t.position||[0,0];return n&&(e[4]-=n[0],e[5]-=n[1]),i.scale(e,e,r),s&&i.rotate(e,e,s),n&&(e[4]+=n[0],e[5]+=n[1]),e[4]+=a[0],e[5]+=a[1],e};var d=a;t.exports=d},DNkW:function(t,e,n){var i=n("93I4"),r=Math.floor;t.exports=function(t){return!i(t)&&isFinite(t)&&r(t)===t}},DS3z:function(t,e,n){t.exports=n.p+"97d15c029119bb1a0a1640736097aa31.js"},Dagg:function(t,e,n){var i=n("Gev7"),r=n("mFDi"),o=n("bYtY"),s=n("Xnb7");function a(t){i.call(this,t)}a.prototype={constructor:a,type:"image",brush:function(t,e){var n=this.style,i=n.image;n.bind(t,this,e);var r=this._image=s.createOrUpdateImage(i,this._image,this,this.onload);if(r&&s.isImageReady(r)){var o=n.x||0,a=n.y||0,l=n.width,c=n.height,u=r.width/r.height;if(null==l&&null!=c?l=c*u:null==c&&null!=l?c=l/u:null==l&&null==c&&(l=r.width,c=r.height),this.setTransform(t),n.sWidth&&n.sHeight){var h=n.sx||0,d=n.sy||0;t.drawImage(r,h,d,n.sWidth,n.sHeight,o,a,l,c)}else if(n.sx&&n.sy){var f=l-(h=n.sx),p=c-(d=n.sy);t.drawImage(r,h,d,f,p,o,a,l,c)}else t.drawImage(r,o,a,l,c);null!=n.text&&(this.restoreTransform(t),this.drawRectText(t,this.getBoundingRect()))}},getBoundingRect:function(){var t=this.style;return this._rect||(this._rect=new r(t.x||0,t.y||0,t.width||0,t.height||0)),this._rect}},o.inherits(a,i);var l=a;t.exports=l},DeVQ:function(t,e,n){t.exports=n.p+"4c2af0e7baef22a45b0f5bb4315196e5.js"},DuT2:function(t,e,n){t.exports=n.p+"48325ae89eaef130841d0d921ab065fc.js"},"E+IA":function(t,e,n){"use strict";var i=n("w8CP"),r=n("7ckf"),o=n("qlaj"),s=i.rotl32,a=i.sum32,l=i.sum32_5,c=o.ft_1,u=r.BlockHash,h=[1518500249,1859775393,2400959708,3395469782];function d(){if(!(this instanceof d))return new d;u.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}i.inherits(d,u),t.exports=d,d.blockSize=512,d.outSize=160,d.hmacStrength=80,d.padLength=64,d.prototype._update=function(t,e){for(var n=this.W,i=0;i<16;i++)n[i]=t[e+i];for(;i4294967295)throw new RangeError("requested too many random bytes");var n=r.allocUnsafe(t);if(t>0)if(t>65536)for(var s=0;s=48&&t<=57)return t-48;if(t>=65&&t<=70)return t-55;if(t>=97&&t<=102)return t-87;throw new Error("invalid bloom")}function a(t){return"string"==typeof t&&(!!/^(0x)?[0-9a-f]{64}$/i.test(t)&&!(!/^(0x)?[0-9a-f]{64}$/.test(t)&&!/^(0x)?[0-9A-F]{64}$/.test(t)))}function l(t){return"string"==typeof t&&(!!t.match(/^(0x)?[0-9a-fA-F]{40}$/)||!!t.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/))}e.isBloom=r,e.isInBloom=o,e.isUserEthereumAddressInBloom=function(t,e){if(!r(t))throw new Error("Invalid bloom given");if(!l(e))throw new Error(`Invalid ethereum address given: "${e}"`);return o(t,i.padLeft(e,64))},e.isContractAddressInBloom=function(t,e){if(!r(t))throw new Error("Invalid bloom given");if(!l(e))throw new Error(`Invalid contract address given: "${e}"`);return o(t,e)},e.isTopicInBloom=function(t,e){if(!r(t))throw new Error("Invalid bloom given");if(!a(e))throw new Error("Invalid topic");return o(t,e)},e.isTopic=a,e.isAddress=l},FIbT:function(t,e,n){t.exports=n.p+"0e8e94ce9364aa82e7010f42ace03053.js"},FL0Q:function(t,e,n){t.exports=n.p+"a3364b0ae17abf3b8dc45ac0fc88138f.js"},FUi9:function(t,e,n){var i=n("bYtY"),r=n("MwEJ"),o=n("aX7z"),s=n("ICMv"),a=n("Qxkt"),l=n("+TT/");l.getLayoutRect;e.getLayoutRect=l.getLayoutRect;var c=n("7hqr"),u=c.enableDataStack,h=c.isDimensionStacked,d=c.getStackedDimension,f=n("hi0g");e.completeDimensions=f;var p=n("sdST");e.createDimensions=p;var g=n("oVpE");e.createSymbol=g.createSymbol;var m={isDimensionStacked:h,enableDataStack:u,getStackedDimension:d};e.createList=function(t){return r(t.getSource(),t)},e.dataStack=m,e.createScale=function(t,e){var n=e;a.isInstance(e)||(n=new a(e),i.mixin(n,s));var r=o.createScaleByModel(n);return r.setExtent(t[0],t[1]),o.niceScaleExtent(r,n),r},e.mixinAxisModelCommonMethods=function(t){i.mixin(t,s)}},FdNM:function(t,e,n){t.exports=n.p+"a7668d94ba4eb4fd33fef9ccdf584329.js"},Fofx:function(t,e){var n="undefined"==typeof Float32Array?Array:Float32Array;function i(){var t=new n(6);return r(t),t}function r(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t}function o(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t}e.create=i,e.identity=r,e.copy=o,e.mul=function(t,e,n){var i=e[0]*n[0]+e[2]*n[1],r=e[1]*n[0]+e[3]*n[1],o=e[0]*n[2]+e[2]*n[3],s=e[1]*n[2]+e[3]*n[3],a=e[0]*n[4]+e[2]*n[5]+e[4],l=e[1]*n[4]+e[3]*n[5]+e[5];return t[0]=i,t[1]=r,t[2]=o,t[3]=s,t[4]=a,t[5]=l,t},e.translate=function(t,e,n){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4]+n[0],t[5]=e[5]+n[1],t},e.rotate=function(t,e,n){var i=e[0],r=e[2],o=e[4],s=e[1],a=e[3],l=e[5],c=Math.sin(n),u=Math.cos(n);return t[0]=i*u+s*c,t[1]=-i*c+s*u,t[2]=r*u+a*c,t[3]=-r*c+u*a,t[4]=u*o+c*l,t[5]=u*l-c*o,t},e.scale=function(t,e,n){var i=n[0],r=n[1];return t[0]=e[0]*i,t[1]=e[1]*r,t[2]=e[2]*i,t[3]=e[3]*r,t[4]=e[4]*i,t[5]=e[5]*r,t},e.invert=function(t,e){var n=e[0],i=e[2],r=e[4],o=e[1],s=e[3],a=e[5],l=n*s-o*i;return l?(l=1/l,t[0]=s*l,t[1]=-o*l,t[2]=-i*l,t[3]=n*l,t[4]=(i*a-s*r)*l,t[5]=(o*r-n*a)*l,t):null},e.clone=function(t){var e=i();return o(e,t),e}},FviS:function(t,e,n){t.exports=n.p+"2ac58492ad5a1b5244deb0fef1e5a773.js"},FyA2:function(t,e,n){t.exports=n.p+"777bbf0a7ab200cd0c25bb83731450a5.js"},Fyjw:function(t,e,n){t.exports=n.p+"c7d3b0afe7600a632fbf44ee8d84996e.js"},GMDS:function(t,e,n){var i=n("bYtY"),r=n("4NgU"),o=n("jkPA"),s=r.prototype,a=r.extend({type:"ordinal",init:function(t,e){t&&!i.isArray(t)||(t=new o({categories:t})),this._ordinalMeta=t,this._extent=e||[0,t.categories.length-1]},parse:function(t){return"string"==typeof t?this._ordinalMeta.getOrdinal(t):Math.round(t)},contain:function(t){return t=this.parse(t),s.contain.call(this,t)&&null!=this._ordinalMeta.categories[t]},normalize:function(t){return s.normalize.call(this,this.parse(t))},scale:function(t){return Math.round(s.scale.call(this,t))},getTicks:function(){for(var t=[],e=this._extent,n=e[0];n<=e[1];)t.push(n),n++;return t},getLabel:function(t){if(!this.isBlank())return this._ordinalMeta.categories[t]},count:function(){return this._extent[1]-this._extent[0]+1},unionExtentFromData:function(t,e){this.unionExtent(t.getApproximateExtent(e))},getOrdinalMeta:function(){return this._ordinalMeta},niceTicks:i.noop,niceExtent:i.noop});a.create=function(){return new a};var l=a;t.exports=l},GOPk:function(t,e,n){t.exports=n.p+"f8d59c056683c7001a96d4fac22cc664.js"},GRjI:function(t,e,n){t.exports=n.p+"35dc4119f9e28cb9baba1475537460bb.js"},GSNa:function(t,e,n){t.exports=n.p+"2d53cfacb6a695f378ca997fcee7efb3.js"},GTtX:function(t,e,n){t.exports=n.p+"2f689ca91158f918e23ce27c7abbcf25.js"},GbtE:function(t,e,n){t.exports=n.p+"18a893070398343ab529fdb7b62f1b6d.js"},GcVj:function(t,e,n){t.exports=n.p+"2b1eed411f531a271f0e47693c82216a.js"},Gerr:function(t,e,n){"use strict";(function(e,i){function r(t){this.next=null,this.entry=null,this.finish=()=>{!function(t,e,n){var i=t.entry;t.entry=null;for(;i;){var r=i.callback;e.pendingcb--,r(n),i=i.next}e.corkedRequestsFree.next=t}(this,t)}}var o;t.exports=A,A.WritableState=M;const s={deprecate:n("t9FE")};var a=n("W7sv");const l=n("tjlA").Buffer,c=(void 0!==e?e:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{}).Uint8Array||function(){};const u=n("ST+o"),h=n("ubW+").getHighWaterMark,d=n("nYpo").codes,f=d.ERR_INVALID_ARG_TYPE,p=d.ERR_METHOD_NOT_IMPLEMENTED,g=d.ERR_MULTIPLE_CALLBACK,m=d.ERR_STREAM_CANNOT_PIPE,v=d.ERR_STREAM_DESTROYED,b=d.ERR_STREAM_NULL_VALUES,y=d.ERR_STREAM_WRITE_AFTER_END,w=d.ERR_UNKNOWN_ENCODING,x=u.errorOrDestroy;function _(){}function M(t,e,s){o=o||n("5maX"),t=t||{},"boolean"!=typeof s&&(s=e instanceof o),this.objectMode=!!t.objectMode,s&&(this.objectMode=this.objectMode||!!t.writableObjectMode),this.highWaterMark=h(this,t,"writableHighWaterMark",s),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var a=!1===t.decodeStrings;this.decodeStrings=!a,this.defaultEncoding=t.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(t){!function(t,e){var n=t._writableState,r=n.sync,o=n.writecb;if("function"!=typeof o)throw new g;if(function(t){t.writing=!1,t.writecb=null,t.length-=t.writelen,t.writelen=0}(n),e)!function(t,e,n,r,o){--e.pendingcb,n?(i.nextTick(o,r),i.nextTick(L,t,e),t._writableState.errorEmitted=!0,x(t,r)):(o(r),t._writableState.errorEmitted=!0,x(t,r),L(t,e))}(t,n,r,e,o);else{var s=E(n)||t.destroyed;s||n.corked||n.bufferProcessing||!n.bufferedRequest||T(t,n),r?i.nextTick(C,t,n,s,o):C(t,n,s,o)}}(e,t)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!1!==t.emitClose,this.autoDestroy=!!t.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new r(this)}var S;function A(t){const e=this instanceof(o=o||n("5maX"));if(!e&&!S.call(A,this))return new A(t);this._writableState=new M(t,this,e),this.writable=!0,t&&("function"==typeof t.write&&(this._write=t.write),"function"==typeof t.writev&&(this._writev=t.writev),"function"==typeof t.destroy&&(this._destroy=t.destroy),"function"==typeof t.final&&(this._final=t.final)),a.call(this)}function k(t,e,n,i,r,o,s){e.writelen=i,e.writecb=s,e.writing=!0,e.sync=!0,e.destroyed?e.onwrite(new v("write")):n?t._writev(r,e.onwrite):t._write(r,o,e.onwrite),e.sync=!1}function C(t,e,n,i){n||function(t,e){0===e.length&&e.needDrain&&(e.needDrain=!1,t.emit("drain"))}(t,e),e.pendingcb--,i(),L(t,e)}function T(t,e){e.bufferProcessing=!0;var n=e.bufferedRequest;if(t._writev&&n&&n.next){var i=e.bufferedRequestCount,o=new Array(i),s=e.corkedRequestsFree;s.entry=n;for(var a=0,l=!0;n;)o[a]=n,n.isBuf||(l=!1),n=n.next,a+=1;o.allBuffers=l,k(t,e,!0,e.length,o,"",s.finish),e.pendingcb++,e.lastBufferedRequest=null,s.next?(e.corkedRequestsFree=s.next,s.next=null):e.corkedRequestsFree=new r(e),e.bufferedRequestCount=0}else{for(;n;){var c=n.chunk,u=n.encoding,h=n.callback;if(k(t,e,!1,e.objectMode?1:c.length,c,u,h),n=n.next,e.bufferedRequestCount--,e.writing)break}null===n&&(e.lastBufferedRequest=null)}e.bufferedRequest=n,e.bufferProcessing=!1}function E(t){return t.ending&&0===t.length&&null===t.bufferedRequest&&!t.finished&&!t.writing}function R(t,e){t._final(n=>{e.pendingcb--,n&&x(t,n),e.prefinished=!0,t.emit("prefinish"),L(t,e)})}function L(t,e){var n=E(e);if(n&&(function(t,e){e.prefinished||e.finalCalled||("function"!=typeof t._final||e.destroyed?(e.prefinished=!0,t.emit("prefinish")):(e.pendingcb++,e.finalCalled=!0,i.nextTick(R,t,e)))}(t,e),0===e.pendingcb&&(e.finished=!0,t.emit("finish"),e.autoDestroy))){const e=t._readableState;(!e||e.autoDestroy&&e.endEmitted)&&t.destroy()}return n}n("P7XM")(A,a),M.prototype.getBuffer=function(){for(var t=this.bufferedRequest,e=[];t;)e.push(t),t=t.next;return e},function(){try{Object.defineProperty(M.prototype,"buffer",{get:s.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(t){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(S=Function.prototype[Symbol.hasInstance],Object.defineProperty(A,Symbol.hasInstance,{value:function(t){return!!S.call(this,t)||this===A&&(t&&t._writableState instanceof M)}})):S=function(t){return t instanceof this},A.prototype.pipe=function(){x(this,new m)},A.prototype.write=function(t,e,n){var r,o=this._writableState,s=!1,a=!o.objectMode&&(r=t,l.isBuffer(r)||r instanceof c);return a&&!l.isBuffer(t)&&(t=function(t){return l.from(t)}(t)),"function"==typeof e&&(n=e,e=null),a?e="buffer":e||(e=o.defaultEncoding),"function"!=typeof n&&(n=_),o.ending?function(t,e){var n=new y;x(t,n),i.nextTick(e,n)}(this,n):(a||function(t,e,n,r){var o;return null===n?o=new b:"string"==typeof n||e.objectMode||(o=new f("chunk",["string","Buffer"],n)),!o||(x(t,o),i.nextTick(r,o),!1)}(this,o,t,n))&&(o.pendingcb++,s=function(t,e,n,i,r,o){if(!n){var s=function(t,e,n){t.objectMode||!1===t.decodeStrings||"string"!=typeof e||(e=l.from(e,n));return e}(e,i,r);i!==s&&(n=!0,r="buffer",i=s)}var a=e.objectMode?1:i.length;e.length+=a;var c=e.length-1))throw new w(t);return this._writableState.defaultEncoding=t,this},Object.defineProperty(A.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(A.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),A.prototype._write=function(t,e,n){n(new p("_write()"))},A.prototype._writev=null,A.prototype.end=function(t,e,n){var r=this._writableState;return"function"==typeof t?(n=t,t=null,e=null):"function"==typeof e&&(n=e,e=null),null!=t&&this.write(t,e),r.corked&&(r.corked=1,this.uncork()),r.ending||function(t,e,n){e.ending=!0,L(t,e),n&&(e.finished?i.nextTick(n):t.once("finish",n));e.ended=!0,t.writable=!1}(this,r,n),this},Object.defineProperty(A.prototype,"writableLength",{enumerable:!1,get(){return this._writableState.length}}),Object.defineProperty(A.prototype,"destroyed",{enumerable:!1,get(){return void 0!==this._writableState&&this._writableState.destroyed},set(t){this._writableState&&(this._writableState.destroyed=t)}}),A.prototype.destroy=u.destroy,A.prototype._undestroy=u.undestroy,A.prototype._destroy=function(t,e){e(t)}}).call(this,n("yLpj"),n("8oxB"))},Gev7:function(t,e,n){var i=n("bYtY"),r=n("K2GJ"),o=n("1bdT"),s=n("ni6a");function a(t){for(var e in t=t||{},o.call(this,t),t)t.hasOwnProperty(e)&&"style"!==e&&(this[e]=t[e]);this.style=new r(t.style,this),this._rect=null,this.__clipPaths=null}a.prototype={constructor:a,type:"displayable",__dirty:!0,invisible:!1,z:0,z2:0,zlevel:0,draggable:!1,dragging:!1,silent:!1,culling:!1,cursor:"pointer",rectHover:!1,progressive:!1,incremental:!1,globalScaleRatio:1,beforeBrush:function(t){},afterBrush:function(t){},brush:function(t,e){},getBoundingRect:function(){},contain:function(t,e){return this.rectContain(t,e)},traverse:function(t,e){t.call(e,this)},rectContain:function(t,e){var n=this.transformCoordToLocal(t,e);return this.getBoundingRect().contain(n[0],n[1])},dirty:function(){this.__dirty=this.__dirtyText=!0,this._rect=null,this.__zr&&this.__zr.refresh()},animateStyle:function(t){return this.animate("style",t)},attrKV:function(t,e){"style"!==t?o.prototype.attrKV.call(this,t,e):this.style.set(e)},setStyle:function(t,e){return this.style.set(t,e),this.dirty(!1),this},useStyle:function(t){return this.style=new r(t,this),this.dirty(!1),this},calculateTextPosition:null},i.inherits(a,o),i.mixin(a,s);var l=a;t.exports=l},"H++T":function(t,e,n){t.exports=n.p+"accd1391b6d74a4f4ef8b1ca97d4c57f.js"},H1qW:function(t,e,n){t.exports=n.p+"a12b600f57e52c9d0cac24bbb2e7c07a.js"},H3FR:function(t,e,n){t.exports=n.p+"d750a8dbf9dd09c0a33b9986e79e3c8c.js"},H6uX:function(t,e){var n=Array.prototype.slice,i=function(t){this._$handlers={},this._$eventProcessor=t};function r(t,e,n,i,r,o){var s=t._$handlers;if("function"==typeof n&&(r=i,i=n,n=null),!i||!e)return t;n=function(t,e){var n=t._$eventProcessor;return null!=e&&n&&n.normalizeQuery&&(e=n.normalizeQuery(e)),e}(t,n),s[e]||(s[e]=[]);for(var a=0;a3&&(r=n.call(r,1));for(var s=e.length,a=0;a4&&(r=n.call(r,1,r.length-1));for(var s=r[r.length-1],a=e.length,l=0;l0?s-4:s;for(n=0;n>16&255,l[u++]=e>>8&255,l[u++]=255&e;2===a&&(e=r[t.charCodeAt(n)]<<2|r[t.charCodeAt(n+1)]>>4,l[u++]=255&e);1===a&&(e=r[t.charCodeAt(n)]<<10|r[t.charCodeAt(n+1)]<<4|r[t.charCodeAt(n+2)]>>2,l[u++]=e>>8&255,l[u++]=255&e);return l},e.fromByteArray=function(t){for(var e,n=t.length,r=n%3,o=[],s=0,a=n-r;sa?a:s+16383));1===r?(e=t[n-1],o.push(i[e>>2]+i[e<<4&63]+"==")):2===r&&(e=(t[n-2]<<8)+t[n-1],o.push(i[e>>10]+i[e>>4&63]+i[e<<2&63]+"="));return o.join("")};for(var i=[],r=[],o="undefined"!=typeof Uint8Array?Uint8Array:Array,s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",a=0,l=s.length;a0)throw new Error("Invalid string. Length must be a multiple of 4");var n=t.indexOf("=");return-1===n&&(n=e),[n,n===e?0:4-n%4]}function u(t,e,n){for(var r,o,s=[],a=e;a>18&63]+i[o>>12&63]+i[o>>6&63]+i[63&o]);return s.join("")}r["-".charCodeAt(0)]=62,r["_".charCodeAt(0)]=63},"HFX+":function(t,e,n){(function(i,r){var o; +/** + * [js-sha3]{@link https://github.com/emn178/js-sha3} + * + * @version 0.8.0 + * @author Chen, Yi-Cyuan [emn178@gmail.com] + * @copyright Chen, Yi-Cyuan 2015-2018 + * @license MIT + */!function(){"use strict";var s="input is invalid type",a="object"==typeof window,l=a?window:{};l.JS_SHA3_NO_WINDOW&&(a=!1);var c=!a&&"object"==typeof self;!l.JS_SHA3_NO_NODE_JS&&"object"==typeof i&&i.versions&&i.versions.node?l=r:c&&(l=self);var u=!l.JS_SHA3_NO_COMMON_JS&&"object"==typeof t&&t.exports,h=n("PDX0"),d=!l.JS_SHA3_NO_ARRAY_BUFFER&&"undefined"!=typeof ArrayBuffer,f="0123456789abcdef".split(""),p=[4,1024,262144,67108864],g=[0,8,16,24],m=[1,0,32898,0,32906,2147483648,2147516416,2147483648,32907,0,2147483649,0,2147516545,2147483648,32777,2147483648,138,0,136,0,2147516425,0,2147483658,0,2147516555,0,139,2147483648,32905,2147483648,32771,2147483648,32770,2147483648,128,2147483648,32778,0,2147483658,2147483648,2147516545,2147483648,32896,2147483648,2147483649,0,2147516424,2147483648],v=[224,256,384,512],b=[128,256],y=["hex","buffer","arrayBuffer","array","digest"],w={128:168,256:136};!l.JS_SHA3_NO_NODE_JS&&Array.isArray||(Array.isArray=function(t){return"[object Array]"===Object.prototype.toString.call(t)}),!d||!l.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW&&ArrayBuffer.isView||(ArrayBuffer.isView=function(t){return"object"==typeof t&&t.buffer&&t.buffer.constructor===ArrayBuffer});for(var x=function(t,e,n){return function(i){return new D(t,e,t).update(i)[n]()}},_=function(t,e,n){return function(i,r){return new D(t,e,r).update(i)[n]()}},M=function(t,e,n){return function(e,i,r,o){return T["cshake"+t].update(e,i,r,o)[n]()}},S=function(t,e,n){return function(e,i,r,o){return T["kmac"+t].update(e,i,r,o)[n]()}},A=function(t,e,n,i){for(var r=0;r>5,this.byteCount=this.blockCount<<2,this.outputBlocks=n>>5,this.extraBytes=(31&n)>>3;for(var i=0;i<50;++i)this.s[i]=0}function B(t,e,n){D.call(this,t,e,n)}D.prototype.update=function(t){if(this.finalized)throw new Error("finalize already called");var e,n=typeof t;if("string"!==n){if("object"!==n)throw new Error(s);if(null===t)throw new Error(s);if(d&&t.constructor===ArrayBuffer)t=new Uint8Array(t);else if(!(Array.isArray(t)||d&&ArrayBuffer.isView(t)))throw new Error(s);e=!0}for(var i,r,o=this.blocks,a=this.byteCount,l=t.length,c=this.blockCount,u=0,h=this.s;u>2]|=t[u]<>2]|=r<>2]|=(192|r>>6)<>2]|=(128|63&r)<=57344?(o[i>>2]|=(224|r>>12)<>2]|=(128|r>>6&63)<>2]|=(128|63&r)<>2]|=(240|r>>18)<>2]|=(128|r>>12&63)<>2]|=(128|r>>6&63)<>2]|=(128|63&r)<=a){for(this.start=i-a,this.block=o[c],i=0;i>=8);n>0;)r.unshift(n),n=255&(t>>=8),++i;return e?r.push(i):r.unshift(i),this.update(r),r.length},D.prototype.encodeString=function(t){var e,n=typeof t;if("string"!==n){if("object"!==n)throw new Error(s);if(null===t)throw new Error(s);if(d&&t.constructor===ArrayBuffer)t=new Uint8Array(t);else if(!(Array.isArray(t)||d&&ArrayBuffer.isView(t)))throw new Error(s);e=!0}var i=0,r=t.length;if(e)i=r;else for(var o=0;o=57344?i+=3:(a=65536+((1023&a)<<10|1023&t.charCodeAt(++o)),i+=4)}return i+=this.encode(8*i),this.update(t),i},D.prototype.bytepad=function(t,e){for(var n=this.encode(e),i=0;i>2]|=this.padding[3&e],this.lastByteIndex===this.byteCount)for(t[0]=t[n],e=1;e>4&15]+f[15&t]+f[t>>12&15]+f[t>>8&15]+f[t>>20&15]+f[t>>16&15]+f[t>>28&15]+f[t>>24&15];s%e==0&&(N(n),o=0)}return r&&(t=n[o],a+=f[t>>4&15]+f[15&t],r>1&&(a+=f[t>>12&15]+f[t>>8&15]),r>2&&(a+=f[t>>20&15]+f[t>>16&15])),a},D.prototype.arrayBuffer=function(){this.finalize();var t,e=this.blockCount,n=this.s,i=this.outputBlocks,r=this.extraBytes,o=0,s=0,a=this.outputBits>>3;t=r?new ArrayBuffer(i+1<<2):new ArrayBuffer(a);for(var l=new Uint32Array(t);s>8&255,l[t+2]=e>>16&255,l[t+3]=e>>24&255;a%n==0&&N(i)}return o&&(t=a<<2,e=i[s],l[t]=255&e,o>1&&(l[t+1]=e>>8&255),o>2&&(l[t+2]=e>>16&255)),l},B.prototype=new D,B.prototype.finalize=function(){return this.encode(this.outputBits,!0),D.prototype.finalize.call(this)};var N=function(t){var e,n,i,r,o,s,a,l,c,u,h,d,f,p,g,v,b,y,w,x,_,M,S,A,k,C,T,E,R,L,I,O,$,P,D,B,N,F,j,U,z,H,W,V,q,G,Y,K,Z,X,J,Q,tt,et,nt,it,rt,ot,st,at,lt,ct,ut;for(i=0;i<48;i+=2)r=t[0]^t[10]^t[20]^t[30]^t[40],o=t[1]^t[11]^t[21]^t[31]^t[41],s=t[2]^t[12]^t[22]^t[32]^t[42],a=t[3]^t[13]^t[23]^t[33]^t[43],l=t[4]^t[14]^t[24]^t[34]^t[44],c=t[5]^t[15]^t[25]^t[35]^t[45],u=t[6]^t[16]^t[26]^t[36]^t[46],h=t[7]^t[17]^t[27]^t[37]^t[47],e=(d=t[8]^t[18]^t[28]^t[38]^t[48])^(s<<1|a>>>31),n=(f=t[9]^t[19]^t[29]^t[39]^t[49])^(a<<1|s>>>31),t[0]^=e,t[1]^=n,t[10]^=e,t[11]^=n,t[20]^=e,t[21]^=n,t[30]^=e,t[31]^=n,t[40]^=e,t[41]^=n,e=r^(l<<1|c>>>31),n=o^(c<<1|l>>>31),t[2]^=e,t[3]^=n,t[12]^=e,t[13]^=n,t[22]^=e,t[23]^=n,t[32]^=e,t[33]^=n,t[42]^=e,t[43]^=n,e=s^(u<<1|h>>>31),n=a^(h<<1|u>>>31),t[4]^=e,t[5]^=n,t[14]^=e,t[15]^=n,t[24]^=e,t[25]^=n,t[34]^=e,t[35]^=n,t[44]^=e,t[45]^=n,e=l^(d<<1|f>>>31),n=c^(f<<1|d>>>31),t[6]^=e,t[7]^=n,t[16]^=e,t[17]^=n,t[26]^=e,t[27]^=n,t[36]^=e,t[37]^=n,t[46]^=e,t[47]^=n,e=u^(r<<1|o>>>31),n=h^(o<<1|r>>>31),t[8]^=e,t[9]^=n,t[18]^=e,t[19]^=n,t[28]^=e,t[29]^=n,t[38]^=e,t[39]^=n,t[48]^=e,t[49]^=n,p=t[0],g=t[1],G=t[11]<<4|t[10]>>>28,Y=t[10]<<4|t[11]>>>28,E=t[20]<<3|t[21]>>>29,R=t[21]<<3|t[20]>>>29,at=t[31]<<9|t[30]>>>23,lt=t[30]<<9|t[31]>>>23,H=t[40]<<18|t[41]>>>14,W=t[41]<<18|t[40]>>>14,P=t[2]<<1|t[3]>>>31,D=t[3]<<1|t[2]>>>31,v=t[13]<<12|t[12]>>>20,b=t[12]<<12|t[13]>>>20,K=t[22]<<10|t[23]>>>22,Z=t[23]<<10|t[22]>>>22,L=t[33]<<13|t[32]>>>19,I=t[32]<<13|t[33]>>>19,ct=t[42]<<2|t[43]>>>30,ut=t[43]<<2|t[42]>>>30,et=t[5]<<30|t[4]>>>2,nt=t[4]<<30|t[5]>>>2,B=t[14]<<6|t[15]>>>26,N=t[15]<<6|t[14]>>>26,y=t[25]<<11|t[24]>>>21,w=t[24]<<11|t[25]>>>21,X=t[34]<<15|t[35]>>>17,J=t[35]<<15|t[34]>>>17,O=t[45]<<29|t[44]>>>3,$=t[44]<<29|t[45]>>>3,A=t[6]<<28|t[7]>>>4,k=t[7]<<28|t[6]>>>4,it=t[17]<<23|t[16]>>>9,rt=t[16]<<23|t[17]>>>9,F=t[26]<<25|t[27]>>>7,j=t[27]<<25|t[26]>>>7,x=t[36]<<21|t[37]>>>11,_=t[37]<<21|t[36]>>>11,Q=t[47]<<24|t[46]>>>8,tt=t[46]<<24|t[47]>>>8,V=t[8]<<27|t[9]>>>5,q=t[9]<<27|t[8]>>>5,C=t[18]<<20|t[19]>>>12,T=t[19]<<20|t[18]>>>12,ot=t[29]<<7|t[28]>>>25,st=t[28]<<7|t[29]>>>25,U=t[38]<<8|t[39]>>>24,z=t[39]<<8|t[38]>>>24,M=t[48]<<14|t[49]>>>18,S=t[49]<<14|t[48]>>>18,t[0]=p^~v&y,t[1]=g^~b&w,t[10]=A^~C&E,t[11]=k^~T&R,t[20]=P^~B&F,t[21]=D^~N&j,t[30]=V^~G&K,t[31]=q^~Y&Z,t[40]=et^~it&ot,t[41]=nt^~rt&st,t[2]=v^~y&x,t[3]=b^~w&_,t[12]=C^~E&L,t[13]=T^~R&I,t[22]=B^~F&U,t[23]=N^~j&z,t[32]=G^~K&X,t[33]=Y^~Z&J,t[42]=it^~ot&at,t[43]=rt^~st<,t[4]=y^~x&M,t[5]=w^~_&S,t[14]=E^~L&O,t[15]=R^~I&$,t[24]=F^~U&H,t[25]=j^~z&W,t[34]=K^~X&Q,t[35]=Z^~J&tt,t[44]=ot^~at&ct,t[45]=st^~lt&ut,t[6]=x^~M&p,t[7]=_^~S&g,t[16]=L^~O&A,t[17]=I^~$&k,t[26]=U^~H&P,t[27]=z^~W&D,t[36]=X^~Q&V,t[37]=J^~tt&q,t[46]=at^~ct&et,t[47]=lt^~ut&nt,t[8]=M^~p&v,t[9]=S^~g&b,t[18]=O^~A&C,t[19]=$^~k&T,t[28]=H^~P&B,t[29]=W^~D&N,t[38]=Q^~V&G,t[39]=tt^~q&Y,t[48]=ct^~et&it,t[49]=ut^~nt&rt,t[0]^=m[i],t[1]^=m[i+1]};if(u)t.exports=T;else{for(R=0;R32||s256)throw new Error("Invalid uint"+s+" size");if((a=o(e)).bitLength()>s)throw new Error("Supplied uint exceeds width: "+s+" vs "+a.bitLength());if(a.lt(new i(0)))throw new Error("Supplied uint "+a.toString()+" is negative");return s?r.leftPad(a.toString("hex"),s/8*2):a}if(t.startsWith("int")){if(s%8||s<8||s>256)throw new Error("Invalid int"+s+" size");if((a=o(e)).bitLength()>s)throw new Error("Supplied int exceeds width: "+s+" vs "+a.bitLength());return a.lt(new i(0))?a.toTwos(s).toString("hex"):s?r.leftPad(a.toString("hex"),s/8*2):a}throw new Error("Unsupported or invalid type: "+t)},a=function(t){if(Array.isArray(t))throw new Error("Autodetection of array types is not supported.");var e,n,o="";if(t&&"object"==typeof t&&(t.hasOwnProperty("v")||t.hasOwnProperty("t")||t.hasOwnProperty("value")||t.hasOwnProperty("type"))?(e=t.hasOwnProperty("t")?t.t:t.type,o=t.hasOwnProperty("v")?t.v:t.value):(e=r.toHex(t,!0),o=r.toHex(t),e.startsWith("int")||e.startsWith("uint")||(e="bytes")),!e.startsWith("int")&&!e.startsWith("uint")||"string"!=typeof o||/^(-)?0x/i.test(o)||(o=new i(o)),Array.isArray(o)){if((n=function(t){var e=/^\D+\d*\[(\d+)\]$/.exec(t);return e?parseInt(e[1],10):null}(e))&&o.length!==n)throw new Error(e+" is not matching the given array "+JSON.stringify(o));n=o.length}return Array.isArray(o)?o.map((function(t){return s(e,t,n).toString("hex").replace("0x","")})).join(""):s(e,o,n).toString("hex").replace("0x","")};t.exports={soliditySha3:function(){var t=Array.prototype.slice.call(arguments),e=t.map(a);return r.sha3("0x"+e.join(""))},soliditySha3Raw:function(){return r.sha3Raw("0x"+Array.prototype.slice.call(arguments).map(a).join(""))},encodePacked:function(){var t=Array.prototype.slice.call(arguments),e=t.map(a);return"0x"+e.join("").toLowerCase()}}},HTL6:function(t,e,n){t.exports=n.p+"c2ded7fafb683b89f9fb51f37400cfb5.js"},"HUi/":function(t,e,n){t.exports=n.p+"ac87527deeab08356fce5f6f6cc26c54.js"},HV9M:function(t,e,n){t.exports=n.p+"f5292be525fc36a337ce7bfb792070de.js"},HVe3:function(t,e,n){t.exports=n.p+"503f9ce3546623bbbbb78ee6363d7a79.js"},Hf8x:function(t,e,n){t.exports=n.p+"544cdec50f7d5ee773f1023634bc8c59.js"},HkDA:function(t,e,n){t.exports=n.p+"51e6ccd3ea9d7443949b155b113eebd5.js"},I164:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n("Edxu");e.getRandomBytes=function(t){return new Promise((function(e,n){i(t,(function(t,i){t?n(t):e(i)}))}))},e.getRandomBytesSync=function(t){return i(t)}},I9RN:function(t,e,n){t.exports=n.p+"cf0a04afa21ac9ba23a1de0416a03105.js"},ICMv:function(t,e,n){var i=n("bYtY"),r={getMin:function(t){var e=this.option,n=t||null==e.rangeStart?e.min:e.rangeStart;return this.axis&&null!=n&&"dataMin"!==n&&"function"!=typeof n&&!i.eqNaN(n)&&(n=this.axis.scale.parse(n)),n},getMax:function(t){var e=this.option,n=t||null==e.rangeEnd?e.max:e.rangeEnd;return this.axis&&null!=n&&"dataMax"!==n&&"function"!=typeof n&&!i.eqNaN(n)&&(n=this.axis.scale.parse(n)),n},getNeedCrossZero:function(){var t=this.option;return null==t.rangeStart&&null==t.rangeEnd&&!t.scale},getCoordSysModel:i.noop,setRange:function(t,e){this.option.rangeStart=t,this.option.rangeEnd=e},resetRange:function(){this.option.rangeStart=this.option.rangeEnd=null}};t.exports=r},IDmD:function(t,e,n){var i=n("bYtY"),r={};function o(){this._coordinateSystems=[]}o.prototype={constructor:o,create:function(t,e){var n=[];i.each(r,(function(i,r){var o=i.create(t,e);n=n.concat(o||[])})),this._coordinateSystems=n},update:function(t,e){i.each(this._coordinateSystems,(function(n){n.update&&n.update(t,e)}))},getCoordinateSystems:function(){return this._coordinateSystems.slice()}},o.register=function(t,e){r[t]=e},o.get=function(t){return r[t]};var s=o;t.exports=s},IMiH:function(t,e,n){var i=n("Sj9i"),r=n("QBsz"),o=n("4mN7"),s=n("mFDi"),a=n("LPTA").devicePixelRatio,l={M:1,L:2,C:3,Q:4,A:5,Z:6,R:7},c=[],u=[],h=[],d=[],f=Math.min,p=Math.max,g=Math.cos,m=Math.sin,v=Math.sqrt,b=Math.abs,y="undefined"!=typeof Float32Array,w=function(t){this._saveData=!t,this._saveData&&(this.data=[]),this._ctx=null};w.prototype={constructor:w,_xi:0,_yi:0,_x0:0,_y0:0,_ux:0,_uy:0,_len:0,_lineDash:null,_dashOffset:0,_dashIdx:0,_dashSum:0,setScale:function(t,e,n){n=n||0,this._ux=b(n/a/t)||0,this._uy=b(n/a/e)||0},getContext:function(){return this._ctx},beginPath:function(t){return this._ctx=t,t&&t.beginPath(),t&&(this.dpr=t.dpr),this._saveData&&(this._len=0),this._lineDash&&(this._lineDash=null,this._dashOffset=0),this},moveTo:function(t,e){return this.addData(l.M,t,e),this._ctx&&this._ctx.moveTo(t,e),this._x0=t,this._y0=e,this._xi=t,this._yi=e,this},lineTo:function(t,e){var n=b(t-this._xi)>this._ux||b(e-this._yi)>this._uy||this._len<5;return this.addData(l.L,t,e),this._ctx&&n&&(this._needsDash()?this._dashedLineTo(t,e):this._ctx.lineTo(t,e)),n&&(this._xi=t,this._yi=e),this},bezierCurveTo:function(t,e,n,i,r,o){return this.addData(l.C,t,e,n,i,r,o),this._ctx&&(this._needsDash()?this._dashedBezierTo(t,e,n,i,r,o):this._ctx.bezierCurveTo(t,e,n,i,r,o)),this._xi=r,this._yi=o,this},quadraticCurveTo:function(t,e,n,i){return this.addData(l.Q,t,e,n,i),this._ctx&&(this._needsDash()?this._dashedQuadraticTo(t,e,n,i):this._ctx.quadraticCurveTo(t,e,n,i)),this._xi=n,this._yi=i,this},arc:function(t,e,n,i,r,o){return this.addData(l.A,t,e,n,n,i,r-i,0,o?0:1),this._ctx&&this._ctx.arc(t,e,n,i,r,o),this._xi=g(r)*n+t,this._yi=m(r)*n+e,this},arcTo:function(t,e,n,i,r){return this._ctx&&this._ctx.arcTo(t,e,n,i,r),this},rect:function(t,e,n,i){return this._ctx&&this._ctx.rect(t,e,n,i),this.addData(l.R,t,e,n,i),this},closePath:function(){this.addData(l.Z);var t=this._ctx,e=this._x0,n=this._y0;return t&&(this._needsDash()&&this._dashedLineTo(e,n),t.closePath()),this._xi=e,this._yi=n,this},fill:function(t){t&&t.fill(),this.toStatic()},stroke:function(t){t&&t.stroke(),this.toStatic()},setLineDash:function(t){if(t instanceof Array){this._lineDash=t,this._dashIdx=0;for(var e=0,n=0;ne.length&&(this._expandData(),e=this.data);for(var n=0;n0&&g<=t||u<0&&g>=t||0===u&&(h>0&&m<=e||h<0&&m>=e);)g+=u*(n=s[i=this._dashIdx]),m+=h*n,this._dashIdx=(i+1)%b,u>0&&gl||h>0&&mc||a[i%2?"moveTo":"lineTo"](u>=0?f(g,t):p(g,t),h>=0?f(m,e):p(m,e));u=g-t,h=m-e,this._dashOffset=-v(u*u+h*h)},_dashedBezierTo:function(t,e,n,r,o,s){var a,l,c,u,h,d=this._dashSum,f=this._dashOffset,p=this._lineDash,g=this._ctx,m=this._xi,b=this._yi,y=i.cubicAt,w=0,x=this._dashIdx,_=p.length,M=0;for(f<0&&(f=d+f),f%=d,a=0;a<1;a+=.1)l=y(m,t,n,o,a+.1)-y(m,t,n,o,a),c=y(b,e,r,s,a+.1)-y(b,e,r,s,a),w+=v(l*l+c*c);for(;x<_&&!((M+=p[x])>f);x++);for(a=(M-f)/w;a<=1;)u=y(m,t,n,o,a),h=y(b,e,r,s,a),x%2?g.moveTo(u,h):g.lineTo(u,h),a+=p[x]/w,x=(x+1)%_;x%2!=0&&g.lineTo(o,s),l=o-u,c=s-h,this._dashOffset=-v(l*l+c*c)},_dashedQuadraticTo:function(t,e,n,i){var r=n,o=i;n=(n+2*t)/3,i=(i+2*e)/3,t=(this._xi+2*t)/3,e=(this._yi+2*e)/3,this._dashedBezierTo(t,e,n,i,r,o)},toStatic:function(){var t=this.data;t instanceof Array&&(t.length=this._len,y&&(this.data=new Float32Array(t)))},getBoundingRect:function(){c[0]=c[1]=h[0]=h[1]=Number.MAX_VALUE,u[0]=u[1]=d[0]=d[1]=-Number.MAX_VALUE;for(var t=this.data,e=0,n=0,i=0,a=0,f=0;fc||b(s-r)>u||d===h-1)&&(t.lineTo(o,s),i=o,r=s);break;case l.C:t.bezierCurveTo(a[d++],a[d++],a[d++],a[d++],a[d++],a[d++]),i=a[d-2],r=a[d-1];break;case l.Q:t.quadraticCurveTo(a[d++],a[d++],a[d++],a[d++]),i=a[d-2],r=a[d-1];break;case l.A:var p=a[d++],v=a[d++],y=a[d++],w=a[d++],x=a[d++],_=a[d++],M=a[d++],S=a[d++],A=y>w?y:w,k=y>w?1:y/w,C=y>w?w/y:1,T=x+_;Math.abs(y-w)>.001?(t.translate(p,v),t.rotate(M),t.scale(k,C),t.arc(0,0,A,x,T,1-S),t.scale(1/k,1/C),t.rotate(-M),t.translate(-p,-v)):t.arc(p,v,A,x,T,1-S),1===d&&(e=g(x)*y+p,n=m(x)*w+v),i=g(T)*y+p,r=m(T)*w+v;break;case l.R:e=i=a[d],n=r=a[d+1],t.rect(a[d++],a[d++],a[d++],a[d++]);break;case l.Z:t.closePath(),i=e,r=n}}}},w.CMD=l;var x=w;t.exports=x},ITfd:function(t,e,n){"use strict";var i=n("w8CP"),r=n("2j6C");function o(t,e,n){if(!(this instanceof o))return new o(t,e,n);this.Hash=t,this.blockSize=t.blockSize/8,this.outSize=t.outSize/8,this.inner=null,this.outer=null,this._init(i.toArray(e,n))}t.exports=o,o.prototype._init=function(t){t.length>this.blockSize&&(t=(new this.Hash).update(t).digest()),r(t.length<=this.blockSize);for(var e=t.length;en&&(a=n);var l=f.length,h=function(t,e,n,i){for(;n>>1;t[r][1]=e.status}function r(t){try{t.dispatchEvent(new MouseEvent("click"))}catch(n){var e=document.createEvent("MouseEvents");e.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),t.dispatchEvent(e)}}var o="object"==typeof window&&window.window===window?window:"object"==typeof self&&self.self===self?self:"object"==typeof n&&n.global===n?n:void 0,s=o.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),a=o.saveAs||("object"!=typeof window||window!==o?function(){}:"download"in HTMLAnchorElement.prototype&&!s?function(t,n,s){var a=o.URL||o.webkitURL,l=document.createElement("a");n=n||t.name||"download",l.download=n,l.rel="noopener","string"==typeof t?(l.href=t,l.origin===location.origin?r(l):i(l.href)?e(t,n,s):r(l,l.target="_blank")):(l.href=a.createObjectURL(t),setTimeout((function(){a.revokeObjectURL(l.href)}),4e4),setTimeout((function(){r(l)}),0))}:"msSaveOrOpenBlob"in navigator?function(t,n,o){if(n=n||t.name||"download","string"!=typeof t)navigator.msSaveOrOpenBlob(function(t,e){return void 0===e?e={autoBom:!1}:"object"!=typeof e&&(console.warn("Deprecated: Expected third argument to be a object"),e={autoBom:!e}),e.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(t.type)?new Blob(["\ufeff",t],{type:t.type}):t}(t,o),n);else if(i(t))e(t,n,o);else{var s=document.createElement("a");s.href=t,s.target="_blank",setTimeout((function(){r(s)}))}}:function(t,n,i,r){if((r=r||open("","_blank"))&&(r.document.title=r.document.body.innerText="downloading..."),"string"==typeof t)return e(t,n,i);var a="application/octet-stream"===t.type,l=/constructor/i.test(o.HTMLElement)||o.safari,c=/CriOS\/[\d]+/.test(navigator.userAgent);if((c||a&&l||s)&&"undefined"!=typeof FileReader){var u=new FileReader;u.onloadend=function(){var t=u.result;t=c?t:t.replace(/^data:[^;]*;/,"data:attachment/file;"),r?r.location.href=t:location=t,r=null},u.readAsDataURL(t)}else{var h=o.URL||o.webkitURL,d=h.createObjectURL(t);r?r.location=d:location.href=d,r=null,setTimeout((function(){h.revokeObjectURL(d)}),4e4)}});o.saveAs=a.saveAs=a,t.exports=a})?i.apply(e,r):i)||(t.exports=o)}).call(this,n("yLpj"))},Icgu:function(t,e,n){t.exports=n.p+"039af9192b9bb277966ceb4e4ce29c41.js"},"Ie/w":function(t,e,n){(function(e){var i=n("OZ/i"),r=n("prZD"),o=n("8d11"),s=n("W2YF"),a=n("FFXU"),l=function(t){return i.isBN(t)},c=function(t){return t&&t.constructor&&"BigNumber"===t.constructor.name},u=function(t){try{return r.apply(null,arguments)}catch(e){throw new Error(e+' Given value: "'+t+'"')}},h=function(t){return!!/^(0x)?[0-9a-f]{40}$/i.test(t)&&(!(!/^(0x|0X)?[0-9a-f]{40}$/.test(t)&&!/^(0x|0X)?[0-9A-F]{40}$/.test(t))||d(t))},d=function(t){t=t.replace(/^0x/i,"");for(var e=w(t.toLowerCase()).replace(/^0x/i,""),n=0;n<40;n++)if(parseInt(e[n],16)>7&&t[n].toUpperCase()!==t[n]||parseInt(e[n],16)<=7&&t[n].toLowerCase()!==t[n])return!1;return!0},f=function(t){var e="";t=(t=(t=(t=(t=o.encode(t)).replace(/^(?:\u0000)*/,"")).split("").reverse().join("")).replace(/^(?:\u0000)*/,"")).split("").reverse().join("");for(var n=0;n>>4).toString(16)),e.push((15&t[n]).toString(16));return"0x"+e.join("")},isHex:b,isHexStrict:v,stripHexPrefix:function(t){return 0!==t&&b(t)?t.replace(/^(-)?0x/i,"$1"):t},leftPad:function(t,e,n){var i=/^0x/i.test(t)||"number"==typeof t,r=e-(t=t.toString(16).replace(/^0x/i,"")).length+1>=0?e-t.length+1:0;return(i?"0x":"")+new Array(r).join(n||"0")+t},rightPad:function(t,e,n){var i=/^0x/i.test(t)||"number"==typeof t,r=e-(t=t.toString(16).replace(/^0x/i,"")).length+1>=0?e-t.length+1:0;return(i?"0x":"")+t+new Array(r).join(n||"0")},toTwosComplement:function(t){return"0x"+u(t).toTwos(256).toString(16,64)},sha3:w,sha3Raw:function(t){return null===(t=w(t))?y:t},toNumber:function(t){return"number"==typeof t?t:p(m(t))}}}).call(this,n("tjlA").Buffer)},IhPl:function(t,e,n){"use strict";var i=this&&this.__awaiter||function(t,e,n,i){return new(n||(n=Promise))((function(r,o){function s(t){try{l(i.next(t))}catch(t){o(t)}}function a(t){try{l(i.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?r(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(s,a)}l((i=i.apply(t,e||[])).next())}))},r=this&&this.__generator||function(t,e){var n,i,r,o,s={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return o={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(o){return function(a){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,i&&(r=2&o[0]?i.return:o[0]?i.throw||((r=i.return)&&r.call(i),0):i.next)&&!(r=r.call(i,o[1])).done)return r;switch(i=0,r&&(o=[2&o[0],r.value]),o[0]){case 0:case 1:r=o;break;case 4:return s.label++,{value:o[1],done:!1};case 5:s.label++,i=o[1],o=[0];continue;case 7:o=s.ops.pop(),s.trys.pop();continue;default:if(!(r=s.trys,(r=r.length>0&&r[r.length-1])||6!==o[0]&&2!==o[0])){s=0;continue}if(3===o[0]&&(!r||o[1]>r[0]&&o[1]=11),domSupported:"undefined"!=typeof document}}(navigator.userAgent);t.exports=n},IwbS:function(t,e,n){var i=n("bYtY"),r=n("NC18"),o=n("Qe9p"),s=n("Fofx"),a=n("QBsz"),l=n("y+Vt"),c=n("DN4a"),u=n("Dagg");e.Image=u;var h=n("4fz+");e.Group=h;var d=n("dqUG");e.Text=d;var f=n("2fw6");e.Circle=f;var p=n("SqI9");e.Sector=p;var g=n("RXMa");e.Ring=g;var m=n("h7HQ");e.Polygon=m;var v=n("1Jh7");e.Polyline=v;var b=n("x6Kt");e.Rect=b;var y=n("yxFR");e.Line=y;var w=n("rA99");e.BezierCurve=w;var x=n("jTL6");e.Arc=x;var _=n("1MYJ");e.CompoundPath=_;var M=n("SKnc");e.LinearGradient=M;var S=n("3e3G");e.RadialGradient=S;var A=n("mFDi");e.BoundingRect=A;var k=n("OS9S");e.IncrementalDisplayable=k;var C=n("nPnh"),T=Math.max,E=Math.min,R={},L=1,I={},O={};function $(t,e){O[t]=e}function P(t,e,n,i){var o=r.createFromString(t,e);return n&&("center"===i&&(n=D(n,o.getBoundingRect())),N(o,n)),o}function D(t,e){var n,i=e.width/e.height,r=t.height*i;return n=r<=t.width?t.height:(r=t.width)/i,{x:t.x+t.width/2-r/2,y:t.y+t.height/2-n/2,width:r,height:n}}var B=r.mergePath;function N(t,e){if(t.applyTransform){var n=t.getBoundingRect().calculateTransform(e);t.applyTransform(n)}}var F=C.subPixelOptimize;function j(t){return null!=t&&"none"!==t}var U=i.createHashMap(),z=0;function H(t){var e=t.__hoverStl;if(e&&!t.__highlighted){var n=t.__zr,i=t.useHoverLayer&&n&&"canvas"===n.painter.type;if(t.__highlighted=i?"layer":"plain",!(t.isGroup||!n&&t.useHoverLayer)){var r=t,o=t.style;i&&(o=(r=n.addHover(t)).style),ot(o),i||function(t){if(t.__hoverStlDirty){t.__hoverStlDirty=!1;var e=t.__hoverStl;if(e){var n=t.__cachedNormalStl={};t.__cachedNormalZ2=t.z2;var i=t.style;for(var r in e)null!=e[r]&&(n[r]=i[r]);n.fill=i.fill,n.stroke=i.stroke}else t.__cachedNormalStl=t.__cachedNormalZ2=null}}(r),o.extendFrom(e),W(o,e,"fill"),W(o,e,"stroke"),rt(o),i||(t.dirty(!1),t.z2+=1)}}}function W(t,e,n){!j(e[n])&&j(t[n])&&(t[n]=function(t){if("string"!=typeof t)return t;var e=U.get(t);return e||(e=o.lift(t,-.1),z<1e4&&(U.set(t,e),z++)),e}(t[n]))}function V(t){var e=t.__highlighted;if(e&&(t.__highlighted=!1,!t.isGroup))if("layer"===e)t.__zr&&t.__zr.removeHover(t);else{var n=t.style,i=t.__cachedNormalStl;i&&(ot(n),t.setStyle(i),rt(n));var r=t.__cachedNormalZ2;null!=r&&t.z2-r==1&&(t.z2=r)}}function q(t,e,n){var i,r="normal",o="normal";t.__highlighted&&(r="emphasis",i=!0),e(t,n),t.__highlighted&&(o="emphasis",i=!0),t.isGroup&&t.traverse((function(t){!t.isGroup&&e(t,n)})),i&&t.__highDownOnUpdate&&t.__highDownOnUpdate(r,o)}function G(t,e){e=t.__hoverStl=!1!==e&&(t.hoverStyle||e||{}),t.__hoverStlDirty=!0,t.__highlighted&&(t.__cachedNormalStl=null,V(t),H(t))}function Y(t){!J(this,t)&&!this.__highByOuter&&q(this,H)}function K(t){!J(this,t)&&!this.__highByOuter&&q(this,V)}function Z(t){this.__highByOuter|=1<<(t||0),q(this,H)}function X(t){!(this.__highByOuter&=~(1<<(t||0)))&&q(this,V)}function J(t,e){return t.__highDownSilentOnTouch&&e.zrByTouch}function Q(t,e){var n=!1===e;if(t.__highDownSilentOnTouch=t.highDownSilentOnTouch,t.__highDownOnUpdate=t.highDownOnUpdate,!n||t.__highDownDispatcher){var i=n?"off":"on";t[i]("mouseover",Y)[i]("mouseout",K),t[i]("emphasis",Z)[i]("normal",X),t.__highByOuter=t.__highByOuter||0,t.__highDownDispatcher=!n}}function tt(t,e,n,r,o){return et(t,e,r,o),n&&i.extend(t,n),t}function et(t,e,n,r){if((n=n||R).isRectText){var o;n.getTextPosition?o=n.getTextPosition(e,r):"outside"===(o=e.getShallow("position")||(r?null:"inside"))&&(o="top"),t.textPosition=o,t.textOffset=e.getShallow("offset");var s=e.getShallow("rotate");null!=s&&(s*=Math.PI/180),t.textRotation=s,t.textDistance=i.retrieve2(e.getShallow("distance"),r?null:5)}var a,l=e.ecModel,c=l&&l.option.textStyle,u=function(t){var e;for(;t&&t!==t.ecModel;){var n=(t.option||R).rich;if(n)for(var i in e=e||{},n)n.hasOwnProperty(i)&&(e[i]=1);t=t.parentModel}return e}(e);if(u)for(var h in a={},u)if(u.hasOwnProperty(h)){var d=e.getModel(["rich",h]);nt(a[h]={},d,c,n,r)}return t.rich=a,nt(t,e,c,n,r,!0),n.forceRich&&!n.textStyle&&(n.textStyle={}),t}function nt(t,e,n,r,o,s){n=!o&&n||R,t.textFill=it(e.getShallow("color"),r)||n.color,t.textStroke=it(e.getShallow("textBorderColor"),r)||n.textBorderColor,t.textStrokeWidth=i.retrieve2(e.getShallow("textBorderWidth"),n.textBorderWidth),o||(s&&(t.insideRollbackOpt=r,rt(t)),null==t.textFill&&(t.textFill=r.autoColor)),t.fontStyle=e.getShallow("fontStyle")||n.fontStyle,t.fontWeight=e.getShallow("fontWeight")||n.fontWeight,t.fontSize=e.getShallow("fontSize")||n.fontSize,t.fontFamily=e.getShallow("fontFamily")||n.fontFamily,t.textAlign=e.getShallow("align"),t.textVerticalAlign=e.getShallow("verticalAlign")||e.getShallow("baseline"),t.textLineHeight=e.getShallow("lineHeight"),t.textWidth=e.getShallow("width"),t.textHeight=e.getShallow("height"),t.textTag=e.getShallow("tag"),s&&r.disableBox||(t.textBackgroundColor=it(e.getShallow("backgroundColor"),r),t.textPadding=e.getShallow("padding"),t.textBorderColor=it(e.getShallow("borderColor"),r),t.textBorderWidth=e.getShallow("borderWidth"),t.textBorderRadius=e.getShallow("borderRadius"),t.textBoxShadowColor=e.getShallow("shadowColor"),t.textBoxShadowBlur=e.getShallow("shadowBlur"),t.textBoxShadowOffsetX=e.getShallow("shadowOffsetX"),t.textBoxShadowOffsetY=e.getShallow("shadowOffsetY")),t.textShadowColor=e.getShallow("textShadowColor")||n.textShadowColor,t.textShadowBlur=e.getShallow("textShadowBlur")||n.textShadowBlur,t.textShadowOffsetX=e.getShallow("textShadowOffsetX")||n.textShadowOffsetX,t.textShadowOffsetY=e.getShallow("textShadowOffsetY")||n.textShadowOffsetY}function it(t,e){return"auto"!==t?t:e&&e.autoColor?e.autoColor:null}function rt(t){var e,n=t.textPosition,i=t.insideRollbackOpt;if(i&&null==t.textFill){var r=i.autoColor,o=i.isRectText,s=i.useInsideStyle,a=!1!==s&&(!0===s||o&&n&&"string"==typeof n&&n.indexOf("inside")>=0),l=!a&&null!=r;(a||l)&&(e={textFill:t.textFill,textStroke:t.textStroke,textStrokeWidth:t.textStrokeWidth}),a&&(t.textFill="#fff",null==t.textStroke&&(t.textStroke=r,null==t.textStrokeWidth&&(t.textStrokeWidth=2))),l&&(t.textFill=r)}t.insideRollback=e}function ot(t){var e=t.insideRollback;e&&(t.textFill=e.textFill,t.textStroke=e.textStroke,t.textStrokeWidth=e.textStrokeWidth,t.insideRollback=null)}function st(t,e,n,i,r,o){if("function"==typeof r&&(o=r,r=null),i&&i.isAnimationEnabled()){var s=t?"Update":"",a=i.getShallow("animationDuration"+s),l=i.getShallow("animationEasing"+s),c=i.getShallow("animationDelay"+s);"function"==typeof c&&(c=c(r,i.getAnimationDelayParams?i.getAnimationDelayParams(e,r):null)),"function"==typeof a&&(a=a(r)),a>0?e.animateTo(n,a,c||0,l,o,!!o):(e.stopAnimation(),e.attr(n),o&&o())}else e.stopAnimation(),e.attr(n),o&&o()}function at(t,e,n,i,r){st(!0,t,e,n,i,r)}function lt(t,e,n){return e&&!i.isArrayLike(e)&&(e=c.getLocalTransform(e)),n&&(e=s.invert([],e)),a.applyTransform([],t,e)}function ct(t,e,n,i,r,o,s,a){var l,c=n-t,u=i-e,h=s-r,d=a-o,f=ut(h,d,c,u);if((l=f)<=1e-6&&l>=-1e-6)return!1;var p=t-r,g=e-o,m=ut(p,g,c,u)/f;if(m<0||m>1)return!1;var v=ut(p,g,h,d)/f;return!(v<0||v>1)}function ut(t,e,n,i){return t*i-n*e}$("circle",f),$("sector",p),$("ring",g),$("polygon",m),$("polyline",v),$("rect",b),$("line",y),$("bezierCurve",w),$("arc",x),e.Z2_EMPHASIS_LIFT=1,e.CACHED_LABEL_STYLE_PROPERTIES={color:"textFill",textBorderColor:"textStroke",textBorderWidth:"textStrokeWidth"},e.extendShape=function(t){return l.extend(t)},e.extendPath=function(t,e){return r.extendFromString(t,e)},e.registerShape=$,e.getShapeClass=function(t){if(O.hasOwnProperty(t))return O[t]},e.makePath=P,e.makeImage=function(t,e,n){var i=new u({style:{image:t,x:e.x,y:e.y,width:e.width,height:e.height},onload:function(t){if("center"===n){var r={width:t.width,height:t.height};i.setStyle(D(e,r))}}});return i},e.mergePath=B,e.resizePath=N,e.subPixelOptimizeLine=function(t){return C.subPixelOptimizeLine(t.shape,t.shape,t.style),t},e.subPixelOptimizeRect=function(t){return C.subPixelOptimizeRect(t.shape,t.shape,t.style),t},e.subPixelOptimize=F,e.setElementHoverStyle=G,e.setHoverStyle=function(t,e){Q(t,!0),q(t,G,e)},e.setAsHighDownDispatcher=Q,e.isHighDownDispatcher=function(t){return!(!t||!t.__highDownDispatcher)},e.getHighlightDigit=function(t){var e=I[t];return null==e&&L<=32&&(e=I[t]=L++),e},e.setLabelStyle=function(t,e,n,r,o,s,a){var l,c=(o=o||R).labelFetcher,u=o.labelDataIndex,h=o.labelDimIndex,d=o.labelProp,f=n.getShallow("show"),p=r.getShallow("show");(f||p)&&(c&&(l=c.getFormattedLabel(u,"normal",null,h,d)),null==l&&(l=i.isFunction(o.defaultText)?o.defaultText(u,o):o.defaultText));var g=f?l:null,m=p?i.retrieve2(c?c.getFormattedLabel(u,"emphasis",null,h,d):null,l):null;null==g&&null==m||(tt(t,n,s,o),tt(e,r,a,o,!0)),t.text=g,e.text=m},e.modifyLabelStyle=function(t,e,n){var r=t.style;e&&(ot(r),t.setStyle(e),rt(r)),r=t.__hoverStl,n&&r&&(ot(r),i.extend(r,n),rt(r))},e.setTextStyle=tt,e.setText=function(t,e,n){var i,r={isRectText:!0};!1===n?i=!0:r.autoColor=n,et(t,e,r,i)},e.getFont=function(t,e){var n=e&&e.getModel("textStyle");return i.trim([t.fontStyle||n&&n.getShallow("fontStyle")||"",t.fontWeight||n&&n.getShallow("fontWeight")||"",(t.fontSize||n&&n.getShallow("fontSize")||12)+"px",t.fontFamily||n&&n.getShallow("fontFamily")||"sans-serif"].join(" "))},e.updateProps=at,e.initProps=function(t,e,n,i,r){st(!1,t,e,n,i,r)},e.getTransform=function(t,e){for(var n=s.identity([]);t&&t!==e;)s.mul(n,t.getLocalTransform(),n),t=t.parent;return n},e.applyTransform=lt,e.transformDirection=function(t,e,n){var i=0===e[4]||0===e[5]||0===e[0]?1:Math.abs(2*e[4]/e[0]),r=0===e[4]||0===e[5]||0===e[2]?1:Math.abs(2*e[4]/e[2]),o=["left"===t?-i:"right"===t?i:0,"top"===t?-r:"bottom"===t?r:0];return o=lt(o,e,n),Math.abs(o[0])>Math.abs(o[1])?o[0]>0?"right":"left":o[1]>0?"bottom":"top"},e.groupTransition=function(t,e,n,r){if(t&&e){var o,s=(o={},t.traverse((function(t){!t.isGroup&&t.anid&&(o[t.anid]=t)})),o);e.traverse((function(t){if(!t.isGroup&&t.anid){var e=s[t.anid];if(e){var i=l(t);t.attr(l(e)),at(t,i,n,t.dataIndex)}}}))}function l(t){var e={position:a.clone(t.position),rotation:t.rotation};return t.shape&&(e.shape=i.extend({},t.shape)),e}},e.clipPointsByRect=function(t,e){return i.map(t,(function(t){var n=t[0];n=T(n,e.x),n=E(n,e.x+e.width);var i=t[1];return i=T(i,e.y),[n,i=E(i,e.y+e.height)]}))},e.clipRectByRect=function(t,e){var n=T(t.x,e.x),i=E(t.x+t.width,e.x+e.width),r=T(t.y,e.y),o=E(t.y+t.height,e.y+e.height);if(i>=n&&o>=r)return{x:n,y:r,width:i-n,height:o-r}},e.createIcon=function(t,e,n){var r=(e=i.extend({rectHover:!0},e)).style={strokeNoScale:!0};if(n=n||{x:-1,y:-1,width:2,height:2},t)return 0===t.indexOf("image://")?(r.image=t.slice(8),i.defaults(r,n),new u(e)):P(t.replace("path://",""),e,n,"center")},e.linePolygonIntersect=function(t,e,n,i,r){for(var o=0,s=r[r.length-1];o0&&e%v)m+=g;else{var n=null==t||isNaN(t)||""===t,i=n?0:d(t,a,u,!0);n&&!c&&e?(f.push([f[f.length-1][0],0]),p.push([p[p.length-1][0],0])):!n&&c&&(f.push([m,0]),p.push([m,0])),f.push([m,i]),p.push([m,i]),m+=g,c=n}}));var b=this.dataZoomModel;this._displayables.barGroup.add(new o.Polygon({shape:{points:f},style:i.defaults({fill:b.get("dataBackgroundColor")},b.getModel("dataBackground.areaStyle").getAreaStyle()),silent:!0,z2:-20})),this._displayables.barGroup.add(new o.Polyline({shape:{points:p},style:b.getModel("dataBackground.lineStyle").getLineStyle(),silent:!0,z2:-19}))}}},_prepareDataShadowInfo:function(){var t=this.dataZoomModel,e=t.get("showDataShadow");if(!1!==e){var n,r=this.ecModel;return t.eachTargetAxis((function(o,s){var a=t.getAxisProxy(o.name,s).getTargetSeriesModels();i.each(a,(function(t){if(!(n||!0!==e&&i.indexOf(m,t.get("type"))<0)){var a,l=r.getComponent(o.axis,s).axis,c={x:"y",y:"x",radius:"angle",angle:"radius"}[o.name],u=t.coordinateSystem;null!=c&&u.getOtherAxis&&(a=u.getOtherAxis(l).inverse),c=t.getData().mapDimension(c),n={thisAxis:l,series:t,thisDim:o.name,otherDim:c,otherAxisInverse:a}}}),this)}),this),n}},_renderHandle:function(){var t=this._displayables,e=t.handles=[],n=t.handleLabels=[],i=this._displayables.barGroup,r=this._size,s=this.dataZoomModel;i.add(t.filler=new h({draggable:!0,cursor:b(this._orient),drift:p(this._onDragMove,this,"all"),ondragstart:p(this._showDataInfo,this,!0),ondragend:p(this._onDragEnd,this),onmouseover:p(this._showDataInfo,this,!0),onmouseout:p(this._showDataInfo,this,!1),style:{fill:s.get("fillerColor"),textPosition:"inside"}})),i.add(new h({silent:!0,subPixelOptimize:!0,shape:{x:0,y:0,width:r[0],height:r[1]},style:{stroke:s.get("dataBackgroundColor")||s.get("borderColor"),lineWidth:1,fill:"rgba(0,0,0,0)"}})),g([0,1],(function(t){var r=o.createIcon(s.get("handleIcon"),{cursor:b(this._orient),draggable:!0,drift:p(this._onDragMove,this,t),ondragend:p(this._onDragEnd,this),onmouseover:p(this._showDataInfo,this,!0),onmouseout:p(this._showDataInfo,this,!1)},{x:-1,y:0,width:2,height:2}),a=r.getBoundingRect();this._handleHeight=l.parsePercent(s.get("handleSize"),this._size[1]),this._handleWidth=a.width/a.height*this._handleHeight,r.setStyle(s.getModel("handleStyle").getItemStyle());var c=s.get("handleColor");null!=c&&(r.style.fill=c),i.add(e[t]=r);var u=s.textStyleModel;this.group.add(n[t]=new o.Text({silent:!0,invisible:!0,style:{x:0,y:0,text:"",textVerticalAlign:"middle",textAlign:"center",textFill:u.getTextColor(),textFont:u.getFont()},z2:10}))}),this)},_resetInterval:function(){var t=this._range=this.dataZoomModel.getPercentRange(),e=this._getViewExtent();this._handleEnds=[d(t[0],[0,100],e,!0),d(t[1],[0,100],e,!0)]},_updateInterval:function(t,e){var n=this.dataZoomModel,i=this._handleEnds,r=this._getViewExtent(),o=n.findRepresentativeAxisProxy().getMinMaxSpan(),s=[0,100];u(e,i,r,n.get("zoomLock")?"all":t,null!=o.minSpan?d(o.minSpan,s,r,!0):null,null!=o.maxSpan?d(o.maxSpan,s,r,!0):null);var a=this._range,l=this._range=f([d(i[0],r,s,!0),d(i[1],r,s,!0)]);return!a||a[0]!==l[0]||a[1]!==l[1]},_updateView:function(t){var e=this._displayables,n=this._handleEnds,i=f(n.slice()),r=this._size;g([0,1],(function(t){var i=e.handles[t],o=this._handleHeight;i.attr({scale:[o/2,o/2],position:[n[t],r[1]/2-o/2]})}),this),e.filler.setShape({x:i[0],y:0,width:i[1]-i[0],height:r[1]}),this._updateDataInfo(t)},_updateDataInfo:function(t){var e=this.dataZoomModel,n=this._displayables,i=n.handleLabels,r=this._orient,s=["",""];if(e.get("showDetail")){var a=e.findRepresentativeAxisProxy();if(a){var l=a.getAxisModel().axis,c=this._range,u=t?a.calculateDataWindow({start:c[0],end:c[1]}).valueWindow:a.getDataValueWindow();s=[this._formatLabel(u[0],l),this._formatLabel(u[1],l)]}}var h=f(this._handleEnds.slice());function d(t){var e=o.getTransform(n.handles[t].parent,this.group),a=o.transformDirection(0===t?"right":"left",e),l=this._handleWidth/2+5,c=o.applyTransform([h[t]+(0===t?-l:l),this._size[1]/2],e);i[t].setStyle({x:c[0],y:c[1],textVerticalAlign:"horizontal"===r?"middle":a,textAlign:"horizontal"===r?a:"center",text:s[t]})}d.call(this,0),d.call(this,1)},_formatLabel:function(t,e){var n=this.dataZoomModel,r=n.get("labelFormatter"),o=n.get("labelPrecision");null!=o&&"auto"!==o||(o=e.getPixelPrecision());var s=null==t||isNaN(t)?"":"category"===e.type||"time"===e.type?e.scale.getLabel(Math.round(t)):t.toFixed(Math.min(o,20));return i.isFunction(r)?r(t,s):i.isString(r)?r.replace("{value}",s):s},_showDataInfo:function(t){t=this._dragging||t;var e=this._displayables.handleLabels;e[0].attr("invisible",!t),e[1].attr("invisible",!t)},_onDragMove:function(t,e,n,i){this._dragging=!0,r.stop(i.event);var s=this._displayables.barGroup.getLocalTransform(),a=o.applyTransform([e,n],s,!0),l=this._updateInterval(t,a[0]),c=this.dataZoomModel.get("realtime");this._updateView(!c),l&&c&&this._dispatchZoomAction()},_onDragEnd:function(){this._dragging=!1,this._showDataInfo(!1),!this.dataZoomModel.get("realtime")&&this._dispatchZoomAction()},_onClickPanelClick:function(t){var e=this._size,n=this._displayables.barGroup.transformCoordToLocal(t.offsetX,t.offsetY);if(!(n[0]<0||n[0]>e[0]||n[1]<0||n[1]>e[1])){var i=this._handleEnds,r=(i[0]+i[1])/2,o=this._updateInterval("all",n[0]-r);this._updateView(),o&&this._dispatchZoomAction()}},_dispatchZoomAction:function(){var t=this._range;this.api.dispatchAction({type:"dataZoom",from:this.uid,dataZoomId:this.dataZoomModel.id,start:t[0],end:t[1]})},_findCoordRect:function(){var t;if(g(this.getTargetCoordInfo(),(function(e){if(!t&&e.length){var n=e[0].model.coordinateSystem;t=n.getRect&&n.getRect()}})),!t){var e=this.api.getWidth(),n=this.api.getHeight();t={x:.2*e,y:.2*n,width:.6*e,height:.6*n}}return t}});function b(t){return"vertical"===t?"ns-resize":"ew-resize"}var y=v;t.exports=y},IzB8:function(t,e,n){t.exports=n("Oomr")(n("RnPE"))},IzUq:function(t,e){var n={}.toString;t.exports=Array.isArray||function(t){return"[object Array]"==n.call(t)}},J5l2:function(t,e,n){t.exports=n.p+"64f93b6b093bba4147485023263cf65f.js"},J66h:function(t,e,n){(function(n){var i;!function(n,r){t.exports=function(n){"use strict";var r,o=(n=n||{}).Base64,s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",a=function(t){for(var e={},n=0,i=t.length;n>>6)+l(128|63&e):l(224|e>>>12&15)+l(128|e>>>6&63)+l(128|63&e);var e=65536+1024*(t.charCodeAt(0)-55296)+(t.charCodeAt(1)-56320);return l(240|e>>>18&7)+l(128|e>>>12&63)+l(128|e>>>6&63)+l(128|63&e)},u=/[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g,h=function(t){return t.replace(u,c)},d=function(t){var e=[0,2,1][t.length%3],n=t.charCodeAt(0)<<16|(t.length>1?t.charCodeAt(1):0)<<8|(t.length>2?t.charCodeAt(2):0);return[s.charAt(n>>>18),s.charAt(n>>>12&63),e>=2?"=":s.charAt(n>>>6&63),e>=1?"=":s.charAt(63&n)].join("")},f=n.btoa&&"function"==typeof n.btoa?function(t){return n.btoa(t)}:function(t){if(t.match(/[^\x00-\xFF]/))throw new RangeError("The string contains invalid characters.");return t.replace(/[\s\S]{1,3}/g,d)},p=function(t){return f(h(String(t)))},g=function(t){return t.replace(/[+\/]/g,(function(t){return"+"==t?"-":"_"})).replace(/=/g,"")},m=function(t,e){return e?g(p(t)):p(t)};n.Uint8Array&&(r=function(t,e){for(var n="",i=0,r=t.length;i>>18)+s.charAt(c>>>12&63)+(void 0!==a?s.charAt(c>>>6&63):"=")+(void 0!==l?s.charAt(63&c):"=")}return e?g(n):n});var v,b=/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g,y=function(t){switch(t.length){case 4:var e=((7&t.charCodeAt(0))<<18|(63&t.charCodeAt(1))<<12|(63&t.charCodeAt(2))<<6|63&t.charCodeAt(3))-65536;return l(55296+(e>>>10))+l(56320+(1023&e));case 3:return l((15&t.charCodeAt(0))<<12|(63&t.charCodeAt(1))<<6|63&t.charCodeAt(2));default:return l((31&t.charCodeAt(0))<<6|63&t.charCodeAt(1))}},w=function(t){return t.replace(b,y)},x=function(t){var e=t.length,n=e%4,i=(e>0?a[t.charAt(0)]<<18:0)|(e>1?a[t.charAt(1)]<<12:0)|(e>2?a[t.charAt(2)]<<6:0)|(e>3?a[t.charAt(3)]:0),r=[l(i>>>16),l(i>>>8&255),l(255&i)];return r.length-=[0,0,2,1][n],r.join("")},_=n.atob&&"function"==typeof n.atob?function(t){return n.atob(t)}:function(t){return t.replace(/\S{1,4}/g,x)},M=function(t){return _(String(t).replace(/[^A-Za-z0-9\+\/]/g,""))},S=function(t){return String(t).replace(/[-_]/g,(function(t){return"-"==t?"+":"/"})).replace(/[^A-Za-z0-9\+\/]/g,"")},A=function(t){return function(t){return w(_(t))}(S(t))};n.Uint8Array&&(v=function(t){return Uint8Array.from(M(S(t)),(function(t){return t.charCodeAt(0)}))});var k=function(){var t=n.Base64;return n.Base64=o,t};if(n.Base64={VERSION:"2.6.4",atob:M,btoa:f,fromBase64:A,toBase64:m,utob:h,encode:m,encodeURI:function(t){return m(t,!0)},btou:w,decode:A,noConflict:k,fromUint8Array:r,toUint8Array:v},"function"==typeof Object.defineProperty){var C=function(t){return{value:t,enumerable:!1,writable:!0,configurable:!0}};n.Base64.extendString=function(){Object.defineProperty(String.prototype,"fromBase64",C((function(){return A(this)}))),Object.defineProperty(String.prototype,"toBase64",C((function(t){return m(this,t)}))),Object.defineProperty(String.prototype,"toBase64URI",C((function(){return m(this,!0)})))}}n.Meteor&&(Base64=n.Base64);t.exports?t.exports.Base64=n.Base64:void 0===(i=function(){return n.Base64}.apply(e,[]))||(t.exports=i);return{Base64:n.Base64}}(n)}("undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==n?n:this)}).call(this,n("yLpj"))},JAAf:function(t,e,n){t.exports=n.p+"9e69cb39701c3578226b39536edd4dd7.js"},JBbW:function(t,e,n){(function(e){const i=n("b94t");function r(){this.state=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],this.blockSize=null,this.count=0,this.squeezing=!1}r.prototype.initialize=function(t,e){for(let t=0;t<50;++t)this.state[t]=0;this.blockSize=t/8,this.count=0,this.squeezing=!1},r.prototype.absorb=function(t){for(let e=0;e>>this.count%4*8&255,this.count+=1,this.count===this.blockSize&&(i.p1600(this.state),this.count=0);return n},r.prototype.copy=function(t){for(let e=0;e<50;++e)t.state[e]=this.state[e];t.blockSize=this.blockSize,t.count=this.count,t.squeezing=this.squeezing},t.exports=r}).call(this,n("tjlA").Buffer)},JCg0:function(t,e,n){t.exports=n.p+"06e44643d965002fada0383a45b3e572.js"},JRfS:function(t,e,n){t.exports=n.p+"626617463b05d66ef839305eb1ace8e3.js"},JZRl:function(t,e,n){t.exports=n.p+"5adf5687c0c3588532b6d8157a3b2a3f.js"},JoCo:function(t,e,n){t.exports=n.p+"f86deff6386f7243a4aa39e90b30ba36.js"},JuEJ:function(t,e,n){var i=n("bYtY"),r=n("4NO4"),o=i.each,s=i.isObject,a=["areaStyle","lineStyle","nodeStyle","linkStyle","chordStyle","label","labelLine"];function l(t){var e=t&&t.itemStyle;if(e)for(var n=0,r=a.length;n0},extendFrom:function(t,e){if(t)for(var n in t)!t.hasOwnProperty(n)||!0!==e&&(!1===e?this.hasOwnProperty(n):null==t[n])||(this[n]=t[n])},set:function(t,e){"string"==typeof t?this[t]=e:this.extendFrom(t,!0)},clone:function(){var t=new this.constructor;return t.extendFrom(this,!0),t},getGradient:function(t,e,n){for(var i=("radial"===e.type?l:a)(t,e,n),r=e.colorStops,o=0;o","license":"MIT","bugs":{"url":"https://github.com/indutny/elliptic/issues"},"homepage":"https://github.com/indutny/elliptic","devDependencies":{"brfs":"^2.0.2","coveralls":"^3.1.0","eslint":"^7.6.0","grunt":"^1.2.1","grunt-browserify":"^5.3.0","grunt-cli":"^1.3.2","grunt-contrib-connect":"^3.0.0","grunt-contrib-copy":"^1.0.0","grunt-contrib-uglify":"^5.0.0","grunt-mocha-istanbul":"^5.0.2","grunt-saucelabs":"^9.0.1","istanbul":"^0.4.5","mocha":"^8.0.1"},"dependencies":{"bn.js":"^4.11.9","brorand":"^1.1.0","hash.js":"^1.0.0","hmac-drbg":"^1.0.1","inherits":"^2.0.4","minimalistic-assert":"^1.0.1","minimalistic-crypto-utils":"^1.0.1"}}')},KCsZ:function(t,e,n){var i=n("bYtY");t.exports=function(t){for(var e=0;e=0||r&&i.indexOf(r,a)<0)){var l=e.getShallow(a);null!=l&&(o[t[s][0]]=l)}}return o}}},KGtJ:function(t,e,n){t.exports=n.p+"45de113a9f4cd75a8a71a2e6f4f91c95.js"},KKCa:function(t,e){"function"==typeof Object.create?t.exports=function(t,e){t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})}:t.exports=function(t,e){t.super_=e;var n=function(){};n.prototype=e.prototype,t.prototype=new n,t.prototype.constructor=t}},KKkb:function(t,e,n){t.exports=n.p+"0bf7ff3fb3f462333b89e5edd3c8409d.js"},Kagy:function(t,e){t.exports={legend:{selector:{all:"全选",inverse:"反选"}},toolbox:{brush:{title:{rect:"矩形选择",polygon:"圈选",lineX:"横向选择",lineY:"纵向选择",keep:"保持选择",clear:"清除选择"}},dataView:{title:"数据视图",lang:["数据视图","关闭","刷新"]},dataZoom:{title:{zoom:"区域缩放",back:"区域缩放还原"}},magicType:{title:{line:"切换为折线图",bar:"切换为柱状图",stack:"切换为堆叠",tiled:"切换为平铺"}},restore:{title:"还原"},saveAsImage:{title:"保存为图片",lang:["右键另存为图片"]}},series:{typeNames:{pie:"饼图",bar:"柱状图",line:"折线图",scatter:"散点图",effectScatter:"涟漪散点图",radar:"雷达图",tree:"树图",treemap:"矩形树图",boxplot:"箱型图",candlestick:"K线图",k:"K线图",heatmap:"热力图",map:"地图",parallel:"平行坐标图",lines:"线图",graph:"关系图",sankey:"桑基图",funnel:"漏斗图",gauge:"仪表盘图",pictorialBar:"象形柱图",themeRiver:"主题河流图",sunburst:"旭日图"}},aria:{general:{withTitle:"这是一个关于“{title}”的图表。",withoutTitle:"这是一个图表,"},series:{single:{prefix:"",withName:"图表类型是{seriesType},表示{seriesName}。",withoutName:"图表类型是{seriesType}。"},multiple:{prefix:"它由{seriesCount}个图表系列组成。",withName:"第{seriesId}个系列是一个表示{seriesName}的{seriesType},",withoutName:"第{seriesId}个系列是一个{seriesType},",separator:{middle:";",end:"。"}}},data:{allData:"其数据是——",partialData:"其中,前{displayCnt}项是——",withName:"{name}的数据是{value}",withoutName:"{value}",separator:{middle:",",end:""}}}}},Kb1s:function(t,e,n){t.exports=n.p+"142d258626093a8c3187029538e32bbc.js"},KbHX:function(t,e,n){"use strict";(function(t){Object.defineProperty(e,"__esModule",{value:!0}),e.assertIsString=e.assertIsArray=e.assertIsBuffer=e.assertIsHexString=void 0;var i=n("szLb");e.assertIsHexString=function(t){if(!(0,i.isHexString)(t)){var e="This method only supports 0x-prefixed hex strings but input was: ".concat(t);throw new Error(e)}};e.assertIsBuffer=function(e){if(!t.isBuffer(e)){var n="This method only supports Buffer but input was: ".concat(e);throw new Error(n)}};e.assertIsArray=function(t){if(!Array.isArray(t)){var e="This method only supports number arrays but input was: ".concat(t);throw new Error(e)}};e.assertIsString=function(t){if("string"!=typeof t){var e="This method only supports strings but input was: ".concat(t);throw new Error(e)}}}).call(this,n("tjlA").Buffer)},Klge:function(t,e,n){t.exports=n.p+"28f7c5b28bbad7b0bac0cc3cc5b89bad.js"},Kqrh:function(t,e,n){t.exports=n("+qE3").EventEmitter},Kx6e:function(t,e,n){t.exports=n.p+"e543a99512ef5d4029e726a65b8b3cd1.js"},KxfA:function(t,e,n){n("Tghj").__DEV__;var i=n("bYtY"),r=(i.isTypedArray,i.extend),o=(i.assert,i.each),s=i.isObject,a=n("4NO4"),l=a.getDataItemValue,c=a.isDataItemOption,u=n("OELB").parseDate,h=n("7G+c"),d=n("k9D9"),f=d.SOURCE_FORMAT_TYPED_ARRAY,p=d.SOURCE_FORMAT_ARRAY_ROWS,g=d.SOURCE_FORMAT_ORIGINAL,m=d.SOURCE_FORMAT_OBJECT_ROWS;function v(t,e){h.isInstance(t)||(t=h.seriesDataToSource(t)),this._source=t;var n=this._data=t.data,i=t.sourceFormat;i===f&&(this._offset=0,this._dimSize=e,this._data=n);var o=y[i===p?i+"_"+t.seriesLayoutBy:i];r(this,o)}var b=v.prototype;b.pure=!1,b.persistent=!0,b.getSource=function(){return this._source};var y={arrayRows_column:{pure:!0,count:function(){return Math.max(0,this._data.length-this._source.startIndex)},getItem:function(t){return this._data[t+this._source.startIndex]},appendData:_},arrayRows_row:{pure:!0,count:function(){var t=this._data[0];return t?Math.max(0,t.length-this._source.startIndex):0},getItem:function(t){t+=this._source.startIndex;for(var e=[],n=this._data,i=0;i=o)return t;switch(t){case"%s":return String(i[n++]);case"%d":return Number(i[n++]);case"%j":try{return JSON.stringify(i[n++])}catch(t){return"[Circular]"}default:return t}})),l=i[n];n=3&&(i.depth=arguments[2]),arguments.length>=4&&(i.colors=arguments[3]),p(n)?i.showHidden=n:n&&e._extend(i,n),b(i.showHidden)&&(i.showHidden=!1),b(i.depth)&&(i.depth=2),b(i.colors)&&(i.colors=!1),b(i.customInspect)&&(i.customInspect=!0),i.colors&&(i.stylize=l),u(i,t,i.depth)}function l(t,e){var n=a.styles[e];return n?"["+a.colors[n][0]+"m"+t+"["+a.colors[n][1]+"m":t}function c(t,e){return t}function u(t,n,i){if(t.customInspect&&n&&M(n.inspect)&&n.inspect!==e.inspect&&(!n.constructor||n.constructor.prototype!==n)){var r=n.inspect(i,t);return v(r)||(r=u(t,r,i)),r}var o=function(t,e){if(b(e))return t.stylize("undefined","undefined");if(v(e)){var n="'"+JSON.stringify(e).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return t.stylize(n,"string")}if(m(e))return t.stylize(""+e,"number");if(p(e))return t.stylize(""+e,"boolean");if(g(e))return t.stylize("null","null")}(t,n);if(o)return o;var s=Object.keys(n),a=function(t){var e={};return t.forEach((function(t,n){e[t]=!0})),e}(s);if(t.showHidden&&(s=Object.getOwnPropertyNames(n)),_(n)&&(s.indexOf("message")>=0||s.indexOf("description")>=0))return h(n);if(0===s.length){if(M(n)){var l=n.name?": "+n.name:"";return t.stylize("[Function"+l+"]","special")}if(y(n))return t.stylize(RegExp.prototype.toString.call(n),"regexp");if(x(n))return t.stylize(Date.prototype.toString.call(n),"date");if(_(n))return h(n)}var c,w="",S=!1,A=["{","}"];(f(n)&&(S=!0,A=["[","]"]),M(n))&&(w=" [Function"+(n.name?": "+n.name:"")+"]");return y(n)&&(w=" "+RegExp.prototype.toString.call(n)),x(n)&&(w=" "+Date.prototype.toUTCString.call(n)),_(n)&&(w=" "+h(n)),0!==s.length||S&&0!=n.length?i<0?y(n)?t.stylize(RegExp.prototype.toString.call(n),"regexp"):t.stylize("[Object]","special"):(t.seen.push(n),c=S?function(t,e,n,i,r){for(var o=[],s=0,a=e.length;s=0&&0,t+e.replace(/\u001b\[\d\d?m/g,"").length+1}),0)>60)return n[0]+(""===e?"":e+"\n ")+" "+t.join(",\n ")+" "+n[1];return n[0]+e+" "+t.join(", ")+" "+n[1]}(c,w,A)):A[0]+w+A[1]}function h(t){return"["+Error.prototype.toString.call(t)+"]"}function d(t,e,n,i,r,o){var s,a,l;if((l=Object.getOwnPropertyDescriptor(e,r)||{value:e[r]}).get?a=l.set?t.stylize("[Getter/Setter]","special"):t.stylize("[Getter]","special"):l.set&&(a=t.stylize("[Setter]","special")),T(i,r)||(s="["+r+"]"),a||(t.seen.indexOf(l.value)<0?(a=g(n)?u(t,l.value,null):u(t,l.value,n-1)).indexOf("\n")>-1&&(a=o?a.split("\n").map((function(t){return" "+t})).join("\n").substr(2):"\n"+a.split("\n").map((function(t){return" "+t})).join("\n")):a=t.stylize("[Circular]","special")),b(s)){if(o&&r.match(/^\d+$/))return a;(s=JSON.stringify(""+r)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(s=s.substr(1,s.length-2),s=t.stylize(s,"name")):(s=s.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),s=t.stylize(s,"string"))}return s+": "+a}function f(t){return Array.isArray(t)}function p(t){return"boolean"==typeof t}function g(t){return null===t}function m(t){return"number"==typeof t}function v(t){return"string"==typeof t}function b(t){return void 0===t}function y(t){return w(t)&&"[object RegExp]"===S(t)}function w(t){return"object"==typeof t&&null!==t}function x(t){return w(t)&&"[object Date]"===S(t)}function _(t){return w(t)&&("[object Error]"===S(t)||t instanceof Error)}function M(t){return"function"==typeof t}function S(t){return Object.prototype.toString.call(t)}function A(t){return t<10?"0"+t.toString(10):t.toString(10)}e.debuglog=function(n){if(b(o)&&(o=(void 0).NODE_DEBUG||""),n=n.toUpperCase(),!s[n])if(new RegExp("\\b"+n+"\\b","i").test(o)){var i=t.pid;s[n]=function(){var t=e.format.apply(e,arguments);console.error("%s %d: %s",n,i,t)}}else s[n]=function(){};return s[n]},e.inspect=a,a.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},a.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},e.isArray=f,e.isBoolean=p,e.isNull=g,e.isNullOrUndefined=function(t){return null==t},e.isNumber=m,e.isString=v,e.isSymbol=function(t){return"symbol"==typeof t},e.isUndefined=b,e.isRegExp=y,e.isObject=w,e.isDate=x,e.isError=_,e.isFunction=M,e.isPrimitive=function(t){return null===t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||"symbol"==typeof t||void 0===t},e.isBuffer=n("1gqn");var k=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function C(){var t=new Date,e=[A(t.getHours()),A(t.getMinutes()),A(t.getSeconds())].join(":");return[t.getDate(),k[t.getMonth()],e].join(" ")}function T(t,e){return Object.prototype.hasOwnProperty.call(t,e)}e.log=function(){console.log("%s - %s",C(),e.format.apply(e,arguments))},e.inherits=n("KKCa"),e._extend=function(t,e){if(!e||!w(e))return t;for(var n=Object.keys(e),i=n.length;i--;)t[n[i]]=e[n[i]];return t};var E="undefined"!=typeof Symbol?Symbol("util.promisify.custom"):void 0;function R(t,e){if(!t){var n=new Error("Promise was rejected with a falsy value");n.reason=t,t=n}return e(t)}e.promisify=function(t){if("function"!=typeof t)throw new TypeError('The "original" argument must be of type Function');if(E&&t[E]){var e;if("function"!=typeof(e=t[E]))throw new TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(e,E,{value:e,enumerable:!1,writable:!1,configurable:!0}),e}function e(){for(var e,n,i=new Promise((function(t,i){e=t,n=i})),r=[],o=0;o=4&&(c={x:parseFloat(d[0]||0),y:parseFloat(d[1]||0),width:parseFloat(d[2]),height:parseFloat(d[3])})}if(c&&null!=s&&null!=l&&(u=D(c,s,l),!e.ignoreViewBox)){var f=r;(r=new i).add(f),f.scale=u.scale.slice(),f.position=u.position.slice()}return e.ignoreRootClip||null==s||null==l||r.setClipPath(new a({shape:{x:0,y:0,width:s,height:l}})),{root:r,width:s,height:l,viewBoxRect:c,viewBoxTransform:u}},A.prototype._parseNode=function(t,e){var n,i,r=t.nodeName.toLowerCase();if("defs"===r?this._isDefine=!0:"text"===r&&(this._isText=!0),this._isDefine){if(i=C[r]){var o=i.call(this,t),s=t.getAttribute("id");s&&(this._defs[s]=o)}}else(i=k[r])&&(n=i.call(this,t,e),e.add(n));for(var a=t.firstChild;a;)1===a.nodeType&&this._parseNode(a,n),3===a.nodeType&&this._isText&&this._parseText(a,n),a=a.nextSibling;"defs"===r?this._isDefine=!1:"text"===r&&(this._isText=!1)},A.prototype._parseText=function(t,e){if(1===t.nodeType){var n=t.getAttribute("dx")||0,i=t.getAttribute("dy")||0;this._textX+=parseFloat(n),this._textY+=parseFloat(i)}var r=new o({style:{text:t.textContent,transformText:!0},position:[this._textX||0,this._textY||0]});T(e,r),L(t,r,this._defs);var s=r.style.fontSize;s&&s<9&&(r.style.fontSize=9,r.scale=r.scale||[1,1],r.scale[0]*=s/9,r.scale[1]*=s/9);var a=r.getBoundingRect();return this._textX+=a.width,e.add(r),r};var k={g:function(t,e){var n=new i;return T(e,n),L(t,n,this._defs),n},rect:function(t,e){var n=new a;return T(e,n),L(t,n,this._defs),n.setShape({x:parseFloat(t.getAttribute("x")||0),y:parseFloat(t.getAttribute("y")||0),width:parseFloat(t.getAttribute("width")||0),height:parseFloat(t.getAttribute("height")||0)}),n},circle:function(t,e){var n=new s;return T(e,n),L(t,n,this._defs),n.setShape({cx:parseFloat(t.getAttribute("cx")||0),cy:parseFloat(t.getAttribute("cy")||0),r:parseFloat(t.getAttribute("r")||0)}),n},line:function(t,e){var n=new c;return T(e,n),L(t,n,this._defs),n.setShape({x1:parseFloat(t.getAttribute("x1")||0),y1:parseFloat(t.getAttribute("y1")||0),x2:parseFloat(t.getAttribute("x2")||0),y2:parseFloat(t.getAttribute("y2")||0)}),n},ellipse:function(t,e){var n=new l;return T(e,n),L(t,n,this._defs),n.setShape({cx:parseFloat(t.getAttribute("cx")||0),cy:parseFloat(t.getAttribute("cy")||0),rx:parseFloat(t.getAttribute("rx")||0),ry:parseFloat(t.getAttribute("ry")||0)}),n},polygon:function(t,e){var n=t.getAttribute("points");n&&(n=E(n));var i=new h({shape:{points:n||[]}});return T(e,i),L(t,i,this._defs),i},polyline:function(t,e){var n=new u;T(e,n),L(t,n,this._defs);var i=t.getAttribute("points");return i&&(i=E(i)),new d({shape:{points:i||[]}})},image:function(t,e){var n=new r;return T(e,n),L(t,n,this._defs),n.setStyle({image:t.getAttribute("xlink:href"),x:t.getAttribute("x"),y:t.getAttribute("y"),width:t.getAttribute("width"),height:t.getAttribute("height")}),n},text:function(t,e){var n=t.getAttribute("x")||0,r=t.getAttribute("y")||0,o=t.getAttribute("dx")||0,s=t.getAttribute("dy")||0;this._textX=parseFloat(n)+parseFloat(o),this._textY=parseFloat(r)+parseFloat(s);var a=new i;return T(e,a),L(t,a,this._defs),a},tspan:function(t,e){var n=t.getAttribute("x"),r=t.getAttribute("y");null!=n&&(this._textX=parseFloat(n)),null!=r&&(this._textY=parseFloat(r));var o=t.getAttribute("dx")||0,s=t.getAttribute("dy")||0,a=new i;return T(e,a),L(t,a,this._defs),this._textX+=o,this._textY+=s,a},path:function(t,e){var n=t.getAttribute("d")||"",i=m(n);return T(e,i),L(t,i,this._defs),i}},C={lineargradient:function(t){var e=parseInt(t.getAttribute("x1")||0,10),n=parseInt(t.getAttribute("y1")||0,10),i=parseInt(t.getAttribute("x2")||10,10),r=parseInt(t.getAttribute("y2")||0,10),o=new f(e,n,i,r);return function(t,e){var n=t.firstChild;for(;n;){if(1===n.nodeType){var i=n.getAttribute("offset");i=i.indexOf("%")>0?parseInt(i,10)/100:i?parseFloat(i):0;var r=n.getAttribute("stop-color")||"#000000";e.addColorStop(i,r)}n=n.nextSibling}}(t,o),o},radialgradient:function(t){}};function T(t,e){t&&t.__inheritedStyle&&(e.__inheritedStyle||(e.__inheritedStyle={}),w(e.__inheritedStyle,t.__inheritedStyle))}function E(t){for(var e=x(t).split(M),n=[],i=0;i0;o-=2){var s=r[o],a=r[o-1];switch(i=i||g.create(),a){case"translate":s=x(s).split(M),g.translate(i,i,[parseFloat(s[0]),parseFloat(s[1]||0)]);break;case"scale":s=x(s).split(M),g.scale(i,i,[parseFloat(s[0]),parseFloat(s[1]||s[0])]);break;case"rotate":s=x(s).split(M),g.rotate(i,i,parseFloat(s[0]));break;case"skew":s=x(s).split(M),console.warn("Skew transform is not supported yet");break;case"matrix":s=x(s).split(M);i[0]=parseFloat(s[0]),i[1]=parseFloat(s[1]),i[2]=parseFloat(s[2]),i[3]=parseFloat(s[3]),i[4]=parseFloat(s[4]),i[5]=parseFloat(s[5])}}e.setLocalTransform(i)}}(t,e),y(r,function(t){var e=t.getAttribute("style"),n={};if(!e)return n;var i,r={};P.lastIndex=0;for(;null!=(i=P.exec(e));)r[i[1]]=i[2];for(var o in R)R.hasOwnProperty(o)&&null!=r[o]&&(n[R[o]]=r[o]);return n}(t)),!i))for(var s in R)if(R.hasOwnProperty(s)){var a=t.getAttribute(s);null!=a&&(r[R[s]]=a)}var l=o?"textFill":"fill",c=o?"textStroke":"stroke";e.style=e.style||new p;var u=e.style;null!=r.fill&&u.set(l,O(r.fill,n)),null!=r.stroke&&u.set(c,O(r.stroke,n)),_(["lineWidth","opacity","fillOpacity","strokeOpacity","miterLimit","fontSize"],(function(t){var e="lineWidth"===t&&o?"textStrokeWidth":t;null!=r[t]&&u.set(e,parseFloat(r[t]))})),r.textBaseline&&"auto"!==r.textBaseline||(r.textBaseline="alphabetic"),"alphabetic"===r.textBaseline&&(r.textBaseline="bottom"),"start"===r.textAlign&&(r.textAlign="left"),"end"===r.textAlign&&(r.textAlign="right"),_(["lineDashOffset","lineCap","lineJoin","fontWeight","fontFamily","fontStyle","textAlign","textBaseline"],(function(t){null!=r[t]&&u.set(t,r[t])})),r.lineDash&&(e.style.lineDash=x(r.lineDash).split(M)),u[c]&&"none"!==u[c]&&(e[c]=!0),e.__inheritedStyle=r}var I=/url\(\s*#(.*?)\)/;function O(t,e){var n=e&&t&&t.match(I);return n?e[x(n[1])]:t}var $=/(translate|scale|rotate|skewX|skewY|matrix)\(([\-\s0-9\.e,]*)\)/g;var P=/([^\s:;]+)\s*:\s*([^:;]+)/g;function D(t,e,n){var i=e/t.width,r=n/t.height,o=Math.min(i,r);return{scale:[o,o],position:[-(t.x+t.width/2)*o+e/2,-(t.y+t.height/2)*o+n/2]}}e.parseXML=S,e.makeViewBoxTransform=D,e.parseSVG=function(t,e){return(new A).parse(t,e)}},MFIL:function(t,e,n){t.exports=n.p+"0146c2f1e1f5b20320aab16922c176e9.js"},MKOG:function(t,e,n){var i=n("bYtY"),r=n("YH21").Dispatcher,o=n("mLcG"),s=n("Bq2U"),a=function(t){t=t||{},this.stage=t.stage||{},this.onframe=t.onframe||function(){},this._clips=[],this._running=!1,this._time,this._pausedTime,this._pauseStart,this._paused=!1,r.call(this)};a.prototype={constructor:a,addClip:function(t){this._clips.push(t)},addAnimator:function(t){t.animation=this;for(var e=t.getClips(),n=0;n=0&&this._clips.splice(e,1)},removeAnimator:function(t){for(var e=t.getClips(),n=0;n0?l.pixelStart+l.pixelLength-l.pixel:l.pixel-l.pixelStart)/l.pixelLength*(s[1]-s[0])+s[0],u=Math.max(1/i.scale,0);s[0]=(s[0]-c)*u+c,s[1]=(s[1]-c)*u+c;var d=this.dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();return o(0,s,[0,100],0,d.minSpan,d.maxSpan),this._range=s,r[0]!==s[0]||r[1]!==s[1]?s:void 0}},pan:u((function(t,e,n,i,r,o){var s=h[i]([o.oldX,o.oldY],[o.newX,o.newY],e,r,n);return s.signal*(t[1]-t[0])*s.pixel/s.pixelLength})),scrollMove:u((function(t,e,n,i,r,o){return h[i]([0,0],[o.scrollDelta,o.scrollDelta],e,r,n).signal*(t[1]-t[0])*o.scrollDelta}))};function u(t){return function(e,n,i,r){var s=this._range,a=s.slice(),l=e.axisModels[0];if(l){var c=t(a,l,e,n,i,r);return o(c,a,[0,100],"all"),this._range=a,s[0]!==a[0]||s[1]!==a[1]?a:void 0}}}var h={grid:function(t,e,n,i,r){var o=n.axis,s={},a=r.model.coordinateSystem.getRect();return t=t||[0,0],"x"===o.dim?(s.pixel=e[0]-t[0],s.pixelLength=a.width,s.pixelStart=a.x,s.signal=o.inverse?1:-1):(s.pixel=e[1]-t[1],s.pixelLength=a.height,s.pixelStart=a.y,s.signal=o.inverse?-1:1),s},polar:function(t,e,n,i,r){var o=n.axis,s={},a=r.model.coordinateSystem,l=a.getRadiusAxis().getExtent(),c=a.getAngleAxis().getExtent();return t=t?a.pointToCoord(t):[0,0],e=a.pointToCoord(e),"radiusAxis"===n.mainType?(s.pixel=e[0]-t[0],s.pixelLength=l[1]-l[0],s.pixelStart=l[0],s.signal=o.inverse?1:-1):(s.pixel=e[1]-t[1],s.pixelLength=c[1]-c[0],s.pixelStart=c[0],s.signal=o.inverse?-1:1),s},singleAxis:function(t,e,n,i,r){var o=n.axis,s=r.model.coordinateSystem.getRect(),a={};return t=t||[0,0],"horizontal"===o.orient?(a.pixel=e[0]-t[0],a.pixelLength=s.width,a.pixelStart=s.x,a.signal=o.inverse?1:-1):(a.pixel=e[1]-t[1],a.pixelLength=s.height,a.pixelStart=s.y,a.signal=o.inverse?-1:1),a}},d=l;t.exports=d},MrsM:function(t,e,n){t.exports=n.p+"43e0f7960243cbe628b69f7b857a4f08.js"},MwBp:function(t,e,n){"use strict";var i=n("86MQ"),r=n("gK+I"),o=n("P7XM"),s=n("6lN/"),a=i.assert;function l(t){s.call(this,"short",t),this.a=new r(t.a,16).toRed(this.red),this.b=new r(t.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=0===this.a.fromRed().cmpn(0),this.threeA=0===this.a.fromRed().sub(this.p).cmpn(-3),this.endo=this._getEndomorphism(t),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}function c(t,e,n,i){s.BasePoint.call(this,t,"affine"),null===e&&null===n?(this.x=null,this.y=null,this.inf=!0):(this.x=new r(e,16),this.y=new r(n,16),i&&(this.x.forceRed(this.curve.red),this.y.forceRed(this.curve.red)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.inf=!1)}function u(t,e,n,i){s.BasePoint.call(this,t,"jacobian"),null===e&&null===n&&null===i?(this.x=this.curve.one,this.y=this.curve.one,this.z=new r(0)):(this.x=new r(e,16),this.y=new r(n,16),this.z=new r(i,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}o(l,s),t.exports=l,l.prototype._getEndomorphism=function(t){if(this.zeroA&&this.g&&this.n&&1===this.p.modn(3)){var e,n;if(t.beta)e=new r(t.beta,16).toRed(this.red);else{var i=this._getEndoRoots(this.p);e=(e=i[0].cmp(i[1])<0?i[0]:i[1]).toRed(this.red)}if(t.lambda)n=new r(t.lambda,16);else{var o=this._getEndoRoots(this.n);0===this.g.mul(o[0]).x.cmp(this.g.x.redMul(e))?n=o[0]:(n=o[1],a(0===this.g.mul(n).x.cmp(this.g.x.redMul(e))))}return{beta:e,lambda:n,basis:t.basis?t.basis.map((function(t){return{a:new r(t.a,16),b:new r(t.b,16)}})):this._getEndoBasis(n)}}},l.prototype._getEndoRoots=function(t){var e=t===this.p?this.red:r.mont(t),n=new r(2).toRed(e).redInvm(),i=n.redNeg(),o=new r(3).toRed(e).redNeg().redSqrt().redMul(n);return[i.redAdd(o).fromRed(),i.redSub(o).fromRed()]},l.prototype._getEndoBasis=function(t){for(var e,n,i,o,s,a,l,c,u,h=this.n.ushrn(Math.floor(this.n.bitLength()/2)),d=t,f=this.n.clone(),p=new r(1),g=new r(0),m=new r(0),v=new r(1),b=0;0!==d.cmpn(0);){var y=f.div(d);c=f.sub(y.mul(d)),u=m.sub(y.mul(p));var w=v.sub(y.mul(g));if(!i&&c.cmp(h)<0)e=l.neg(),n=p,i=c.neg(),o=u;else if(i&&2==++b)break;l=c,f=d,d=c,m=p,p=u,v=g,g=w}s=c.neg(),a=u;var x=i.sqr().add(o.sqr());return s.sqr().add(a.sqr()).cmp(x)>=0&&(s=e,a=n),i.negative&&(i=i.neg(),o=o.neg()),s.negative&&(s=s.neg(),a=a.neg()),[{a:i,b:o},{a:s,b:a}]},l.prototype._endoSplit=function(t){var e=this.endo.basis,n=e[0],i=e[1],r=i.b.mul(t).divRound(this.n),o=n.b.neg().mul(t).divRound(this.n),s=r.mul(n.a),a=o.mul(i.a),l=r.mul(n.b),c=o.mul(i.b);return{k1:t.sub(s).sub(a),k2:l.add(c).neg()}},l.prototype.pointFromX=function(t,e){(t=new r(t,16)).red||(t=t.toRed(this.red));var n=t.redSqr().redMul(t).redIAdd(t.redMul(this.a)).redIAdd(this.b),i=n.redSqrt();if(0!==i.redSqr().redSub(n).cmp(this.zero))throw new Error("invalid point");var o=i.fromRed().isOdd();return(e&&!o||!e&&o)&&(i=i.redNeg()),this.point(t,i)},l.prototype.validate=function(t){if(t.inf)return!0;var e=t.x,n=t.y,i=this.a.redMul(e),r=e.redSqr().redMul(e).redIAdd(i).redIAdd(this.b);return 0===n.redSqr().redISub(r).cmpn(0)},l.prototype._endoWnafMulAdd=function(t,e,n){for(var i=this._endoWnafT1,r=this._endoWnafT2,o=0;o":""},c.prototype.isInfinity=function(){return this.inf},c.prototype.add=function(t){if(this.inf)return t;if(t.inf)return this;if(this.eq(t))return this.dbl();if(this.neg().eq(t))return this.curve.point(null,null);if(0===this.x.cmp(t.x))return this.curve.point(null,null);var e=this.y.redSub(t.y);0!==e.cmpn(0)&&(e=e.redMul(this.x.redSub(t.x).redInvm()));var n=e.redSqr().redISub(this.x).redISub(t.x),i=e.redMul(this.x.redSub(n)).redISub(this.y);return this.curve.point(n,i)},c.prototype.dbl=function(){if(this.inf)return this;var t=this.y.redAdd(this.y);if(0===t.cmpn(0))return this.curve.point(null,null);var e=this.curve.a,n=this.x.redSqr(),i=t.redInvm(),r=n.redAdd(n).redIAdd(n).redIAdd(e).redMul(i),o=r.redSqr().redISub(this.x.redAdd(this.x)),s=r.redMul(this.x.redSub(o)).redISub(this.y);return this.curve.point(o,s)},c.prototype.getX=function(){return this.x.fromRed()},c.prototype.getY=function(){return this.y.fromRed()},c.prototype.mul=function(t){return t=new r(t,16),this.isInfinity()?this:this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve.endo?this.curve._endoWnafMulAdd([this],[t]):this.curve._wnafMul(this,t)},c.prototype.mulAdd=function(t,e,n){var i=[this,e],r=[t,n];return this.curve.endo?this.curve._endoWnafMulAdd(i,r):this.curve._wnafMulAdd(1,i,r,2)},c.prototype.jmulAdd=function(t,e,n){var i=[this,e],r=[t,n];return this.curve.endo?this.curve._endoWnafMulAdd(i,r,!0):this.curve._wnafMulAdd(1,i,r,2,!0)},c.prototype.eq=function(t){return this===t||this.inf===t.inf&&(this.inf||0===this.x.cmp(t.x)&&0===this.y.cmp(t.y))},c.prototype.neg=function(t){if(this.inf)return this;var e=this.curve.point(this.x,this.y.redNeg());if(t&&this.precomputed){var n=this.precomputed,i=function(t){return t.neg()};e.precomputed={naf:n.naf&&{wnd:n.naf.wnd,points:n.naf.points.map(i)},doubles:n.doubles&&{step:n.doubles.step,points:n.doubles.points.map(i)}}}return e},c.prototype.toJ=function(){return this.inf?this.curve.jpoint(null,null,null):this.curve.jpoint(this.x,this.y,this.curve.one)},o(u,s.BasePoint),l.prototype.jpoint=function(t,e,n){return new u(this,t,e,n)},u.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var t=this.z.redInvm(),e=t.redSqr(),n=this.x.redMul(e),i=this.y.redMul(e).redMul(t);return this.curve.point(n,i)},u.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},u.prototype.add=function(t){if(this.isInfinity())return t;if(t.isInfinity())return this;var e=t.z.redSqr(),n=this.z.redSqr(),i=this.x.redMul(e),r=t.x.redMul(n),o=this.y.redMul(e.redMul(t.z)),s=t.y.redMul(n.redMul(this.z)),a=i.redSub(r),l=o.redSub(s);if(0===a.cmpn(0))return 0!==l.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var c=a.redSqr(),u=c.redMul(a),h=i.redMul(c),d=l.redSqr().redIAdd(u).redISub(h).redISub(h),f=l.redMul(h.redISub(d)).redISub(o.redMul(u)),p=this.z.redMul(t.z).redMul(a);return this.curve.jpoint(d,f,p)},u.prototype.mixedAdd=function(t){if(this.isInfinity())return t.toJ();if(t.isInfinity())return this;var e=this.z.redSqr(),n=this.x,i=t.x.redMul(e),r=this.y,o=t.y.redMul(e).redMul(this.z),s=n.redSub(i),a=r.redSub(o);if(0===s.cmpn(0))return 0!==a.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var l=s.redSqr(),c=l.redMul(s),u=n.redMul(l),h=a.redSqr().redIAdd(c).redISub(u).redISub(u),d=a.redMul(u.redISub(h)).redISub(r.redMul(c)),f=this.z.redMul(s);return this.curve.jpoint(h,d,f)},u.prototype.dblp=function(t){if(0===t)return this;if(this.isInfinity())return this;if(!t)return this.dbl();var e;if(this.curve.zeroA||this.curve.threeA){var n=this;for(e=0;e=0)return!1;if(n.redIAdd(r),0===this.x.cmp(n))return!0}},u.prototype.inspect=function(){return this.isInfinity()?"":""},u.prototype.isInfinity=function(){return 0===this.z.cmpn(0)}},MwEJ:function(t,e,n){var i=n("bYtY"),r=n("YXkt"),o=n("sdST"),s=n("k9D9").SOURCE_FORMAT_ORIGINAL,a=n("L0Ub").getDimensionTypeByAxis,l=n("4NO4").getDataItemValue,c=n("IDmD"),u=n("i38C").getCoordSysInfoBySeries,h=n("7G+c"),d=n("7hqr").enableDataStack,f=n("D5nY").makeSeriesEncodeForAxisCoordSys;var p=function(t,e,n){n=n||{},h.isInstance(t)||(t=h.seriesDataToSource(t));var p,g=e.get("coordinateSystem"),m=c.get(g),v=u(e);v&&(p=i.map(v.coordSysDims,(function(t){var e={name:t},n=v.axisMap.get(t);if(n){var i=n.get("type");e.type=a(i)}return e}))),p||(p=m&&(m.getDimensionsInfo?m.getDimensionsInfo():m.dimensions.slice())||["x","y"]);var b,y,w=o(t,{coordDimensions:p,generateCoord:n.generateCoord,encodeDefaulter:n.useEncodeDefaulter?i.curry(f,p,e):null});v&&i.each(w,(function(t,e){var n=t.coordDim,i=v.categoryAxisMap.get(n);i&&(null==b&&(b=e),t.ordinalMeta=i.getOrdinalMeta()),null!=t.otherDims.itemName&&(y=!0)})),y||null==b||(w[b].otherDims.itemName=0);var x=d(e,w),_=new r(w,e);_.setCalculationInfo(x);var M=null!=b&&function(t){if(t.sourceFormat===s){var e=function(t){var e=0;for(;e1&&(u*=s(w),f*=s(w));var x=(r===o?-1:1)*s((u*u*(f*f)-u*u*(y*y)-f*f*(b*b))/(u*u*(y*y)+f*f*(b*b)))||0,_=x*u*y/f,M=x*-f*b/u,S=(t+n)/2+l(v)*_-a(v)*M,A=(e+i)/2+a(v)*_+l(v)*M,k=d([1,0],[(b-_)/u,(y-M)/f]),C=[(b-_)/u,(y-M)/f],T=[(-1*b-_)/u,(-1*y-M)/f],E=d(C,T);h(C,T)<=-1&&(E=c),h(C,T)>=1&&(E=0),0===o&&E>0&&(E-=2*c),1===o&&E<0&&(E+=2*c),m.addData(g,S,A,u,f,k,E,v,o)}var p=/([mlvhzcqtsa])([^mlvhzcqtsa]*)/gi,g=/-?([0-9]*\.)?[0-9]+([eE]-?[0-9]+)?/g;function m(t,e){var n=function(t){if(!t)return new r;for(var e,n=0,i=0,o=n,s=i,a=new r,l=r.CMD,c=t.match(p),u=0;u|<<|>>|<<=|>>=|&&|\|\||[!&|+\-*\/%~^<>=]=?/},{token:"punctuation.operator",regex:/[?:;]/},{token:"punctuation.operator",regex:/[.,]/,inheritingStateRuleId:"punctuation"},{token:"paren.lparen",regex:/[\[{]/},{token:"paren.lparen",regex:/[(]/,inheritingStateRuleId:"lparen"},{token:"paren.rparen",regex:/[\]}]/},{token:"paren.rparen",regex:/[)]/,inheritingStateRuleId:"rparen"}],comment:[u("block"),{token:"comment.block",regex:"\\*\\/",next:"pop"},{defaultToken:"comment.block",caseInsensitive:!0}],line_comment:[u("line"),{token:"comment.line.double-slash",regex:"$|^",next:"pop"},{defaultToken:"comment.line.double-slash",caseInsensitive:!0}],doc_comment:[u("block"),h("block"),{token:"comment.block.doc.documentation",regex:"\\*\\/",next:"pop"},{defaultToken:"comment.block.doc.documentation",caseInsensitive:!0}],doc_line_comment:[u("line"),h("line"),{token:"comment.line.triple-slash.double-slash.doc.documentation",regex:"$|^",next:"pop"},{defaultToken:"comment.line.triple-slash.double-slash.doc.documentation",caseInsensitive:!0}],qqstring:[{token:"constant.language.escape",regex:c},{token:"string.quoted.double",regex:"\\\\$",next:"qqstring"},{token:"string.quoted.double",regex:'"|$',next:"pop"},{defaultToken:"string.quoted.double"}],qstring:[{token:"constant.language.escape",regex:c},{token:"string.quoted.single",regex:"\\\\$",next:"qstring"},{token:"string.quoted.single",regex:"'|$",next:"pop"},{defaultToken:"string.quoted.single"}]};var f=r(this.$rules.start);f.forEach((function(t,e){if(t.inheritingStateRuleId){switch(t.inheritingStateRuleId){case"keywordMapper":t.token=a;break;case"punctuation":t.onMatch=function(e,n,i){return s=!1,t.token};break;case"lparen":t.next=d;break;case"rparen":t.next="pop";break;case"fixedNumberType":t.onMatch=function(e,n,i){return s=!0,t.token}}delete t.inheritingStateRuleId,delete this.$rules.start[e].inheritingStateRuleId,f[e]=t}}),this),this.$rules.function_arguments=f,this.normalizeRules()};i.inherits(s,o),e.SolidityHighlightRules=s})),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],(function(t,e,n){"use strict";var i=t("../range").Range,r=function(){};(function(){this.checkOutdent=function(t,e){return!!/^\s+$/.test(t)&&/^\s*\}/.test(e)},this.autoOutdent=function(t,e){var n=t.getLine(e).match(/^(\s*\})/);if(!n)return 0;var r=n[1].length,o=t.findMatchingBracket({row:e,column:r});if(!o||o.row==e)return 0;var s=this.$getIndent(t.getLine(o.row));t.replace(new i(e,0,e,r-1),s)},this.$getIndent=function(t){return t.match(/^\s*/)[0]}}).call(r.prototype),e.MatchingBraceOutdent=r})),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],(function(t,e,n){"use strict";var i,r=t("../../lib/oop"),o=t("../behaviour").Behaviour,s=t("../../token_iterator").TokenIterator,a=t("../../lib/lang"),l=["text","paren.rparen","punctuation.operator"],c=["text","paren.rparen","punctuation.operator","comment"],u={},h=function(t){var e=-1;if(t.multiSelect&&(e=t.selection.index,u.rangeCount!=t.multiSelect.rangeCount&&(u={rangeCount:t.multiSelect.rangeCount})),u[e])return i=u[e];i=u[e]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},d=function(){this.add("braces","insertion",(function(t,e,n,r,o){var s=n.getCursorPosition(),l=r.doc.getLine(s.row);if("{"==o){h(n);var c=n.getSelectionRange(),u=r.doc.getTextRange(c);if(""!==u&&"{"!==u&&n.getWrapBehavioursEnabled())return{text:"{"+u+"}",selection:!1};if(d.isSaneInsertion(n,r))return/[\]\}\)]/.test(l[s.column])||n.inMultiSelectMode?(d.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(d.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if("}"==o){if(h(n),"}"==l.substring(s.column,s.column+1))if(null!==r.$findOpeningBracket("}",{column:s.column+1,row:s.row})&&d.isAutoInsertedClosing(s,l,o))return d.popAutoInsertedClosing(),{text:"",selection:[1,1]}}else{if("\n"==o||"\r\n"==o){h(n);var f="";if(d.isMaybeInsertedClosing(s,l)&&(f=a.stringRepeat("}",i.maybeInsertedBrackets),d.clearMaybeInsertedClosing()),"}"===l.substring(s.column,s.column+1)){var p=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!p)return null;var g=this.$getIndent(r.getLine(p.row))}else{if(!f)return void d.clearMaybeInsertedClosing();g=this.$getIndent(l)}var m=g+r.getTabString();return{text:"\n"+m+"\n"+g+f,selection:[1,m.length,1,m.length]}}d.clearMaybeInsertedClosing()}})),this.add("braces","deletion",(function(t,e,n,r,o){var s=r.doc.getTextRange(o);if(!o.isMultiLine()&&"{"==s){if(h(n),"}"==r.doc.getLine(o.start.row).substring(o.end.column,o.end.column+1))return o.end.column++,o;i.maybeInsertedBrackets--}})),this.add("parens","insertion",(function(t,e,n,i,r){if("("==r){h(n);var o=n.getSelectionRange(),s=i.doc.getTextRange(o);if(""!==s&&n.getWrapBehavioursEnabled())return{text:"("+s+")",selection:!1};if(d.isSaneInsertion(n,i))return d.recordAutoInsert(n,i,")"),{text:"()",selection:[1,1]}}else if(")"==r){h(n);var a=n.getCursorPosition(),l=i.doc.getLine(a.row);if(")"==l.substring(a.column,a.column+1))if(null!==i.$findOpeningBracket(")",{column:a.column+1,row:a.row})&&d.isAutoInsertedClosing(a,l,r))return d.popAutoInsertedClosing(),{text:"",selection:[1,1]}}})),this.add("parens","deletion",(function(t,e,n,i,r){var o=i.doc.getTextRange(r);if(!r.isMultiLine()&&"("==o&&(h(n),")"==i.doc.getLine(r.start.row).substring(r.start.column+1,r.start.column+2)))return r.end.column++,r})),this.add("brackets","insertion",(function(t,e,n,i,r){if("["==r){h(n);var o=n.getSelectionRange(),s=i.doc.getTextRange(o);if(""!==s&&n.getWrapBehavioursEnabled())return{text:"["+s+"]",selection:!1};if(d.isSaneInsertion(n,i))return d.recordAutoInsert(n,i,"]"),{text:"[]",selection:[1,1]}}else if("]"==r){h(n);var a=n.getCursorPosition(),l=i.doc.getLine(a.row);if("]"==l.substring(a.column,a.column+1))if(null!==i.$findOpeningBracket("]",{column:a.column+1,row:a.row})&&d.isAutoInsertedClosing(a,l,r))return d.popAutoInsertedClosing(),{text:"",selection:[1,1]}}})),this.add("brackets","deletion",(function(t,e,n,i,r){var o=i.doc.getTextRange(r);if(!r.isMultiLine()&&"["==o&&(h(n),"]"==i.doc.getLine(r.start.row).substring(r.start.column+1,r.start.column+2)))return r.end.column++,r})),this.add("string_dquotes","insertion",(function(t,e,n,i,r){if('"'==r||"'"==r){h(n);var o=r,s=n.getSelectionRange(),a=i.doc.getTextRange(s);if(""!==a&&"'"!==a&&'"'!=a&&n.getWrapBehavioursEnabled())return{text:o+a+o,selection:!1};var l=n.getCursorPosition(),c=i.doc.getLine(l.row);if("\\"==c.substring(l.column-1,l.column))return null;for(var u,f=i.getTokens(s.start.row),p=0,g=-1,m=0;ms.start.column));m++)p+=f[m].value.length;if(!u||g<0&&"comment"!==u.type&&("string"!==u.type||s.start.column!==u.value.length+p-1&&u.value.lastIndexOf(o)===u.value.length-1)){if(!d.isSaneInsertion(n,i))return;return{text:o+o,selection:[1,1]}}if(u&&"string"===u.type&&c.substring(l.column,l.column+1)==o)return{text:"",selection:[1,1]}}})),this.add("string_dquotes","deletion",(function(t,e,n,i,r){var o=i.doc.getTextRange(r);if(!r.isMultiLine()&&('"'==o||"'"==o)&&(h(n),i.doc.getLine(r.start.row).substring(r.start.column+1,r.start.column+2)==o))return r.end.column++,r}))};d.isSaneInsertion=function(t,e){var n=t.getCursorPosition(),i=new s(e,n.row,n.column);if(!this.$matchTokenType(i.getCurrentToken()||"text",l)){var r=new s(e,n.row,n.column+1);if(!this.$matchTokenType(r.getCurrentToken()||"text",l))return!1}return i.stepForward(),i.getCurrentTokenRow()!==n.row||this.$matchTokenType(i.getCurrentToken()||"text",c)},d.$matchTokenType=function(t,e){return e.indexOf(t.type||t)>-1},d.recordAutoInsert=function(t,e,n){var r=t.getCursorPosition(),o=e.doc.getLine(r.row);this.isAutoInsertedClosing(r,o,i.autoInsertedLineEnd[0])||(i.autoInsertedBrackets=0),i.autoInsertedRow=r.row,i.autoInsertedLineEnd=n+o.substr(r.column),i.autoInsertedBrackets++},d.recordMaybeInsert=function(t,e,n){var r=t.getCursorPosition(),o=e.doc.getLine(r.row);this.isMaybeInsertedClosing(r,o)||(i.maybeInsertedBrackets=0),i.maybeInsertedRow=r.row,i.maybeInsertedLineStart=o.substr(0,r.column)+n,i.maybeInsertedLineEnd=o.substr(r.column),i.maybeInsertedBrackets++},d.isAutoInsertedClosing=function(t,e,n){return i.autoInsertedBrackets>0&&t.row===i.autoInsertedRow&&n===i.autoInsertedLineEnd[0]&&e.substr(t.column)===i.autoInsertedLineEnd},d.isMaybeInsertedClosing=function(t,e){return i.maybeInsertedBrackets>0&&t.row===i.maybeInsertedRow&&e.substr(t.column)===i.maybeInsertedLineEnd&&e.substr(0,t.column)==i.maybeInsertedLineStart},d.popAutoInsertedClosing=function(){i.autoInsertedLineEnd=i.autoInsertedLineEnd.substr(1),i.autoInsertedBrackets--},d.clearMaybeInsertedClosing=function(){i&&(i.maybeInsertedBrackets=0,i.maybeInsertedRow=-1)},r.inherits(d,o),e.CstyleBehaviour=d})),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],(function(t,e,n){"use strict";var i=t("../../lib/oop"),r=t("../../range").Range,o=t("./fold_mode").FoldMode,s=e.FoldMode=function(t){t&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+t.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+t.end)))};i.inherits(s,o),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.getFoldWidgetRange=function(t,e,n,i){var r,o=t.getLine(n);if(r=o.match(this.foldingStartMarker)){var s=r.index;if(r[1])return this.openingBracketBlock(t,r[1],n,s);var a=t.getCommentFoldRange(n,s+r[0].length,1);return a&&!a.isMultiLine()&&(i?a=this.getSectionRange(t,n):"all"!=e&&(a=null)),a}if("markbegin"!==e&&(r=o.match(this.foldingStopMarker))){s=r.index+r[0].length;return r[1]?this.closingBracketBlock(t,r[1],n,s):t.getCommentFoldRange(n,s,-1)}},this.getSectionRange=function(t,e){for(var n=t.getLine(e),i=n.search(/\S/),o=e,s=n.length,a=e+=1,l=t.getLength();++ec)break;var u=this.getFoldWidgetRange(t,"all",e);if(u){if(u.start.row<=o)break;if(u.isMultiLine())e=u.end.row;else if(i==c)break}a=e}}return new r(o,s,a,t.getLine(a).length)}}.call(s.prototype)})),ace.define("ace/mode/solidity",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/solidity_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],(function(t,e,n){"use strict";var i=t("../lib/oop"),r=t("./text").Mode,o=t("./solidity_highlight_rules").SolidityHighlightRules,s=t("./matching_brace_outdent").MatchingBraceOutdent,a=(t("../range").Range,t("../worker/worker_client").WorkerClient,t("./behaviour/cstyle").CstyleBehaviour),l=t("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=o,this.$outdent=new s,this.$behaviour=new a,this.foldingRules=new l};i.inherits(c,r),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(t,e,n){var i=this.$getIndent(e),r=this.getTokenizer().getLineTokens(e,t),o=r.tokens,s=r.state;if(o.length&&"comment"==o[o.length-1].type)return i;if("start"==t)(a=e.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/))&&(i+=n);else if("doc_comment"==t){if("start"==s)return"";var a;(a=e.match(/^\s*(\/?)\*/))&&(a[1]&&(i+=" "),i+="* ")}return i},this.checkOutdent=function(t,e,n){return this.$outdent.checkOutdent(e,n)},this.autoOutdent=function(t,e,n){this.$outdent.autoOutdent(e,n)},this.$id="ace/mode/solidity"}.call(c.prototype),e.Mode=c}))},NzDk:function(t,e,n){t.exports=n.p+"afb72b77b4edf3430441b8280c9fb6a9.js"},"OA+I":function(t,e,n){"use strict";var i=n("86MQ"),r=i.assert,o=i.parseBytes,s=i.cachedProperty;function a(t,e){this.eddsa=t,this._secret=o(e.secret),t.isPoint(e.pub)?this._pub=e.pub:this._pubBytes=o(e.pub)}a.fromPublic=function(t,e){return e instanceof a?e:new a(t,{pub:e})},a.fromSecret=function(t,e){return e instanceof a?e:new a(t,{secret:e})},a.prototype.secret=function(){return this._secret},s(a,"pubBytes",(function(){return this.eddsa.encodePoint(this.pub())})),s(a,"pub",(function(){return this._pubBytes?this.eddsa.decodePoint(this._pubBytes):this.eddsa.g.mul(this.priv())})),s(a,"privBytes",(function(){var t=this.eddsa,e=this.hash(),n=t.encodingLength-1,i=e.slice(0,t.encodingLength);return i[0]&=248,i[n]&=127,i[n]|=64,i})),s(a,"priv",(function(){return this.eddsa.decodeInt(this.privBytes())})),s(a,"hash",(function(){return this.eddsa.hash().update(this.secret()).digest()})),s(a,"messagePrefix",(function(){return this.hash().slice(this.eddsa.encodingLength)})),a.prototype.sign=function(t){return r(this._secret,"KeyPair can only verify"),this.eddsa.sign(t,this)},a.prototype.verify=function(t,e){return this.eddsa.verify(t,e,this)},a.prototype.getSecret=function(t){return r(this._secret,"KeyPair is public only"),i.encode(this.secret(),t)},a.prototype.getPublic=function(t){return i.encode(this.pubBytes(),t)},t.exports=a},OELB:function(t,e,n){var i=n("bYtY");var r=/^(?:(\d{4})(?:[-\/](\d{1,2})(?:[-\/](\d{1,2})(?:[T ](\d{1,2})(?::(\d\d)(?::(\d\d)(?:[.,](\d+))?)?)?(Z|[\+\-]\d\d:?\d\d)?)?)?)?)?$/;function o(t){if(0===t)return 0;var e=Math.floor(Math.log(t)/Math.LN10);return t/Math.pow(10,e)>=10&&e++,e}e.linearMap=function(t,e,n,i){var r=e[1]-e[0],o=n[1]-n[0];if(0===r)return 0===o?n[0]:(n[0]+n[1])/2;if(i)if(r>0){if(t<=e[0])return n[0];if(t>=e[1])return n[1]}else{if(t>=e[0])return n[0];if(t<=e[1])return n[1]}else{if(t===e[0])return n[0];if(t===e[1])return n[1]}return(t-e[0])/r*o+n[0]},e.parsePercent=function(t,e){switch(t){case"center":case"middle":t="50%";break;case"left":case"top":t="0%";break;case"right":case"bottom":t="100%"}return"string"==typeof t?(n=t,n.replace(/^\s+|\s+$/g,"")).match(/%$/)?parseFloat(t)/100*e:parseFloat(t):null==t?NaN:+t;var n},e.round=function(t,e,n){return null==e&&(e=10),e=Math.min(Math.max(0,e),20),t=(+t).toFixed(e),n?t:+t},e.asc=function(t){return t.sort((function(t,e){return t-e})),t},e.getPrecision=function(t){if(t=+t,isNaN(t))return 0;for(var e=1,n=0;Math.round(t*e)/e!==t;)e*=10,n++;return n},e.getPrecisionSafe=function(t){var e=t.toString(),n=e.indexOf("e");if(n>0){var i=+e.slice(n+1);return i<0?-i:0}var r=e.indexOf(".");return r<0?0:e.length-1-r},e.getPixelPrecision=function(t,e){var n=Math.log,i=Math.LN10,r=Math.floor(n(t[1]-t[0])/i),o=Math.round(n(Math.abs(e[1]-e[0]))/i),s=Math.min(Math.max(-r+o,0),20);return isFinite(s)?s:20},e.getPercentWithPrecision=function(t,e,n){if(!t[e])return 0;var r=i.reduce(t,(function(t,e){return t+(isNaN(e)?0:e)}),0);if(0===r)return 0;for(var o=Math.pow(10,n),s=i.map(t,(function(t){return(isNaN(t)?0:t)/r*o*100})),a=100*o,l=i.map(s,(function(t){return Math.floor(t)})),c=i.reduce(l,(function(t,e){return t+e}),0),u=i.map(s,(function(t,e){return t-l[e]}));ch&&(h=u[f],d=f);++l[d],u[d]=0,++c}return l[e]/o},e.MAX_SAFE_INTEGER=9007199254740991,e.remRadian=function(t){var e=2*Math.PI;return(t%e+e)%e},e.isRadianAroundZero=function(t){return t>-1e-4&&t<1e-4},e.parseDate=function(t){if(t instanceof Date)return t;if("string"==typeof t){var e=r.exec(t);if(!e)return new Date(NaN);if(e[8]){var n=+e[4]||0;return"Z"!==e[8].toUpperCase()&&(n-=e[8].slice(0,3)),new Date(Date.UTC(+e[1],+(e[2]||1)-1,+e[3]||1,n,+(e[5]||0),+e[6]||0,+e[7]||0))}return new Date(+e[1],+(e[2]||1)-1,+e[3]||1,+e[4]||0,+(e[5]||0),+e[6]||0,+e[7]||0)}return null==t?new Date(NaN):new Date(Math.round(t))},e.quantity=function(t){return Math.pow(10,o(t))},e.quantityExponent=o,e.nice=function(t,e){var n=o(t),i=Math.pow(10,n),r=t/i;return t=(e?r<1.5?1:r<2.5?2:r<4?3:r<7?5:10:r<1?1:r<2?2:r<3?3:r<5?5:10)*i,n>=-20?+t.toFixed(n<0?-n:0):t},e.quantile=function(t,e){var n=(t.length-1)*e+1,i=Math.floor(n),r=+t[i-1],o=n-i;return o?r+o*(t[i]-r):r},e.reformIntervals=function(t){t.sort((function(t,e){return function t(e,n,i){return e.interval[i]=0}},OKJ2:function(t,e,n){var i=n("KxfA").retrieveRawValue,r=n("7aKB"),o=r.getTooltipMarker,s=r.formatTpl,a=n("4NO4").getTooltipRenderMode,l=/\{@(.+?)\}/g,c={getDataParams:function(t,e){var n=this.getData(e),i=this.getRawValue(t,e),r=n.getRawIndex(t),s=n.getName(t),l=n.getRawDataItem(t),c=n.getItemVisual(t,"color"),u=n.getItemVisual(t,"borderColor"),h=this.ecModel.getComponent("tooltip"),d=h&&h.get("renderMode"),f=a(d),p=this.mainType,g="series"===p,m=n.userOutput;return{componentType:p,componentSubType:this.subType,componentIndex:this.componentIndex,seriesType:g?this.subType:null,seriesIndex:this.seriesIndex,seriesId:g?this.id:null,seriesName:g?this.name:null,name:s,dataIndex:r,data:l,dataType:e,value:i,color:c,borderColor:u,dimensionNames:m?m.dimensionNames:null,encode:m?m.encode:null,marker:o({color:c,renderMode:f}),$vars:["seriesName","name","value"]}},getFormattedLabel:function(t,e,n,r,o){e=e||"normal";var a=this.getData(n),c=a.getItemModel(t),u=this.getDataParams(t,n);null!=r&&u.value instanceof Array&&(u.value=u.value[r]);var h=c.get("normal"===e?[o||"label","formatter"]:[e,o||"label","formatter"]);return"function"==typeof h?(u.status=e,u.dimensionIndex=r,h(u)):"string"==typeof h?s(h,u).replace(l,(function(e,n){var r=n.length;return"["===n.charAt(0)&&"]"===n.charAt(r-1)&&(n=+n.slice(1,r-1)),i(a,t,n)})):void 0},getRawValue:function(t,e){return i(this.getData(e),t)},formatTooltip:function(){}};t.exports=c},OQFs:function(t,e,n){var i=n("KCsZ")([["lineWidth","width"],["stroke","color"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"]]),r={getLineStyle:function(t){var e=i(this,t);return e.lineDash=this.getLineDash(e.lineWidth),e},getLineDash:function(t){null==t&&(t=1);var e=this.get("type"),n=Math.max(t,2),i=4*t;return"solid"!==e&&null!=e&&("dashed"===e?[i,i]:[n,n])}};t.exports=r},OS9S:function(t,e,n){var i=n("bYtY").inherits,r=n("Gev7"),o=n("mFDi");function s(t){r.call(this,t),this._displayables=[],this._temporaryDisplayables=[],this._cursor=0,this.notClear=!0}s.prototype.incremental=!0,s.prototype.clearDisplaybles=function(){this._displayables=[],this._temporaryDisplayables=[],this._cursor=0,this.dirty(),this.notClear=!1},s.prototype.addDisplayable=function(t,e){e?this._temporaryDisplayables.push(t):this._displayables.push(t),this.dirty()},s.prototype.addDisplayables=function(t,e){e=e||!1;for(var n=0;n=48&&n<=57?n-48:n>=65&&n<=70?n-55:n>=97&&n<=102?n-87:void i(!1,"Invalid character in "+t)}function l(t,e,n){var i=a(t,n);return n-1>=e&&(i|=a(t,n-1)<<4),i}function c(t,e,n,r){for(var o=0,s=0,a=Math.min(t.length,n),l=e;l=49?c-49+10:c>=17?c-17+10:c,i(c>=0&&s0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,n){if("number"==typeof t)return this._initNumber(t,e,n);if("object"==typeof t)return this._initArray(t,e,n);"hex"===e&&(e=16),i(e===(0|e)&&e>=2&&e<=36);var r=0;"-"===(t=t.toString().replace(/\s+/g,""))[0]&&(r++,this.negative=1),r=0;r-=3)s=t[r]|t[r-1]<<8|t[r-2]<<16,this.words[o]|=s<>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);else if("le"===n)for(r=0,o=0;r>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);return this._strip()},o.prototype._parseHex=function(t,e,n){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var i=0;i=e;i-=2)r=l(t,e,i)<=18?(o-=18,s+=1,this.words[s]|=r>>>26):o+=8;else for(i=(t.length-e)%2==0?e+1:e;i=18?(o-=18,s+=1,this.words[s]|=r>>>26):o+=8;this._strip()},o.prototype._parseBase=function(t,e,n){this.words=[0],this.length=1;for(var i=0,r=1;r<=67108863;r*=e)i++;i--,r=r/e|0;for(var o=t.length-n,s=o%i,a=Math.min(o,o-s)+n,l=0,u=n;u1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},"undefined"!=typeof Symbol&&"function"==typeof Symbol.for)try{o.prototype[Symbol.for("nodejs.util.inspect.custom")]=h}catch(t){o.prototype.inspect=h}else o.prototype.inspect=h;function h(){return(this.red?""}var d=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],f=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],p=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];o.prototype.toString=function(t,e){var n;if(e=0|e||1,16===(t=t||10)||"hex"===t){n="";for(var r=0,o=0,s=0;s>>24-r&16777215,(r+=2)>=26&&(r-=26,s--),n=0!==o||s!==this.length-1?d[6-l.length]+l+n:l+n}for(0!==o&&(n=o.toString(16)+n);n.length%e!=0;)n="0"+n;return 0!==this.negative&&(n="-"+n),n}if(t===(0|t)&&t>=2&&t<=36){var c=f[t],u=p[t];n="";var h=this.clone();for(h.negative=0;!h.isZero();){var g=h.modrn(u).toString(t);n=(h=h.idivn(u)).isZero()?g+n:d[c-g.length]+g+n}for(this.isZero()&&(n="0"+n);n.length%e!=0;)n="0"+n;return 0!==this.negative&&(n="-"+n),n}i(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16,2)},s&&(o.prototype.toBuffer=function(t,e){return this.toArrayLike(s,t,e)}),o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)};function g(t,e,n){n.negative=e.negative^t.negative;var i=t.length+e.length|0;n.length=i,i=i-1|0;var r=0|t.words[0],o=0|e.words[0],s=r*o,a=67108863&s,l=s/67108864|0;n.words[0]=a;for(var c=1;c>>26,h=67108863&l,d=Math.min(c,e.length-1),f=Math.max(0,c-t.length+1);f<=d;f++){var p=c-f|0;u+=(s=(r=0|t.words[p])*(o=0|e.words[f])+h)/67108864|0,h=67108863&s}n.words[c]=0|h,l=0|u}return 0!==l?n.words[c]=0|l:n.length--,n._strip()}o.prototype.toArrayLike=function(t,e,n){this._strip();var r=this.byteLength(),o=n||Math.max(1,r);i(r<=o,"byte array longer than desired length"),i(o>0,"Requested array length <= 0");var s=function(t,e){return t.allocUnsafe?t.allocUnsafe(e):new t(e)}(t,o);return this["_toArrayLike"+("le"===e?"LE":"BE")](s,r),s},o.prototype._toArrayLikeLE=function(t,e){for(var n=0,i=0,r=0,o=0;r>8&255),n>16&255),6===o?(n>24&255),i=0,o=0):(i=s>>>24,o+=2)}if(n=0&&(t[n--]=s>>8&255),n>=0&&(t[n--]=s>>16&255),6===o?(n>=0&&(t[n--]=s>>24&255),i=0,o=0):(i=s>>>24,o+=2)}if(n>=0)for(t[n--]=i;n>=0;)t[n--]=0},Math.clz32?o.prototype._countBits=function(t){return 32-Math.clz32(t)}:o.prototype._countBits=function(t){var e=t,n=0;return e>=4096&&(n+=13,e>>>=13),e>=64&&(n+=7,e>>>=7),e>=8&&(n+=4,e>>>=4),e>=2&&(n+=2,e>>>=2),n+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,n=0;return 0==(8191&e)&&(n+=13,e>>>=13),0==(127&e)&&(n+=7,e>>>=7),0==(15&e)&&(n+=4,e>>>=4),0==(3&e)&&(n+=2,e>>>=2),0==(1&e)&&n++,n},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var n=0;nt.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,n;this.length>t.length?(e=this,n=t):(e=t,n=this);for(var i=0;it.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){i("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),n=t%26;this._expand(e),n>0&&e--;for(var r=0;r0&&(this.words[r]=~this.words[r]&67108863>>26-n),this._strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){i("number"==typeof t&&t>=0);var n=t/26|0,r=t%26;return this._expand(n+1),this.words[n]=e?this.words[n]|1<t.length?(n=this,i=t):(n=t,i=this);for(var r=0,o=0;o>>26;for(;0!==r&&o>>26;if(this.length=n.length,0!==r)this.words[this.length]=r,this.length++;else if(n!==this)for(;ot.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var n,i,r=this.cmp(t);if(0===r)return this.negative=0,this.length=1,this.words[0]=0,this;r>0?(n=this,i=t):(n=t,i=this);for(var o=0,s=0;s>26,this.words[s]=67108863&e;for(;0!==o&&s>26,this.words[s]=67108863&e;if(0===o&&s>>13,f=0|s[1],p=8191&f,g=f>>>13,m=0|s[2],v=8191&m,b=m>>>13,y=0|s[3],w=8191&y,x=y>>>13,_=0|s[4],M=8191&_,S=_>>>13,A=0|s[5],k=8191&A,C=A>>>13,T=0|s[6],E=8191&T,R=T>>>13,L=0|s[7],I=8191&L,O=L>>>13,$=0|s[8],P=8191&$,D=$>>>13,B=0|s[9],N=8191&B,F=B>>>13,j=0|a[0],U=8191&j,z=j>>>13,H=0|a[1],W=8191&H,V=H>>>13,q=0|a[2],G=8191&q,Y=q>>>13,K=0|a[3],Z=8191&K,X=K>>>13,J=0|a[4],Q=8191&J,tt=J>>>13,et=0|a[5],nt=8191&et,it=et>>>13,rt=0|a[6],ot=8191&rt,st=rt>>>13,at=0|a[7],lt=8191&at,ct=at>>>13,ut=0|a[8],ht=8191&ut,dt=ut>>>13,ft=0|a[9],pt=8191&ft,gt=ft>>>13;n.negative=t.negative^e.negative,n.length=19;var mt=(c+(i=Math.imul(h,U))|0)+((8191&(r=(r=Math.imul(h,z))+Math.imul(d,U)|0))<<13)|0;c=((o=Math.imul(d,z))+(r>>>13)|0)+(mt>>>26)|0,mt&=67108863,i=Math.imul(p,U),r=(r=Math.imul(p,z))+Math.imul(g,U)|0,o=Math.imul(g,z);var vt=(c+(i=i+Math.imul(h,W)|0)|0)+((8191&(r=(r=r+Math.imul(h,V)|0)+Math.imul(d,W)|0))<<13)|0;c=((o=o+Math.imul(d,V)|0)+(r>>>13)|0)+(vt>>>26)|0,vt&=67108863,i=Math.imul(v,U),r=(r=Math.imul(v,z))+Math.imul(b,U)|0,o=Math.imul(b,z),i=i+Math.imul(p,W)|0,r=(r=r+Math.imul(p,V)|0)+Math.imul(g,W)|0,o=o+Math.imul(g,V)|0;var bt=(c+(i=i+Math.imul(h,G)|0)|0)+((8191&(r=(r=r+Math.imul(h,Y)|0)+Math.imul(d,G)|0))<<13)|0;c=((o=o+Math.imul(d,Y)|0)+(r>>>13)|0)+(bt>>>26)|0,bt&=67108863,i=Math.imul(w,U),r=(r=Math.imul(w,z))+Math.imul(x,U)|0,o=Math.imul(x,z),i=i+Math.imul(v,W)|0,r=(r=r+Math.imul(v,V)|0)+Math.imul(b,W)|0,o=o+Math.imul(b,V)|0,i=i+Math.imul(p,G)|0,r=(r=r+Math.imul(p,Y)|0)+Math.imul(g,G)|0,o=o+Math.imul(g,Y)|0;var yt=(c+(i=i+Math.imul(h,Z)|0)|0)+((8191&(r=(r=r+Math.imul(h,X)|0)+Math.imul(d,Z)|0))<<13)|0;c=((o=o+Math.imul(d,X)|0)+(r>>>13)|0)+(yt>>>26)|0,yt&=67108863,i=Math.imul(M,U),r=(r=Math.imul(M,z))+Math.imul(S,U)|0,o=Math.imul(S,z),i=i+Math.imul(w,W)|0,r=(r=r+Math.imul(w,V)|0)+Math.imul(x,W)|0,o=o+Math.imul(x,V)|0,i=i+Math.imul(v,G)|0,r=(r=r+Math.imul(v,Y)|0)+Math.imul(b,G)|0,o=o+Math.imul(b,Y)|0,i=i+Math.imul(p,Z)|0,r=(r=r+Math.imul(p,X)|0)+Math.imul(g,Z)|0,o=o+Math.imul(g,X)|0;var wt=(c+(i=i+Math.imul(h,Q)|0)|0)+((8191&(r=(r=r+Math.imul(h,tt)|0)+Math.imul(d,Q)|0))<<13)|0;c=((o=o+Math.imul(d,tt)|0)+(r>>>13)|0)+(wt>>>26)|0,wt&=67108863,i=Math.imul(k,U),r=(r=Math.imul(k,z))+Math.imul(C,U)|0,o=Math.imul(C,z),i=i+Math.imul(M,W)|0,r=(r=r+Math.imul(M,V)|0)+Math.imul(S,W)|0,o=o+Math.imul(S,V)|0,i=i+Math.imul(w,G)|0,r=(r=r+Math.imul(w,Y)|0)+Math.imul(x,G)|0,o=o+Math.imul(x,Y)|0,i=i+Math.imul(v,Z)|0,r=(r=r+Math.imul(v,X)|0)+Math.imul(b,Z)|0,o=o+Math.imul(b,X)|0,i=i+Math.imul(p,Q)|0,r=(r=r+Math.imul(p,tt)|0)+Math.imul(g,Q)|0,o=o+Math.imul(g,tt)|0;var xt=(c+(i=i+Math.imul(h,nt)|0)|0)+((8191&(r=(r=r+Math.imul(h,it)|0)+Math.imul(d,nt)|0))<<13)|0;c=((o=o+Math.imul(d,it)|0)+(r>>>13)|0)+(xt>>>26)|0,xt&=67108863,i=Math.imul(E,U),r=(r=Math.imul(E,z))+Math.imul(R,U)|0,o=Math.imul(R,z),i=i+Math.imul(k,W)|0,r=(r=r+Math.imul(k,V)|0)+Math.imul(C,W)|0,o=o+Math.imul(C,V)|0,i=i+Math.imul(M,G)|0,r=(r=r+Math.imul(M,Y)|0)+Math.imul(S,G)|0,o=o+Math.imul(S,Y)|0,i=i+Math.imul(w,Z)|0,r=(r=r+Math.imul(w,X)|0)+Math.imul(x,Z)|0,o=o+Math.imul(x,X)|0,i=i+Math.imul(v,Q)|0,r=(r=r+Math.imul(v,tt)|0)+Math.imul(b,Q)|0,o=o+Math.imul(b,tt)|0,i=i+Math.imul(p,nt)|0,r=(r=r+Math.imul(p,it)|0)+Math.imul(g,nt)|0,o=o+Math.imul(g,it)|0;var _t=(c+(i=i+Math.imul(h,ot)|0)|0)+((8191&(r=(r=r+Math.imul(h,st)|0)+Math.imul(d,ot)|0))<<13)|0;c=((o=o+Math.imul(d,st)|0)+(r>>>13)|0)+(_t>>>26)|0,_t&=67108863,i=Math.imul(I,U),r=(r=Math.imul(I,z))+Math.imul(O,U)|0,o=Math.imul(O,z),i=i+Math.imul(E,W)|0,r=(r=r+Math.imul(E,V)|0)+Math.imul(R,W)|0,o=o+Math.imul(R,V)|0,i=i+Math.imul(k,G)|0,r=(r=r+Math.imul(k,Y)|0)+Math.imul(C,G)|0,o=o+Math.imul(C,Y)|0,i=i+Math.imul(M,Z)|0,r=(r=r+Math.imul(M,X)|0)+Math.imul(S,Z)|0,o=o+Math.imul(S,X)|0,i=i+Math.imul(w,Q)|0,r=(r=r+Math.imul(w,tt)|0)+Math.imul(x,Q)|0,o=o+Math.imul(x,tt)|0,i=i+Math.imul(v,nt)|0,r=(r=r+Math.imul(v,it)|0)+Math.imul(b,nt)|0,o=o+Math.imul(b,it)|0,i=i+Math.imul(p,ot)|0,r=(r=r+Math.imul(p,st)|0)+Math.imul(g,ot)|0,o=o+Math.imul(g,st)|0;var Mt=(c+(i=i+Math.imul(h,lt)|0)|0)+((8191&(r=(r=r+Math.imul(h,ct)|0)+Math.imul(d,lt)|0))<<13)|0;c=((o=o+Math.imul(d,ct)|0)+(r>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,i=Math.imul(P,U),r=(r=Math.imul(P,z))+Math.imul(D,U)|0,o=Math.imul(D,z),i=i+Math.imul(I,W)|0,r=(r=r+Math.imul(I,V)|0)+Math.imul(O,W)|0,o=o+Math.imul(O,V)|0,i=i+Math.imul(E,G)|0,r=(r=r+Math.imul(E,Y)|0)+Math.imul(R,G)|0,o=o+Math.imul(R,Y)|0,i=i+Math.imul(k,Z)|0,r=(r=r+Math.imul(k,X)|0)+Math.imul(C,Z)|0,o=o+Math.imul(C,X)|0,i=i+Math.imul(M,Q)|0,r=(r=r+Math.imul(M,tt)|0)+Math.imul(S,Q)|0,o=o+Math.imul(S,tt)|0,i=i+Math.imul(w,nt)|0,r=(r=r+Math.imul(w,it)|0)+Math.imul(x,nt)|0,o=o+Math.imul(x,it)|0,i=i+Math.imul(v,ot)|0,r=(r=r+Math.imul(v,st)|0)+Math.imul(b,ot)|0,o=o+Math.imul(b,st)|0,i=i+Math.imul(p,lt)|0,r=(r=r+Math.imul(p,ct)|0)+Math.imul(g,lt)|0,o=o+Math.imul(g,ct)|0;var St=(c+(i=i+Math.imul(h,ht)|0)|0)+((8191&(r=(r=r+Math.imul(h,dt)|0)+Math.imul(d,ht)|0))<<13)|0;c=((o=o+Math.imul(d,dt)|0)+(r>>>13)|0)+(St>>>26)|0,St&=67108863,i=Math.imul(N,U),r=(r=Math.imul(N,z))+Math.imul(F,U)|0,o=Math.imul(F,z),i=i+Math.imul(P,W)|0,r=(r=r+Math.imul(P,V)|0)+Math.imul(D,W)|0,o=o+Math.imul(D,V)|0,i=i+Math.imul(I,G)|0,r=(r=r+Math.imul(I,Y)|0)+Math.imul(O,G)|0,o=o+Math.imul(O,Y)|0,i=i+Math.imul(E,Z)|0,r=(r=r+Math.imul(E,X)|0)+Math.imul(R,Z)|0,o=o+Math.imul(R,X)|0,i=i+Math.imul(k,Q)|0,r=(r=r+Math.imul(k,tt)|0)+Math.imul(C,Q)|0,o=o+Math.imul(C,tt)|0,i=i+Math.imul(M,nt)|0,r=(r=r+Math.imul(M,it)|0)+Math.imul(S,nt)|0,o=o+Math.imul(S,it)|0,i=i+Math.imul(w,ot)|0,r=(r=r+Math.imul(w,st)|0)+Math.imul(x,ot)|0,o=o+Math.imul(x,st)|0,i=i+Math.imul(v,lt)|0,r=(r=r+Math.imul(v,ct)|0)+Math.imul(b,lt)|0,o=o+Math.imul(b,ct)|0,i=i+Math.imul(p,ht)|0,r=(r=r+Math.imul(p,dt)|0)+Math.imul(g,ht)|0,o=o+Math.imul(g,dt)|0;var At=(c+(i=i+Math.imul(h,pt)|0)|0)+((8191&(r=(r=r+Math.imul(h,gt)|0)+Math.imul(d,pt)|0))<<13)|0;c=((o=o+Math.imul(d,gt)|0)+(r>>>13)|0)+(At>>>26)|0,At&=67108863,i=Math.imul(N,W),r=(r=Math.imul(N,V))+Math.imul(F,W)|0,o=Math.imul(F,V),i=i+Math.imul(P,G)|0,r=(r=r+Math.imul(P,Y)|0)+Math.imul(D,G)|0,o=o+Math.imul(D,Y)|0,i=i+Math.imul(I,Z)|0,r=(r=r+Math.imul(I,X)|0)+Math.imul(O,Z)|0,o=o+Math.imul(O,X)|0,i=i+Math.imul(E,Q)|0,r=(r=r+Math.imul(E,tt)|0)+Math.imul(R,Q)|0,o=o+Math.imul(R,tt)|0,i=i+Math.imul(k,nt)|0,r=(r=r+Math.imul(k,it)|0)+Math.imul(C,nt)|0,o=o+Math.imul(C,it)|0,i=i+Math.imul(M,ot)|0,r=(r=r+Math.imul(M,st)|0)+Math.imul(S,ot)|0,o=o+Math.imul(S,st)|0,i=i+Math.imul(w,lt)|0,r=(r=r+Math.imul(w,ct)|0)+Math.imul(x,lt)|0,o=o+Math.imul(x,ct)|0,i=i+Math.imul(v,ht)|0,r=(r=r+Math.imul(v,dt)|0)+Math.imul(b,ht)|0,o=o+Math.imul(b,dt)|0;var kt=(c+(i=i+Math.imul(p,pt)|0)|0)+((8191&(r=(r=r+Math.imul(p,gt)|0)+Math.imul(g,pt)|0))<<13)|0;c=((o=o+Math.imul(g,gt)|0)+(r>>>13)|0)+(kt>>>26)|0,kt&=67108863,i=Math.imul(N,G),r=(r=Math.imul(N,Y))+Math.imul(F,G)|0,o=Math.imul(F,Y),i=i+Math.imul(P,Z)|0,r=(r=r+Math.imul(P,X)|0)+Math.imul(D,Z)|0,o=o+Math.imul(D,X)|0,i=i+Math.imul(I,Q)|0,r=(r=r+Math.imul(I,tt)|0)+Math.imul(O,Q)|0,o=o+Math.imul(O,tt)|0,i=i+Math.imul(E,nt)|0,r=(r=r+Math.imul(E,it)|0)+Math.imul(R,nt)|0,o=o+Math.imul(R,it)|0,i=i+Math.imul(k,ot)|0,r=(r=r+Math.imul(k,st)|0)+Math.imul(C,ot)|0,o=o+Math.imul(C,st)|0,i=i+Math.imul(M,lt)|0,r=(r=r+Math.imul(M,ct)|0)+Math.imul(S,lt)|0,o=o+Math.imul(S,ct)|0,i=i+Math.imul(w,ht)|0,r=(r=r+Math.imul(w,dt)|0)+Math.imul(x,ht)|0,o=o+Math.imul(x,dt)|0;var Ct=(c+(i=i+Math.imul(v,pt)|0)|0)+((8191&(r=(r=r+Math.imul(v,gt)|0)+Math.imul(b,pt)|0))<<13)|0;c=((o=o+Math.imul(b,gt)|0)+(r>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,i=Math.imul(N,Z),r=(r=Math.imul(N,X))+Math.imul(F,Z)|0,o=Math.imul(F,X),i=i+Math.imul(P,Q)|0,r=(r=r+Math.imul(P,tt)|0)+Math.imul(D,Q)|0,o=o+Math.imul(D,tt)|0,i=i+Math.imul(I,nt)|0,r=(r=r+Math.imul(I,it)|0)+Math.imul(O,nt)|0,o=o+Math.imul(O,it)|0,i=i+Math.imul(E,ot)|0,r=(r=r+Math.imul(E,st)|0)+Math.imul(R,ot)|0,o=o+Math.imul(R,st)|0,i=i+Math.imul(k,lt)|0,r=(r=r+Math.imul(k,ct)|0)+Math.imul(C,lt)|0,o=o+Math.imul(C,ct)|0,i=i+Math.imul(M,ht)|0,r=(r=r+Math.imul(M,dt)|0)+Math.imul(S,ht)|0,o=o+Math.imul(S,dt)|0;var Tt=(c+(i=i+Math.imul(w,pt)|0)|0)+((8191&(r=(r=r+Math.imul(w,gt)|0)+Math.imul(x,pt)|0))<<13)|0;c=((o=o+Math.imul(x,gt)|0)+(r>>>13)|0)+(Tt>>>26)|0,Tt&=67108863,i=Math.imul(N,Q),r=(r=Math.imul(N,tt))+Math.imul(F,Q)|0,o=Math.imul(F,tt),i=i+Math.imul(P,nt)|0,r=(r=r+Math.imul(P,it)|0)+Math.imul(D,nt)|0,o=o+Math.imul(D,it)|0,i=i+Math.imul(I,ot)|0,r=(r=r+Math.imul(I,st)|0)+Math.imul(O,ot)|0,o=o+Math.imul(O,st)|0,i=i+Math.imul(E,lt)|0,r=(r=r+Math.imul(E,ct)|0)+Math.imul(R,lt)|0,o=o+Math.imul(R,ct)|0,i=i+Math.imul(k,ht)|0,r=(r=r+Math.imul(k,dt)|0)+Math.imul(C,ht)|0,o=o+Math.imul(C,dt)|0;var Et=(c+(i=i+Math.imul(M,pt)|0)|0)+((8191&(r=(r=r+Math.imul(M,gt)|0)+Math.imul(S,pt)|0))<<13)|0;c=((o=o+Math.imul(S,gt)|0)+(r>>>13)|0)+(Et>>>26)|0,Et&=67108863,i=Math.imul(N,nt),r=(r=Math.imul(N,it))+Math.imul(F,nt)|0,o=Math.imul(F,it),i=i+Math.imul(P,ot)|0,r=(r=r+Math.imul(P,st)|0)+Math.imul(D,ot)|0,o=o+Math.imul(D,st)|0,i=i+Math.imul(I,lt)|0,r=(r=r+Math.imul(I,ct)|0)+Math.imul(O,lt)|0,o=o+Math.imul(O,ct)|0,i=i+Math.imul(E,ht)|0,r=(r=r+Math.imul(E,dt)|0)+Math.imul(R,ht)|0,o=o+Math.imul(R,dt)|0;var Rt=(c+(i=i+Math.imul(k,pt)|0)|0)+((8191&(r=(r=r+Math.imul(k,gt)|0)+Math.imul(C,pt)|0))<<13)|0;c=((o=o+Math.imul(C,gt)|0)+(r>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,i=Math.imul(N,ot),r=(r=Math.imul(N,st))+Math.imul(F,ot)|0,o=Math.imul(F,st),i=i+Math.imul(P,lt)|0,r=(r=r+Math.imul(P,ct)|0)+Math.imul(D,lt)|0,o=o+Math.imul(D,ct)|0,i=i+Math.imul(I,ht)|0,r=(r=r+Math.imul(I,dt)|0)+Math.imul(O,ht)|0,o=o+Math.imul(O,dt)|0;var Lt=(c+(i=i+Math.imul(E,pt)|0)|0)+((8191&(r=(r=r+Math.imul(E,gt)|0)+Math.imul(R,pt)|0))<<13)|0;c=((o=o+Math.imul(R,gt)|0)+(r>>>13)|0)+(Lt>>>26)|0,Lt&=67108863,i=Math.imul(N,lt),r=(r=Math.imul(N,ct))+Math.imul(F,lt)|0,o=Math.imul(F,ct),i=i+Math.imul(P,ht)|0,r=(r=r+Math.imul(P,dt)|0)+Math.imul(D,ht)|0,o=o+Math.imul(D,dt)|0;var It=(c+(i=i+Math.imul(I,pt)|0)|0)+((8191&(r=(r=r+Math.imul(I,gt)|0)+Math.imul(O,pt)|0))<<13)|0;c=((o=o+Math.imul(O,gt)|0)+(r>>>13)|0)+(It>>>26)|0,It&=67108863,i=Math.imul(N,ht),r=(r=Math.imul(N,dt))+Math.imul(F,ht)|0,o=Math.imul(F,dt);var Ot=(c+(i=i+Math.imul(P,pt)|0)|0)+((8191&(r=(r=r+Math.imul(P,gt)|0)+Math.imul(D,pt)|0))<<13)|0;c=((o=o+Math.imul(D,gt)|0)+(r>>>13)|0)+(Ot>>>26)|0,Ot&=67108863;var $t=(c+(i=Math.imul(N,pt))|0)+((8191&(r=(r=Math.imul(N,gt))+Math.imul(F,pt)|0))<<13)|0;return c=((o=Math.imul(F,gt))+(r>>>13)|0)+($t>>>26)|0,$t&=67108863,l[0]=mt,l[1]=vt,l[2]=bt,l[3]=yt,l[4]=wt,l[5]=xt,l[6]=_t,l[7]=Mt,l[8]=St,l[9]=At,l[10]=kt,l[11]=Ct,l[12]=Tt,l[13]=Et,l[14]=Rt,l[15]=Lt,l[16]=It,l[17]=Ot,l[18]=$t,0!==c&&(l[19]=c,n.length++),n};function v(t,e,n){n.negative=e.negative^t.negative,n.length=t.length+e.length;for(var i=0,r=0,o=0;o>>26)|0)>>>26,s&=67108863}n.words[o]=a,i=s,s=r}return 0!==i?n.words[o]=i:n.length--,n._strip()}function b(t,e,n){return v(t,e,n)}function y(t,e){this.x=t,this.y=e}Math.imul||(m=g),o.prototype.mulTo=function(t,e){var n=this.length+t.length;return 10===this.length&&10===t.length?m(this,t,e):n<63?g(this,t,e):n<1024?v(this,t,e):b(this,t,e)},y.prototype.makeRBT=function(t){for(var e=new Array(t),n=o.prototype._countBits(t)-1,i=0;i>=1;return i},y.prototype.permute=function(t,e,n,i,r,o){for(var s=0;s>>=1)r++;return 1<>>=13,n[2*s+1]=8191&o,o>>>=13;for(s=2*e;s>=26,n+=o/67108864|0,n+=s>>>26,this.words[r]=67108863&s}return 0!==n&&(this.words[r]=n,this.length++),e?this.ineg():this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=function(t){for(var e=new Array(t.bitLength()),n=0;n>>r&1}return e}(t);if(0===e.length)return new o(1);for(var n=this,i=0;i=0);var e,n=t%26,r=(t-n)/26,o=67108863>>>26-n<<26-n;if(0!==n){var s=0;for(e=0;e>>26-n}s&&(this.words[e]=s,this.length++)}if(0!==r){for(e=this.length-1;e>=0;e--)this.words[e+r]=this.words[e];for(e=0;e=0),r=e?(e-e%26)/26:0;var o=t%26,s=Math.min((t-o)/26,this.length),a=67108863^67108863>>>o<s)for(this.length-=s,c=0;c=0&&(0!==u||c>=r);c--){var h=0|this.words[c];this.words[c]=u<<26-o|h>>>o,u=h&a}return l&&0!==u&&(l.words[l.length++]=u),0===this.length&&(this.words[0]=0,this.length=1),this._strip()},o.prototype.ishrn=function(t,e,n){return i(0===this.negative),this.iushrn(t,e,n)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){i("number"==typeof t&&t>=0);var e=t%26,n=(t-e)/26,r=1<=0);var e=t%26,n=(t-e)/26;if(i(0===this.negative,"imaskn works only with positive numbers"),this.length<=n)return this;if(0!==e&&n++,this.length=Math.min(n,this.length),0!==e){var r=67108863^67108863>>>e<=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(i("number"==typeof t),i(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e>26)-(l/67108864|0),this.words[r+n]=67108863&o}for(;r>26,this.words[r+n]=67108863&o;if(0===a)return this._strip();for(i(-1===a),a=0,r=0;r>26,this.words[r]=67108863&o;return this.negative=1,this._strip()},o.prototype._wordDiv=function(t,e){var n=(this.length,t.length),i=this.clone(),r=t,s=0|r.words[r.length-1];0!==(n=26-this._countBits(s))&&(r=r.ushln(n),i.iushln(n),s=0|r.words[r.length-1]);var a,l=i.length-r.length;if("mod"!==e){(a=new o(null)).length=l+1,a.words=new Array(a.length);for(var c=0;c=0;h--){var d=67108864*(0|i.words[r.length+h])+(0|i.words[r.length+h-1]);for(d=Math.min(d/s|0,67108863),i._ishlnsubmul(r,d,h);0!==i.negative;)d--,i.negative=0,i._ishlnsubmul(r,1,h),i.isZero()||(i.negative^=1);a&&(a.words[h]=d)}return a&&a._strip(),i._strip(),"div"!==e&&0!==n&&i.iushrn(n),{div:a||null,mod:i}},o.prototype.divmod=function(t,e,n){return i(!t.isZero()),this.isZero()?{div:new o(0),mod:new o(0)}:0!==this.negative&&0===t.negative?(a=this.neg().divmod(t,e),"mod"!==e&&(r=a.div.neg()),"div"!==e&&(s=a.mod.neg(),n&&0!==s.negative&&s.iadd(t)),{div:r,mod:s}):0===this.negative&&0!==t.negative?(a=this.divmod(t.neg(),e),"mod"!==e&&(r=a.div.neg()),{div:r,mod:a.mod}):0!=(this.negative&t.negative)?(a=this.neg().divmod(t.neg(),e),"div"!==e&&(s=a.mod.neg(),n&&0!==s.negative&&s.isub(t)),{div:a.div,mod:s}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new o(this.modrn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modrn(t.words[0]))}:this._wordDiv(t,e);var r,s,a},o.prototype.div=function(t){return this.divmod(t,"div",!1).div},o.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},o.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var n=0!==e.div.negative?e.mod.isub(t):e.mod,i=t.ushrn(1),r=t.andln(1),o=n.cmp(i);return o<0||1===r&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modrn=function(t){var e=t<0;e&&(t=-t),i(t<=67108863);for(var n=(1<<26)%t,r=0,o=this.length-1;o>=0;o--)r=(n*r+(0|this.words[o]))%t;return e?-r:r},o.prototype.modn=function(t){return this.modrn(t)},o.prototype.idivn=function(t){var e=t<0;e&&(t=-t),i(t<=67108863);for(var n=0,r=this.length-1;r>=0;r--){var o=(0|this.words[r])+67108864*n;this.words[r]=o/t|0,n=o%t}return this._strip(),e?this.ineg():this},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){i(0===t.negative),i(!t.isZero());var e=this,n=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var r=new o(1),s=new o(0),a=new o(0),l=new o(1),c=0;e.isEven()&&n.isEven();)e.iushrn(1),n.iushrn(1),++c;for(var u=n.clone(),h=e.clone();!e.isZero();){for(var d=0,f=1;0==(e.words[0]&f)&&d<26;++d,f<<=1);if(d>0)for(e.iushrn(d);d-- >0;)(r.isOdd()||s.isOdd())&&(r.iadd(u),s.isub(h)),r.iushrn(1),s.iushrn(1);for(var p=0,g=1;0==(n.words[0]&g)&&p<26;++p,g<<=1);if(p>0)for(n.iushrn(p);p-- >0;)(a.isOdd()||l.isOdd())&&(a.iadd(u),l.isub(h)),a.iushrn(1),l.iushrn(1);e.cmp(n)>=0?(e.isub(n),r.isub(a),s.isub(l)):(n.isub(e),a.isub(r),l.isub(s))}return{a:a,b:l,gcd:n.iushln(c)}},o.prototype._invmp=function(t){i(0===t.negative),i(!t.isZero());var e=this,n=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var r,s=new o(1),a=new o(0),l=n.clone();e.cmpn(1)>0&&n.cmpn(1)>0;){for(var c=0,u=1;0==(e.words[0]&u)&&c<26;++c,u<<=1);if(c>0)for(e.iushrn(c);c-- >0;)s.isOdd()&&s.iadd(l),s.iushrn(1);for(var h=0,d=1;0==(n.words[0]&d)&&h<26;++h,d<<=1);if(h>0)for(n.iushrn(h);h-- >0;)a.isOdd()&&a.iadd(l),a.iushrn(1);e.cmp(n)>=0?(e.isub(n),s.isub(a)):(n.isub(e),a.isub(s))}return(r=0===e.cmpn(1)?s:a).cmpn(0)<0&&r.iadd(t),r},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),n=t.clone();e.negative=0,n.negative=0;for(var i=0;e.isEven()&&n.isEven();i++)e.iushrn(1),n.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;n.isEven();)n.iushrn(1);var r=e.cmp(n);if(r<0){var o=e;e=n,n=o}else if(0===r||0===n.cmpn(1))break;e.isub(n)}return n.iushln(i)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0==(1&this.words[0])},o.prototype.isOdd=function(){return 1==(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){i("number"==typeof t);var e=t%26,n=(t-e)/26,r=1<>>26,a&=67108863,this.words[s]=a}return 0!==o&&(this.words[s]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e,n=t<0;if(0!==this.negative&&!n)return-1;if(0===this.negative&&n)return 1;if(this._strip(),this.length>1)e=1;else{n&&(t=-t),i(t<=67108863,"Number is too big");var r=0|this.words[0];e=r===t?0:rt.length)return 1;if(this.length=0;n--){var i=0|this.words[n],r=0|t.words[n];if(i!==r){ir&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return-1===this.cmpn(t)},o.prototype.lt=function(t){return-1===this.cmp(t)},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new k(t)},o.prototype.toRed=function(t){return i(!this.red,"Already a number in reduction context"),i(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return i(!this.red,"Already a number in reduction context"),this._forceRed(t)},o.prototype.redAdd=function(t){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},o.prototype.redISub=function(t){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},o.prototype.redShl=function(t){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},o.prototype.redMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return i(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var w={k256:null,p224:null,p192:null,p25519:null};function x(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function _(){x.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function M(){x.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function S(){x.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function A(){x.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function k(t){if("string"==typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else i(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function C(t){k.call(this,t),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}x.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},x.prototype.ireduce=function(t){var e,n=t;do{this.split(n,this.tmp),e=(n=(n=this.imulK(n)).iadd(this.tmp)).bitLength()}while(e>this.n);var i=e0?n.isub(this.p):void 0!==n.strip?n.strip():n._strip(),n},x.prototype.split=function(t,e){t.iushrn(this.n,0,e)},x.prototype.imulK=function(t){return t.imul(this.k)},r(_,x),_.prototype.split=function(t,e){for(var n=Math.min(t.length,9),i=0;i>>22,r=o}r>>>=22,t.words[i-10]=r,0===r&&t.length>10?t.length-=10:t.length-=9},_.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,n=0;n>>=26,t.words[n]=r,e=i}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function(t){if(w[t])return w[t];var e;if("k256"===t)e=new _;else if("p224"===t)e=new M;else if("p192"===t)e=new S;else{if("p25519"!==t)throw new Error("Unknown prime "+t);e=new A}return w[t]=e,e},k.prototype._verify1=function(t){i(0===t.negative,"red works only with positives"),i(t.red,"red works only with red numbers")},k.prototype._verify2=function(t,e){i(0==(t.negative|e.negative),"red works only with positives"),i(t.red&&t.red===e.red,"red works only with red numbers")},k.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):(u(t,t.umod(this.m)._forceRed(this)),t)},k.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},k.prototype.add=function(t,e){this._verify2(t,e);var n=t.add(e);return n.cmp(this.m)>=0&&n.isub(this.m),n._forceRed(this)},k.prototype.iadd=function(t,e){this._verify2(t,e);var n=t.iadd(e);return n.cmp(this.m)>=0&&n.isub(this.m),n},k.prototype.sub=function(t,e){this._verify2(t,e);var n=t.sub(e);return n.cmpn(0)<0&&n.iadd(this.m),n._forceRed(this)},k.prototype.isub=function(t,e){this._verify2(t,e);var n=t.isub(e);return n.cmpn(0)<0&&n.iadd(this.m),n},k.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},k.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},k.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},k.prototype.isqr=function(t){return this.imul(t,t.clone())},k.prototype.sqr=function(t){return this.mul(t,t)},k.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(i(e%2==1),3===e){var n=this.m.add(new o(1)).iushrn(2);return this.pow(t,n)}for(var r=this.m.subn(1),s=0;!r.isZero()&&0===r.andln(1);)s++,r.iushrn(1);i(!r.isZero());var a=new o(1).toRed(this),l=a.redNeg(),c=this.m.subn(1).iushrn(1),u=this.m.bitLength();for(u=new o(2*u*u).toRed(this);0!==this.pow(u,c).cmp(l);)u.redIAdd(l);for(var h=this.pow(u,r),d=this.pow(t,r.addn(1).iushrn(1)),f=this.pow(t,r),p=s;0!==f.cmp(a);){for(var g=f,m=0;0!==g.cmp(a);m++)g=g.redSqr();i(m=0;i--){for(var c=e.words[i],u=l-1;u>=0;u--){var h=c>>u&1;r!==n[0]&&(r=this.sqr(r)),0!==h||0!==s?(s<<=1,s|=h,(4===++a||0===i&&0===u)&&(r=this.mul(r,n[s]),a=0,s=0)):a=0}l=26}return r},k.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},k.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new C(t)},r(C,k),C.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},C.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},C.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var n=t.imul(e),i=n.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),r=n.isub(i).iushrn(this.shift),o=r;return r.cmp(this.m)>=0?o=r.isub(this.m):r.cmpn(0)<0&&(o=r.iadd(this.m)),o._forceRed(this)},C.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var n=t.mul(e),i=n.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),r=n.isub(i).iushrn(this.shift),s=r;return r.cmp(this.m)>=0?s=r.isub(this.m):r.cmpn(0)<0&&(s=r.iadd(this.m)),s._forceRed(this)},C.prototype.invm=function(t){return this.imod(t._invmp(this.m).mul(this.r2))._forceRed(this)}}(t,this)}).call(this,n("YuTi")(t))},OZTt:function(t,e,n){t.exports=n.p+"18b69bf761ab7d8645f68794096dcb46.js"},OlYY:function(t,e,n){n("Tghj").__DEV__;var i=n("ProS"),r=n("bYtY"),o=n("ItGF"),s=n("4NO4"),a=n("UOVi"),l=n("zDms"),c=r.each,u=a.eachAxisDim;function h(t){var e={};return c(["start","end","startValue","endValue","throttle"],(function(n){t.hasOwnProperty(n)&&(e[n]=t[n])})),e}function d(t,e){var n=t._rangePropMode,i=t.get("rangeMode");c([["start","startValue"],["end","endValue"]],(function(t,r){var o=null!=e[t[0]],s=null!=e[t[1]];o&&!s?n[r]="percent":!o&&s?n[r]="value":i?n[r]=i[r]:o&&(n[r]="percent")}))}var f=i.extendComponentModel({type:"dataZoom",dependencies:["xAxis","yAxis","zAxis","radiusAxis","angleAxis","singleAxis","series"],defaultOption:{zlevel:0,z:4,orient:null,xAxisIndex:null,yAxisIndex:null,filterMode:"filter",throttle:null,start:0,end:100,startValue:null,endValue:null,minSpan:null,maxSpan:null,minValueSpan:null,maxValueSpan:null,rangeMode:null},init:function(t,e,n){this._dataIntervalByAxis={},this._dataInfo={},this._axisProxies={},this.textStyleModel,this._autoThrottle=!0,this._rangePropMode=["percent","percent"];var i=h(t);this.settledOption=i,this.mergeDefaultAndTheme(t,n),this.doInit(i)},mergeOption:function(t){var e=h(t);r.merge(this.option,t,!0),r.merge(this.settledOption,e,!0),this.doInit(e)},doInit:function(t){var e=this.option;o.canvasSupported||(e.realtime=!1),this._setDefaultThrottle(t),d(this,t);var n=this.settledOption;c([["start","startValue"],["end","endValue"]],(function(t,i){"value"===this._rangePropMode[i]&&(e[t[0]]=n[t[0]]=null)}),this),this.textStyleModel=this.getModel("textStyle"),this._resetTarget(),this._giveAxisProxies()},_giveAxisProxies:function(){var t=this._axisProxies;this.eachTargetAxis((function(e,n,i,r){var o=this.dependentModels[e.axis][n],s=o.__dzAxisProxy||(o.__dzAxisProxy=new l(e.name,n,this,r));t[e.name+"_"+n]=s}),this)},_resetTarget:function(){var t=this.option,e=this._judgeAutoMode();u((function(e){var n=e.axisIndex;t[n]=s.normalizeToArray(t[n])}),this),"axisIndex"===e?this._autoSetAxisIndex():"orient"===e&&this._autoSetOrient()},_judgeAutoMode:function(){var t=this.option,e=!1;u((function(n){null!=t[n.axisIndex]&&(e=!0)}),this);var n=t.orient;return null==n&&e?"orient":e?void 0:(null==n&&(t.orient="horizontal"),"axisIndex")},_autoSetAxisIndex:function(){var t=!0,e=this.get("orient",!0),n=this.option,i=this.dependentModels;if(t){var o="vertical"===e?"y":"x";i[o+"Axis"].length?(n[o+"AxisIndex"]=[0],t=!1):c(i.singleAxis,(function(i){t&&i.get("orient",!0)===e&&(n.singleAxisIndex=[i.componentIndex],t=!1)}))}t&&u((function(e){if(t){var i=[],r=this.dependentModels[e.axis];if(r.length&&!i.length)for(var o=0,s=r.length;o0?100:20}},getFirstTargetAxisModel:function(){var t;return u((function(e){if(null==t){var n=this.get(e.axisIndex);n.length&&(t=this.dependentModels[e.axis][n[0]])}}),this),t},eachTargetAxis:function(t,e){var n=this.ecModel;u((function(i){c(this.get(i.axisIndex),(function(r){t.call(e,i,r,this,n)}),this)}),this)},getAxisProxy:function(t,e){return this._axisProxies[t+"_"+e]},getAxisModel:function(t,e){var n=this.getAxisProxy(t,e);return n&&n.getAxisModel()},setRawRange:function(t){var e=this.option,n=this.settledOption;c([["start","startValue"],["end","endValue"]],(function(i){null==t[i[0]]&&null==t[i[1]]||(e[i[0]]=n[i[0]]=t[i[0]],e[i[1]]=n[i[1]]=t[i[1]])}),this),d(this,t)},setCalculatedRange:function(t){var e=this.option;c(["start","startValue","end","endValue"],(function(n){e[n]=t[n]}))},getPercentRange:function(){var t=this.findRepresentativeAxisProxy();if(t)return t.getDataPercentWindow()},getValueRange:function(t,e){if(null!=t||null!=e)return this.getAxisProxy(t,e).getDataValueWindow();var n=this.findRepresentativeAxisProxy();return n?n.getDataValueWindow():void 0},findRepresentativeAxisProxy:function(t){if(t)return t.__dzAxisProxy;var e=this._axisProxies;for(var n in e)if(e.hasOwnProperty(n)&&e[n].hostedBy(this))return e[n];for(var n in e)if(e.hasOwnProperty(n)&&!e[n].hostedBy(this))return e[n]},getRangePropMode:function(){return this._rangePropMode.slice()}});t.exports=f},Onz0:function(t,e,n){function i(t){return Object.prototype.toString.call(t)}e.isArray=function(t){return Array.isArray?Array.isArray(t):"[object Array]"===i(t)},e.isBoolean=function(t){return"boolean"==typeof t},e.isNull=function(t){return null===t},e.isNullOrUndefined=function(t){return null==t},e.isNumber=function(t){return"number"==typeof t},e.isString=function(t){return"string"==typeof t},e.isSymbol=function(t){return"symbol"==typeof t},e.isUndefined=function(t){return void 0===t},e.isRegExp=function(t){return"[object RegExp]"===i(t)},e.isObject=function(t){return"object"==typeof t&&null!==t},e.isDate=function(t){return"[object Date]"===i(t)},e.isError=function(t){return"[object Error]"===i(t)||t instanceof Error},e.isFunction=function(t){return"function"==typeof t},e.isPrimitive=function(t){return null===t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||"symbol"==typeof t||void 0===t},e.isBuffer=n("tjlA").Buffer.isBuffer},Oomr:function(t,e){const n="Impossible case. Please create issue.",i="The tweak was out of range or the resulted private key is invalid",r="The tweak was out of range or equal to zero",o="Unknow error on context randomization",s="Private Key is invalid",a="Public Key could not be parsed",l="Public Key serialization error",c="The sum of the public keys is not valid",u="Signature could not be parsed",h="The nonce generation function failed, or the private key was invalid",d="Public key could not be recover",f="Scalar was invalid (zero or overflow)";function p(t,e){if(!t)throw new Error(e)}function g(t,e,n){if(p(e instanceof Uint8Array,`Expected ${t} to be an Uint8Array`),void 0!==n)if(Array.isArray(n)){const i=`Expected ${t} to be an Uint8Array with length [${n.join(", ")}]`;p(n.includes(e.length),i)}else{const i=`Expected ${t} to be an Uint8Array with length ${n}`;p(e.length===n,i)}}function m(t){p("Boolean"===b(t),"Expected compressed to be a Boolean")}function v(t=(t=>new Uint8Array(t)),e){return"function"==typeof t&&(t=t(e)),g("output",t,e),t}function b(t){return Object.prototype.toString.call(t).slice(8,-1)}t.exports=t=>({contextRandomize(e){switch(p(null===e||e instanceof Uint8Array,"Expected seed to be an Uint8Array or null"),null!==e&&g("seed",e,32),t.contextRandomize(e)){case 1:throw new Error(o)}},privateKeyVerify:e=>(g("private key",e,32),0===t.privateKeyVerify(e)),privateKeyNegate(e){switch(g("private key",e,32),t.privateKeyNegate(e)){case 0:return e;case 1:throw new Error(n)}},privateKeyTweakAdd(e,n){switch(g("private key",e,32),g("tweak",n,32),t.privateKeyTweakAdd(e,n)){case 0:return e;case 1:throw new Error(i)}},privateKeyTweakMul(e,n){switch(g("private key",e,32),g("tweak",n,32),t.privateKeyTweakMul(e,n)){case 0:return e;case 1:throw new Error(r)}},publicKeyVerify:e=>(g("public key",e,[33,65]),0===t.publicKeyVerify(e)),publicKeyCreate(e,n=!0,i){switch(g("private key",e,32),m(n),i=v(i,n?33:65),t.publicKeyCreate(i,e)){case 0:return i;case 1:throw new Error(s);case 2:throw new Error(l)}},publicKeyConvert(e,n=!0,i){switch(g("public key",e,[33,65]),m(n),i=v(i,n?33:65),t.publicKeyConvert(i,e)){case 0:return i;case 1:throw new Error(a);case 2:throw new Error(l)}},publicKeyNegate(e,i=!0,r){switch(g("public key",e,[33,65]),m(i),r=v(r,i?33:65),t.publicKeyNegate(r,e)){case 0:return r;case 1:throw new Error(a);case 2:throw new Error(n);case 3:throw new Error(l)}},publicKeyCombine(e,n=!0,i){p(Array.isArray(e),"Expected public keys to be an Array"),p(e.length>0,"Expected public keys array will have more than zero items");for(const t of e)g("public key",t,[33,65]);switch(m(n),i=v(i,n?33:65),t.publicKeyCombine(i,e)){case 0:return i;case 1:throw new Error(a);case 2:throw new Error(c);case 3:throw new Error(l)}},publicKeyTweakAdd(e,n,r=!0,o){switch(g("public key",e,[33,65]),g("tweak",n,32),m(r),o=v(o,r?33:65),t.publicKeyTweakAdd(o,e,n)){case 0:return o;case 1:throw new Error(a);case 2:throw new Error(i)}},publicKeyTweakMul(e,n,i=!0,o){switch(g("public key",e,[33,65]),g("tweak",n,32),m(i),o=v(o,i?33:65),t.publicKeyTweakMul(o,e,n)){case 0:return o;case 1:throw new Error(a);case 2:throw new Error(r)}},signatureNormalize(e){switch(g("signature",e,64),t.signatureNormalize(e)){case 0:return e;case 1:throw new Error(u)}},signatureExport(e,i){g("signature",e,64);const r={output:i=v(i,72),outputlen:72};switch(t.signatureExport(r,e)){case 0:return i.slice(0,r.outputlen);case 1:throw new Error(u);case 2:throw new Error(n)}},signatureImport(e,i){switch(g("signature",e),i=v(i,64),t.signatureImport(i,e)){case 0:return i;case 1:throw new Error(u);case 2:throw new Error(n)}},ecdsaSign(e,i,r={},o){g("message",e,32),g("private key",i,32),p("Object"===b(r),"Expected options to be an Object"),void 0!==r.data&&g("options.data",r.data),void 0!==r.noncefn&&p("Function"===b(r.noncefn),"Expected options.noncefn to be a Function");const s={signature:o=v(o,64),recid:null};switch(t.ecdsaSign(s,e,i,r.data,r.noncefn)){case 0:return s;case 1:throw new Error(h);case 2:throw new Error(n)}},ecdsaVerify(e,n,i){switch(g("signature",e,64),g("message",n,32),g("public key",i,[33,65]),t.ecdsaVerify(e,n,i)){case 0:return!0;case 3:return!1;case 1:throw new Error(u);case 2:throw new Error(a)}},ecdsaRecover(e,i,r,o=!0,s){switch(g("signature",e,64),p("Number"===b(i)&&i>=0&&i<=3,"Expected recovery id to be a Number within interval [0, 3]"),g("message",r,32),m(o),s=v(s,o?33:65),t.ecdsaRecover(s,e,i,r)){case 0:return s;case 1:throw new Error(u);case 2:throw new Error(d);case 3:throw new Error(n)}},ecdh(e,n,i={},r){switch(g("public key",e,[33,65]),g("private key",n,32),p("Object"===b(i),"Expected options to be an Object"),void 0!==i.data&&g("options.data",i.data),void 0!==i.hashfn?(p("Function"===b(i.hashfn),"Expected options.hashfn to be a Function"),void 0!==i.xbuf&&g("options.xbuf",i.xbuf,32),void 0!==i.ybuf&&g("options.ybuf",i.ybuf,32),g("output",r)):r=v(r,32),t.ecdh(r,e,n,i.data,i.hashfn,i.xbuf,i.ybuf)){case 0:return r;case 1:throw new Error(a);case 2:throw new Error(f)}}})},Or6e:function(t,e,n){t.exports=n.p+"f6d0fea0854403a43f86a04e3db40850.js"},Oye4:function(t,e,n){t.exports=n.p+"a101e3cf93198db4854a63d23542eefe.js"},Ozfr:function(t,e,n){t.exports=n.p+"d4185e860c404e802d671def5eda2ead.js"},P6V2:function(t,e,n){t.exports=n.p+"d465c0a35c6ef244bf587b0e6bdb4019.js"},P7XM:function(t,e){"function"==typeof Object.create?t.exports=function(t,e){e&&(t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:t.exports=function(t,e){if(e){t.super_=e;var n=function(){};n.prototype=e.prototype,t.prototype=new n,t.prototype.constructor=t}}},PA2E:function(t,e,n){t.exports=n.p+"c53921154b1d064db029a19020dd6e6c.js"},PBak:function(t,e,n){t.exports=n.p+"c6d4a590e14107a8a5ad505d66241032.js"},PDX0:function(t,e){(function(e){t.exports=e}).call(this,{})},"Pa+m":function(t,e,n){"use strict";var i=n("86MQ"),r=n("gK+I"),o=n("P7XM"),s=n("6lN/"),a=i.assert;function l(t){this.twisted=1!=(0|t.a),this.mOneA=this.twisted&&-1==(0|t.a),this.extended=this.mOneA,s.call(this,"edwards",t),this.a=new r(t.a,16).umod(this.red.m),this.a=this.a.toRed(this.red),this.c=new r(t.c,16).toRed(this.red),this.c2=this.c.redSqr(),this.d=new r(t.d,16).toRed(this.red),this.dd=this.d.redAdd(this.d),a(!this.twisted||0===this.c.fromRed().cmpn(1)),this.oneC=1==(0|t.c)}function c(t,e,n,i,o){s.BasePoint.call(this,t,"projective"),null===e&&null===n&&null===i?(this.x=this.curve.zero,this.y=this.curve.one,this.z=this.curve.one,this.t=this.curve.zero,this.zOne=!0):(this.x=new r(e,16),this.y=new r(n,16),this.z=i?new r(i,16):this.curve.one,this.t=o&&new r(o,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.t&&!this.t.red&&(this.t=this.t.toRed(this.curve.red)),this.zOne=this.z===this.curve.one,this.curve.extended&&!this.t&&(this.t=this.x.redMul(this.y),this.zOne||(this.t=this.t.redMul(this.z.redInvm()))))}o(l,s),t.exports=l,l.prototype._mulA=function(t){return this.mOneA?t.redNeg():this.a.redMul(t)},l.prototype._mulC=function(t){return this.oneC?t:this.c.redMul(t)},l.prototype.jpoint=function(t,e,n,i){return this.point(t,e,n,i)},l.prototype.pointFromX=function(t,e){(t=new r(t,16)).red||(t=t.toRed(this.red));var n=t.redSqr(),i=this.c2.redSub(this.a.redMul(n)),o=this.one.redSub(this.c2.redMul(this.d).redMul(n)),s=i.redMul(o.redInvm()),a=s.redSqrt();if(0!==a.redSqr().redSub(s).cmp(this.zero))throw new Error("invalid point");var l=a.fromRed().isOdd();return(e&&!l||!e&&l)&&(a=a.redNeg()),this.point(t,a)},l.prototype.pointFromY=function(t,e){(t=new r(t,16)).red||(t=t.toRed(this.red));var n=t.redSqr(),i=n.redSub(this.c2),o=n.redMul(this.d).redMul(this.c2).redSub(this.a),s=i.redMul(o.redInvm());if(0===s.cmp(this.zero)){if(e)throw new Error("invalid point");return this.point(this.zero,t)}var a=s.redSqrt();if(0!==a.redSqr().redSub(s).cmp(this.zero))throw new Error("invalid point");return a.fromRed().isOdd()!==e&&(a=a.redNeg()),this.point(a,t)},l.prototype.validate=function(t){if(t.isInfinity())return!0;t.normalize();var e=t.x.redSqr(),n=t.y.redSqr(),i=e.redMul(this.a).redAdd(n),r=this.c2.redMul(this.one.redAdd(this.d.redMul(e).redMul(n)));return 0===i.cmp(r)},o(c,s.BasePoint),l.prototype.pointFromJSON=function(t){return c.fromJSON(this,t)},l.prototype.point=function(t,e,n,i){return new c(this,t,e,n,i)},c.fromJSON=function(t,e){return new c(t,e[0],e[1],e[2])},c.prototype.inspect=function(){return this.isInfinity()?"":""},c.prototype.isInfinity=function(){return 0===this.x.cmpn(0)&&(0===this.y.cmp(this.z)||this.zOne&&0===this.y.cmp(this.curve.c))},c.prototype._extDbl=function(){var t=this.x.redSqr(),e=this.y.redSqr(),n=this.z.redSqr();n=n.redIAdd(n);var i=this.curve._mulA(t),r=this.x.redAdd(this.y).redSqr().redISub(t).redISub(e),o=i.redAdd(e),s=o.redSub(n),a=i.redSub(e),l=r.redMul(s),c=o.redMul(a),u=r.redMul(a),h=s.redMul(o);return this.curve.point(l,c,h,u)},c.prototype._projDbl=function(){var t,e,n,i,r,o,s=this.x.redAdd(this.y).redSqr(),a=this.x.redSqr(),l=this.y.redSqr();if(this.curve.twisted){var c=(i=this.curve._mulA(a)).redAdd(l);this.zOne?(t=s.redSub(a).redSub(l).redMul(c.redSub(this.curve.two)),e=c.redMul(i.redSub(l)),n=c.redSqr().redSub(c).redSub(c)):(r=this.z.redSqr(),o=c.redSub(r).redISub(r),t=s.redSub(a).redISub(l).redMul(o),e=c.redMul(i.redSub(l)),n=c.redMul(o))}else i=a.redAdd(l),r=this.curve._mulC(this.z).redSqr(),o=i.redSub(r).redSub(r),t=this.curve._mulC(s.redISub(i)).redMul(o),e=this.curve._mulC(i).redMul(a.redISub(l)),n=i.redMul(o);return this.curve.point(t,e,n)},c.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()},c.prototype._extAdd=function(t){var e=this.y.redSub(this.x).redMul(t.y.redSub(t.x)),n=this.y.redAdd(this.x).redMul(t.y.redAdd(t.x)),i=this.t.redMul(this.curve.dd).redMul(t.t),r=this.z.redMul(t.z.redAdd(t.z)),o=n.redSub(e),s=r.redSub(i),a=r.redAdd(i),l=n.redAdd(e),c=o.redMul(s),u=a.redMul(l),h=o.redMul(l),d=s.redMul(a);return this.curve.point(c,u,d,h)},c.prototype._projAdd=function(t){var e,n,i=this.z.redMul(t.z),r=i.redSqr(),o=this.x.redMul(t.x),s=this.y.redMul(t.y),a=this.curve.d.redMul(o).redMul(s),l=r.redSub(a),c=r.redAdd(a),u=this.x.redAdd(this.y).redMul(t.x.redAdd(t.y)).redISub(o).redISub(s),h=i.redMul(l).redMul(u);return this.curve.twisted?(e=i.redMul(c).redMul(s.redSub(this.curve._mulA(o))),n=l.redMul(c)):(e=i.redMul(c).redMul(s.redSub(o)),n=this.curve._mulC(l).redMul(c)),this.curve.point(h,e,n)},c.prototype.add=function(t){return this.isInfinity()?t:t.isInfinity()?this:this.curve.extended?this._extAdd(t):this._projAdd(t)},c.prototype.mul=function(t){return this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve._wnafMul(this,t)},c.prototype.mulAdd=function(t,e,n){return this.curve._wnafMulAdd(1,[this,e],[t,n],2,!1)},c.prototype.jmulAdd=function(t,e,n){return this.curve._wnafMulAdd(1,[this,e],[t,n],2,!0)},c.prototype.normalize=function(){if(this.zOne)return this;var t=this.z.redInvm();return this.x=this.x.redMul(t),this.y=this.y.redMul(t),this.t&&(this.t=this.t.redMul(t)),this.z=this.curve.one,this.zOne=!0,this},c.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())},c.prototype.getX=function(){return this.normalize(),this.x.fromRed()},c.prototype.getY=function(){return this.normalize(),this.y.fromRed()},c.prototype.eq=function(t){return this===t||0===this.getX().cmp(t.getX())&&0===this.getY().cmp(t.getY())},c.prototype.eqXToP=function(t){var e=t.toRed(this.curve.red).redMul(this.z);if(0===this.x.cmp(e))return!0;for(var n=t.clone(),i=this.curve.redN.redMul(this.z);;){if(n.iadd(this.curve.n),n.cmp(this.curve.p)>=0)return!1;if(e.redIAdd(i),0===this.x.cmp(e))return!0}},c.prototype.toP=c.prototype.normalize,c.prototype.mixedAdd=c.prototype.add},Pmrv:function(t,e,n){t.exports=n.p+"94a0179602c94d55621a35e41c97ed5c.js"},PrQf:function(t,e,n){t.exports=n.p+"8ac889e60c5693eb83a35e6d30582578.js"},ProS:function(t,e,n){n("Tghj").__DEV__;var i=n("aX58"),r=n("bYtY"),o=n("Qe9p"),s=n("ItGF"),a=n("BPZU"),l=n("H6uX"),c=n("fmMI"),u=n("hD7B"),h=n("IDmD"),d=n("ypgQ"),f=n("+wW9"),p=n("0V0F"),g=n("bLfw"),m=n("T4UG"),v=n("sS/r"),b=n("6Ic6"),y=n("IwbS"),w=n("4NO4"),x=n("iLNv").throttle,_=n("/WM3"),M=n("uAnK"),S=n("mYwL"),A=n("af/B"),k=n("xTNl"),C=n("8hn6");n("A1Ka");var T=n("7DRL"),E=r.assert,R=r.each,L=r.isFunction,I=r.isObject,O=g.parseClassType,$={PROCESSOR:{FILTER:1e3,SERIES_FILTER:800,STATISTIC:5e3},VISUAL:{LAYOUT:1e3,PROGRESSIVE_LAYOUT:1100,GLOBAL:2e3,CHART:3e3,POST_CHART_LAYOUT:3500,COMPONENT:4e3,BRUSH:5e3}},P="__flagInMainProcess",D=/^[a-zA-Z0-9_]+$/;function B(t,e){return function(n,i,r){e||!this._disposed?(n=n&&n.toLowerCase(),l.prototype[t].call(this,n,i,r)):this.id}}function N(){l.call(this)}function F(t,e,n){n=n||{},"string"==typeof e&&(e=ct[e]),this.id,this.group,this._dom=t;var o=this._zr=i.init(t,{renderer:n.renderer||"canvas",devicePixelRatio:n.devicePixelRatio,width:n.width,height:n.height});this._throttledZrFlush=x(r.bind(o.flush,o),17),(e=r.clone(e))&&f(e,!0),this._theme=e,this._chartsViews=[],this._chartsMap={},this._componentsViews=[],this._componentsMap={},this._coordSysMgr=new h;var s,c,d=this._api=(c=(s=this)._coordSysMgr,r.extend(new u(s),{getCoordinateSystems:r.bind(c.getCoordinateSystems,c),getComponentByElement:function(t){for(;t;){var e=t.__ecComponentInfo;if(null!=e)return s._model.getComponent(e.mainType,e.index);t=t.parent}}}));function p(t,e){return t.__prio-e.__prio}a(lt,p),a(ot,p),this._scheduler=new A(this,d,ot,lt),l.call(this,this._ecEventProcessor=new nt),this._messageCenter=new N,this._initEvents(),this.resize=r.bind(this.resize,this),this._pendingActions=[],o.animation.on("frame",this._onframe,this),function(t,e){t.on("rendered",(function(){e.trigger("rendered"),!t.animation.isFinished()||e.__optionUpdated||e._scheduler.unfinished||e._pendingActions.length||e.trigger("finished")}))}(o,this),r.setAsPrimitive(this)}N.prototype.on=B("on",!0),N.prototype.off=B("off",!0),N.prototype.one=B("one",!0),r.mixin(N,l);var j=F.prototype;function U(t,e,n){if(this._disposed)this.id;else{var i,r=this._model,o=this._coordSysMgr.getCoordinateSystems();e=w.parseFinder(r,e);for(var s=0;s0&&t.unfinished);t.unfinished||this._zr.flush()}}},j.getDom=function(){return this._dom},j.getZr=function(){return this._zr},j.setOption=function(t,e,n){if(this._disposed)this.id;else{var i;if(I(e)&&(n=e.lazyUpdate,i=e.silent,e=e.notMerge),this[P]=!0,!this._model||e){var r=new d(this._api),o=this._theme,s=this._model=new c;s.scheduler=this._scheduler,s.init(null,null,o,r)}this._model.setOption(t,st),n?(this.__optionUpdated={silent:i},this[P]=!1):(H(this),z.update.call(this),this._zr.flush(),this.__optionUpdated=!1,this[P]=!1,G.call(this,i),Y.call(this,i))}},j.setTheme=function(){console.error("ECharts#setTheme() is DEPRECATED in ECharts 3.0")},j.getModel=function(){return this._model},j.getOption=function(){return this._model&&this._model.getOption()},j.getWidth=function(){return this._zr.getWidth()},j.getHeight=function(){return this._zr.getHeight()},j.getDevicePixelRatio=function(){return this._zr.painter.dpr||window.devicePixelRatio||1},j.getRenderedCanvas=function(t){if(s.canvasSupported)return(t=t||{}).pixelRatio=t.pixelRatio||1,t.backgroundColor=t.backgroundColor||this._model.get("backgroundColor"),this._zr.painter.getRenderedCanvas(t)},j.getSvgDataURL=function(){if(s.svgSupported){var t=this._zr,e=t.storage.getDisplayList();return r.each(e,(function(t){t.stopAnimation(!0)})),t.painter.toDataURL()}},j.getDataURL=function(t){if(!this._disposed){var e=(t=t||{}).excludeComponents,n=this._model,i=[],r=this;R(e,(function(t){n.eachComponent({mainType:t},(function(t){var e=r._componentsMap[t.__viewId];e.group.ignore||(i.push(e),e.group.ignore=!0)}))}));var o="svg"===this._zr.painter.getType()?this.getSvgDataURL():this.getRenderedCanvas(t).toDataURL("image/"+(t&&t.type||"png"));return R(i,(function(t){t.group.ignore=!1})),o}this.id},j.getConnectedDataURL=function(t){if(this._disposed)this.id;else if(s.canvasSupported){var e="svg"===t.type,n=this.group,o=Math.min,a=Math.max;if(dt[n]){var l=1/0,c=1/0,u=-1/0,h=-1/0,d=[],f=t&&t.pixelRatio||1;r.each(ht,(function(i,s){if(i.group===n){var f=e?i.getZr().painter.getSvgDom().innerHTML:i.getRenderedCanvas(r.clone(t)),p=i.getDom().getBoundingClientRect();l=o(p.left,l),c=o(p.top,c),u=a(p.right,u),h=a(p.bottom,h),d.push({dom:f,left:p.left,top:p.top})}}));var p=(u*=f)-(l*=f),g=(h*=f)-(c*=f),m=r.createCanvas(),v=i.init(m,{renderer:e?"svg":"canvas"});if(v.resize({width:p,height:g}),e){var b="";return R(d,(function(t){var e=t.left-l,n=t.top-c;b+=''+t.dom+""})),v.painter.getSvgRoot().innerHTML=b,t.connectedBackgroundColor&&v.painter.setBackgroundColor(t.connectedBackgroundColor),v.refreshImmediately(),v.painter.toDataURL()}return t.connectedBackgroundColor&&v.add(new y.Rect({shape:{x:0,y:0,width:p,height:g},style:{fill:t.connectedBackgroundColor}})),R(d,(function(t){var e=new y.Image({style:{x:t.left*f-l,y:t.top*f-c,image:t.dom}});v.add(e)})),v.refreshImmediately(),m.toDataURL("image/"+(t&&t.type||"png"))}return this.getDataURL(t)}},j.convertToPixel=r.curry(U,"convertToPixel"),j.convertFromPixel=r.curry(U,"convertFromPixel"),j.containPixel=function(t,e){if(!this._disposed){var n,i=this._model;return t=w.parseFinder(i,t),r.each(t,(function(t,i){i.indexOf("Models")>=0&&r.each(t,(function(t){var r=t.coordinateSystem;if(r&&r.containPoint)n|=!!r.containPoint(e);else if("seriesModels"===i){var o=this._chartsMap[t.__viewId];o&&o.containPoint&&(n|=o.containPoint(e,t))}}),this)}),this),!!n}this.id},j.getVisual=function(t,e){var n=this._model,i=(t=w.parseFinder(n,t,{defaultMainType:"series"})).seriesModel.getData(),r=t.hasOwnProperty("dataIndexInside")?t.dataIndexInside:t.hasOwnProperty("dataIndex")?i.indexOfRawIndex(t.dataIndex):null;return null!=r?i.getItemVisual(r,e):i.getVisual(e)},j.getViewOfComponentModel=function(t){return this._componentsMap[t.__viewId]},j.getViewOfSeriesModel=function(t){return this._chartsMap[t.__viewId]};var z={prepareAndUpdate:function(t){H(this),z.update.call(this,t)},update:function(t){var e=this._model,n=this._api,i=this._zr,r=this._coordSysMgr,a=this._scheduler;if(e){a.restoreData(e,t),a.performSeriesTasks(e),r.create(e,n),a.performDataProcessorTasks(e,t),V(this,e),r.update(e,n),Z(e),a.performVisualTasks(e,t),X(this,e,n,t);var l=e.get("backgroundColor")||"transparent";if(s.canvasSupported)i.setBackgroundColor(l);else{var c=o.parse(l);l=o.stringify(c,"rgb"),0===c[3]&&(l="transparent")}Q(e,n)}},updateTransform:function(t){var e=this._model,n=this,i=this._api;if(e){var o=[];e.eachComponent((function(r,s){var a=n.getViewOfComponentModel(s);if(a&&a.__alive)if(a.updateTransform){var l=a.updateTransform(s,e,i,t);l&&l.update&&o.push(a)}else o.push(a)}));var s=r.createHashMap();e.eachSeries((function(r){var o=n._chartsMap[r.__viewId];if(o.updateTransform){var a=o.updateTransform(r,e,i,t);a&&a.update&&s.set(r.uid,1)}else s.set(r.uid,1)})),Z(e),this._scheduler.performVisualTasks(e,t,{setDirty:!0,dirtyMap:s}),J(n,e,i,t,s),Q(e,this._api)}},updateView:function(t){var e=this._model;e&&(b.markUpdateMethod(t,"updateView"),Z(e),this._scheduler.performVisualTasks(e,t,{setDirty:!0}),X(this,this._model,this._api,t),Q(e,this._api))},updateVisual:function(t){z.update.call(this,t)},updateLayout:function(t){z.update.call(this,t)}};function H(t){var e=t._model,n=t._scheduler;n.restorePipelines(e),n.prepareStageTasks(),K(t,"component",e,n),K(t,"chart",e,n),n.plan()}function W(t,e,n,i,o){var s=t._model;if(i){var a={};a[i+"Id"]=n[i+"Id"],a[i+"Index"]=n[i+"Index"],a[i+"Name"]=n[i+"Name"];var l={mainType:i,query:a};o&&(l.subType=o);var c=n.excludeSeriesId;null!=c&&(c=r.createHashMap(w.normalizeToArray(c))),s&&s.eachComponent(l,(function(e){c&&null!=c.get(e.id)||u(t["series"===i?"_chartsMap":"_componentsMap"][e.__viewId])}),t)}else R(t._componentsViews.concat(t._chartsViews),u);function u(i){i&&i.__alive&&i[e]&&i[e](i.__model,s,t._api,n)}}function V(t,e){var n=t._chartsMap,i=t._scheduler;e.eachSeries((function(t){i.updateStreamModes(t,n[t.__viewId])}))}function q(t,e){var n=t.type,i=t.escapeConnect,o=it[n],s=o.actionInfo,a=(s.update||"update").split(":"),l=a.pop();a=null!=a[0]&&O(a[0]),this[P]=!0;var c=[t],u=!1;t.batch&&(u=!0,c=r.map(t.batch,(function(e){return(e=r.defaults(r.extend({},e),t)).batch=null,e})));var h,d=[],f="highlight"===n||"downplay"===n;R(c,(function(t){(h=(h=o.action(t,this._model,this._api))||r.extend({},t)).type=s.event||h.type,d.push(h),f?W(this,l,t,"series"):a&&W(this,l,t,a.main,a.sub)}),this),"none"===l||f||a||(this.__optionUpdated?(H(this),z.update.call(this,t),this.__optionUpdated=!1):z[l].call(this,t)),h=u?{type:s.event||n,escapeConnect:i,batch:d}:d[0],this[P]=!1,!e&&this._messageCenter.trigger(h.type,h)}function G(t){for(var e=this._pendingActions;e.length;){var n=e.shift();q.call(this,n,t)}}function Y(t){!t&&this.trigger("updated")}function K(t,e,n,i){for(var r="component"===e,o=r?t._componentsViews:t._chartsViews,s=r?t._componentsMap:t._chartsMap,a=t._zr,l=t._api,c=0;ce.get("hoverLayerThreshold")&&!s.node&&e.eachSeries((function(e){if(!e.preventUsingHoverLayer){var n=t._chartsMap[e.__viewId];n.__alive&&n.group.traverse((function(t){t.useHoverLayer=!0}))}}))}(t,e),M(t._zr.dom,e)}function Q(t,e){R(at,(function(n){n(t,e)}))}j.resize=function(t){if(this._disposed)this.id;else{this._zr.resize(t);var e=this._model;if(this._loadingFX&&this._loadingFX.resize(),e){var n=e.resetOption("media"),i=t&&t.silent;this[P]=!0,n&&H(this),z.update.call(this),this[P]=!1,G.call(this,i),Y.call(this,i)}}},j.showLoading=function(t,e){if(this._disposed)this.id;else if(I(t)&&(e=t,t=""),t=t||"default",this.hideLoading(),ut[t]){var n=ut[t](this._api,e),i=this._zr;this._loadingFX=n,i.add(n)}},j.hideLoading=function(){this._disposed?this.id:(this._loadingFX&&this._zr.remove(this._loadingFX),this._loadingFX=null)},j.makeActionFromEvent=function(t){var e=r.extend({},t);return e.type=rt[t.type],e},j.dispatchAction=function(t,e){this._disposed?this.id:(I(e)||(e={silent:!!e}),it[t.type]&&this._model&&(this[P]?this._pendingActions.push(t):(q.call(this,t,e.silent),e.flush?this._zr.flush(!0):!1!==e.flush&&s.browser.weChat&&this._throttledZrFlush(),G.call(this,e.silent),Y.call(this,e.silent))))},j.appendData=function(t){if(this._disposed)this.id;else{var e=t.seriesIndex;this.getModel().getSeriesByIndex(e).appendData(t),this._scheduler.unfinished=!0}},j.on=B("on",!1),j.off=B("off",!1),j.one=B("one",!1);var tt=["click","dblclick","mouseover","mouseout","mousemove","mousedown","mouseup","globalout","contextmenu"];function et(t,e){var n=t.get("z"),i=t.get("zlevel");e.group.traverse((function(t){"group"!==t.type&&(null!=n&&(t.z=n),null!=i&&(t.zlevel=i))}))}function nt(){this.eventInfo}j._initEvents=function(){R(tt,(function(t){var e=function(e){var n,i=this.getModel(),o=e.target;if("globalout"===t)n={};else if(o&&null!=o.dataIndex){var s=o.dataModel||i.getSeriesByIndex(o.seriesIndex);n=s&&s.getDataParams(o.dataIndex,o.dataType,o)||{}}else o&&o.eventData&&(n=r.extend({},o.eventData));if(n){var a=n.componentType,l=n.componentIndex;"markLine"!==a&&"markPoint"!==a&&"markArea"!==a||(a="series",l=n.seriesIndex);var c=a&&null!=l&&i.getComponent(a,l),u=c&&this["series"===c.mainType?"_chartsMap":"_componentsMap"][c.__viewId];n.event=e,n.type=t,this._ecEventProcessor.eventInfo={targetEl:o,packedEvent:n,model:c,view:u},this.trigger(t,n)}};e.zrEventfulCallAtLast=!0,this._zr.on(t,e,this)}),this),R(rt,(function(t,e){this._messageCenter.on(e,(function(t){this.trigger(e,t)}),this)}),this)},j.isDisposed=function(){return this._disposed},j.clear=function(){this._disposed?this.id:this.setOption({series:[]},!0)},j.dispose=function(){if(this._disposed)this.id;else{this._disposed=!0,w.setAttribute(this.getDom(),gt,"");var t=this._api,e=this._model;R(this._componentsViews,(function(n){n.dispose(e,t)})),R(this._chartsViews,(function(n){n.dispose(e,t)})),this._zr.dispose(),delete ht[this.id]}},r.mixin(F,l),nt.prototype={constructor:nt,normalizeQuery:function(t){var e={},n={},i={};if(r.isString(t)){var o=O(t);e.mainType=o.main||null,e.subType=o.sub||null}else{var s=["Index","Name","Id"],a={name:1,dataIndex:1,dataType:1};r.each(t,(function(t,r){for(var o=!1,l=0;l0&&u===r.length-c.length){var h=r.slice(0,u);"data"!==h&&(e.mainType=h,e[c.toLowerCase()]=t,o=!0)}}a.hasOwnProperty(r)&&(n[r]=t,o=!0),o||(i[r]=t)}))}return{cptQuery:e,dataQuery:n,otherQuery:i}},filter:function(t,e,n){var i=this.eventInfo;if(!i)return!0;var r=i.targetEl,o=i.packedEvent,s=i.model,a=i.view;if(!s||!a)return!0;var l=e.cptQuery,c=e.dataQuery;return u(l,s,"mainType")&&u(l,s,"subType")&&u(l,s,"index","componentIndex")&&u(l,s,"name")&&u(l,s,"id")&&u(c,o,"name")&&u(c,o,"dataIndex")&&u(c,o,"dataType")&&(!a.filterForExposedEvent||a.filterForExposedEvent(t,e.otherQuery,r,o));function u(t,e,n,i){return null==t[n]||e[i||n]===t[n]}},afterTrigger:function(){this.eventInfo=null}};var it={},rt={},ot=[],st=[],at=[],lt=[],ct={},ut={},ht={},dt={},ft=new Date-0,pt=new Date-0,gt="_echarts_instance_";function mt(t){dt[t]=!1}var vt=mt;function bt(t){return ht[w.getAttribute(t,gt)]}function yt(t,e){ct[t]=e}function wt(t){st.push(t)}function xt(t,e){St(ot,t,e,1e3)}function _t(t,e,n){"function"==typeof e&&(n=e,e="");var i=I(t)?t.type:[t,t={event:e}][0];t.event=(t.event||i).toLowerCase(),e=t.event,E(D.test(i)&&D.test(e)),it[i]||(it[i]={action:n,actionInfo:t}),rt[e]=i}function Mt(t,e){St(lt,t,e,3e3,"visual")}function St(t,e,n,i,r){(L(e)||I(e))&&(n=e,e=i);var o=A.wrapStageHandler(n,r);return o.__prio=e,o.__raw=n,t.push(o),o}function At(t,e){ut[t]=e}Mt(2e3,_),wt(f),xt(900,p),At("default",S),_t({type:"highlight",event:"highlight",update:"highlight"},r.noop),_t({type:"downplay",event:"downplay",update:"downplay"},r.noop),yt("light",k),yt("dark",C);e.version="4.9.0",e.dependencies={zrender:"4.3.2"},e.PRIORITY=$,e.init=function(t,e,n){var i=bt(t);if(i)return i;var r=new F(t,e,n);return r.id="ec_"+ft++,ht[r.id]=r,w.setAttribute(t,gt,r.id),function(t){var e="__connectUpdateStatus";function n(t,n){for(var i=0;i{e.nextTick(()=>{this[s]?n(this[s]):t(h(void 0,!0))})});const n=this[l];let i;if(n)i=new Promise(function(t,e){return(n,i)=>{t.then(()=>{e[a]?n(h(void 0,!0)):e[c](n,i)},i)}}(n,this));else{const t=this[u].read();if(null!==t)return Promise.resolve(h(t,!1));i=new Promise(this[c])}return this[l]=i,i},[Symbol.asyncIterator](){return this},return(){return new Promise((t,e)=>{this[u].destroy(null,n=>{n?e(n):t(h(void 0,!0))})})}},p);t.exports=t=>{const e=Object.create(g,{[u]:{value:t,writable:!0},[r]:{value:null,writable:!0},[o]:{value:null,writable:!0},[s]:{value:null,writable:!0},[a]:{value:t._readableState.endEmitted,writable:!0},[c]:{value:(t,n)=>{const i=e[u].read();i?(e[l]=null,e[r]=null,e[o]=null,t(h(i,!1))):(e[r]=t,e[o]=n)},writable:!0}});return e[l]=null,i(t,t=>{if(t&&"ERR_STREAM_PREMATURE_CLOSE"!==t.code){const n=e[o];return null!==n&&(e[l]=null,e[r]=null,e[o]=null,n(t)),void(e[s]=t)}const n=e[r];null!==n&&(e[l]=null,e[r]=null,e[o]=null,n(h(void 0,!0))),e[a]=!0}),t.on("readable",f.bind(null,e)),e}}).call(this,n("8oxB"))},Qe9p:function(t,e,n){var i=n("1RvN"),r={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]};function o(t){return(t=Math.round(t))<0?0:t>255?255:t}function s(t){return t<0?0:t>1?1:t}function a(t){return t.length&&"%"===t.charAt(t.length-1)?o(parseFloat(t)/100*255):o(parseInt(t,10))}function l(t){return t.length&&"%"===t.charAt(t.length-1)?s(parseFloat(t)/100):s(parseFloat(t))}function c(t,e,n){return n<0?n+=1:n>1&&(n-=1),6*n<1?t+(e-t)*n*6:2*n<1?e:3*n<2?t+(e-t)*(2/3-n)*6:t}function u(t,e,n){return t+(e-t)*n}function h(t,e,n,i,r){return t[0]=e,t[1]=n,t[2]=i,t[3]=r,t}function d(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t}var f=new i(20),p=null;function g(t,e){p&&d(p,e),p=f.put(t,p||e.slice())}function m(t,e){if(t){e=e||[];var n=f.get(t);if(n)return d(e,n);var i,o=(t+="").replace(/ /g,"").toLowerCase();if(o in r)return d(e,r[o]),g(t,e),e;if("#"===o.charAt(0))return 4===o.length?(i=parseInt(o.substr(1),16))>=0&&i<=4095?(h(e,(3840&i)>>4|(3840&i)>>8,240&i|(240&i)>>4,15&i|(15&i)<<4,1),g(t,e),e):void h(e,0,0,0,1):7===o.length?(i=parseInt(o.substr(1),16))>=0&&i<=16777215?(h(e,(16711680&i)>>16,(65280&i)>>8,255&i,1),g(t,e),e):void h(e,0,0,0,1):void 0;var s=o.indexOf("("),c=o.indexOf(")");if(-1!==s&&c+1===o.length){var u=o.substr(0,s),p=o.substr(s+1,c-(s+1)).split(","),m=1;switch(u){case"rgba":if(4!==p.length)return void h(e,0,0,0,1);m=l(p.pop());case"rgb":return 3!==p.length?void h(e,0,0,0,1):(h(e,a(p[0]),a(p[1]),a(p[2]),m),g(t,e),e);case"hsla":return 4!==p.length?void h(e,0,0,0,1):(p[3]=l(p[3]),v(p,e),g(t,e),e);case"hsl":return 3!==p.length?void h(e,0,0,0,1):(v(p,e),g(t,e),e);default:return}}h(e,0,0,0,1)}}function v(t,e){var n=(parseFloat(t[0])%360+360)%360/360,i=l(t[1]),r=l(t[2]),s=r<=.5?r*(i+1):r+i-r*i,a=2*r-s;return h(e=e||[],o(255*c(a,s,n+1/3)),o(255*c(a,s,n)),o(255*c(a,s,n-1/3)),1),4===t.length&&(e[3]=t[3]),e}function b(t,e,n){if(e&&e.length&&t>=0&&t<=1){n=n||[];var i=t*(e.length-1),r=Math.floor(i),a=Math.ceil(i),l=e[r],c=e[a],h=i-r;return n[0]=o(u(l[0],c[0],h)),n[1]=o(u(l[1],c[1],h)),n[2]=o(u(l[2],c[2],h)),n[3]=s(u(l[3],c[3],h)),n}}var y=b;function w(t,e,n){if(e&&e.length&&t>=0&&t<=1){var i=t*(e.length-1),r=Math.floor(i),a=Math.ceil(i),l=m(e[r]),c=m(e[a]),h=i-r,d=_([o(u(l[0],c[0],h)),o(u(l[1],c[1],h)),o(u(l[2],c[2],h)),s(u(l[3],c[3],h))],"rgba");return n?{color:d,leftIndex:r,rightIndex:a,value:i}:d}}var x=w;function _(t,e){if(t&&t.length){var n=t[0]+","+t[1]+","+t[2];return"rgba"!==e&&"hsva"!==e&&"hsla"!==e||(n+=","+t[3]),e+"("+n+")"}}e.parse=m,e.lift=function(t,e){var n=m(t);if(n){for(var i=0;i<3;i++)n[i]=e<0?n[i]*(1-e)|0:(255-n[i])*e+n[i]|0,n[i]>255?n[i]=255:t[i]<0&&(n[i]=0);return _(n,4===n.length?"rgba":"rgb")}},e.toHex=function(t){var e=m(t);if(e)return((1<<24)+(e[0]<<16)+(e[1]<<8)+ +e[2]).toString(16).slice(1)},e.fastLerp=b,e.fastMapToColor=y,e.lerp=w,e.mapToColor=x,e.modifyHSL=function(t,e,n,i){if(t=m(t))return t=function(t){if(t){var e,n,i=t[0]/255,r=t[1]/255,o=t[2]/255,s=Math.min(i,r,o),a=Math.max(i,r,o),l=a-s,c=(a+s)/2;if(0===l)e=0,n=0;else{n=c<.5?l/(a+s):l/(2-a-s);var u=((a-i)/6+l/2)/l,h=((a-r)/6+l/2)/l,d=((a-o)/6+l/2)/l;i===a?e=d-h:r===a?e=1/3+u-d:o===a&&(e=2/3+h-u),e<0&&(e+=1),e>1&&(e-=1)}var f=[360*e,n,c];return null!=t[3]&&f.push(t[3]),f}}(t),null!=e&&(t[0]=(r=e,(r=Math.round(r))<0?0:r>360?360:r)),null!=n&&(t[1]=l(n)),null!=i&&(t[2]=l(i)),_(v(t),"rgba");var r},e.modifyAlpha=function(t,e){if((t=m(t))&&null!=e)return t[3]=s(e),_(t,"rgba")},e.stringify=_},QiNh:function(t,e,n){t.exports=n.p+"e908b5e66faee5b948e984da2c1aaf9a.js"},QlAO:function(t,e,n){"use strict";(function(e,i){var r;t.exports=A,A.ReadableState=S;n("+qE3").EventEmitter;var o=function(t,e){return t.listeners(e).length},s=n("W7sv");const a=n("tjlA").Buffer,l=(void 0!==e?e:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{}).Uint8Array||function(){};const c=n(5);let u;u=c&&c.debuglog?c.debuglog("stream"):function(){};const h=n("lqUa"),d=n("ST+o"),f=n("ubW+").getHighWaterMark,p=n("nYpo").codes,g=p.ERR_INVALID_ARG_TYPE,m=p.ERR_STREAM_PUSH_AFTER_EOF,v=p.ERR_METHOD_NOT_IMPLEMENTED,b=p.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;let y,w,x;n("P7XM")(A,s);const _=d.errorOrDestroy,M=["error","close","destroy","pause","resume"];function S(t,e,i){r=r||n("5maX"),t=t||{},"boolean"!=typeof i&&(i=e instanceof r),this.objectMode=!!t.objectMode,i&&(this.objectMode=this.objectMode||!!t.readableObjectMode),this.highWaterMark=f(this,t,"readableHighWaterMark",i),this.buffer=new h,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=!1!==t.emitClose,this.autoDestroy=!!t.autoDestroy,this.destroyed=!1,this.defaultEncoding=t.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,t.encoding&&(y||(y=n("qiJe").StringDecoder),this.decoder=new y(t.encoding),this.encoding=t.encoding)}function A(t){if(r=r||n("5maX"),!(this instanceof A))return new A(t);const e=this instanceof r;this._readableState=new S(t,this,e),this.readable=!0,t&&("function"==typeof t.read&&(this._read=t.read),"function"==typeof t.destroy&&(this._destroy=t.destroy)),s.call(this)}function k(t,e,n,i,r){u("readableAddChunk",e);var o,s=t._readableState;if(null===e)s.reading=!1,function(t,e){if(u("onEofChunk"),e.ended)return;if(e.decoder){var n=e.decoder.end();n&&n.length&&(e.buffer.push(n),e.length+=e.objectMode?1:n.length)}e.ended=!0,e.sync?E(t):(e.needReadable=!1,e.emittedReadable||(e.emittedReadable=!0,R(t)))}(t,s);else if(r||(o=function(t,e){var n;i=e,a.isBuffer(i)||i instanceof l||"string"==typeof e||void 0===e||t.objectMode||(n=new g("chunk",["string","Buffer","Uint8Array"],e));var i;return n}(s,e)),o)_(t,o);else if(s.objectMode||e&&e.length>0)if("string"==typeof e||s.objectMode||Object.getPrototypeOf(e)===a.prototype||(e=function(t){return a.from(t)}(e)),i)s.endEmitted?_(t,new b):C(t,s,e,!0);else if(s.ended)_(t,new m);else{if(s.destroyed)return!1;s.reading=!1,s.decoder&&!n?(e=s.decoder.write(e),s.objectMode||0!==e.length?C(t,s,e,!1):L(t,s)):C(t,s,e,!1)}else i||(s.reading=!1,L(t,s));return!s.ended&&(s.lengthe.highWaterMark&&(e.highWaterMark=function(t){return t>=1073741824?t=1073741824:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}function E(t){var e=t._readableState;u("emitReadable",e.needReadable,e.emittedReadable),e.needReadable=!1,e.emittedReadable||(u("emitReadable",e.flowing),e.emittedReadable=!0,i.nextTick(R,t))}function R(t){var e=t._readableState;u("emitReadable_",e.destroyed,e.length,e.ended),e.destroyed||!e.length&&!e.ended||(t.emit("readable"),e.emittedReadable=!1),e.needReadable=!e.flowing&&!e.ended&&e.length<=e.highWaterMark,D(t)}function L(t,e){e.readingMore||(e.readingMore=!0,i.nextTick(I,t,e))}function I(t,e){for(;!e.reading&&!e.ended&&(e.length0,e.resumeScheduled&&!e.paused?e.flowing=!0:t.listenerCount("data")>0&&t.resume()}function $(t){u("readable nexttick read 0"),t.read(0)}function P(t,e){u("resume",e.reading),e.reading||t.read(0),e.resumeScheduled=!1,t.emit("resume"),D(t),e.flowing&&!e.reading&&t.read(0)}function D(t){const e=t._readableState;for(u("flow",e.flowing);e.flowing&&null!==t.read(););}function B(t,e){return 0===e.length?null:(e.objectMode?n=e.buffer.shift():!t||t>=e.length?(n=e.decoder?e.buffer.join(""):1===e.buffer.length?e.buffer.first():e.buffer.concat(e.length),e.buffer.clear()):n=e.buffer.consume(t,e.decoder),n);var n}function N(t){var e=t._readableState;u("endReadable",e.endEmitted),e.endEmitted||(e.ended=!0,i.nextTick(F,e,t))}function F(t,e){if(u("endReadableNT",t.endEmitted,t.length),!t.endEmitted&&0===t.length&&(t.endEmitted=!0,e.readable=!1,e.emit("end"),t.autoDestroy)){const t=e._writableState;(!t||t.autoDestroy&&t.finished)&&e.destroy()}}function j(t,e){for(var n=0,i=t.length;n=e.highWaterMark:e.length>0)||e.ended))return u("read: emitReadable",e.length,e.ended),0===e.length&&e.ended?N(this):E(this),null;if(0===(t=T(t,e))&&e.ended)return 0===e.length&&N(this),null;var i,r=e.needReadable;return u("need readable",r),(0===e.length||e.length-t0?B(t,e):null)?(e.needReadable=e.length<=e.highWaterMark,t=0):(e.length-=t,e.awaitDrain=0),0===e.length&&(e.ended||(e.needReadable=!0),n!==t&&e.ended&&N(this)),null!==i&&this.emit("data",i),i},A.prototype._read=function(t){_(this,new v("_read()"))},A.prototype.pipe=function(t,e){var n=this,r=this._readableState;switch(r.pipesCount){case 0:r.pipes=t;break;case 1:r.pipes=[r.pipes,t];break;default:r.pipes.push(t)}r.pipesCount+=1,u("pipe count=%d opts=%j",r.pipesCount,e);var s=(!e||!1!==e.end)&&t!==i.stdout&&t!==i.stderr?l:m;function a(e,i){u("onunpipe"),e===n&&i&&!1===i.hasUnpiped&&(i.hasUnpiped=!0,u("cleanup"),t.removeListener("close",p),t.removeListener("finish",g),t.removeListener("drain",c),t.removeListener("error",f),t.removeListener("unpipe",a),n.removeListener("end",l),n.removeListener("end",m),n.removeListener("data",d),h=!0,!r.awaitDrain||t._writableState&&!t._writableState.needDrain||c())}function l(){u("onend"),t.end()}r.endEmitted?i.nextTick(s):n.once("end",s),t.on("unpipe",a);var c=function(t){return function(){var e=t._readableState;u("pipeOnDrain",e.awaitDrain),e.awaitDrain&&e.awaitDrain--,0===e.awaitDrain&&o(t,"data")&&(e.flowing=!0,D(t))}}(n);t.on("drain",c);var h=!1;function d(e){u("ondata");var i=t.write(e);u("dest.write",i),!1===i&&((1===r.pipesCount&&r.pipes===t||r.pipesCount>1&&-1!==j(r.pipes,t))&&!h&&(u("false write response, pause",r.awaitDrain),r.awaitDrain++),n.pause())}function f(e){u("onerror",e),m(),t.removeListener("error",f),0===o(t,"error")&&_(t,e)}function p(){t.removeListener("finish",g),m()}function g(){u("onfinish"),t.removeListener("close",p),m()}function m(){u("unpipe"),n.unpipe(t)}return n.on("data",d),function(t,e,n){if("function"==typeof t.prependListener)return t.prependListener(e,n);t._events&&t._events[e]?Array.isArray(t._events[e])?t._events[e].unshift(n):t._events[e]=[n,t._events[e]]:t.on(e,n)}(t,"error",f),t.once("close",p),t.once("finish",g),t.emit("pipe",n),r.flowing||(u("pipe resume"),n.resume()),t},A.prototype.unpipe=function(t){var e=this._readableState,n={hasUnpiped:!1};if(0===e.pipesCount)return this;if(1===e.pipesCount)return t&&t!==e.pipes||(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this,n)),this;if(!t){var i=e.pipes,r=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var o=0;o0,!1!==r.flowing&&this.resume()):"readable"===t&&(r.endEmitted||r.readableListening||(r.readableListening=r.needReadable=!0,r.flowing=!1,r.emittedReadable=!1,u("on readable",r.length,r.reading),r.length?E(this):r.reading||i.nextTick($,this))),n},A.prototype.addListener=A.prototype.on,A.prototype.removeListener=function(t,e){const n=s.prototype.removeListener.call(this,t,e);return"readable"===t&&i.nextTick(O,this),n},A.prototype.removeAllListeners=function(t){const e=s.prototype.removeAllListeners.apply(this,arguments);return"readable"!==t&&void 0!==t||i.nextTick(O,this),e},A.prototype.resume=function(){var t=this._readableState;return t.flowing||(u("resume"),t.flowing=!t.readableListening,function(t,e){e.resumeScheduled||(e.resumeScheduled=!0,i.nextTick(P,t,e))}(this,t)),t.paused=!1,this},A.prototype.pause=function(){return u("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(u("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this},A.prototype.wrap=function(t){var e=this._readableState,n=!1;for(var i in t.on("end",()=>{if(u("wrapped end"),e.decoder&&!e.ended){var t=e.decoder.end();t&&t.length&&this.push(t)}this.push(null)}),t.on("data",i=>{(u("wrapped data"),e.decoder&&(i=e.decoder.write(i)),e.objectMode&&null==i)||(e.objectMode||i&&i.length)&&(this.push(i)||(n=!0,t.pause()))}),t)void 0===this[i]&&"function"==typeof t[i]&&(this[i]=function(e){return function(){return t[e].apply(t,arguments)}}(i));for(var r=0;r{u("wrapped _read",e),n&&(n=!1,t.resume())},this},"function"==typeof Symbol&&(A.prototype[Symbol.asyncIterator]=function(){return void 0===w&&(w=n("QYZq")),w(this)}),Object.defineProperty(A.prototype,"readableHighWaterMark",{enumerable:!1,get:function(){return this._readableState.highWaterMark}}),Object.defineProperty(A.prototype,"readableBuffer",{enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}}),Object.defineProperty(A.prototype,"readableFlowing",{enumerable:!1,get:function(){return this._readableState.flowing},set:function(t){this._readableState&&(this._readableState.flowing=t)}}),A._fromList=B,Object.defineProperty(A.prototype,"readableLength",{enumerable:!1,get(){return this._readableState.length}}),"function"==typeof Symbol&&(A.from=function(t,e){return void 0===x&&(x=n("kZyI")),x(A,t,e)})}).call(this,n("yLpj"),n("8oxB"))},QuXc:function(t,e){var n=function(t){this.colorStops=t||[]};n.prototype={constructor:n,addColorStop:function(t,e){this.colorStops.push({offset:t,color:e})}};var i=n;t.exports=i},Quqz:function(t,e,n){t.exports=n.p+"bd6e4c1215a429558edf1546243e338b.js"},Qvb6:function(t,e,n){var i=n("ProS"),r=n("bYtY"),o=n("ItGF"),s=n("B9fm"),a=n("gvm7"),l=n("7aKB"),c=n("OELB"),u=n("IwbS"),h=n("Ez2D"),d=n("+TT/"),f=n("Qxkt"),p=n("F9bG"),g=n("aX7z"),m=n("/y7N"),v=n("4NO4").getTooltipRenderMode,b=r.bind,y=r.each,w=c.parsePercent,x=new u.Rect({shape:{x:-1,y:-1,width:2,height:2}}),_=i.extendComponentView({type:"tooltip",init:function(t,e){if(!o.node){var n,i=t.getComponent("tooltip"),r=i.get("renderMode");this._renderMode=v(r),"html"===this._renderMode?(n=new s(e.getDom(),e,{appendToBody:i.get("appendToBody",!0)}),this._newLine="
      "):(n=new a(e),this._newLine="\n"),this._tooltipContent=n}},render:function(t,e,n){if(!o.node){this.group.removeAll(),this._tooltipModel=t,this._ecModel=e,this._api=n,this._lastDataByCoordSys=null,this._alwaysShowContent=t.get("alwaysShowContent");var i=this._tooltipContent;i.update(t),i.setEnterable(t.get("enterable")),this._initGlobalListener(),this._keepShow()}},_initGlobalListener:function(){var t=this._tooltipModel.get("triggerOn");p.register("itemTooltip",this._api,b((function(e,n,i){"none"!==t&&(t.indexOf(e)>=0?this._tryShow(n,i):"leave"===e&&this._hide(i))}),this))},_keepShow:function(){var t=this._tooltipModel,e=this._ecModel,n=this._api;if(null!=this._lastX&&null!=this._lastY&&"none"!==t.get("triggerOn")){var i=this;clearTimeout(this._refreshUpdateTimeout),this._refreshUpdateTimeout=setTimeout((function(){!n.isDisposed()&&i.manuallyShowTip(t,e,n,{x:i._lastX,y:i._lastY})}))}},manuallyShowTip:function(t,e,n,i){if(i.from!==this.uid&&!o.node){var r=S(i,n);this._ticket="";var s=i.dataByCoordSys;if(i.tooltip&&null!=i.x&&null!=i.y){var a=x;a.position=[i.x,i.y],a.update(),a.tooltip=i.tooltip,this._tryShow({offsetX:i.x,offsetY:i.y,target:a},r)}else if(s)this._tryShow({offsetX:i.x,offsetY:i.y,position:i.position,dataByCoordSys:i.dataByCoordSys,tooltipOption:i.tooltipOption},r);else if(null!=i.seriesIndex){if(this._manuallyAxisShowTip(t,e,n,i))return;var l=h(i,e),c=l.point[0],u=l.point[1];null!=c&&null!=u&&this._tryShow({offsetX:c,offsetY:u,position:i.position,target:l.el},r)}else null!=i.x&&null!=i.y&&(n.dispatchAction({type:"updateAxisPointer",x:i.x,y:i.y}),this._tryShow({offsetX:i.x,offsetY:i.y,position:i.position,target:n.getZr().findHover(i.x,i.y).target},r))}},manuallyHideTip:function(t,e,n,i){var r=this._tooltipContent;!this._alwaysShowContent&&this._tooltipModel&&r.hideLater(this._tooltipModel.get("hideDelay")),this._lastX=this._lastY=null,i.from!==this.uid&&this._hide(S(i,n))},_manuallyAxisShowTip:function(t,e,n,i){var r=i.seriesIndex,o=i.dataIndex,s=e.getComponent("axisPointer").coordSysAxesInfo;if(null!=r&&null!=o&&null!=s){var a=e.getSeriesByIndex(r);if(a)if("axis"===(t=M([a.getData().getItemModel(o),a,(a.coordinateSystem||{}).model,t])).get("trigger"))return n.dispatchAction({type:"updateAxisPointer",seriesIndex:r,dataIndex:o,position:i.position}),!0}},_tryShow:function(t,e){var n=t.target;if(this._tooltipModel){this._lastX=t.offsetX,this._lastY=t.offsetY;var i=t.dataByCoordSys;i&&i.length?this._showAxisTooltip(i,t):n&&null!=n.dataIndex?(this._lastDataByCoordSys=null,this._showSeriesItemTooltip(t,n,e)):n&&n.tooltip?(this._lastDataByCoordSys=null,this._showComponentItemTooltip(t,n,e)):(this._lastDataByCoordSys=null,this._hide(e))}},_showOrMove:function(t,e){var n=t.get("showDelay");e=r.bind(e,this),clearTimeout(this._showTimout),n>0?this._showTimout=setTimeout(e,n):e()},_showAxisTooltip:function(t,e){var n=this._ecModel,i=this._tooltipModel,o=[e.offsetX,e.offsetY],s=[],a=[],c=M([e.tooltipOption,i]),u=this._renderMode,h=this._newLine,d={};y(t,(function(t){y(t.dataByAxis,(function(t){var e=n.getComponent(t.axisDim+"Axis",t.axisIndex),i=t.value,o=[];if(e&&null!=i){var c=m.getValueLabel(i,e.axis,n,t.seriesDataIndices,t.valueLabelOpt);r.each(t.seriesDataIndices,(function(s){var l=n.getSeriesByIndex(s.seriesIndex),h=s.dataIndexInside,f=l&&l.getDataParams(h);if(f.axisDim=t.axisDim,f.axisIndex=t.axisIndex,f.axisType=t.axisType,f.axisId=t.axisId,f.axisValue=g.getAxisRawValue(e.axis,i),f.axisValueLabel=c,f){a.push(f);var p,m=l.formatTooltip(h,!0,null,u);if(r.isObject(m)){p=m.html;var v=m.markers;r.merge(d,v)}else p=m;o.push(p)}}));var f=c;"html"!==u?s.push(o.join(h)):s.push((f?l.encodeHTML(f)+h:"")+o.join(h))}}))}),this),s.reverse(),s=s.join(this._newLine+this._newLine);var f=e.position;this._showOrMove(c,(function(){this._updateContentNotChangedOnAxis(t)?this._updatePosition(c,f,o[0],o[1],this._tooltipContent,a):this._showTooltipContent(c,s,a,Math.random(),o[0],o[1],f,void 0,d)}))},_showSeriesItemTooltip:function(t,e,n){var i=this._ecModel,o=e.seriesIndex,s=i.getSeriesByIndex(o),a=e.dataModel||s,l=e.dataIndex,c=e.dataType,u=a.getData(c),h=M([u.getItemModel(l),a,s&&(s.coordinateSystem||{}).model,this._tooltipModel]),d=h.get("trigger");if(null==d||"item"===d){var f,p,g=a.getDataParams(l,c),m=a.formatTooltip(l,!1,c,this._renderMode);r.isObject(m)?(f=m.html,p=m.markers):(f=m,p=null);var v="item_"+a.name+"_"+l;this._showOrMove(h,(function(){this._showTooltipContent(h,f,g,v,t.offsetX,t.offsetY,t.position,t.target,p)})),n({type:"showTip",dataIndexInside:l,dataIndex:u.getRawIndex(l),seriesIndex:o,from:this.uid})}},_showComponentItemTooltip:function(t,e,n){var i=e.tooltip;if("string"==typeof i){i={content:i,formatter:i}}var r=new f(i,this._tooltipModel,this._ecModel),o=r.get("content"),s=Math.random();this._showOrMove(r,(function(){this._showTooltipContent(r,o,r.get("formatterParams")||{},s,t.offsetX,t.offsetY,t.position,e)})),n({type:"showTip",from:this.uid})},_showTooltipContent:function(t,e,n,i,r,o,s,a,c){if(this._ticket="",t.get("showContent")&&t.get("show")){var u=this._tooltipContent,h=t.get("formatter");s=s||t.get("position");var d=e;if(h&&"string"==typeof h)d=l.formatTpl(h,n,!0);else if("function"==typeof h){var f=b((function(e,i){e===this._ticket&&(u.setContent(i,c,t),this._updatePosition(t,s,r,o,u,n,a))}),this);this._ticket=i,d=h(n,i,f)}u.setContent(d,c,t),u.show(t),this._updatePosition(t,s,r,o,u,n,a)}},_updatePosition:function(t,e,n,i,o,s,a){var l=this._api.getWidth(),c=this._api.getHeight();e=e||t.get("position");var u=o.getSize(),h=t.get("align"),f=t.get("verticalAlign"),p=a&&a.getBoundingRect().clone();if(a&&p.applyTransform(a.transform),"function"==typeof e&&(e=e([n,i],s,o.el,p,{viewSize:[l,c],contentSize:u.slice()})),r.isArray(e))n=w(e[0],l),i=w(e[1],c);else if(r.isObject(e)){e.width=u[0],e.height=u[1];var g=d.getLayoutRect(e,{width:l,height:c});n=g.x,i=g.y,h=null,f=null}else if("string"==typeof e&&a){var m=function(t,e,n){var i=n[0],r=n[1],o=0,s=0,a=e.width,l=e.height;switch(t){case"inside":o=e.x+a/2-i/2,s=e.y+l/2-r/2;break;case"top":o=e.x+a/2-i/2,s=e.y-r-5;break;case"bottom":o=e.x+a/2-i/2,s=e.y+l+5;break;case"left":o=e.x-i-5,s=e.y+l/2-r/2;break;case"right":o=e.x+a+5,s=e.y+l/2-r/2}return[o,s]}(e,p,u);n=m[0],i=m[1]}else{m=function(t,e,n,i,r,o,s){var a=n.getOuterSize(),l=a.width,c=a.height;null!=o&&(t+l+o>i?t-=l+o:t+=o);null!=s&&(e+c+s>r?e-=c+s:e+=s);return[t,e]}(n,i,o,l,c,h?null:20,f?null:20);n=m[0],i=m[1]}if(h&&(n-=A(h)?u[0]/2:"right"===h?u[0]:0),f&&(i-=A(f)?u[1]/2:"bottom"===f?u[1]:0),t.get("confine")){m=function(t,e,n,i,r){var o=n.getOuterSize(),s=o.width,a=o.height;return t=Math.min(t+s,i)-s,e=Math.min(e+a,r)-a,t=Math.max(t,0),e=Math.max(e,0),[t,e]}(n,i,o,l,c);n=m[0],i=m[1]}o.moveTo(n,i)},_updateContentNotChangedOnAxis:function(t){var e=this._lastDataByCoordSys,n=!!e&&e.length===t.length;return n&&y(e,(function(e,i){var r=e.dataByAxis||{},o=(t[i]||{}).dataByAxis||[];(n&=r.length===o.length)&&y(r,(function(t,e){var i=o[e]||{},r=t.seriesDataIndices||[],s=i.seriesDataIndices||[];(n&=t.value===i.value&&t.axisType===i.axisType&&t.axisId===i.axisId&&r.length===s.length)&&y(r,(function(t,e){var i=s[e];n&=t.seriesIndex===i.seriesIndex&&t.dataIndex===i.dataIndex}))}))})),this._lastDataByCoordSys=t,!!n},_hide:function(t){this._lastDataByCoordSys=null,t({type:"hideTip",from:this.uid})},dispose:function(t,e){o.node||(this._tooltipContent.dispose(),p.unregister("itemTooltip",e))}});function M(t){for(var e=t.pop();t.length;){var n=t.pop();n&&(f.isInstance(n)&&(n=n.get("tooltip",!0)),"string"==typeof n&&(n={formatter:n}),e=new f(n,e,e.ecModel))}return e}function S(t,e){return t.dispatchAction||r.bind(e.dispatchAction,e)}function A(t){return"center"===t||"middle"===t}t.exports=_},Qxkt:function(t,e,n){var i=n("bYtY"),r=n("ItGF"),o=n("4NO4").makeInner,s=n("Yl7c"),a=s.enableClassExtend,l=s.enableClassCheck,c=n("OQFs"),u=n("m9t5"),h=n("/iHx"),d=n("VR9l"),f=i.mixin,p=o();function g(t,e,n){this.parentModel=e,this.ecModel=n,this.option=t}function m(t,e,n){for(var i=0;i=0)return null;n=n.toRed(r.red);let s=n.redSqr().redIMul(n).redIAdd(r.b).redSqrt();return 3===t!==s.isOdd()&&(s=s.redNeg()),i.keyPair({pub:{x:n,y:s}})}(e,t.subarray(1,33));case 4:case 6:case 7:return 65!==t.length?null:function(t,e,n){let s=new o(e),a=new o(n);if(s.cmp(r.p)>=0||a.cmp(r.p)>=0)return null;if(s=s.toRed(r.red),a=a.toRed(r.red),(6===t||7===t)&&a.isOdd()!==(7===t))return null;const l=s.redSqr().redIMul(s);return a.redSqr().redISub(l.redIAdd(r.b)).isZero()?i.keyPair({pub:{x:s,y:a}}):null}(e,t.subarray(1,33),t.subarray(33,65));default:return null}}function a(t,e){const n=e.encode(null,33===t.length);for(let e=0;e0,privateKeyVerify(t){const e=new o(t);return e.cmp(r.n)<0&&!e.isZero()?0:1},privateKeyNegate(t){const e=new o(t),n=r.n.sub(e).umod(r.n).toArrayLike(Uint8Array,"be",32);return t.set(n),0},privateKeyTweakAdd(t,e){const n=new o(e);if(n.cmp(r.n)>=0)return 1;if(n.iadd(new o(t)),n.cmp(r.n)>=0&&n.isub(r.n),n.isZero())return 1;const i=n.toArrayLike(Uint8Array,"be",32);return t.set(i),0},privateKeyTweakMul(t,e){let n=new o(e);if(n.cmp(r.n)>=0||n.isZero())return 1;n.imul(new o(t)),n.cmp(r.n)>=0&&(n=n.umod(r.n));const i=n.toArrayLike(Uint8Array,"be",32);return t.set(i),0},publicKeyVerify:t=>null===s(t)?1:0,publicKeyCreate(t,e){const n=new o(e);if(n.cmp(r.n)>=0||n.isZero())return 1;return a(t,i.keyFromPrivate(e).getPublic()),0},publicKeyConvert(t,e){const n=s(e);if(null===n)return 1;return a(t,n.getPublic()),0},publicKeyNegate(t,e){const n=s(e);if(null===n)return 1;const i=n.getPublic();return i.y=i.y.redNeg(),a(t,i),0},publicKeyCombine(t,e){const n=new Array(e.length);for(let t=0;t=0)return 2;const l=i.getPublic().add(r.g.mul(n));return l.isInfinity()?2:(a(t,l),0)},publicKeyTweakMul(t,e,n){const i=s(e);if(null===i)return 1;if((n=new o(n)).cmp(r.n)>=0||n.isZero())return 2;return a(t,i.getPublic().mul(n)),0},signatureNormalize(t){const e=new o(t.subarray(0,32)),n=new o(t.subarray(32,64));return e.cmp(r.n)>=0||n.cmp(r.n)>=0?1:(1===n.cmp(i.nh)&&t.set(r.n.sub(n).toArrayLike(Uint8Array,"be",32),32),0)},signatureExport(t,e){const n=e.subarray(0,32),i=e.subarray(32,64);if(new o(n).cmp(r.n)>=0)return 1;if(new o(i).cmp(r.n)>=0)return 1;const{output:s}=t;let a=s.subarray(4,37);a[0]=0,a.set(n,1);let l=33,c=0;for(;l>1&&0===a[c]&&!(128&a[c+1]);--l,++c);if(a=a.subarray(c),128&a[0])return 1;if(l>1&&0===a[0]&&!(128&a[1]))return 1;let u=s.subarray(39,72);u[0]=0,u.set(i,1);let h=33,d=0;for(;h>1&&0===u[d]&&!(128&u[d+1]);--h,++d);return u=u.subarray(d),128&u[0]||h>1&&0===u[0]&&!(128&u[1])?1:(t.outputlen=6+l+h,s[0]=48,s[1]=t.outputlen-2,s[2]=2,s[3]=a.length,s.set(a,4),s[4+l]=2,s[5+l]=u.length,s.set(u,6+l),0)},signatureImport(t,e){if(e.length<8)return 1;if(e.length>72)return 1;if(48!==e[0])return 1;if(e[1]!==e.length-2)return 1;if(2!==e[2])return 1;const n=e[3];if(0===n)return 1;if(5+n>=e.length)return 1;if(2!==e[4+n])return 1;const i=e[5+n];if(0===i)return 1;if(6+n+i!==e.length)return 1;if(128&e[4])return 1;if(n>1&&0===e[4]&&!(128&e[5]))return 1;if(128&e[n+6])return 1;if(i>1&&0===e[n+6]&&!(128&e[n+7]))return 1;let s=e.subarray(4,4+n);if(33===s.length&&0===s[0]&&(s=s.subarray(1)),s.length>32)return 1;let a=e.subarray(6+n);if(33===a.length&&0===a[0]&&(a=a.slice(1)),a.length>32)throw new Error("S length is too long");let l=new o(s);l.cmp(r.n)>=0&&(l=new o(0));let c=new o(e.subarray(6+n));return c.cmp(r.n)>=0&&(c=new o(0)),t.set(l.toArrayLike(Uint8Array,"be",32),0),t.set(c.toArrayLike(Uint8Array,"be",32),32),0},ecdsaSign(t,e,n,s,a){if(a){const t=a;a=i=>{const r=t(e,n,null,s,i);if(!(r instanceof Uint8Array&&32===r.length))throw new Error("This is the way");return new o(r)}}const l=new o(n);if(l.cmp(r.n)>=0||l.isZero())return 1;let c;try{c=i.sign(e,n,{canonical:!0,k:a,pers:s})}catch(t){return 1}return t.signature.set(c.r.toArrayLike(Uint8Array,"be",32),0),t.signature.set(c.s.toArrayLike(Uint8Array,"be",32),32),t.recid=c.recoveryParam,0},ecdsaVerify(t,e,n){const a={r:t.subarray(0,32),s:t.subarray(32,64)},l=new o(a.r),c=new o(a.s);if(l.cmp(r.n)>=0||c.cmp(r.n)>=0)return 1;if(1===c.cmp(i.nh)||l.isZero()||c.isZero())return 3;const u=s(n);if(null===u)return 2;const h=u.getPublic();return i.verify(e,a,h)?0:3},ecdsaRecover(t,e,n,s){const l={r:e.slice(0,32),s:e.slice(32,64)},c=new o(l.r),u=new o(l.s);if(c.cmp(r.n)>=0||u.cmp(r.n)>=0)return 1;if(c.isZero()||u.isZero())return 2;let h;try{h=i.recoverPubKey(s,l,n)}catch(t){return 2}return a(t,h),0},ecdh(t,e,n,a,l,c,u){const h=s(e);if(null===h)return 1;const d=new o(n);if(d.cmp(r.n)>=0||d.isZero())return 2;const f=h.getPublic().mul(d);if(void 0===l){const e=f.encode(null,!0),n=i.hash().update(e).digest();for(let e=0;e<32;++e)t[e]=n[e]}else{c||(c=new Uint8Array(32));const e=f.getX().toArray("be",32);for(let t=0;t<32;++t)c[t]=e[t];u||(u=new Uint8Array(32));const n=f.getY().toArray("be",32);for(let t=0;t<32;++t)u[t]=n[t];const i=l(c,u,a);if(!(i instanceof Uint8Array&&i.length===t.length))return 2;t.set(i)}return 0}}},RylI:function(t,e,n){t.exports=n.p+"6fef06c49fbb86934ac46d1631974d03.js"},S6BB:function(t,e,n){t.exports=n.p+"31f3f1c32b27587832d28b634351325c.js"},SJdk:function(t,e,n){t.exports=n.p+"7e858d2812c1c91e399264aa3ded0f00.js"},SJqZ:function(t,e,n){t.exports=n.p+"0d4d51ed7d30b5084008c57652d53a54.js"},SKnc:function(t,e,n){var i=n("bYtY"),r=n("QuXc"),o=function(t,e,n,i,o,s){this.x=null==t?0:t,this.y=null==e?0:e,this.x2=null==n?1:n,this.y2=null==i?0:i,this.type="linear",this.global=s||!1,r.call(this,o)};o.prototype={constructor:o},i.inherits(o,r);var s=o;t.exports=s},"SKx+":function(t,e,n){var i=n("ProS").extendComponentModel({type:"axisPointer",coordSysAxesInfo:null,defaultOption:{show:"auto",triggerOn:null,zlevel:0,z:50,type:"line",snap:!1,triggerTooltip:!0,value:null,status:null,link:[],animation:null,animationDurationUpdate:200,lineStyle:{color:"#aaa",width:1,type:"solid"},shadowStyle:{color:"rgba(150,150,150,0.3)"},label:{show:!0,formatter:null,precision:"auto",margin:3,color:"#fff",padding:[5,7,5,7],backgroundColor:"auto",borderColor:null,borderWidth:0,shadowBlur:3,shadowColor:"#aaa"},handle:{show:!1,icon:"M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4h1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7v-1.2h6.6z M13.3,22H6.7v-1.2h6.6z M13.3,19.6H6.7v-1.2h6.6z",size:45,margin:50,color:"#333",shadowBlur:3,shadowColor:"#aaa",shadowOffsetX:0,shadowOffsetY:2,throttle:40}}});t.exports=i},SLIA:function(t,e,n){t.exports=n.p+"7a8927591addd938435ecd3394f5cddf.js"},SMc4:function(t,e,n){var i=n("bYtY"),r=n("bLfw"),o=n("nkfE"),s=n("ICMv"),a=r.extend({type:"cartesian2dAxis",axis:null,init:function(){a.superApply(this,"init",arguments),this.resetRange()},mergeOption:function(){a.superApply(this,"mergeOption",arguments),this.resetRange()},restoreData:function(){a.superApply(this,"restoreData",arguments),this.resetRange()},getCoordSysModel:function(){return this.ecModel.queryComponents({mainType:"grid",index:this.option.gridIndex,id:this.option.gridId})[0]}});function l(t,e){return e.type||(e.data?"category":"value")}i.merge(a.prototype,s);var c={offset:0};o("x",a,l,c),o("y",a,l,c);var u=a;t.exports=u},SPqj:function(t,e,n){t.exports=n.p+"406a0570f5a7af790698bae4f4ce963e.js"},"ST+o":function(t,e,n){"use strict";(function(e){function n(t,e){r(t,e),i(t)}function i(t){t._writableState&&!t._writableState.emitClose||t._readableState&&!t._readableState.emitClose||t.emit("close")}function r(t,e){t.emit("error",e)}t.exports={destroy:function(t,o){const s=this._readableState&&this._readableState.destroyed,a=this._writableState&&this._writableState.destroyed;return s||a?(o?o(t):t&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,e.nextTick(r,this,t)):e.nextTick(r,this,t)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,t=>{!o&&t?this._writableState?this._writableState.errorEmitted?e.nextTick(i,this):(this._writableState.errorEmitted=!0,e.nextTick(n,this,t)):e.nextTick(n,this,t):o?(e.nextTick(i,this),o(t)):e.nextTick(i,this)}),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)},errorOrDestroy:function(t,e){const n=t._readableState,i=t._writableState;n&&n.autoDestroy||i&&i.autoDestroy?t.destroy(e):t.emit("error",e)}}}).call(this,n("8oxB"))},SUKs:function(t,e,n){var i=function(){};1===n("LPTA").debugMode&&(i=console.error);var r=i;t.exports=r},SWaG:function(t,e,n){t.exports=n.p+"08f2ebda31cf24e86831115fde674fad.js"},SgGq:function(t,e,n){var i=n("bYtY"),r=n("H6uX"),o=n("YH21"),s=n("pP6R");function a(t){this.pointerChecker,this._zr=t,this._opt={};var e=i.bind,n=e(l,this),o=e(c,this),s=e(u,this),a=e(h,this),f=e(d,this);r.call(this),this.setPointerChecker=function(t){this.pointerChecker=t},this.enable=function(e,r){this.disable(),this._opt=i.defaults(i.clone(r)||{},{zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!1,preventDefaultMouseMove:!0}),null==e&&(e=!0),!0!==e&&"move"!==e&&"pan"!==e||(t.on("mousedown",n),t.on("mousemove",o),t.on("mouseup",s)),!0!==e&&"scale"!==e&&"zoom"!==e||(t.on("mousewheel",a),t.on("pinch",f))},this.disable=function(){t.off("mousedown",n),t.off("mousemove",o),t.off("mouseup",s),t.off("mousewheel",a),t.off("pinch",f)},this.dispose=this.disable,this.isDragging=function(){return this._dragging},this.isPinching=function(){return this._pinching}}function l(t){if(!(o.isMiddleOrRightButtonOnMouseUpDown(t)||t.target&&t.target.draggable)){var e=t.offsetX,n=t.offsetY;this.pointerChecker&&this.pointerChecker(t,e,n)&&(this._x=e,this._y=n,this._dragging=!0)}}function c(t){if(this._dragging&&g("moveOnMouseMove",t,this._opt)&&"pinch"!==t.gestureEvent&&!s.isTaken(this._zr,"globalPan")){var e=t.offsetX,n=t.offsetY,i=this._x,r=this._y,a=e-i,l=n-r;this._x=e,this._y=n,this._opt.preventDefaultMouseMove&&o.stop(t.event),p(this,"pan","moveOnMouseMove",t,{dx:a,dy:l,oldX:i,oldY:r,newX:e,newY:n})}}function u(t){o.isMiddleOrRightButtonOnMouseUpDown(t)||(this._dragging=!1)}function h(t){var e=g("zoomOnMouseWheel",t,this._opt),n=g("moveOnMouseWheel",t,this._opt),i=t.wheelDelta,r=Math.abs(i),o=t.offsetX,s=t.offsetY;if(0!==i&&(e||n)){if(e){var a=r>3?1.4:r>1?1.2:1.1;f(this,"zoom","zoomOnMouseWheel",t,{scale:i>0?a:1/a,originX:o,originY:s})}if(n){var l=Math.abs(i);f(this,"scrollMove","moveOnMouseWheel",t,{scrollDelta:(i>0?1:-1)*(l>3?.4:l>1?.15:.05),originX:o,originY:s})}}}function d(t){s.isTaken(this._zr,"globalPan")||f(this,"zoom",null,t,{scale:t.pinchScale>1?1.1:1/1.1,originX:t.pinchX,originY:t.pinchY})}function f(t,e,n,i,r){t.pointerChecker&&t.pointerChecker(i,r.originX,r.originY)&&(o.stop(i.event),p(t,e,n,i,r))}function p(t,e,n,r,o){o.isAvailableBehavior=i.bind(g,null,n,r),t.trigger(e,o)}function g(t,e,n){var r=n[t];return!t||r&&(!i.isString(r)||e.event[r+"Key"])}i.mixin(a,r);var m=a;t.exports=m},SigQ:function(t,e,n){t.exports=n.p+"727184c92f9da8d8b0c013fd79cf32fe.js"},Sj9i:function(t,e,n){var i=n("QBsz"),r=i.create,o=i.distSquare,s=Math.pow,a=Math.sqrt,l=a(3),c=r(),u=r(),h=r();function d(t){return t>-1e-8&&t<1e-8}function f(t){return t>1e-8||t<-1e-8}function p(t,e,n,i,r){var o=1-r;return o*o*(o*t+3*r*e)+r*r*(r*i+3*o*n)}function g(t,e,n,i){var r=1-i;return r*(r*t+2*i*e)+i*i*n}e.cubicAt=p,e.cubicDerivativeAt=function(t,e,n,i,r){var o=1-r;return 3*(((e-t)*o+2*(n-e)*r)*o+(i-n)*r*r)},e.cubicRootAt=function(t,e,n,i,r,o){var c=i+3*(e-n)-t,u=3*(n-2*e+t),h=3*(e-t),f=t-r,p=u*u-3*c*h,g=u*h-9*c*f,m=h*h-3*u*f,v=0;if(d(p)&&d(g)){if(d(u))o[0]=0;else(T=-h/u)>=0&&T<=1&&(o[v++]=T)}else{var b=g*g-4*p*m;if(d(b)){var y=g/p,w=-y/2;(T=-u/c+y)>=0&&T<=1&&(o[v++]=T),w>=0&&w<=1&&(o[v++]=w)}else if(b>0){var x=a(b),_=p*u+1.5*c*(-g+x),M=p*u+1.5*c*(-g-x);(T=(-u-((_=_<0?-s(-_,1/3):s(_,1/3))+(M=M<0?-s(-M,1/3):s(M,1/3))))/(3*c))>=0&&T<=1&&(o[v++]=T)}else{var S=(2*p*u-3*c*g)/(2*a(p*p*p)),A=Math.acos(S)/3,k=a(p),C=Math.cos(A),T=(-u-2*k*C)/(3*c),E=(w=(-u+k*(C+l*Math.sin(A)))/(3*c),(-u+k*(C-l*Math.sin(A)))/(3*c));T>=0&&T<=1&&(o[v++]=T),w>=0&&w<=1&&(o[v++]=w),E>=0&&E<=1&&(o[v++]=E)}}return v},e.cubicExtrema=function(t,e,n,i,r){var o=6*n-12*e+6*t,s=9*e+3*i-3*t-9*n,l=3*e-3*t,c=0;if(d(s)){if(f(o))(h=-l/o)>=0&&h<=1&&(r[c++]=h)}else{var u=o*o-4*s*l;if(d(u))r[0]=-o/(2*s);else if(u>0){var h,p=a(u),g=(-o-p)/(2*s);(h=(-o+p)/(2*s))>=0&&h<=1&&(r[c++]=h),g>=0&&g<=1&&(r[c++]=g)}}return c},e.cubicSubdivide=function(t,e,n,i,r,o){var s=(e-t)*r+t,a=(n-e)*r+e,l=(i-n)*r+n,c=(a-s)*r+s,u=(l-a)*r+a,h=(u-c)*r+c;o[0]=t,o[1]=s,o[2]=c,o[3]=h,o[4]=h,o[5]=u,o[6]=l,o[7]=i},e.cubicProjectPoint=function(t,e,n,i,r,s,l,d,f,g,m){var v,b,y,w,x,_=.005,M=1/0;c[0]=f,c[1]=g;for(var S=0;S<1;S+=.05)u[0]=p(t,n,r,l,S),u[1]=p(e,i,s,d,S),(w=o(c,u))=0&&w=0&&h<=1&&(r[c++]=h)}else{var u=s*s-4*o*l;if(d(u))(h=-s/(2*o))>=0&&h<=1&&(r[c++]=h);else if(u>0){var h,p=a(u),g=(-s-p)/(2*o);(h=(-s+p)/(2*o))>=0&&h<=1&&(r[c++]=h),g>=0&&g<=1&&(r[c++]=g)}}return c},e.quadraticExtremum=function(t,e,n){var i=t+n-2*e;return 0===i?.5:(t-e)/i},e.quadraticSubdivide=function(t,e,n,i,r){var o=(e-t)*i+t,s=(n-e)*i+e,a=(s-o)*i+o;r[0]=t,r[1]=o,r[2]=a,r[3]=a,r[4]=s,r[5]=n},e.quadraticProjectPoint=function(t,e,n,i,r,s,l,d,f){var p,m=.005,v=1/0;c[0]=l,c[1]=d;for(var b=0;b<1;b+=.05){u[0]=g(t,n,r,b),u[1]=g(e,i,s,b),(_=o(c,u))=0&&_{try{if("test"!=="test".normalize(e))throw new Error("bad normalize")}catch(n){t.push(e)}}),t.length)throw new Error("missing "+t.join(", "));if(String.fromCharCode(233).normalize("NFD")!==String.fromCharCode(101,769))throw new Error("broken implementation")}catch(t){return t.message}return null}();var h,d;!function(t){t.DEBUG="DEBUG",t.INFO="INFO",t.WARNING="WARNING",t.ERROR="ERROR",t.OFF="OFF"}(h||(h={})),function(t){t.UNKNOWN_ERROR="UNKNOWN_ERROR",t.NOT_IMPLEMENTED="NOT_IMPLEMENTED",t.UNSUPPORTED_OPERATION="UNSUPPORTED_OPERATION",t.NETWORK_ERROR="NETWORK_ERROR",t.SERVER_ERROR="SERVER_ERROR",t.TIMEOUT="TIMEOUT",t.BUFFER_OVERRUN="BUFFER_OVERRUN",t.NUMERIC_FAULT="NUMERIC_FAULT",t.MISSING_NEW="MISSING_NEW",t.INVALID_ARGUMENT="INVALID_ARGUMENT",t.MISSING_ARGUMENT="MISSING_ARGUMENT",t.UNEXPECTED_ARGUMENT="UNEXPECTED_ARGUMENT",t.CALL_EXCEPTION="CALL_EXCEPTION",t.INSUFFICIENT_FUNDS="INSUFFICIENT_FUNDS",t.NONCE_EXPIRED="NONCE_EXPIRED",t.REPLACEMENT_UNDERPRICED="REPLACEMENT_UNDERPRICED",t.UNPREDICTABLE_GAS_LIMIT="UNPREDICTABLE_GAS_LIMIT",t.TRANSACTION_REPLACED="TRANSACTION_REPLACED",t.ACTION_REJECTED="ACTION_REJECTED"}(d||(d={}));const f="0123456789abcdef";class p{constructor(t){Object.defineProperty(this,"version",{enumerable:!0,value:t,writable:!1})}_log(t,e){const n=t.toLowerCase();null==a[n]&&this.throwArgumentError("invalid log level name","logLevel",t),l>a[n]||console.log.apply(console,e)}debug(...t){this._log(p.levels.DEBUG,t)}info(...t){this._log(p.levels.INFO,t)}warn(...t){this._log(p.levels.WARNING,t)}makeError(t,e,n){if(s)return this.makeError("censored error",e,{});e||(e=p.errors.UNKNOWN_ERROR),n||(n={});const i=[];Object.keys(n).forEach(t=>{const e=n[t];try{if(e instanceof Uint8Array){let n="";for(let t=0;t>4],n+=f[15&e[t]];i.push(t+"=Uint8Array(0x"+n+")")}else i.push(t+"="+JSON.stringify(e))}catch(e){i.push(t+"="+JSON.stringify(n[t].toString()))}}),i.push("code="+e),i.push("version="+this.version);const r=t;let o="";switch(e){case d.NUMERIC_FAULT:{o="NUMERIC_FAULT";const e=t;switch(e){case"overflow":case"underflow":case"division-by-zero":o+="-"+e;break;case"negative-power":case"negative-width":o+="-unsupported";break;case"unbound-bitwise-result":o+="-unbound-result"}break}case d.CALL_EXCEPTION:case d.INSUFFICIENT_FUNDS:case d.MISSING_NEW:case d.NONCE_EXPIRED:case d.REPLACEMENT_UNDERPRICED:case d.TRANSACTION_REPLACED:case d.UNPREDICTABLE_GAS_LIMIT:o=e}o&&(t+=" [ See: https://links.ethers.org/v5-errors-"+o+" ]"),i.length&&(t+=" ("+i.join(", ")+")");const a=new Error(t);return a.reason=r,a.code=e,Object.keys(n).forEach((function(t){a[t]=n[t]})),a}throwError(t,e,n){throw this.makeError(t,e,n)}throwArgumentError(t,e,n){return this.throwError(t,p.errors.INVALID_ARGUMENT,{argument:e,value:n})}assert(t,e,n,i){t||this.throwError(e,n,i)}assertArgument(t,e,n,i){t||this.throwArgumentError(e,n,i)}checkNormalize(t){null==t&&(t="platform missing String.prototype.normalize"),u&&this.throwError("platform missing String.prototype.normalize",p.errors.UNSUPPORTED_OPERATION,{operation:"String.prototype.normalize",form:u})}checkSafeUint53(t,e){"number"==typeof t&&(null==e&&(e="value not safe"),(t<0||t>=9007199254740991)&&this.throwError(e,p.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"out-of-safe-range",value:t}),t%1&&this.throwError(e,p.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"non-integer",value:t}))}checkArgumentCount(t,e,n){n=n?": "+n:"",te&&this.throwError("too many arguments"+n,p.errors.UNEXPECTED_ARGUMENT,{count:t,expectedCount:e})}checkNew(t,e){t!==Object&&null!=t||this.throwError("missing new",p.errors.MISSING_NEW,{name:e.name})}checkAbstract(t,e){t===e?this.throwError("cannot instantiate abstract class "+JSON.stringify(e.name)+" directly; use a sub-class",p.errors.UNSUPPORTED_OPERATION,{name:t.name,operation:"new"}):t!==Object&&null!=t||this.throwError("missing new",p.errors.MISSING_NEW,{name:e.name})}static globalLogger(){return c||(c=new p("logger/5.7.0")),c}static setCensorship(t,e){if(!t&&e&&this.globalLogger().throwError("cannot permanently disable censorship",p.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"}),o){if(!t)return;this.globalLogger().throwError("error censorship permanent",p.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"})}s=!!t,o=!!e}static setLogLevel(t){const e=a[t.toLowerCase()];null!=e?l=e:p.globalLogger().warn("invalid log level - "+t)}static from(t){return new p(t)}}p.errors=d,p.levels=h;const g=new p("bytes/5.7.0");function m(t){return!!t.toHexString}function v(t){return t.slice||(t.slice=function(){const e=Array.prototype.slice.call(arguments);return v(new Uint8Array(Array.prototype.slice.apply(t,e)))}),t}function b(t){return"number"==typeof t&&t==t&&t%1==0}function y(t){if(null==t)return!1;if(t.constructor===Uint8Array)return!0;if("string"==typeof t)return!1;if(!b(t.length)||t.length<0)return!1;for(let e=0;e=256)return!1}return!0}function w(t,e){if(e||(e={}),"number"==typeof t){g.checkSafeUint53(t,"invalid arrayify value");const e=[];for(;t;)e.unshift(255&t),t=parseInt(String(t/256));return 0===e.length&&e.push(0),v(new Uint8Array(e))}if(e.allowMissingPrefix&&"string"==typeof t&&"0x"!==t.substring(0,2)&&(t="0x"+t),m(t)&&(t=t.toHexString()),_(t)){let n=t.substring(2);n.length%2&&("left"===e.hexPad?n="0"+n:"right"===e.hexPad?n+="0":g.throwArgumentError("hex data is odd-length","value",t));const i=[];for(let t=0;tw(t)),n=e.reduce((t,e)=>t+e.length,0),i=new Uint8Array(n);return e.reduce((t,e)=>(i.set(e,t),t+e.length),0),v(i)}function _(t,e){return!("string"!=typeof t||!t.match(/^0x[0-9A-Fa-f]*$/))&&(!e||t.length===2+2*e)}function M(t,e){if(e||(e={}),"number"==typeof t){g.checkSafeUint53(t,"invalid hexlify value");let e="";for(;t;)e="0123456789abcdef"[15&t]+e,t=Math.floor(t/16);return e.length?(e.length%2&&(e="0"+e),"0x"+e):"0x00"}if("bigint"==typeof t)return(t=t.toString(16)).length%2?"0x0"+t:"0x"+t;if(e.allowMissingPrefix&&"string"==typeof t&&"0x"!==t.substring(0,2)&&(t="0x"+t),m(t))return t.toHexString();if(_(t))return t.length%2&&("left"===e.hexPad?t="0x0"+t.substring(2):"right"===e.hexPad?t+="0":g.throwArgumentError("hex data is odd-length","value",t)),t.toLowerCase();if(y(t)){let e="0x";for(let n=0;n>4]+"0123456789abcdef"[15&i]}return e}return g.throwArgumentError("invalid hexlify value","value",t)}function S(t,e,n){return"string"!=typeof t?t=M(t):(!_(t)||t.length%2)&&g.throwArgumentError("invalid hexData","value",t),e=2+2*e,null!=n?"0x"+t.substring(e,2+2*n):"0x"+t.substring(e)}function A(t,e){for("string"!=typeof t?t=M(t):_(t)||g.throwArgumentError("invalid hex string","value",t),t.length>2*e+2&&g.throwArgumentError("value out of range","value",arguments[1]);t.length<2*e+2;)t="0x0"+t.substring(2);return t}var k=r.a.BN;const C=new p("bignumber/5.7.0"),T={};let E=!1;class R{constructor(t,e){t!==T&&C.throwError("cannot call constructor directly; use BigNumber.from",p.errors.UNSUPPORTED_OPERATION,{operation:"new (BigNumber)"}),this._hex=e,this._isBigNumber=!0,Object.freeze(this)}fromTwos(t){return I(O(this).fromTwos(t))}toTwos(t){return I(O(this).toTwos(t))}abs(){return"-"===this._hex[0]?R.from(this._hex.substring(1)):this}add(t){return I(O(this).add(O(t)))}sub(t){return I(O(this).sub(O(t)))}div(t){return R.from(t).isZero()&&$("division-by-zero","div"),I(O(this).div(O(t)))}mul(t){return I(O(this).mul(O(t)))}mod(t){const e=O(t);return e.isNeg()&&$("division-by-zero","mod"),I(O(this).umod(e))}pow(t){const e=O(t);return e.isNeg()&&$("negative-power","pow"),I(O(this).pow(e))}and(t){const e=O(t);return(this.isNegative()||e.isNeg())&&$("unbound-bitwise-result","and"),I(O(this).and(e))}or(t){const e=O(t);return(this.isNegative()||e.isNeg())&&$("unbound-bitwise-result","or"),I(O(this).or(e))}xor(t){const e=O(t);return(this.isNegative()||e.isNeg())&&$("unbound-bitwise-result","xor"),I(O(this).xor(e))}mask(t){return(this.isNegative()||t<0)&&$("negative-width","mask"),I(O(this).maskn(t))}shl(t){return(this.isNegative()||t<0)&&$("negative-width","shl"),I(O(this).shln(t))}shr(t){return(this.isNegative()||t<0)&&$("negative-width","shr"),I(O(this).shrn(t))}eq(t){return O(this).eq(O(t))}lt(t){return O(this).lt(O(t))}lte(t){return O(this).lte(O(t))}gt(t){return O(this).gt(O(t))}gte(t){return O(this).gte(O(t))}isNegative(){return"-"===this._hex[0]}isZero(){return O(this).isZero()}toNumber(){try{return O(this).toNumber()}catch(t){$("overflow","toNumber",this.toString())}return null}toBigInt(){try{return BigInt(this.toString())}catch(t){}return C.throwError("this platform does not support BigInt",p.errors.UNSUPPORTED_OPERATION,{value:this.toString()})}toString(){return arguments.length>0&&(10===arguments[0]?E||(E=!0,C.warn("BigNumber.toString does not accept any parameters; base-10 is assumed")):16===arguments[0]?C.throwError("BigNumber.toString does not accept any parameters; use bigNumber.toHexString()",p.errors.UNEXPECTED_ARGUMENT,{}):C.throwError("BigNumber.toString does not accept parameters",p.errors.UNEXPECTED_ARGUMENT,{})),O(this).toString(10)}toHexString(){return this._hex}toJSON(t){return{type:"BigNumber",hex:this.toHexString()}}static from(t){if(t instanceof R)return t;if("string"==typeof t)return t.match(/^-?0x[0-9a-f]+$/i)?new R(T,L(t)):t.match(/^-?[0-9]+$/)?new R(T,L(new k(t))):C.throwArgumentError("invalid BigNumber string","value",t);if("number"==typeof t)return t%1&&$("underflow","BigNumber.from",t),(t>=9007199254740991||t<=-9007199254740991)&&$("overflow","BigNumber.from",t),R.from(String(t));const e=t;if("bigint"==typeof e)return R.from(e.toString());if(y(e))return R.from(M(e));if(e)if(e.toHexString){const t=e.toHexString();if("string"==typeof t)return R.from(t)}else{let t=e._hex;if(null==t&&"BigNumber"===e.type&&(t=e.hex),"string"==typeof t&&(_(t)||"-"===t[0]&&_(t.substring(1))))return R.from(t)}return C.throwArgumentError("invalid BigNumber value","value",t)}static isBigNumber(t){return!(!t||!t._isBigNumber)}}function L(t){if("string"!=typeof t)return L(t.toString(16));if("-"===t[0])return"-"===(t=t.substring(1))[0]&&C.throwArgumentError("invalid hex","value",t),"0x00"===(t=L(t))?t:"-"+t;if("0x"!==t.substring(0,2)&&(t="0x"+t),"0x"===t)return"0x00";for(t.length%2&&(t="0x0"+t.substring(2));t.length>4&&"0x00"===t.substring(0,4);)t="0x"+t.substring(4);return t}function I(t){return R.from(L(t))}function O(t){const e=R.from(t).toHexString();return"-"===e[0]?new k("-"+e.substring(3),16):new k(e.substring(2),16)}function $(t,e,n){const i={fault:t,operation:e};return null!=n&&(i.value=n),C.throwError(t,p.errors.NUMERIC_FAULT,i)}const P=new p("properties/5.7.0");function D(t,e,n){Object.defineProperty(t,e,{enumerable:!0,value:n,writable:!1})}function B(t,e){for(let n=0;n<32;n++){if(t[e])return t[e];if(!t.prototype||"object"!=typeof t.prototype)break;t=Object.getPrototypeOf(t.prototype).constructor}return null}const N={bigint:!0,boolean:!0,function:!0,number:!0,string:!0};function F(t){if(function t(e){if(null==e||N[typeof e])return!0;if(Array.isArray(e)||"object"==typeof e){if(!Object.isFrozen(e))return!1;const n=Object.keys(e);for(let i=0;ij(t)));if("object"==typeof t){const e={};for(const n in t){const i=t[n];void 0!==i&&D(e,n,j(i))}return e}return P.throwArgumentError("Cannot deepCopy "+typeof t,"object",t)}function j(t){return F(t)}class U{constructor(t){for(const e in t)this[e]=j(t[e])}}const z=new p("abi/5.7.0"),H={};let W={calldata:!0,memory:!0,storage:!0},V={calldata:!0,memory:!0};function q(t,e){if("bytes"===t||"string"===t){if(W[e])return!0}else if("address"===t){if("payable"===e)return!0}else if((t.indexOf("[")>=0||"tuple"===t)&&V[e])return!0;return(W[e]||"payable"===e)&&z.throwArgumentError("invalid modifier","name",e),!1}function G(t,e){for(let n in e)D(t,n,e[n])}const Y=Object.freeze({sighash:"sighash",minimal:"minimal",full:"full",json:"json"}),K=new RegExp(/^(.*)\[([0-9]*)\]$/);class Z{constructor(t,e){t!==H&&z.throwError("use fromString",p.errors.UNSUPPORTED_OPERATION,{operation:"new ParamType()"}),G(this,e);let n=this.type.match(K);G(this,n?{arrayLength:parseInt(n[2]||"-1"),arrayChildren:Z.fromObject({type:n[1],components:this.components}),baseType:"array"}:{arrayLength:null,arrayChildren:null,baseType:null!=this.components?"tuple":this.type}),this._isParamType=!0,Object.freeze(this)}format(t){if(t||(t=Y.sighash),Y[t]||z.throwArgumentError("invalid format type","format",t),t===Y.json){let e={type:"tuple"===this.baseType?"tuple":this.type,name:this.name||void 0};return"boolean"==typeof this.indexed&&(e.indexed=this.indexed),this.components&&(e.components=this.components.map(e=>JSON.parse(e.format(t)))),JSON.stringify(e)}let e="";return"array"===this.baseType?(e+=this.arrayChildren.format(t),e+="["+(this.arrayLength<0?"":String(this.arrayLength))+"]"):"tuple"===this.baseType?(t!==Y.sighash&&(e+=this.type),e+="("+this.components.map(e=>e.format(t)).join(t===Y.full?", ":",")+")"):e+=this.type,t!==Y.sighash&&(!0===this.indexed&&(e+=" indexed"),t===Y.full&&this.name&&(e+=" "+this.name)),e}static from(t,e){return"string"==typeof t?Z.fromString(t,e):Z.fromObject(t)}static fromObject(t){return Z.isParamType(t)?t:new Z(H,{name:t.name||null,type:at(t.type),indexed:null==t.indexed?null:!!t.indexed,components:t.components?t.components.map(Z.fromObject):null})}static fromString(t,e){return function(t){return Z.fromObject({name:t.name,type:t.type,indexed:t.indexed,components:t.components})}(function(t,e){let n=t;function i(e){z.throwArgumentError("unexpected character at position "+e,"param",t)}function r(t){let n={type:"",name:"",parent:t,state:{allowType:!0}};return e&&(n.indexed=!1),n}t=t.replace(/\s/g," ");let o={type:"",name:"",state:{allowType:!0}},s=o;for(let n=0;nZ.fromString(t,e))}class J{constructor(t,e){t!==H&&z.throwError("use a static from method",p.errors.UNSUPPORTED_OPERATION,{operation:"new Fragment()"}),G(this,e),this._isFragment=!0,Object.freeze(this)}static from(t){return J.isFragment(t)?t:"string"==typeof t?J.fromString(t):J.fromObject(t)}static fromObject(t){if(J.isFragment(t))return t;switch(t.type){case"function":return rt.fromObject(t);case"event":return Q.fromObject(t);case"constructor":return it.fromObject(t);case"error":return st.fromObject(t);case"fallback":case"receive":return null}return z.throwArgumentError("invalid fragment object","value",t)}static fromString(t){return"event"===(t=(t=(t=t.replace(/\s/g," ")).replace(/\(/g," (").replace(/\)/g,") ").replace(/\s+/g," ")).trim()).split(" ")[0]?Q.fromString(t.substring(5).trim()):"function"===t.split(" ")[0]?rt.fromString(t.substring(8).trim()):"constructor"===t.split("(")[0].trim()?it.fromString(t.trim()):"error"===t.split(" ")[0]?st.fromString(t.substring(5).trim()):z.throwArgumentError("unsupported fragment","value",t)}static isFragment(t){return!(!t||!t._isFragment)}}class Q extends J{format(t){if(t||(t=Y.sighash),Y[t]||z.throwArgumentError("invalid format type","format",t),t===Y.json)return JSON.stringify({type:"event",anonymous:this.anonymous,name:this.name,inputs:this.inputs.map(e=>JSON.parse(e.format(t)))});let e="";return t!==Y.sighash&&(e+="event "),e+=this.name+"("+this.inputs.map(e=>e.format(t)).join(t===Y.full?", ":",")+") ",t!==Y.sighash&&this.anonymous&&(e+="anonymous "),e.trim()}static from(t){return"string"==typeof t?Q.fromString(t):Q.fromObject(t)}static fromObject(t){if(Q.isEventFragment(t))return t;"event"!==t.type&&z.throwArgumentError("invalid event object","value",t);const e={name:ct(t.name),anonymous:t.anonymous,inputs:t.inputs?t.inputs.map(Z.fromObject):[],type:"event"};return new Q(H,e)}static fromString(t){let e=t.match(ut);e||z.throwArgumentError("invalid event string","value",t);let n=!1;return e[3].split(" ").forEach(t=>{switch(t.trim()){case"anonymous":n=!0;break;case"":break;default:z.warn("unknown modifier: "+t)}}),Q.fromObject({name:e[1].trim(),anonymous:n,inputs:X(e[2],!0),type:"event"})}static isEventFragment(t){return t&&t._isFragment&&"event"===t.type}}function tt(t,e){e.gas=null;let n=t.split("@");return 1!==n.length?(n.length>2&&z.throwArgumentError("invalid human-readable ABI signature","value",t),n[1].match(/^[0-9]+$/)||z.throwArgumentError("invalid human-readable ABI signature gas","value",t),e.gas=R.from(n[1]),n[0]):t}function et(t,e){e.constant=!1,e.payable=!1,e.stateMutability="nonpayable",t.split(" ").forEach(t=>{switch(t.trim()){case"constant":e.constant=!0;break;case"payable":e.payable=!0,e.stateMutability="payable";break;case"nonpayable":e.payable=!1,e.stateMutability="nonpayable";break;case"pure":e.constant=!0,e.stateMutability="pure";break;case"view":e.constant=!0,e.stateMutability="view";break;case"external":case"public":case"":break;default:console.log("unknown modifier: "+t)}})}function nt(t){let e={constant:!1,payable:!0,stateMutability:"payable"};return null!=t.stateMutability?(e.stateMutability=t.stateMutability,e.constant="view"===e.stateMutability||"pure"===e.stateMutability,null!=t.constant&&!!t.constant!==e.constant&&z.throwArgumentError("cannot have constant function with mutability "+e.stateMutability,"value",t),e.payable="payable"===e.stateMutability,null!=t.payable&&!!t.payable!==e.payable&&z.throwArgumentError("cannot have payable function with mutability "+e.stateMutability,"value",t)):null!=t.payable?(e.payable=!!t.payable,null!=t.constant||e.payable||"constructor"===t.type||z.throwArgumentError("unable to determine stateMutability","value",t),e.constant=!!t.constant,e.constant?e.stateMutability="view":e.stateMutability=e.payable?"payable":"nonpayable",e.payable&&e.constant&&z.throwArgumentError("cannot have constant payable function","value",t)):null!=t.constant?(e.constant=!!t.constant,e.payable=!e.constant,e.stateMutability=e.constant?"view":"payable"):"constructor"!==t.type&&z.throwArgumentError("unable to determine stateMutability","value",t),e}class it extends J{format(t){if(t||(t=Y.sighash),Y[t]||z.throwArgumentError("invalid format type","format",t),t===Y.json)return JSON.stringify({type:"constructor",stateMutability:"nonpayable"!==this.stateMutability?this.stateMutability:void 0,payable:this.payable,gas:this.gas?this.gas.toNumber():void 0,inputs:this.inputs.map(e=>JSON.parse(e.format(t)))});t===Y.sighash&&z.throwError("cannot format a constructor for sighash",p.errors.UNSUPPORTED_OPERATION,{operation:"format(sighash)"});let e="constructor("+this.inputs.map(e=>e.format(t)).join(t===Y.full?", ":",")+") ";return this.stateMutability&&"nonpayable"!==this.stateMutability&&(e+=this.stateMutability+" "),e.trim()}static from(t){return"string"==typeof t?it.fromString(t):it.fromObject(t)}static fromObject(t){if(it.isConstructorFragment(t))return t;"constructor"!==t.type&&z.throwArgumentError("invalid constructor object","value",t);let e=nt(t);e.constant&&z.throwArgumentError("constructor cannot be constant","value",t);const n={name:null,type:t.type,inputs:t.inputs?t.inputs.map(Z.fromObject):[],payable:e.payable,stateMutability:e.stateMutability,gas:t.gas?R.from(t.gas):null};return new it(H,n)}static fromString(t){let e={type:"constructor"},n=(t=tt(t,e)).match(ut);return n&&"constructor"===n[1].trim()||z.throwArgumentError("invalid constructor string","value",t),e.inputs=X(n[2].trim(),!1),et(n[3].trim(),e),it.fromObject(e)}static isConstructorFragment(t){return t&&t._isFragment&&"constructor"===t.type}}class rt extends it{format(t){if(t||(t=Y.sighash),Y[t]||z.throwArgumentError("invalid format type","format",t),t===Y.json)return JSON.stringify({type:"function",name:this.name,constant:this.constant,stateMutability:"nonpayable"!==this.stateMutability?this.stateMutability:void 0,payable:this.payable,gas:this.gas?this.gas.toNumber():void 0,inputs:this.inputs.map(e=>JSON.parse(e.format(t))),outputs:this.outputs.map(e=>JSON.parse(e.format(t)))});let e="";return t!==Y.sighash&&(e+="function "),e+=this.name+"("+this.inputs.map(e=>e.format(t)).join(t===Y.full?", ":",")+") ",t!==Y.sighash&&(this.stateMutability?"nonpayable"!==this.stateMutability&&(e+=this.stateMutability+" "):this.constant&&(e+="view "),this.outputs&&this.outputs.length&&(e+="returns ("+this.outputs.map(e=>e.format(t)).join(", ")+") "),null!=this.gas&&(e+="@"+this.gas.toString()+" ")),e.trim()}static from(t){return"string"==typeof t?rt.fromString(t):rt.fromObject(t)}static fromObject(t){if(rt.isFunctionFragment(t))return t;"function"!==t.type&&z.throwArgumentError("invalid function object","value",t);let e=nt(t);const n={type:t.type,name:ct(t.name),constant:e.constant,inputs:t.inputs?t.inputs.map(Z.fromObject):[],outputs:t.outputs?t.outputs.map(Z.fromObject):[],payable:e.payable,stateMutability:e.stateMutability,gas:t.gas?R.from(t.gas):null};return new rt(H,n)}static fromString(t){let e={type:"function"},n=(t=tt(t,e)).split(" returns ");n.length>2&&z.throwArgumentError("invalid function string","value",t);let i=n[0].match(ut);if(i||z.throwArgumentError("invalid function signature","value",t),e.name=i[1].trim(),e.name&&ct(e.name),e.inputs=X(i[2],!1),et(i[3].trim(),e),n.length>1){let i=n[1].match(ut);""==i[1].trim()&&""==i[3].trim()||z.throwArgumentError("unexpected tokens","value",t),e.outputs=X(i[2],!1)}else e.outputs=[];return rt.fromObject(e)}static isFunctionFragment(t){return t&&t._isFragment&&"function"===t.type}}function ot(t){const e=t.format();return"Error(string)"!==e&&"Panic(uint256)"!==e||z.throwArgumentError(`cannot specify user defined ${e} error`,"fragment",t),t}class st extends J{format(t){if(t||(t=Y.sighash),Y[t]||z.throwArgumentError("invalid format type","format",t),t===Y.json)return JSON.stringify({type:"error",name:this.name,inputs:this.inputs.map(e=>JSON.parse(e.format(t)))});let e="";return t!==Y.sighash&&(e+="error "),e+=this.name+"("+this.inputs.map(e=>e.format(t)).join(t===Y.full?", ":",")+") ",e.trim()}static from(t){return"string"==typeof t?st.fromString(t):st.fromObject(t)}static fromObject(t){if(st.isErrorFragment(t))return t;"error"!==t.type&&z.throwArgumentError("invalid error object","value",t);const e={type:t.type,name:ct(t.name),inputs:t.inputs?t.inputs.map(Z.fromObject):[]};return ot(new st(H,e))}static fromString(t){let e={type:"error"},n=t.match(ut);return n||z.throwArgumentError("invalid error signature","value",t),e.name=n[1].trim(),e.name&&ct(e.name),e.inputs=X(n[2],!1),ot(st.fromObject(e))}static isErrorFragment(t){return t&&t._isFragment&&"error"===t.type}}function at(t){return t.match(/^uint($|[^1-9])/)?t="uint256"+t.substring(4):t.match(/^int($|[^1-9])/)&&(t="int256"+t.substring(3)),t}const lt=new RegExp("^[a-zA-Z$_][a-zA-Z0-9$_]*$");function ct(t){return t&&t.match(lt)||z.throwArgumentError(`invalid identifier "${t}"`,"value",t),t}const ut=new RegExp("^([^)(]*)\\((.*)\\)([^)(]*)$");const ht=new p("abi/5.7.0");function dt(t){const e=[],n=function(t,i){if(Array.isArray(i))for(let r in i){const o=t.slice();o.push(r);try{n(o,i[r])}catch(t){e.push({path:o,error:t})}}};return n([],t),e}class ft{constructor(t,e,n,i){this.name=t,this.type=e,this.localName=n,this.dynamic=i}_throwError(t,e){ht.throwArgumentError(t,this.localName,e)}}class pt{constructor(t){D(this,"wordSize",t||32),this._data=[],this._dataLength=0,this._padding=new Uint8Array(t)}get data(){return function(t){let e="0x";return t.forEach(t=>{e+=M(t).substring(2)}),e}(this._data)}get length(){return this._dataLength}_writeData(t){return this._data.push(t),this._dataLength+=t.length,t.length}appendWriter(t){return this._writeData(x(t._data))}writeBytes(t){let e=w(t);const n=e.length%this.wordSize;return n&&(e=x([e,this._padding.slice(n)])),this._writeData(e)}_getValue(t){let e=w(R.from(t));return e.length>this.wordSize&&ht.throwError("value out-of-bounds",p.errors.BUFFER_OVERRUN,{length:this.wordSize,offset:e.length}),e.length%this.wordSize&&(e=x([this._padding.slice(e.length%this.wordSize),e])),e}writeValue(t){return this._writeData(this._getValue(t))}writeUpdatableValue(){const t=this._data.length;return this._data.push(this._padding),this._dataLength+=this.wordSize,e=>{this._data[t]=this._getValue(e)}}}class gt{constructor(t,e,n,i){D(this,"_data",w(t)),D(this,"wordSize",e||32),D(this,"_coerceFunc",n),D(this,"allowLoose",i),this._offset=0}get data(){return M(this._data)}get consumed(){return this._offset}static coerce(t,e){let n=t.match("^u?int([0-9]+)$");return n&&parseInt(n[1])<=48&&(e=e.toNumber()),e}coerce(t,e){return this._coerceFunc?this._coerceFunc(t,e):gt.coerce(t,e)}_peekBytes(t,e,n){let i=Math.ceil(e/this.wordSize)*this.wordSize;return this._offset+i>this._data.length&&(this.allowLoose&&n&&this._offset+e<=this._data.length?i=e:ht.throwError("data out-of-bounds",p.errors.BUFFER_OVERRUN,{length:this._data.length,offset:this._offset+i})),this._data.slice(this._offset,this._offset+i)}subReader(t){return new gt(this._data.slice(this._offset+t),this.wordSize,this._coerceFunc,this.allowLoose)}readBytes(t,e){let n=this._peekBytes(0,t,!!e);return this._offset+=n.length,n.slice(0,t)}readValue(){return R.from(this.readBytes(this.wordSize))}}var mt=n("HFX+"),vt=n.n(mt);function bt(t){return"0x"+vt.a.keccak_256(w(t))}new p("rlp/5.7.0");const yt=new p("address/5.7.0");function wt(t){_(t,20)||yt.throwArgumentError("invalid address","address",t);const e=(t=t.toLowerCase()).substring(2).split(""),n=new Uint8Array(40);for(let t=0;t<40;t++)n[t]=e[t].charCodeAt(0);const i=w(bt(n));for(let t=0;t<40;t+=2)i[t>>1]>>4>=8&&(e[t]=e[t].toUpperCase()),(15&i[t>>1])>=8&&(e[t+1]=e[t+1].toUpperCase());return"0x"+e.join("")}const xt={};for(let t=0;t<10;t++)xt[String(t)]=String(t);for(let t=0;t<26;t++)xt[String.fromCharCode(65+t)]=String(10+t);const _t=Math.floor((Mt=9007199254740991,Math.log10?Math.log10(Mt):Math.log(Mt)/Math.LN10));var Mt;function St(t){let e=(t=(t=t.toUpperCase()).substring(4)+t.substring(0,2)+"00").split("").map(t=>xt[t]).join("");for(;e.length>=_t;){let t=e.substring(0,_t);e=parseInt(t,10)%97+e.substring(t.length)}let n=String(98-parseInt(e,10)%97);for(;n.length<2;)n="0"+n;return n}function At(t){let e=null;if("string"!=typeof t&&yt.throwArgumentError("invalid address","address",t),t.match(/^(0x)?[0-9a-fA-F]{40}$/))"0x"!==t.substring(0,2)&&(t="0x"+t),e=wt(t),t.match(/([A-F].*[a-f])|([a-f].*[A-F])/)&&e!==t&&yt.throwArgumentError("bad address checksum","address",t);else if(t.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)){for(t.substring(2,4)!==St(t)&&yt.throwArgumentError("bad icap checksum","address",t),n=t.substring(4),e=new k(n,36).toString(16);e.length<40;)e="0"+e;e=wt("0x"+e)}else yt.throwArgumentError("invalid address","address",t);var n;return e}class kt extends ft{constructor(t){super("address","address",t,!1)}defaultValue(){return"0x0000000000000000000000000000000000000000"}encode(t,e){try{e=At(e)}catch(t){this._throwError(t.message,e)}return t.writeValue(e)}decode(t){return At(A(t.readValue().toHexString(),20))}}class Ct extends ft{constructor(t){super(t.name,t.type,void 0,t.dynamic),this.coder=t}defaultValue(){return this.coder.defaultValue()}encode(t,e){return this.coder.encode(t,e)}decode(t){return this.coder.decode(t)}}const Tt=new p("abi/5.7.0");function Et(t,e,n){let i=null;if(Array.isArray(n))i=n;else if(n&&"object"==typeof n){let t={};i=e.map(e=>{const i=e.localName;return i||Tt.throwError("cannot encode object for signature with missing names",p.errors.INVALID_ARGUMENT,{argument:"values",coder:e,value:n}),t[i]&&Tt.throwError("cannot encode object for signature with duplicate names",p.errors.INVALID_ARGUMENT,{argument:"values",coder:e,value:n}),t[i]=!0,n[i]})}else Tt.throwArgumentError("invalid tuple value","tuple",n);e.length!==i.length&&Tt.throwArgumentError("types/value length mismatch","tuple",n);let r=new pt(t.wordSize),o=new pt(t.wordSize),s=[];e.forEach((t,e)=>{let n=i[e];if(t.dynamic){let e=o.length;t.encode(o,n);let i=r.writeUpdatableValue();s.push(t=>{i(t+e)})}else t.encode(r,n)}),s.forEach(t=>{t(r.length)});let a=t.appendWriter(r);return a+=t.appendWriter(o),a}function Rt(t,e){let n=[],i=t.subReader(0);e.forEach(e=>{let r=null;if(e.dynamic){let n=t.readValue(),o=i.subReader(n.toNumber());try{r=e.decode(o)}catch(t){if(t.code===p.errors.BUFFER_OVERRUN)throw t;r=t,r.baseType=e.name,r.name=e.localName,r.type=e.type}}else try{r=e.decode(t)}catch(t){if(t.code===p.errors.BUFFER_OVERRUN)throw t;r=t,r.baseType=e.name,r.name=e.localName,r.type=e.type}null!=r&&n.push(r)});const r=e.reduce((t,e)=>{const n=e.localName;return n&&(t[n]||(t[n]=0),t[n]++),t},{});e.forEach((t,e)=>{let i=t.localName;if(!i||1!==r[i])return;if("length"===i&&(i="_length"),null!=n[i])return;const o=n[e];o instanceof Error?Object.defineProperty(n,i,{enumerable:!0,get:()=>{throw o}}):n[i]=o});for(let t=0;t{throw e}})}return Object.freeze(n)}class Lt extends ft{constructor(t,e,n){super("array",t.type+"["+(e>=0?e:"")+"]",n,-1===e||t.dynamic),this.coder=t,this.length=e}defaultValue(){const t=this.coder.defaultValue(),e=[];for(let n=0;nt._data.length&&Tt.throwError("insufficient data length",p.errors.BUFFER_OVERRUN,{length:t._data.length,count:e}));let n=[];for(let t=0;t>6==2;i++)t++;return t}return t===Wt.OVERRUN?n.length-e-1:0}!function(t){t.current="",t.NFC="NFC",t.NFD="NFD",t.NFKC="NFKC",t.NFKD="NFKD"}(Ht||(Ht={})),function(t){t.UNEXPECTED_CONTINUE="unexpected continuation byte",t.BAD_PREFIX="bad codepoint prefix",t.OVERRUN="string overrun",t.MISSING_CONTINUE="missing continuation byte",t.OUT_OF_RANGE="out of UTF-8 range",t.UTF16_SURROGATE="UTF-16 surrogate",t.OVERLONG="overlong representation"}(Wt||(Wt={}));const qt=Object.freeze({error:function(t,e,n,i,r){return zt.throwArgumentError(`invalid codepoint at offset ${e}; ${t}`,"bytes",n)},ignore:Vt,replace:function(t,e,n,i,r){return t===Wt.OVERLONG?(i.push(r),0):(i.push(65533),Vt(t,e,n))}});function Gt(t,e){null==e&&(e=qt.error),t=w(t);const n=[];let i=0;for(;i>7==0){n.push(r);continue}let o=null,s=null;if(192==(224&r))o=1,s=127;else if(224==(240&r))o=2,s=2047;else{if(240!=(248&r)){i+=e(128==(192&r)?Wt.UNEXPECTED_CONTINUE:Wt.BAD_PREFIX,i-1,t,n);continue}o=3,s=65535}if(i-1+o>=t.length){i+=e(Wt.OVERRUN,i-1,t,n);continue}let a=r&(1<<8-o-1)-1;for(let r=0;r1114111?i+=e(Wt.OUT_OF_RANGE,i-1-o,t,n,a):a>=55296&&a<=57343?i+=e(Wt.UTF16_SURROGATE,i-1-o,t,n,a):a<=s?i+=e(Wt.OVERLONG,i-1-o,t,n,a):n.push(a))}return n}function Yt(t,e=Ht.current){e!=Ht.current&&(zt.checkNormalize(),t=t.normalize(e));let n=[];for(let e=0;e>6|192),n.push(63&i|128);else if(55296==(64512&i)){e++;const r=t.charCodeAt(e);if(e>=t.length||56320!=(64512&r))throw new Error("invalid utf-8 string");const o=65536+((1023&i)<<10)+(1023&r);n.push(o>>18|240),n.push(o>>12&63|128),n.push(o>>6&63|128),n.push(63&o|128)}else n.push(i>>12|224),n.push(i>>6&63|128),n.push(63&i|128)}return w(n)}function Kt(t,e){return Gt(t,e).map(t=>t<=65535?String.fromCharCode(t):(t-=65536,String.fromCharCode(55296+(t>>10&1023),56320+(1023&t)))).join("")}class Zt extends Ot{constructor(t){super("string",t)}defaultValue(){return""}encode(t,e){return super.encode(t,Yt(e))}decode(t){return Kt(super.decode(t))}}class Xt extends ft{constructor(t,e){let n=!1;const i=[];t.forEach(t=>{t.dynamic&&(n=!0),i.push(t.type)});super("tuple","tuple("+i.join(",")+")",e,n),this.coders=t}defaultValue(){const t=[];this.coders.forEach(e=>{t.push(e.defaultValue())});const e=this.coders.reduce((t,e)=>{const n=e.localName;return n&&(t[n]||(t[n]=0),t[n]++),t},{});return this.coders.forEach((n,i)=>{let r=n.localName;r&&1===e[r]&&("length"===r&&(r="_length"),null==t[r]&&(t[r]=t[i]))}),Object.freeze(t)}encode(t,e){return Et(t,this.coders,e)}decode(t){return t.coerce(this.name,Rt(t,this.coders))}}const Jt=new p("abi/5.7.0"),Qt=new RegExp(/^bytes([0-9]*)$/),te=new RegExp(/^(u?int)([0-9]*)$/);class ee{constructor(t){D(this,"coerceFunc",t||null)}_getCoder(t){switch(t.baseType){case"address":return new kt(t.name);case"bool":return new It(t.name);case"string":return new Zt(t.name);case"bytes":return new $t(t.name);case"array":return new Lt(this._getCoder(t.arrayChildren),t.arrayLength,t.name);case"tuple":return new Xt((t.components||[]).map(t=>this._getCoder(t)),t.name);case"":return new Dt(t.name)}let e=t.type.match(te);if(e){let n=parseInt(e[2]||"256");return(0===n||n>256||n%8!=0)&&Jt.throwArgumentError("invalid "+e[1]+" bit length","param",t),new Ut(n/8,"int"===e[1],t.name)}if(e=t.type.match(Qt),e){let n=parseInt(e[1]);return(0===n||n>32)&&Jt.throwArgumentError("invalid bytes length","param",t),new Pt(n,t.name)}return Jt.throwArgumentError("invalid type","type",t.type)}_getWordSize(){return 32}_getReader(t,e){return new gt(t,this._getWordSize(),this.coerceFunc,e)}_getWriter(){return new pt(this._getWordSize())}getDefaultValue(t){const e=t.map(t=>this._getCoder(Z.from(t)));return new Xt(e,"_").defaultValue()}encode(t,e){t.length!==e.length&&Jt.throwError("types/values length mismatch",p.errors.INVALID_ARGUMENT,{count:{types:t.length,values:e.length},value:{types:t,values:e}});const n=t.map(t=>this._getCoder(Z.from(t))),i=new Xt(n,"_"),r=this._getWriter();return i.encode(r,e),r.data}decode(t,e,n){const i=t.map(t=>this._getCoder(Z.from(t)));return new Xt(i,"_").decode(this._getReader(w(e),n))}}const ne=new ee;function ie(t){return bt(Yt(t))}const re=new p("abi/5.7.0");class oe extends U{}class se extends U{}class ae extends U{}class le extends U{static isIndexed(t){return!(!t||!t._isIndexed)}}const ce={"0x08c379a0":{signature:"Error(string)",name:"Error",inputs:["string"],reason:!0},"0x4e487b71":{signature:"Panic(uint256)",name:"Panic",inputs:["uint256"]}};function ue(t,e){const n=new Error("deferred error during ABI decoding triggered accessing "+t);return n.error=e,n}class he{constructor(t){let e=[];e="string"==typeof t?JSON.parse(t):t,D(this,"fragments",e.map(t=>J.from(t)).filter(t=>null!=t)),D(this,"_abiCoder",B(new.target,"getAbiCoder")()),D(this,"functions",{}),D(this,"errors",{}),D(this,"events",{}),D(this,"structs",{}),this.fragments.forEach(t=>{let e=null;switch(t.type){case"constructor":return this.deploy?void re.warn("duplicate definition - constructor"):void D(this,"deploy",t);case"function":e=this.functions;break;case"event":e=this.events;break;case"error":e=this.errors;break;default:return}let n=t.format();e[n]?re.warn("duplicate definition - "+n):e[n]=t}),this.deploy||D(this,"deploy",it.from({payable:!1,type:"constructor"})),D(this,"_isInterface",!0)}format(t){t||(t=Y.full),t===Y.sighash&&re.throwArgumentError("interface does not support formatting sighash","format",t);const e=this.fragments.map(e=>e.format(t));return t===Y.json?JSON.stringify(e.map(t=>JSON.parse(t))):e}static getAbiCoder(){return ne}static getAddress(t){return At(t)}static getSighash(t){return S(ie(t.format()),0,4)}static getEventTopic(t){return ie(t.format())}getFunction(t){if(_(t)){for(const e in this.functions)if(t===this.getSighash(e))return this.functions[e];re.throwArgumentError("no matching function","sighash",t)}if(-1===t.indexOf("(")){const e=t.trim(),n=Object.keys(this.functions).filter(t=>t.split("(")[0]===e);return 0===n.length?re.throwArgumentError("no matching function","name",e):n.length>1&&re.throwArgumentError("multiple matching functions","name",e),this.functions[n[0]]}const e=this.functions[rt.fromString(t).format()];return e||re.throwArgumentError("no matching function","signature",t),e}getEvent(t){if(_(t)){const e=t.toLowerCase();for(const t in this.events)if(e===this.getEventTopic(t))return this.events[t];re.throwArgumentError("no matching event","topichash",e)}if(-1===t.indexOf("(")){const e=t.trim(),n=Object.keys(this.events).filter(t=>t.split("(")[0]===e);return 0===n.length?re.throwArgumentError("no matching event","name",e):n.length>1&&re.throwArgumentError("multiple matching events","name",e),this.events[n[0]]}const e=this.events[Q.fromString(t).format()];return e||re.throwArgumentError("no matching event","signature",t),e}getError(t){if(_(t)){const e=B(this.constructor,"getSighash");for(const n in this.errors){if(t===e(this.errors[n]))return this.errors[n]}re.throwArgumentError("no matching error","sighash",t)}if(-1===t.indexOf("(")){const e=t.trim(),n=Object.keys(this.errors).filter(t=>t.split("(")[0]===e);return 0===n.length?re.throwArgumentError("no matching error","name",e):n.length>1&&re.throwArgumentError("multiple matching errors","name",e),this.errors[n[0]]}const e=this.errors[rt.fromString(t).format()];return e||re.throwArgumentError("no matching error","signature",t),e}getSighash(t){if("string"==typeof t)try{t=this.getFunction(t)}catch(e){try{t=this.getError(t)}catch(t){throw e}}return B(this.constructor,"getSighash")(t)}getEventTopic(t){return"string"==typeof t&&(t=this.getEvent(t)),B(this.constructor,"getEventTopic")(t)}_decodeParams(t,e){return this._abiCoder.decode(t,e)}_encodeParams(t,e){return this._abiCoder.encode(t,e)}encodeDeploy(t){return this._encodeParams(this.deploy.inputs,t||[])}decodeErrorResult(t,e){"string"==typeof t&&(t=this.getError(t));const n=w(e);return M(n.slice(0,4))!==this.getSighash(t)&&re.throwArgumentError(`data signature does not match error ${t.name}.`,"data",M(n)),this._decodeParams(t.inputs,n.slice(4))}encodeErrorResult(t,e){return"string"==typeof t&&(t=this.getError(t)),M(x([this.getSighash(t),this._encodeParams(t.inputs,e||[])]))}decodeFunctionData(t,e){"string"==typeof t&&(t=this.getFunction(t));const n=w(e);return M(n.slice(0,4))!==this.getSighash(t)&&re.throwArgumentError(`data signature does not match function ${t.name}.`,"data",M(n)),this._decodeParams(t.inputs,n.slice(4))}encodeFunctionData(t,e){return"string"==typeof t&&(t=this.getFunction(t)),M(x([this.getSighash(t),this._encodeParams(t.inputs,e||[])]))}decodeFunctionResult(t,e){"string"==typeof t&&(t=this.getFunction(t));let n=w(e),i=null,r="",o=null,s=null,a=null;switch(n.length%this._abiCoder._getWordSize()){case 0:try{return this._abiCoder.decode(t.outputs,n)}catch(t){}break;case 4:{const t=M(n.slice(0,4)),e=ce[t];if(e)o=this._abiCoder.decode(e.inputs,n.slice(4)),s=e.name,a=e.signature,e.reason&&(i=o[0]),"Error"===s?r="; VM Exception while processing transaction: reverted with reason string "+JSON.stringify(o[0]):"Panic"===s&&(r="; VM Exception while processing transaction: reverted with panic code "+o[0]);else try{const e=this.getError(t);o=this._abiCoder.decode(e.inputs,n.slice(4)),s=e.name,a=e.format()}catch(t){}break}}return re.throwError("call revert exception"+r,p.errors.CALL_EXCEPTION,{method:t.format(),data:M(e),errorArgs:o,errorName:s,errorSignature:a,reason:i})}encodeFunctionResult(t,e){return"string"==typeof t&&(t=this.getFunction(t)),M(this._abiCoder.encode(t.outputs,e||[]))}encodeFilterTopics(t,e){"string"==typeof t&&(t=this.getEvent(t)),e.length>t.inputs.length&&re.throwError("too many arguments for "+t.format(),p.errors.UNEXPECTED_ARGUMENT,{argument:"values",value:e});let n=[];t.anonymous||n.push(this.getEventTopic(t));const i=(t,e)=>"string"===t.type?ie(e):"bytes"===t.type?bt(M(e)):("bool"===t.type&&"boolean"==typeof e&&(e=e?"0x01":"0x00"),t.type.match(/^u?int/)&&(e=R.from(e).toHexString()),"address"===t.type&&this._abiCoder.encode(["address"],[e]),A(M(e),32));for(e.forEach((e,r)=>{let o=t.inputs[r];o.indexed?null==e?n.push(null):"array"===o.baseType||"tuple"===o.baseType?re.throwArgumentError("filtering with tuples or arrays not supported","contract."+o.name,e):Array.isArray(e)?n.push(e.map(t=>i(o,t))):n.push(i(o,e)):null!=e&&re.throwArgumentError("cannot filter non-indexed parameters; must be null","contract."+o.name,e)});n.length&&null===n[n.length-1];)n.pop();return n}encodeEventLog(t,e){"string"==typeof t&&(t=this.getEvent(t));const n=[],i=[],r=[];return t.anonymous||n.push(this.getEventTopic(t)),e.length!==t.inputs.length&&re.throwArgumentError("event arguments/values mismatch","values",e),t.inputs.forEach((t,o)=>{const s=e[o];if(t.indexed)if("string"===t.type)n.push(ie(s));else if("bytes"===t.type)n.push(bt(s));else{if("tuple"===t.baseType||"array"===t.baseType)throw new Error("not implemented");n.push(this._abiCoder.encode([t.type],[s]))}else i.push(t),r.push(s)}),{data:this._abiCoder.encode(i,r),topics:n}}decodeEventLog(t,e,n){if("string"==typeof t&&(t=this.getEvent(t)),null!=n&&!t.anonymous){let e=this.getEventTopic(t);_(n[0],32)&&n[0].toLowerCase()===e||re.throwError("fragment/topic mismatch",p.errors.INVALID_ARGUMENT,{argument:"topics[0]",expected:e,value:n[0]}),n=n.slice(1)}let i=[],r=[],o=[];t.inputs.forEach((t,e)=>{t.indexed?"string"===t.type||"bytes"===t.type||"tuple"===t.baseType||"array"===t.baseType?(i.push(Z.fromObject({type:"bytes32",name:t.name})),o.push(!0)):(i.push(t),o.push(!1)):(r.push(t),o.push(!1))});let s=null!=n?this._abiCoder.decode(i,x(n)):null,a=this._abiCoder.decode(r,e,!0),l=[],c=0,u=0;t.inputs.forEach((t,e)=>{if(t.indexed)if(null==s)l[e]=new le({_isIndexed:!0,hash:null});else if(o[e])l[e]=new le({_isIndexed:!0,hash:s[u++]});else try{l[e]=s[u++]}catch(t){l[e]=t}else try{l[e]=a[c++]}catch(t){l[e]=t}if(t.name&&null==l[t.name]){const n=l[e];n instanceof Error?Object.defineProperty(l,t.name,{enumerable:!0,get:()=>{throw ue("property "+JSON.stringify(t.name),n)}}):l[t.name]=n}});for(let t=0;t{throw ue("index "+t,e)}})}return Object.freeze(l)}parseTransaction(t){let e=this.getFunction(t.data.substring(0,10).toLowerCase());return e?new se({args:this._abiCoder.decode(e.inputs,"0x"+t.data.substring(10)),functionFragment:e,name:e.name,signature:e.format(),sighash:this.getSighash(e),value:R.from(t.value||"0")}):null}parseLog(t){let e=this.getEvent(t.topics[0]);return!e||e.anonymous?null:new oe({eventFragment:e,name:e.name,signature:e.format(),topic:this.getEventTopic(e),args:this.decodeEventLog(e,t.data,t.topics)})}parseError(t){const e=M(t);let n=this.getError(e.substring(0,10).toLowerCase());return n?new ae({args:this._abiCoder.decode(n.inputs,"0x"+e.substring(10)),errorFragment:n,name:n.name,signature:n.format(),sighash:this.getSighash(n)}):null}static isInterface(t){return!(!t||!t._isInterface)}}},Soe5:function(t,e,n){(function(t){!function(t,e){"use strict";function i(t,e){if(!t)throw new Error(e||"Assertion failed")}function r(t,e){t.super_=e;var n=function(){};n.prototype=e.prototype,t.prototype=new n,t.prototype.constructor=t}function o(t,e,n){if(o.isBN(t))return t;this.negative=0,this.words=null,this.length=0,this.red=null,null!==t&&("le"!==e&&"be"!==e||(n=e,e=10),this._init(t||0,e||10,n||"be"))}var s;"object"==typeof t?t.exports=o:e.BN=o,o.BN=o,o.wordSize=26;try{s=n("tjlA").Buffer}catch(t){}function a(t,e,n){for(var i=0,r=Math.min(t.length,n),o=e;o=49&&s<=54?s-49+10:s>=17&&s<=22?s-17+10:15&s}return i}function l(t,e,n,i){for(var r=0,o=Math.min(t.length,n),s=e;s=49?a-49+10:a>=17?a-17+10:a}return r}o.isBN=function(t){return t instanceof o||null!==t&&"object"==typeof t&&t.constructor.wordSize===o.wordSize&&Array.isArray(t.words)},o.max=function(t,e){return t.cmp(e)>0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,n){if("number"==typeof t)return this._initNumber(t,e,n);if("object"==typeof t)return this._initArray(t,e,n);"hex"===e&&(e=16),i(e===(0|e)&&e>=2&&e<=36);var r=0;"-"===(t=t.toString().replace(/\s+/g,""))[0]&&r++,16===e?this._parseHex(t,r):this._parseBase(t,e,r),"-"===t[0]&&(this.negative=1),this.strip(),"le"===n&&this._initArray(this.toArray(),e,n)},o.prototype._initNumber=function(t,e,n){t<0&&(this.negative=1,t=-t),t<67108864?(this.words=[67108863&t],this.length=1):t<4503599627370496?(this.words=[67108863&t,t/67108864&67108863],this.length=2):(i(t<9007199254740992),this.words=[67108863&t,t/67108864&67108863,1],this.length=3),"le"===n&&this._initArray(this.toArray(),e,n)},o.prototype._initArray=function(t,e,n){if(i("number"==typeof t.length),t.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(t.length/3),this.words=new Array(this.length);for(var r=0;r=0;r-=3)s=t[r]|t[r-1]<<8|t[r-2]<<16,this.words[o]|=s<>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);else if("le"===n)for(r=0,o=0;r>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);return this.strip()},o.prototype._parseHex=function(t,e){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var n=0;n=e;n-=6)r=a(t,n,n+6),this.words[i]|=r<>>26-o&4194303,(o+=24)>=26&&(o-=26,i++);n+6!==e&&(r=a(t,e,n+6),this.words[i]|=r<>>26-o&4194303),this.strip()},o.prototype._parseBase=function(t,e,n){this.words=[0],this.length=1;for(var i=0,r=1;r<=67108863;r*=e)i++;i--,r=r/e|0;for(var o=t.length-n,s=o%i,a=Math.min(o,o-s)+n,c=0,u=n;u1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?""};var c=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],u=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],h=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function d(t,e,n){n.negative=e.negative^t.negative;var i=t.length+e.length|0;n.length=i,i=i-1|0;var r=0|t.words[0],o=0|e.words[0],s=r*o,a=67108863&s,l=s/67108864|0;n.words[0]=a;for(var c=1;c>>26,h=67108863&l,d=Math.min(c,e.length-1),f=Math.max(0,c-t.length+1);f<=d;f++){var p=c-f|0;u+=(s=(r=0|t.words[p])*(o=0|e.words[f])+h)/67108864|0,h=67108863&s}n.words[c]=0|h,l=0|u}return 0!==l?n.words[c]=0|l:n.length--,n.strip()}o.prototype.toString=function(t,e){var n;if(e=0|e||1,16===(t=t||10)||"hex"===t){n="";for(var r=0,o=0,s=0;s>>24-r&16777215)||s!==this.length-1?c[6-l.length]+l+n:l+n,(r+=2)>=26&&(r-=26,s--)}for(0!==o&&(n=o.toString(16)+n);n.length%e!=0;)n="0"+n;return 0!==this.negative&&(n="-"+n),n}if(t===(0|t)&&t>=2&&t<=36){var d=u[t],f=h[t];n="";var p=this.clone();for(p.negative=0;!p.isZero();){var g=p.modn(f).toString(t);n=(p=p.idivn(f)).isZero()?g+n:c[d-g.length]+g+n}for(this.isZero()&&(n="0"+n);n.length%e!=0;)n="0"+n;return 0!==this.negative&&(n="-"+n),n}i(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(t,e){return i(void 0!==s),this.toArrayLike(s,t,e)},o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},o.prototype.toArrayLike=function(t,e,n){var r=this.byteLength(),o=n||Math.max(1,r);i(r<=o,"byte array longer than desired length"),i(o>0,"Requested array length <= 0"),this.strip();var s,a,l="le"===e,c=new t(o),u=this.clone();if(l){for(a=0;!u.isZero();a++)s=u.andln(255),u.iushrn(8),c[a]=s;for(;a=4096&&(n+=13,e>>>=13),e>=64&&(n+=7,e>>>=7),e>=8&&(n+=4,e>>>=4),e>=2&&(n+=2,e>>>=2),n+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,n=0;return 0==(8191&e)&&(n+=13,e>>>=13),0==(127&e)&&(n+=7,e>>>=7),0==(15&e)&&(n+=4,e>>>=4),0==(3&e)&&(n+=2,e>>>=2),0==(1&e)&&n++,n},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var n=0;nt.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,n;this.length>t.length?(e=this,n=t):(e=t,n=this);for(var i=0;it.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){i("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),n=t%26;this._expand(e),n>0&&e--;for(var r=0;r0&&(this.words[r]=~this.words[r]&67108863>>26-n),this.strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){i("number"==typeof t&&t>=0);var n=t/26|0,r=t%26;return this._expand(n+1),this.words[n]=e?this.words[n]|1<t.length?(n=this,i=t):(n=t,i=this);for(var r=0,o=0;o>>26;for(;0!==r&&o>>26;if(this.length=n.length,0!==r)this.words[this.length]=r,this.length++;else if(n!==this)for(;ot.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var n,i,r=this.cmp(t);if(0===r)return this.negative=0,this.length=1,this.words[0]=0,this;r>0?(n=this,i=t):(n=t,i=this);for(var o=0,s=0;s>26,this.words[s]=67108863&e;for(;0!==o&&s>26,this.words[s]=67108863&e;if(0===o&&s>>13,f=0|s[1],p=8191&f,g=f>>>13,m=0|s[2],v=8191&m,b=m>>>13,y=0|s[3],w=8191&y,x=y>>>13,_=0|s[4],M=8191&_,S=_>>>13,A=0|s[5],k=8191&A,C=A>>>13,T=0|s[6],E=8191&T,R=T>>>13,L=0|s[7],I=8191&L,O=L>>>13,$=0|s[8],P=8191&$,D=$>>>13,B=0|s[9],N=8191&B,F=B>>>13,j=0|a[0],U=8191&j,z=j>>>13,H=0|a[1],W=8191&H,V=H>>>13,q=0|a[2],G=8191&q,Y=q>>>13,K=0|a[3],Z=8191&K,X=K>>>13,J=0|a[4],Q=8191&J,tt=J>>>13,et=0|a[5],nt=8191&et,it=et>>>13,rt=0|a[6],ot=8191&rt,st=rt>>>13,at=0|a[7],lt=8191&at,ct=at>>>13,ut=0|a[8],ht=8191&ut,dt=ut>>>13,ft=0|a[9],pt=8191&ft,gt=ft>>>13;n.negative=t.negative^e.negative,n.length=19;var mt=(c+(i=Math.imul(h,U))|0)+((8191&(r=(r=Math.imul(h,z))+Math.imul(d,U)|0))<<13)|0;c=((o=Math.imul(d,z))+(r>>>13)|0)+(mt>>>26)|0,mt&=67108863,i=Math.imul(p,U),r=(r=Math.imul(p,z))+Math.imul(g,U)|0,o=Math.imul(g,z);var vt=(c+(i=i+Math.imul(h,W)|0)|0)+((8191&(r=(r=r+Math.imul(h,V)|0)+Math.imul(d,W)|0))<<13)|0;c=((o=o+Math.imul(d,V)|0)+(r>>>13)|0)+(vt>>>26)|0,vt&=67108863,i=Math.imul(v,U),r=(r=Math.imul(v,z))+Math.imul(b,U)|0,o=Math.imul(b,z),i=i+Math.imul(p,W)|0,r=(r=r+Math.imul(p,V)|0)+Math.imul(g,W)|0,o=o+Math.imul(g,V)|0;var bt=(c+(i=i+Math.imul(h,G)|0)|0)+((8191&(r=(r=r+Math.imul(h,Y)|0)+Math.imul(d,G)|0))<<13)|0;c=((o=o+Math.imul(d,Y)|0)+(r>>>13)|0)+(bt>>>26)|0,bt&=67108863,i=Math.imul(w,U),r=(r=Math.imul(w,z))+Math.imul(x,U)|0,o=Math.imul(x,z),i=i+Math.imul(v,W)|0,r=(r=r+Math.imul(v,V)|0)+Math.imul(b,W)|0,o=o+Math.imul(b,V)|0,i=i+Math.imul(p,G)|0,r=(r=r+Math.imul(p,Y)|0)+Math.imul(g,G)|0,o=o+Math.imul(g,Y)|0;var yt=(c+(i=i+Math.imul(h,Z)|0)|0)+((8191&(r=(r=r+Math.imul(h,X)|0)+Math.imul(d,Z)|0))<<13)|0;c=((o=o+Math.imul(d,X)|0)+(r>>>13)|0)+(yt>>>26)|0,yt&=67108863,i=Math.imul(M,U),r=(r=Math.imul(M,z))+Math.imul(S,U)|0,o=Math.imul(S,z),i=i+Math.imul(w,W)|0,r=(r=r+Math.imul(w,V)|0)+Math.imul(x,W)|0,o=o+Math.imul(x,V)|0,i=i+Math.imul(v,G)|0,r=(r=r+Math.imul(v,Y)|0)+Math.imul(b,G)|0,o=o+Math.imul(b,Y)|0,i=i+Math.imul(p,Z)|0,r=(r=r+Math.imul(p,X)|0)+Math.imul(g,Z)|0,o=o+Math.imul(g,X)|0;var wt=(c+(i=i+Math.imul(h,Q)|0)|0)+((8191&(r=(r=r+Math.imul(h,tt)|0)+Math.imul(d,Q)|0))<<13)|0;c=((o=o+Math.imul(d,tt)|0)+(r>>>13)|0)+(wt>>>26)|0,wt&=67108863,i=Math.imul(k,U),r=(r=Math.imul(k,z))+Math.imul(C,U)|0,o=Math.imul(C,z),i=i+Math.imul(M,W)|0,r=(r=r+Math.imul(M,V)|0)+Math.imul(S,W)|0,o=o+Math.imul(S,V)|0,i=i+Math.imul(w,G)|0,r=(r=r+Math.imul(w,Y)|0)+Math.imul(x,G)|0,o=o+Math.imul(x,Y)|0,i=i+Math.imul(v,Z)|0,r=(r=r+Math.imul(v,X)|0)+Math.imul(b,Z)|0,o=o+Math.imul(b,X)|0,i=i+Math.imul(p,Q)|0,r=(r=r+Math.imul(p,tt)|0)+Math.imul(g,Q)|0,o=o+Math.imul(g,tt)|0;var xt=(c+(i=i+Math.imul(h,nt)|0)|0)+((8191&(r=(r=r+Math.imul(h,it)|0)+Math.imul(d,nt)|0))<<13)|0;c=((o=o+Math.imul(d,it)|0)+(r>>>13)|0)+(xt>>>26)|0,xt&=67108863,i=Math.imul(E,U),r=(r=Math.imul(E,z))+Math.imul(R,U)|0,o=Math.imul(R,z),i=i+Math.imul(k,W)|0,r=(r=r+Math.imul(k,V)|0)+Math.imul(C,W)|0,o=o+Math.imul(C,V)|0,i=i+Math.imul(M,G)|0,r=(r=r+Math.imul(M,Y)|0)+Math.imul(S,G)|0,o=o+Math.imul(S,Y)|0,i=i+Math.imul(w,Z)|0,r=(r=r+Math.imul(w,X)|0)+Math.imul(x,Z)|0,o=o+Math.imul(x,X)|0,i=i+Math.imul(v,Q)|0,r=(r=r+Math.imul(v,tt)|0)+Math.imul(b,Q)|0,o=o+Math.imul(b,tt)|0,i=i+Math.imul(p,nt)|0,r=(r=r+Math.imul(p,it)|0)+Math.imul(g,nt)|0,o=o+Math.imul(g,it)|0;var _t=(c+(i=i+Math.imul(h,ot)|0)|0)+((8191&(r=(r=r+Math.imul(h,st)|0)+Math.imul(d,ot)|0))<<13)|0;c=((o=o+Math.imul(d,st)|0)+(r>>>13)|0)+(_t>>>26)|0,_t&=67108863,i=Math.imul(I,U),r=(r=Math.imul(I,z))+Math.imul(O,U)|0,o=Math.imul(O,z),i=i+Math.imul(E,W)|0,r=(r=r+Math.imul(E,V)|0)+Math.imul(R,W)|0,o=o+Math.imul(R,V)|0,i=i+Math.imul(k,G)|0,r=(r=r+Math.imul(k,Y)|0)+Math.imul(C,G)|0,o=o+Math.imul(C,Y)|0,i=i+Math.imul(M,Z)|0,r=(r=r+Math.imul(M,X)|0)+Math.imul(S,Z)|0,o=o+Math.imul(S,X)|0,i=i+Math.imul(w,Q)|0,r=(r=r+Math.imul(w,tt)|0)+Math.imul(x,Q)|0,o=o+Math.imul(x,tt)|0,i=i+Math.imul(v,nt)|0,r=(r=r+Math.imul(v,it)|0)+Math.imul(b,nt)|0,o=o+Math.imul(b,it)|0,i=i+Math.imul(p,ot)|0,r=(r=r+Math.imul(p,st)|0)+Math.imul(g,ot)|0,o=o+Math.imul(g,st)|0;var Mt=(c+(i=i+Math.imul(h,lt)|0)|0)+((8191&(r=(r=r+Math.imul(h,ct)|0)+Math.imul(d,lt)|0))<<13)|0;c=((o=o+Math.imul(d,ct)|0)+(r>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,i=Math.imul(P,U),r=(r=Math.imul(P,z))+Math.imul(D,U)|0,o=Math.imul(D,z),i=i+Math.imul(I,W)|0,r=(r=r+Math.imul(I,V)|0)+Math.imul(O,W)|0,o=o+Math.imul(O,V)|0,i=i+Math.imul(E,G)|0,r=(r=r+Math.imul(E,Y)|0)+Math.imul(R,G)|0,o=o+Math.imul(R,Y)|0,i=i+Math.imul(k,Z)|0,r=(r=r+Math.imul(k,X)|0)+Math.imul(C,Z)|0,o=o+Math.imul(C,X)|0,i=i+Math.imul(M,Q)|0,r=(r=r+Math.imul(M,tt)|0)+Math.imul(S,Q)|0,o=o+Math.imul(S,tt)|0,i=i+Math.imul(w,nt)|0,r=(r=r+Math.imul(w,it)|0)+Math.imul(x,nt)|0,o=o+Math.imul(x,it)|0,i=i+Math.imul(v,ot)|0,r=(r=r+Math.imul(v,st)|0)+Math.imul(b,ot)|0,o=o+Math.imul(b,st)|0,i=i+Math.imul(p,lt)|0,r=(r=r+Math.imul(p,ct)|0)+Math.imul(g,lt)|0,o=o+Math.imul(g,ct)|0;var St=(c+(i=i+Math.imul(h,ht)|0)|0)+((8191&(r=(r=r+Math.imul(h,dt)|0)+Math.imul(d,ht)|0))<<13)|0;c=((o=o+Math.imul(d,dt)|0)+(r>>>13)|0)+(St>>>26)|0,St&=67108863,i=Math.imul(N,U),r=(r=Math.imul(N,z))+Math.imul(F,U)|0,o=Math.imul(F,z),i=i+Math.imul(P,W)|0,r=(r=r+Math.imul(P,V)|0)+Math.imul(D,W)|0,o=o+Math.imul(D,V)|0,i=i+Math.imul(I,G)|0,r=(r=r+Math.imul(I,Y)|0)+Math.imul(O,G)|0,o=o+Math.imul(O,Y)|0,i=i+Math.imul(E,Z)|0,r=(r=r+Math.imul(E,X)|0)+Math.imul(R,Z)|0,o=o+Math.imul(R,X)|0,i=i+Math.imul(k,Q)|0,r=(r=r+Math.imul(k,tt)|0)+Math.imul(C,Q)|0,o=o+Math.imul(C,tt)|0,i=i+Math.imul(M,nt)|0,r=(r=r+Math.imul(M,it)|0)+Math.imul(S,nt)|0,o=o+Math.imul(S,it)|0,i=i+Math.imul(w,ot)|0,r=(r=r+Math.imul(w,st)|0)+Math.imul(x,ot)|0,o=o+Math.imul(x,st)|0,i=i+Math.imul(v,lt)|0,r=(r=r+Math.imul(v,ct)|0)+Math.imul(b,lt)|0,o=o+Math.imul(b,ct)|0,i=i+Math.imul(p,ht)|0,r=(r=r+Math.imul(p,dt)|0)+Math.imul(g,ht)|0,o=o+Math.imul(g,dt)|0;var At=(c+(i=i+Math.imul(h,pt)|0)|0)+((8191&(r=(r=r+Math.imul(h,gt)|0)+Math.imul(d,pt)|0))<<13)|0;c=((o=o+Math.imul(d,gt)|0)+(r>>>13)|0)+(At>>>26)|0,At&=67108863,i=Math.imul(N,W),r=(r=Math.imul(N,V))+Math.imul(F,W)|0,o=Math.imul(F,V),i=i+Math.imul(P,G)|0,r=(r=r+Math.imul(P,Y)|0)+Math.imul(D,G)|0,o=o+Math.imul(D,Y)|0,i=i+Math.imul(I,Z)|0,r=(r=r+Math.imul(I,X)|0)+Math.imul(O,Z)|0,o=o+Math.imul(O,X)|0,i=i+Math.imul(E,Q)|0,r=(r=r+Math.imul(E,tt)|0)+Math.imul(R,Q)|0,o=o+Math.imul(R,tt)|0,i=i+Math.imul(k,nt)|0,r=(r=r+Math.imul(k,it)|0)+Math.imul(C,nt)|0,o=o+Math.imul(C,it)|0,i=i+Math.imul(M,ot)|0,r=(r=r+Math.imul(M,st)|0)+Math.imul(S,ot)|0,o=o+Math.imul(S,st)|0,i=i+Math.imul(w,lt)|0,r=(r=r+Math.imul(w,ct)|0)+Math.imul(x,lt)|0,o=o+Math.imul(x,ct)|0,i=i+Math.imul(v,ht)|0,r=(r=r+Math.imul(v,dt)|0)+Math.imul(b,ht)|0,o=o+Math.imul(b,dt)|0;var kt=(c+(i=i+Math.imul(p,pt)|0)|0)+((8191&(r=(r=r+Math.imul(p,gt)|0)+Math.imul(g,pt)|0))<<13)|0;c=((o=o+Math.imul(g,gt)|0)+(r>>>13)|0)+(kt>>>26)|0,kt&=67108863,i=Math.imul(N,G),r=(r=Math.imul(N,Y))+Math.imul(F,G)|0,o=Math.imul(F,Y),i=i+Math.imul(P,Z)|0,r=(r=r+Math.imul(P,X)|0)+Math.imul(D,Z)|0,o=o+Math.imul(D,X)|0,i=i+Math.imul(I,Q)|0,r=(r=r+Math.imul(I,tt)|0)+Math.imul(O,Q)|0,o=o+Math.imul(O,tt)|0,i=i+Math.imul(E,nt)|0,r=(r=r+Math.imul(E,it)|0)+Math.imul(R,nt)|0,o=o+Math.imul(R,it)|0,i=i+Math.imul(k,ot)|0,r=(r=r+Math.imul(k,st)|0)+Math.imul(C,ot)|0,o=o+Math.imul(C,st)|0,i=i+Math.imul(M,lt)|0,r=(r=r+Math.imul(M,ct)|0)+Math.imul(S,lt)|0,o=o+Math.imul(S,ct)|0,i=i+Math.imul(w,ht)|0,r=(r=r+Math.imul(w,dt)|0)+Math.imul(x,ht)|0,o=o+Math.imul(x,dt)|0;var Ct=(c+(i=i+Math.imul(v,pt)|0)|0)+((8191&(r=(r=r+Math.imul(v,gt)|0)+Math.imul(b,pt)|0))<<13)|0;c=((o=o+Math.imul(b,gt)|0)+(r>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,i=Math.imul(N,Z),r=(r=Math.imul(N,X))+Math.imul(F,Z)|0,o=Math.imul(F,X),i=i+Math.imul(P,Q)|0,r=(r=r+Math.imul(P,tt)|0)+Math.imul(D,Q)|0,o=o+Math.imul(D,tt)|0,i=i+Math.imul(I,nt)|0,r=(r=r+Math.imul(I,it)|0)+Math.imul(O,nt)|0,o=o+Math.imul(O,it)|0,i=i+Math.imul(E,ot)|0,r=(r=r+Math.imul(E,st)|0)+Math.imul(R,ot)|0,o=o+Math.imul(R,st)|0,i=i+Math.imul(k,lt)|0,r=(r=r+Math.imul(k,ct)|0)+Math.imul(C,lt)|0,o=o+Math.imul(C,ct)|0,i=i+Math.imul(M,ht)|0,r=(r=r+Math.imul(M,dt)|0)+Math.imul(S,ht)|0,o=o+Math.imul(S,dt)|0;var Tt=(c+(i=i+Math.imul(w,pt)|0)|0)+((8191&(r=(r=r+Math.imul(w,gt)|0)+Math.imul(x,pt)|0))<<13)|0;c=((o=o+Math.imul(x,gt)|0)+(r>>>13)|0)+(Tt>>>26)|0,Tt&=67108863,i=Math.imul(N,Q),r=(r=Math.imul(N,tt))+Math.imul(F,Q)|0,o=Math.imul(F,tt),i=i+Math.imul(P,nt)|0,r=(r=r+Math.imul(P,it)|0)+Math.imul(D,nt)|0,o=o+Math.imul(D,it)|0,i=i+Math.imul(I,ot)|0,r=(r=r+Math.imul(I,st)|0)+Math.imul(O,ot)|0,o=o+Math.imul(O,st)|0,i=i+Math.imul(E,lt)|0,r=(r=r+Math.imul(E,ct)|0)+Math.imul(R,lt)|0,o=o+Math.imul(R,ct)|0,i=i+Math.imul(k,ht)|0,r=(r=r+Math.imul(k,dt)|0)+Math.imul(C,ht)|0,o=o+Math.imul(C,dt)|0;var Et=(c+(i=i+Math.imul(M,pt)|0)|0)+((8191&(r=(r=r+Math.imul(M,gt)|0)+Math.imul(S,pt)|0))<<13)|0;c=((o=o+Math.imul(S,gt)|0)+(r>>>13)|0)+(Et>>>26)|0,Et&=67108863,i=Math.imul(N,nt),r=(r=Math.imul(N,it))+Math.imul(F,nt)|0,o=Math.imul(F,it),i=i+Math.imul(P,ot)|0,r=(r=r+Math.imul(P,st)|0)+Math.imul(D,ot)|0,o=o+Math.imul(D,st)|0,i=i+Math.imul(I,lt)|0,r=(r=r+Math.imul(I,ct)|0)+Math.imul(O,lt)|0,o=o+Math.imul(O,ct)|0,i=i+Math.imul(E,ht)|0,r=(r=r+Math.imul(E,dt)|0)+Math.imul(R,ht)|0,o=o+Math.imul(R,dt)|0;var Rt=(c+(i=i+Math.imul(k,pt)|0)|0)+((8191&(r=(r=r+Math.imul(k,gt)|0)+Math.imul(C,pt)|0))<<13)|0;c=((o=o+Math.imul(C,gt)|0)+(r>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,i=Math.imul(N,ot),r=(r=Math.imul(N,st))+Math.imul(F,ot)|0,o=Math.imul(F,st),i=i+Math.imul(P,lt)|0,r=(r=r+Math.imul(P,ct)|0)+Math.imul(D,lt)|0,o=o+Math.imul(D,ct)|0,i=i+Math.imul(I,ht)|0,r=(r=r+Math.imul(I,dt)|0)+Math.imul(O,ht)|0,o=o+Math.imul(O,dt)|0;var Lt=(c+(i=i+Math.imul(E,pt)|0)|0)+((8191&(r=(r=r+Math.imul(E,gt)|0)+Math.imul(R,pt)|0))<<13)|0;c=((o=o+Math.imul(R,gt)|0)+(r>>>13)|0)+(Lt>>>26)|0,Lt&=67108863,i=Math.imul(N,lt),r=(r=Math.imul(N,ct))+Math.imul(F,lt)|0,o=Math.imul(F,ct),i=i+Math.imul(P,ht)|0,r=(r=r+Math.imul(P,dt)|0)+Math.imul(D,ht)|0,o=o+Math.imul(D,dt)|0;var It=(c+(i=i+Math.imul(I,pt)|0)|0)+((8191&(r=(r=r+Math.imul(I,gt)|0)+Math.imul(O,pt)|0))<<13)|0;c=((o=o+Math.imul(O,gt)|0)+(r>>>13)|0)+(It>>>26)|0,It&=67108863,i=Math.imul(N,ht),r=(r=Math.imul(N,dt))+Math.imul(F,ht)|0,o=Math.imul(F,dt);var Ot=(c+(i=i+Math.imul(P,pt)|0)|0)+((8191&(r=(r=r+Math.imul(P,gt)|0)+Math.imul(D,pt)|0))<<13)|0;c=((o=o+Math.imul(D,gt)|0)+(r>>>13)|0)+(Ot>>>26)|0,Ot&=67108863;var $t=(c+(i=Math.imul(N,pt))|0)+((8191&(r=(r=Math.imul(N,gt))+Math.imul(F,pt)|0))<<13)|0;return c=((o=Math.imul(F,gt))+(r>>>13)|0)+($t>>>26)|0,$t&=67108863,l[0]=mt,l[1]=vt,l[2]=bt,l[3]=yt,l[4]=wt,l[5]=xt,l[6]=_t,l[7]=Mt,l[8]=St,l[9]=At,l[10]=kt,l[11]=Ct,l[12]=Tt,l[13]=Et,l[14]=Rt,l[15]=Lt,l[16]=It,l[17]=Ot,l[18]=$t,0!==c&&(l[19]=c,n.length++),n};function p(t,e,n){return(new g).mulp(t,e,n)}function g(t,e){this.x=t,this.y=e}Math.imul||(f=d),o.prototype.mulTo=function(t,e){var n=this.length+t.length;return 10===this.length&&10===t.length?f(this,t,e):n<63?d(this,t,e):n<1024?function(t,e,n){n.negative=e.negative^t.negative,n.length=t.length+e.length;for(var i=0,r=0,o=0;o>>26)|0)>>>26,s&=67108863}n.words[o]=a,i=s,s=r}return 0!==i?n.words[o]=i:n.length--,n.strip()}(this,t,e):p(this,t,e)},g.prototype.makeRBT=function(t){for(var e=new Array(t),n=o.prototype._countBits(t)-1,i=0;i>=1;return i},g.prototype.permute=function(t,e,n,i,r,o){for(var s=0;s>>=1)r++;return 1<>>=13,n[2*s+1]=8191&o,o>>>=13;for(s=2*e;s>=26,e+=r/67108864|0,e+=o>>>26,this.words[n]=67108863&o}return 0!==e&&(this.words[n]=e,this.length++),this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=function(t){for(var e=new Array(t.bitLength()),n=0;n>>r}return e}(t);if(0===e.length)return new o(1);for(var n=this,i=0;i=0);var e,n=t%26,r=(t-n)/26,o=67108863>>>26-n<<26-n;if(0!==n){var s=0;for(e=0;e>>26-n}s&&(this.words[e]=s,this.length++)}if(0!==r){for(e=this.length-1;e>=0;e--)this.words[e+r]=this.words[e];for(e=0;e=0),r=e?(e-e%26)/26:0;var o=t%26,s=Math.min((t-o)/26,this.length),a=67108863^67108863>>>o<s)for(this.length-=s,c=0;c=0&&(0!==u||c>=r);c--){var h=0|this.words[c];this.words[c]=u<<26-o|h>>>o,u=h&a}return l&&0!==u&&(l.words[l.length++]=u),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(t,e,n){return i(0===this.negative),this.iushrn(t,e,n)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){i("number"==typeof t&&t>=0);var e=t%26,n=(t-e)/26,r=1<=0);var e=t%26,n=(t-e)/26;if(i(0===this.negative,"imaskn works only with positive numbers"),this.length<=n)return this;if(0!==e&&n++,this.length=Math.min(n,this.length),0!==e){var r=67108863^67108863>>>e<=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(i("number"==typeof t),i(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e>26)-(l/67108864|0),this.words[r+n]=67108863&o}for(;r>26,this.words[r+n]=67108863&o;if(0===a)return this.strip();for(i(-1===a),a=0,r=0;r>26,this.words[r]=67108863&o;return this.negative=1,this.strip()},o.prototype._wordDiv=function(t,e){var n=(this.length,t.length),i=this.clone(),r=t,s=0|r.words[r.length-1];0!==(n=26-this._countBits(s))&&(r=r.ushln(n),i.iushln(n),s=0|r.words[r.length-1]);var a,l=i.length-r.length;if("mod"!==e){(a=new o(null)).length=l+1,a.words=new Array(a.length);for(var c=0;c=0;h--){var d=67108864*(0|i.words[r.length+h])+(0|i.words[r.length+h-1]);for(d=Math.min(d/s|0,67108863),i._ishlnsubmul(r,d,h);0!==i.negative;)d--,i.negative=0,i._ishlnsubmul(r,1,h),i.isZero()||(i.negative^=1);a&&(a.words[h]=d)}return a&&a.strip(),i.strip(),"div"!==e&&0!==n&&i.iushrn(n),{div:a||null,mod:i}},o.prototype.divmod=function(t,e,n){return i(!t.isZero()),this.isZero()?{div:new o(0),mod:new o(0)}:0!==this.negative&&0===t.negative?(a=this.neg().divmod(t,e),"mod"!==e&&(r=a.div.neg()),"div"!==e&&(s=a.mod.neg(),n&&0!==s.negative&&s.iadd(t)),{div:r,mod:s}):0===this.negative&&0!==t.negative?(a=this.divmod(t.neg(),e),"mod"!==e&&(r=a.div.neg()),{div:r,mod:a.mod}):0!=(this.negative&t.negative)?(a=this.neg().divmod(t.neg(),e),"div"!==e&&(s=a.mod.neg(),n&&0!==s.negative&&s.isub(t)),{div:a.div,mod:s}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new o(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modn(t.words[0]))}:this._wordDiv(t,e);var r,s,a},o.prototype.div=function(t){return this.divmod(t,"div",!1).div},o.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},o.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var n=0!==e.div.negative?e.mod.isub(t):e.mod,i=t.ushrn(1),r=t.andln(1),o=n.cmp(i);return o<0||1===r&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modn=function(t){i(t<=67108863);for(var e=(1<<26)%t,n=0,r=this.length-1;r>=0;r--)n=(e*n+(0|this.words[r]))%t;return n},o.prototype.idivn=function(t){i(t<=67108863);for(var e=0,n=this.length-1;n>=0;n--){var r=(0|this.words[n])+67108864*e;this.words[n]=r/t|0,e=r%t}return this.strip()},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){i(0===t.negative),i(!t.isZero());var e=this,n=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var r=new o(1),s=new o(0),a=new o(0),l=new o(1),c=0;e.isEven()&&n.isEven();)e.iushrn(1),n.iushrn(1),++c;for(var u=n.clone(),h=e.clone();!e.isZero();){for(var d=0,f=1;0==(e.words[0]&f)&&d<26;++d,f<<=1);if(d>0)for(e.iushrn(d);d-- >0;)(r.isOdd()||s.isOdd())&&(r.iadd(u),s.isub(h)),r.iushrn(1),s.iushrn(1);for(var p=0,g=1;0==(n.words[0]&g)&&p<26;++p,g<<=1);if(p>0)for(n.iushrn(p);p-- >0;)(a.isOdd()||l.isOdd())&&(a.iadd(u),l.isub(h)),a.iushrn(1),l.iushrn(1);e.cmp(n)>=0?(e.isub(n),r.isub(a),s.isub(l)):(n.isub(e),a.isub(r),l.isub(s))}return{a:a,b:l,gcd:n.iushln(c)}},o.prototype._invmp=function(t){i(0===t.negative),i(!t.isZero());var e=this,n=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var r,s=new o(1),a=new o(0),l=n.clone();e.cmpn(1)>0&&n.cmpn(1)>0;){for(var c=0,u=1;0==(e.words[0]&u)&&c<26;++c,u<<=1);if(c>0)for(e.iushrn(c);c-- >0;)s.isOdd()&&s.iadd(l),s.iushrn(1);for(var h=0,d=1;0==(n.words[0]&d)&&h<26;++h,d<<=1);if(h>0)for(n.iushrn(h);h-- >0;)a.isOdd()&&a.iadd(l),a.iushrn(1);e.cmp(n)>=0?(e.isub(n),s.isub(a)):(n.isub(e),a.isub(s))}return(r=0===e.cmpn(1)?s:a).cmpn(0)<0&&r.iadd(t),r},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),n=t.clone();e.negative=0,n.negative=0;for(var i=0;e.isEven()&&n.isEven();i++)e.iushrn(1),n.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;n.isEven();)n.iushrn(1);var r=e.cmp(n);if(r<0){var o=e;e=n,n=o}else if(0===r||0===n.cmpn(1))break;e.isub(n)}return n.iushln(i)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0==(1&this.words[0])},o.prototype.isOdd=function(){return 1==(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){i("number"==typeof t);var e=t%26,n=(t-e)/26,r=1<>>26,a&=67108863,this.words[s]=a}return 0!==o&&(this.words[s]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e,n=t<0;if(0!==this.negative&&!n)return-1;if(0===this.negative&&n)return 1;if(this.strip(),this.length>1)e=1;else{n&&(t=-t),i(t<=67108863,"Number is too big");var r=0|this.words[0];e=r===t?0:rt.length)return 1;if(this.length=0;n--){var i=0|this.words[n],r=0|t.words[n];if(i!==r){ir&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return-1===this.cmpn(t)},o.prototype.lt=function(t){return-1===this.cmp(t)},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new _(t)},o.prototype.toRed=function(t){return i(!this.red,"Already a number in reduction context"),i(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return i(!this.red,"Already a number in reduction context"),this._forceRed(t)},o.prototype.redAdd=function(t){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},o.prototype.redISub=function(t){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},o.prototype.redShl=function(t){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},o.prototype.redMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return i(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var m={k256:null,p224:null,p192:null,p25519:null};function v(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function b(){v.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function y(){v.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function w(){v.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function x(){v.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function _(t){if("string"==typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else i(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function M(t){_.call(this,t),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}v.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},v.prototype.ireduce=function(t){var e,n=t;do{this.split(n,this.tmp),e=(n=(n=this.imulK(n)).iadd(this.tmp)).bitLength()}while(e>this.n);var i=e0?n.isub(this.p):n.strip(),n},v.prototype.split=function(t,e){t.iushrn(this.n,0,e)},v.prototype.imulK=function(t){return t.imul(this.k)},r(b,v),b.prototype.split=function(t,e){for(var n=Math.min(t.length,9),i=0;i>>22,r=o}r>>>=22,t.words[i-10]=r,0===r&&t.length>10?t.length-=10:t.length-=9},b.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,n=0;n>>=26,t.words[n]=r,e=i}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function(t){if(m[t])return m[t];var e;if("k256"===t)e=new b;else if("p224"===t)e=new y;else if("p192"===t)e=new w;else{if("p25519"!==t)throw new Error("Unknown prime "+t);e=new x}return m[t]=e,e},_.prototype._verify1=function(t){i(0===t.negative,"red works only with positives"),i(t.red,"red works only with red numbers")},_.prototype._verify2=function(t,e){i(0==(t.negative|e.negative),"red works only with positives"),i(t.red&&t.red===e.red,"red works only with red numbers")},_.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},_.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},_.prototype.add=function(t,e){this._verify2(t,e);var n=t.add(e);return n.cmp(this.m)>=0&&n.isub(this.m),n._forceRed(this)},_.prototype.iadd=function(t,e){this._verify2(t,e);var n=t.iadd(e);return n.cmp(this.m)>=0&&n.isub(this.m),n},_.prototype.sub=function(t,e){this._verify2(t,e);var n=t.sub(e);return n.cmpn(0)<0&&n.iadd(this.m),n._forceRed(this)},_.prototype.isub=function(t,e){this._verify2(t,e);var n=t.isub(e);return n.cmpn(0)<0&&n.iadd(this.m),n},_.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},_.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},_.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},_.prototype.isqr=function(t){return this.imul(t,t.clone())},_.prototype.sqr=function(t){return this.mul(t,t)},_.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(i(e%2==1),3===e){var n=this.m.add(new o(1)).iushrn(2);return this.pow(t,n)}for(var r=this.m.subn(1),s=0;!r.isZero()&&0===r.andln(1);)s++,r.iushrn(1);i(!r.isZero());var a=new o(1).toRed(this),l=a.redNeg(),c=this.m.subn(1).iushrn(1),u=this.m.bitLength();for(u=new o(2*u*u).toRed(this);0!==this.pow(u,c).cmp(l);)u.redIAdd(l);for(var h=this.pow(u,r),d=this.pow(t,r.addn(1).iushrn(1)),f=this.pow(t,r),p=s;0!==f.cmp(a);){for(var g=f,m=0;0!==g.cmp(a);m++)g=g.redSqr();i(m=0;i--){for(var c=e.words[i],u=l-1;u>=0;u--){var h=c>>u&1;r!==n[0]&&(r=this.sqr(r)),0!==h||0!==s?(s<<=1,s|=h,(4===++a||0===i&&0===u)&&(r=this.mul(r,n[s]),a=0,s=0)):a=0}l=26}return r},_.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},_.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new M(t)},r(M,_),M.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},M.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},M.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var n=t.imul(e),i=n.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),r=n.isub(i).iushrn(this.shift),o=r;return r.cmp(this.m)>=0?o=r.isub(this.m):r.cmpn(0)<0&&(o=r.iadd(this.m)),o._forceRed(this)},M.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var n=t.mul(e),i=n.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),r=n.isub(i).iushrn(this.shift),s=r;return r.cmp(this.m)>=0?s=r.isub(this.m):r.cmpn(0)<0&&(s=r.iadd(this.m)),s._forceRed(this)},M.prototype.invm=function(t){return this.imod(t._invmp(this.m).mul(this.r2))._forceRed(this)}}(t,this)}).call(this,n("YuTi")(t))},Sp2Z:function(t,e,n){var i=n("3LNs"),r=n("/y7N"),o=n("AVZG"),s=n("Znkb"),a=i.extend({makeElOption:function(t,e,n,i,s){var a=n.axis,u=a.grid,h=i.get("type"),d=l(u,a).getOtherAxis(a).getGlobalExtent(),f=a.toGlobalCoord(a.dataToCoord(e,!0));if(h&&"none"!==h){var p=r.buildElStyle(i),g=c[h](a,f,d);g.style=p,t.graphicKey=g.type,t.pointer=g}var m=o.layout(u.model,n);r.buildCartesianSingleLabelElOption(e,t,m,n,i,s)},getHandleTransform:function(t,e,n){var i=o.layout(e.axis.grid.model,e,{labelInside:!1});return i.labelMargin=n.get("handle.margin"),{position:r.getTransformedPosition(e.axis,t,i),rotation:i.rotation+(i.labelDirection<0?Math.PI:0)}},updateHandleTransform:function(t,e,n,i){var r=n.axis,o=r.grid,s=r.getGlobalExtent(!0),a=l(o,r).getOtherAxis(r).getGlobalExtent(),c="x"===r.dim?0:1,u=t.position;u[c]+=e[c],u[c]=Math.min(s[1],u[c]),u[c]=Math.max(s[0],u[c]);var h=(a[1]+a[0])/2,d=[h,h];d[c]=u[c];return{position:u,rotation:t.rotation,cursorPoint:d,tooltipOption:[{verticalAlign:"middle"},{align:"center"}][c]}}});function l(t,e){var n={};return n[e.dim+"AxisIndex"]=e.index,t.getCartesian(n)}var c={line:function(t,e,n){return{type:"Line",subPixelOptimize:!0,shape:r.makeLineShape([e,n[0]],[e,n[1]],u(t))}},shadow:function(t,e,n){var i=Math.max(1,t.getBandWidth()),o=n[1]-n[0];return{type:"Rect",shape:r.makeRectShape([e-i/2,n[0]],[i,o],u(t))}}};function u(t){return"x"===t.dim?0:1}s.registerAxisPointerClass("CartesianAxisPointer",a);var h=a;t.exports=h},SqI9:function(t,e,n){var i=n("y+Vt"),r=n("iXp4"),o=i.extend({type:"sector",shape:{cx:0,cy:0,r0:0,r:0,startAngle:0,endAngle:2*Math.PI,clockwise:!0},brush:r(i.prototype.brush),buildPath:function(t,e){var n=e.cx,i=e.cy,r=Math.max(e.r0||0,0),o=Math.max(e.r,0),s=e.startAngle,a=e.endAngle,l=e.clockwise,c=Math.cos(s),u=Math.sin(s);t.moveTo(c*r+n,u*r+i),t.lineTo(c*o+n,u*o+i),t.arc(n,i,o,s,a,!l),t.lineTo(Math.cos(a)*r+n,Math.sin(a)*r+i),0!==r&&t.arc(n,i,r,a,s,l),t.closePath()}});t.exports=o},Supm:function(t,e,n){t.exports=n.p+"9ad12abef8b90e7454d08765187eeb90.js"},Swgg:function(t,e,n){var i=n("fc+c").extend({type:"dataZoom.select"});t.exports=i},"T+HR":function(t,e,n){t.exports=n.p+"cbc9092524363d014f77a62f36ff1540.js"},T1lI:function(t,e,n){t.exports=n.p+"1c9874850164cfdaa7e1d212d09124a7.js"},T4UG:function(t,e,n){n("Tghj").__DEV__;var i=n("bYtY"),r=n("ItGF"),o=n("7aKB"),s=o.formatTime,a=o.encodeHTML,l=o.addCommas,c=o.getTooltipMarker,u=n("4NO4"),h=n("bLfw"),d=n("5Hur"),f=n("OKJ2"),p=n("+TT/"),g=p.getLayoutParams,m=p.mergeLayoutParam,v=n("9H2F").createTask,b=n("D5nY"),y=b.prepareSource,w=b.getSource,x=n("KxfA").retrieveRawValue,_=u.makeInner(),M=h.extend({type:"series.__base__",seriesIndex:0,coordinateSystem:null,defaultOption:null,legendVisualProvider:null,visualColorAccessPath:"itemStyle.color",visualBorderColorAccessPath:"itemStyle.borderColor",layoutMode:null,init:function(t,e,n,i){this.seriesIndex=this.componentIndex,this.dataTask=v({count:A,reset:k}),this.dataTask.context={model:this},this.mergeDefaultAndTheme(t,n),y(this);var r=this.getInitialData(t,n);T(r,this),this.dataTask.context.data=r,_(this).dataBeforeProcessed=r,S(this)},mergeDefaultAndTheme:function(t,e){var n=this.layoutMode,r=n?g(t):{},o=this.subType;h.hasClass(o)&&(o+="Series"),i.merge(t,e.getTheme().get(this.subType)),i.merge(t,this.getDefaultOption()),u.defaultEmphasis(t,"label",["show"]),this.fillDataTextStyle(t.data),n&&m(t,r,n)},mergeOption:function(t,e){t=i.merge(this.option,t,!0),this.fillDataTextStyle(t.data);var n=this.layoutMode;n&&m(this.option,t,n),y(this);var r=this.getInitialData(t,e);T(r,this),this.dataTask.dirty(),this.dataTask.context.data=r,_(this).dataBeforeProcessed=r,S(this)},fillDataTextStyle:function(t){if(t&&!i.isTypedArray(t))for(var e=["show"],n=0;n":"\n",d="richText"===r,f={},p=0;function g(t){return{renderMode:r,content:a(l(t)),style:f}}var m=this.getData(),v=m.mapDimension("defaultedTooltip",!0),b=v.length,y=this.getRawValue(t),w=i.isArray(y),_=m.getItemVisual(t,"color");i.isObject(_)&&_.colorStops&&(_=(_.colorStops[0]||{}).color),_=_||"transparent";var M=(b>1||w&&!b?function(n){var u=i.reduce(n,(function(t,e,n){var i=m.getDimensionInfo(n);return t|(i&&!1!==i.tooltip&&null!=i.displayName)}),0),h=[];function g(t,n){var i=m.getDimensionInfo(n);if(i&&!1!==i.otherDims.tooltip){var g=i.type,v="sub"+o.seriesIndex+"at"+p,b=c({color:_,type:"subItem",renderMode:r,markerId:v}),y="string"==typeof b?b:b.content,w=(u?y+a(i.displayName||"-")+": ":"")+a("ordinal"===g?t+"":"time"===g?e?"":s("yyyy/MM/dd hh:mm:ss",t):l(t));w&&h.push(w),d&&(f[v]=_,++p)}}v.length?i.each(v,(function(e){g(x(m,t,e),e)})):i.each(n,g);var b=u?d?"\n":"
      ":"",y=b+h.join(b||", ");return{renderMode:r,content:y,style:f}}(y):g(b?x(m,t,v[0]):w?y[0]:y)).content,S=o.seriesIndex+"at"+p,A=c({color:_,type:"item",renderMode:r,markerId:S});f[S]=_,++p;var k=m.getName(t),C=this.name;u.isNameSpecified(this)||(C=""),C=C?a(C)+(e?": ":h):"";var T="string"==typeof A?A:A.content;return{html:e?T+C+M:C+T+(k?a(k)+": "+M:M),markers:f}},isAnimationEnabled:function(){if(r.node)return!1;var t=this.getShallow("animation");return t&&this.getData().count()>this.getShallow("animationThreshold")&&(t=!1),t},restoreData:function(){this.dataTask.dirty()},getColorFromPalette:function(t,e,n){var i=this.ecModel,r=d.getColorFromPalette.call(this,t,e,n);return r||(r=i.getColorFromPalette(t,e,n)),r},coordDimToDataDim:function(t){return this.getRawData().mapDimension(t,!0)},getProgressive:function(){return this.get("progressive")},getProgressiveThreshold:function(){return this.get("progressiveThreshold")},getAxisTooltipData:null,getTooltipPosition:null,pipeTask:null,preventIncremental:null,pipelineContext:null});function S(t){var e=t.name;u.isNameSpecified(t)||(t.name=function(t){var e=t.getRawData(),n=e.mapDimension("seriesName",!0),r=[];return i.each(n,(function(t){var n=e.getDimensionInfo(t);n.displayName&&r.push(n.displayName)})),r.join(" ")}(t)||e)}function A(t){return t.model.getRawData().count()}function k(t){var e=t.model;return e.setData(e.getRawData().cloneShallow()),C}function C(t,e){e.outputData&&t.end>e.outputData.count()&&e.model.getRawData().cloneShallow(e.outputData)}function T(t,e){i.each(t.CHANGABLE_METHODS,(function(n){t.wrapMethod(n,i.curry(E,e))}))}function E(t){var e=R(t);e&&e.setOutputEnd(this.count())}function R(t){var e=(t.ecModel||{}).scheduler,n=e&&e.getPipeline(t.uid);if(n){var i=n.currentTask;if(i){var r=i.agentStubMap;r&&(i=r.get(t.uid))}return i}}i.mixin(M,f),i.mixin(M,d);var L=M;t.exports=L},T6xi:function(t,e,n){var i=n("YgsL"),r=n("nCxF");e.buildPath=function(t,e,n){var o=e.points,s=e.smooth;if(o&&o.length>=2){if(s&&"spline"!==s){var a=r(o,s,n,e.smoothConstraint);t.moveTo(o[0][0],o[0][1]);for(var l=o.length,c=0;c<(n?l:l-1);c++){var u=a[2*c],h=a[2*c+1],d=o[(c+1)%l];t.bezierCurveTo(u[0],u[1],h[0],h[1],d[0],d[1])}}else{"spline"===s&&(o=i(o,n)),t.moveTo(o[0][0],o[0][1]);c=1;for(var f=o.length;c>>28|e<<4)^(e>>>2|t<<30)^(e>>>7|t<<25)}function d(t,e){return(t>>>14|e<<18)^(t>>>18|e<<14)^(e>>>9|t<<23)}function f(t,e){return(t>>>1|e<<31)^(t>>>8|e<<24)^t>>>7}function p(t,e){return(t>>>1|e<<31)^(t>>>8|e<<24)^(t>>>7|e<<25)}function g(t,e){return(t>>>19|e<<13)^(e>>>29|t<<3)^t>>>6}function m(t,e){return(t>>>19|e<<13)^(e>>>29|t<<3)^(t>>>6|e<<26)}function v(t,e){return t>>>0>>0?1:0}i(l,r),l.prototype.init=function(){return this._ah=1779033703,this._bh=3144134277,this._ch=1013904242,this._dh=2773480762,this._eh=1359893119,this._fh=2600822924,this._gh=528734635,this._hh=1541459225,this._al=4089235720,this._bl=2227873595,this._cl=4271175723,this._dl=1595750129,this._el=2917565137,this._fl=725511199,this._gl=4215389547,this._hl=327033209,this},l.prototype._update=function(t){for(var e=this._w,n=0|this._ah,i=0|this._bh,r=0|this._ch,o=0|this._dh,a=0|this._eh,l=0|this._fh,b=0|this._gh,y=0|this._hh,w=0|this._al,x=0|this._bl,_=0|this._cl,M=0|this._dl,S=0|this._el,A=0|this._fl,k=0|this._gl,C=0|this._hl,T=0;T<32;T+=2)e[T]=t.readInt32BE(4*T),e[T+1]=t.readInt32BE(4*T+4);for(;T<160;T+=2){var E=e[T-30],R=e[T-30+1],L=f(E,R),I=p(R,E),O=g(E=e[T-4],R=e[T-4+1]),$=m(R,E),P=e[T-14],D=e[T-14+1],B=e[T-32],N=e[T-32+1],F=I+D|0,j=L+P+v(F,I)|0;j=(j=j+O+v(F=F+$|0,$)|0)+B+v(F=F+N|0,N)|0,e[T]=j,e[T+1]=F}for(var U=0;U<160;U+=2){j=e[U],F=e[U+1];var z=u(n,i,r),H=u(w,x,_),W=h(n,w),V=h(w,n),q=d(a,S),G=d(S,a),Y=s[U],K=s[U+1],Z=c(a,l,b),X=c(S,A,k),J=C+G|0,Q=y+q+v(J,C)|0;Q=(Q=(Q=Q+Z+v(J=J+X|0,X)|0)+Y+v(J=J+K|0,K)|0)+j+v(J=J+F|0,F)|0;var tt=V+H|0,et=W+z+v(tt,V)|0;y=b,C=k,b=l,k=A,l=a,A=S,a=o+Q+v(S=M+J|0,M)|0,o=r,M=_,r=i,_=x,i=n,x=w,n=Q+et+v(w=J+tt|0,J)|0}this._al=this._al+w|0,this._bl=this._bl+x|0,this._cl=this._cl+_|0,this._dl=this._dl+M|0,this._el=this._el+S|0,this._fl=this._fl+A|0,this._gl=this._gl+k|0,this._hl=this._hl+C|0,this._ah=this._ah+n+v(this._al,w)|0,this._bh=this._bh+i+v(this._bl,x)|0,this._ch=this._ch+r+v(this._cl,_)|0,this._dh=this._dh+o+v(this._dl,M)|0,this._eh=this._eh+a+v(this._el,S)|0,this._fh=this._fh+l+v(this._fl,A)|0,this._gh=this._gh+b+v(this._gl,k)|0,this._hh=this._hh+y+v(this._hl,C)|0},l.prototype._hash=function(){var t=o.allocUnsafe(64);function e(e,n,i){t.writeInt32BE(e,i),t.writeInt32BE(n,i+4)}return e(this._ah,this._al,0),e(this._bh,this._bl,8),e(this._ch,this._cl,16),e(this._dh,this._dl,24),e(this._eh,this._el,32),e(this._fh,this._fl,40),e(this._gh,this._gl,48),e(this._hh,this._hl,56),t},t.exports=l},TIz7:function(t,e,n){t.exports=n.p+"23ad6224fd6059c31c199b6d6d420628.js"},TSgA:function(t,e,n){"use strict";const i=n("kFRM").codes.ERR_INVALID_OPT_VALUE;t.exports={getHighWaterMark:function(t,e,n,r){const o=function(t,e,n){return null!=t.highWaterMark?t.highWaterMark:e?t[n]:null}(e,r,n);if(null!=o){if(!isFinite(o)||Math.floor(o)!==o||o<0){throw new i(r?n:"highWaterMark",o)}return Math.floor(o)}return t.objectMode?16:16384}}},Tghj:function(t,e,n){(function(t){var n;"undefined"!=typeof window?n=window.__DEV__:void 0!==t&&(n=t.__DEV__),void 0===n&&(n=!0);var i=n;e.__DEV__=i}).call(this,n("yLpj"))},TnIT:function(t,e,n){t.exports=n.p+"3e6808cd6eefd1be1040403985581374.js"},Tp9H:function(t,e,n){var i=n("ItGF"),r=n("Kagy"),o=n("IUWy"),s=r.toolbox.saveAsImage;function a(t){this.model=t}a.defaultOption={show:!0,icon:"M4.7,22.9L29.3,45.5L54.7,23.4M4.6,43.6L4.6,58L53.8,58L53.8,43.6M29.2,45.1L29.2,0",title:s.title,type:"png",connectedBackgroundColor:"#fff",name:"",excludeComponents:["toolbox"],pixelRatio:1,lang:s.lang.slice()},a.prototype.unusable=!i.canvasSupported,a.prototype.onclick=function(t,e){var n=this.model,r=n.get("name")||t.get("title.0.text")||"echarts",o="svg"===e.getZr().painter.getType()?"svg":n.get("type",!0)||"png",s=e.getConnectedDataURL({type:o,backgroundColor:n.get("backgroundColor",!0)||t.get("backgroundColor")||"#fff",connectedBackgroundColor:n.get("connectedBackgroundColor"),excludeComponents:n.get("excludeComponents"),pixelRatio:n.get("pixelRatio")});if("function"!=typeof MouseEvent||i.browser.ie||i.browser.edge)if(window.navigator.msSaveOrOpenBlob){for(var a=atob(s.split(",")[1]),l=a.length,c=new Uint8Array(l);l--;)c[l]=a.charCodeAt(l);var u=new Blob([c]);window.navigator.msSaveOrOpenBlob(u,r+"."+o)}else{var h=n.get("lang"),d='';window.open().document.write(d)}else{var f=document.createElement("a");f.download=r+"."+o,f.target="_blank",f.href=s;var p=new MouseEvent("click",{view:document.defaultView,bubbles:!0,cancelable:!1});f.dispatchEvent(p)}},o.register("saveAsImage",a);var l=a;t.exports=l},"TqT/":function(t,e,n){t.exports=n.p+"da0827f4d8af0fc29eb75e28166177d3.js"},TqkN:function(t,e,n){t.exports=n.p+"a7da972483728415ac8f250f02083cd8.js"},TuMY:function(t,e,n){t.exports=n.p+"0dd0f45c3dde9af3fcf9706e6a2a1edd.js"},TyQe:function(t,e,n){t.exports=n.p+"9d0f4f65be2f50ad54488089f126feda.js"},"U+KF":function(t,e,n){"use strict";t.exports=u;const i=n("kFRM").codes,r=i.ERR_METHOD_NOT_IMPLEMENTED,o=i.ERR_MULTIPLE_CALLBACK,s=i.ERR_TRANSFORM_ALREADY_TRANSFORMING,a=i.ERR_TRANSFORM_WITH_LENGTH_0,l=n("iKJY");function c(t,e){var n=this._transformState;n.transforming=!1;var i=n.writecb;if(null===i)return this.emit("error",new o);n.writechunk=null,n.writecb=null,null!=e&&this.push(e),i(t);var r=this._readableState;r.reading=!1,(r.needReadable||r.length{d(this,t,e)})}function d(t,e,n){if(e)return t.emit("error",e);if(null!=n&&t.push(n),t._writableState.length)throw new a;if(t._transformState.transforming)throw new s;return t.push(null)}n("P7XM")(u,l),u.prototype.push=function(t,e){return this._transformState.needTransform=!1,l.prototype.push.call(this,t,e)},u.prototype._transform=function(t,e,n){n(new r("_transform()"))},u.prototype._write=function(t,e,n){var i=this._transformState;if(i.writecb=n,i.writechunk=t,i.writeencoding=e,!i.transforming){var r=this._readableState;(i.needTransform||r.needReadable||r.length{e(t)})}},U5fC:function(t,e,n){t.exports=n.p+"082d72cee51411d39d52d3f0e06eca3b.js"},UC8s:function(t,e,n){t.exports=n.p+"8e158f69acdb73029247c5a269a566df.js"},UJvV:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});const i=n("HFX+");function r(t){if(null==t)throw new Error("cannot convert null value to array");if("string"==typeof t){const e=t.match(/^(0x)?[0-9a-fA-F]*$/);if(!e)throw new Error("invalid hexidecimal string");if("0x"!==e[1])throw new Error("hex string must have 0x prefix");(t=t.substring(2)).length%2&&(t="0"+t);const n=[];for(let e=0;e=256||parseInt(String(n))!=n)return!1}return!0}(t))return o(new Uint8Array(t));throw new Error("invalid arrayify value")}function o(t){return void 0!==t.slice||(t.slice=()=>{const e=Array.prototype.slice.call(arguments);return o(new Uint8Array(Array.prototype.slice.apply(t,e)))}),t}e.keccak256=function(t){return"0x"+i.keccak_256(r(t))},e.padLeft=(t,e)=>{const n=/^0x/i.test(t)||"number"==typeof t,i=e-(t=t.toString().replace(/^0x/i,"")).length+1>=0?e-t.length+1:0;return(n?"0x":"")+new Array(i).join("0")+t},e.bytesToHex=function(t){const e=[];for(let n=0;n>>4).toString(16)),e.push((15&t[n]).toString(16));return"0x"+e.join("").replace(/^0+/,"")},e.toByteArray=r},UOVi:function(t,e,n){var i=n("bYtY"),r=n("7aKB"),o=["cartesian2d","polar","singleAxis"];function s(t,e){t=t.slice();var n=i.map(t,r.capitalFirst);e=(e||[]).slice();var o=i.map(e,r.capitalFirst);return function(r,s){i.each(t,(function(t,i){for(var a={name:t,capital:n[i]},l=0;l=0},e.createNameEach=s,e.eachAxisDim=a,e.createLinkedNodesFinder=function(t,e,n){return function(o){var s,a={nodes:[],records:{}};if(e((function(t){a.records[t.name]={}})),!o)return a;r(o,a);do{s=!1,t(l)}while(s);function l(t){!function(t,e){return i.indexOf(e.nodes,t)>=0}(t,a)&&function(t,r){var o=!1;return e((function(e){i.each(n(t,e)||[],(function(t){r.records[e.name][t]&&(o=!0)}))})),o}(t,a)&&(r(t,a),s=!0)}return a};function r(t,r){r.nodes.push(t),e((function(e){i.each(n(t,e)||[],(function(t){r.records[e.name][t]=!0}))}))}}},UQkF:function(t,e,n){t.exports=n.p+"a311e02008e0f00a37305a12d479159a.js"},UQuM:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.KECCAK256_RLP=e.KECCAK256_RLP_S=e.KECCAK256_RLP_ARRAY=e.KECCAK256_RLP_ARRAY_S=e.KECCAK256_NULL=e.KECCAK256_NULL_S=e.TWO_POW256=e.MAX_INTEGER=e.MAX_UINT64=void 0;var i=n("tjlA"),r=n("zkNI");e.MAX_UINT64=new r.BN("ffffffffffffffff",16),e.MAX_INTEGER=new r.BN("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",16),e.TWO_POW256=new r.BN("10000000000000000000000000000000000000000000000000000000000000000",16),e.KECCAK256_NULL_S="c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",e.KECCAK256_NULL=i.Buffer.from(e.KECCAK256_NULL_S,"hex"),e.KECCAK256_RLP_ARRAY_S="1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",e.KECCAK256_RLP_ARRAY=i.Buffer.from(e.KECCAK256_RLP_ARRAY_S,"hex"),e.KECCAK256_RLP_S="56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",e.KECCAK256_RLP=i.Buffer.from(e.KECCAK256_RLP_S,"hex")},UWJ2:function(t,e){t.exports=function(t){if("string"!=typeof t)throw new Error("[is-hex-prefixed] value must be type 'string', is currently type "+typeof t+", while checking isHexPrefixed.");return"0x"===t.slice(0,2)}},UY2b:function(t,e,n){t.exports=n.p+"06c89bf980f201e95c550f51a020321b.js"},UaIL:function(t,e,n){t.exports=n("CsPn").PassThrough},UpLS:function(t,e,n){t.exports=n.p+"ed72112dc346ee7976809d4693f0dcba.js"},UqDz:function(t,e,n){t.exports=n.p+"a0fa4459ff5562e61df9d58c70f1bce8.js"},Uszz:function(t,e,n){t.exports=n.p+"ca1483809659f6c87cc6f588891d2bd4.js"},"Uvt+":function(t,e,n){t.exports=n.p+"6ac188cc35ae0d38d3647a2eef17b2fc.js"},Uy2s:function(t,e,n){t.exports=n.p+"ae72f92a2ea2219a6a8c58e8ae557385.js"},UyCU:function(t,e,n){t.exports=n.p+"34eb9d98392182a042fa67206fd33187.js"},VAPA:function(t,e,n){t.exports=n.p+"214a729dcea91ee8a56f8ef43e17243a.js"},VR9l:function(t,e,n){var i=n("KCsZ")([["fill","color"],["stroke","borderColor"],["lineWidth","borderWidth"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"],["textPosition"],["textAlign"]]),r={getItemStyle:function(t,e){var n=i(this,t,e),r=this.getBorderLineDash();return r&&(n.lineDash=r),n},getBorderLineDash:function(){var t=this.get("borderType");return"solid"===t||null==t?null:"dashed"===t?[5,5]:[1,1]}};t.exports=r},VXYp:function(t,e,n){var i=n("bYtY"),r=n("SgGq"),o=n("iLNv"),s="\0_ec_dataZoom_roams";function a(t){var e=t.getZr();return e[s]||(e[s]={})}function l(t){i.each(t,(function(e,n){e.count||(e.controller.dispose(),delete t[n])}))}function c(t,e){t.dispatchAction({type:"dataZoom",batch:e})}e.register=function(t,e){var n=a(t),s=e.dataZoomId,u=e.coordId;i.each(n,(function(t,n){var r=t.dataZoomInfos;r[s]&&i.indexOf(e.allCoordIds,u)<0&&(delete r[s],t.count--)})),l(n);var h=n[u];h||((h=n[u]={coordId:u,dataZoomInfos:{},count:0}).controller=function(t,e){var n=new r(t.getZr());return i.each(["pan","zoom","scrollMove"],(function(t){n.on(t,(function(n){var r=[];i.each(e.dataZoomInfos,(function(i){if(n.isAvailableBehavior(i.dataZoomModel.option)){var o=(i.getRange||{})[t],s=o&&o(e.controller,n);!i.dataZoomModel.get("disabled",!0)&&s&&r.push({dataZoomId:i.dataZoomId,start:s[0],end:s[1]})}})),r.length&&e.dispatchAction(r)}))})),n}(t,h),h.dispatchAction=i.curry(c,t)),!h.dataZoomInfos[s]&&h.count++,h.dataZoomInfos[s]=e;var d,f,p,g,m=(d=h.dataZoomInfos,p={type_true:2,type_move:1,type_false:0,type_undefined:-1},g=!0,i.each(d,(function(t){var e=t.dataZoomModel,n=!e.get("disabled",!0)&&(!e.get("zoomLock",!0)||"move");p["type_"+n]>p["type_"+f]&&(f=n),g&=e.get("preventDefaultMouseMove",!0)})),{controlType:f,opt:{zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!0,preventDefaultMouseMove:!!g}});h.controller.enable(m.controlType,m.opt),h.controller.setPointerChecker(e.containsPoint),o.createOrUpdate(h,"dispatchAction",e.dataZoomModel.get("throttle",!0),"fixRate")},e.unregister=function(t,e){var n=a(t);i.each(n,(function(t){t.controller.dispose();var n=t.dataZoomInfos;n[e]&&(delete n[e],t.count--)})),l(n)},e.generateCoordId=function(t){return t.type+"\0_"+t.id}},VeWa:function(t,e,n){(function(t){ace.define("ace/mode/json_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],(function(t,e,n){"use strict";var i=t("../lib/oop"),r=t("./text_highlight_rules").TextHighlightRules,o=function(){this.$rules={start:[{token:"variable",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]\\s*(?=:)'},{token:"string",regex:'"',next:"string"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:"text",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"comment",regex:"\\/\\/.*$"},{token:"comment.start",regex:"\\/\\*",next:"comment"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"punctuation.operator",regex:/[,]/},{token:"text",regex:"\\s+"}],string:[{token:"constant.language.escape",regex:/\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/},{token:"string",regex:'"|$',next:"start"},{defaultToken:"string"}],comment:[{token:"comment.end",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}]}};i.inherits(o,r),e.JsonHighlightRules=o})),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],(function(t,e,n){"use strict";var i=t("../range").Range,r=function(){};(function(){this.checkOutdent=function(t,e){return!!/^\s+$/.test(t)&&/^\s*\}/.test(e)},this.autoOutdent=function(t,e){var n=t.getLine(e).match(/^(\s*\})/);if(!n)return 0;var r=n[1].length,o=t.findMatchingBracket({row:e,column:r});if(!o||o.row==e)return 0;var s=this.$getIndent(t.getLine(o.row));t.replace(new i(e,0,e,r-1),s)},this.$getIndent=function(t){return t.match(/^\s*/)[0]}}).call(r.prototype),e.MatchingBraceOutdent=r})),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],(function(t,e,n){"use strict";var i=t("../../lib/oop"),r=t("../../range").Range,o=t("./fold_mode").FoldMode,s=e.FoldMode=function(t){t&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+t.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+t.end)))};i.inherits(s,o),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(t,e,n){var i=t.getLine(n);if(this.singleLineBlockCommentRe.test(i)&&!this.startRegionRe.test(i)&&!this.tripleStarBlockCommentRe.test(i))return"";var r=this._getFoldWidgetBase(t,e,n);return!r&&this.startRegionRe.test(i)?"start":r},this.getFoldWidgetRange=function(t,e,n,i){var r,o=t.getLine(n);if(this.startRegionRe.test(o))return this.getCommentRegionBlock(t,o,n);if(r=o.match(this.foldingStartMarker)){var s=r.index;if(r[1])return this.openingBracketBlock(t,r[1],n,s);var a=t.getCommentFoldRange(n,s+r[0].length,1);return a&&!a.isMultiLine()&&(i?a=this.getSectionRange(t,n):"all"!=e&&(a=null)),a}if("markbegin"!==e&&(r=o.match(this.foldingStopMarker))){s=r.index+r[0].length;return r[1]?this.closingBracketBlock(t,r[1],n,s):t.getCommentFoldRange(n,s,-1)}},this.getSectionRange=function(t,e){for(var n=t.getLine(e),i=n.search(/\S/),o=e,s=n.length,a=e+=1,l=t.getLength();++ec)break;var u=this.getFoldWidgetRange(t,"all",e);if(u){if(u.start.row<=o)break;if(u.isMultiLine())e=u.end.row;else if(i==c)break}a=e}}return new r(o,s,a,t.getLine(a).length)},this.getCommentRegionBlock=function(t,e,n){for(var i=e.search(/\s*$/),o=t.getLength(),s=n,a=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,l=1;++ns)return new r(s,i,n,e.length)}}.call(s.prototype)})),ace.define("ace/mode/json",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/json_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle","ace/worker/worker_client"],(function(t,e,n){"use strict";var i=t("../lib/oop"),r=t("./text").Mode,o=t("./json_highlight_rules").JsonHighlightRules,s=t("./matching_brace_outdent").MatchingBraceOutdent,a=t("./behaviour/cstyle").CstyleBehaviour,l=t("./folding/cstyle").FoldMode,c=t("../worker/worker_client").WorkerClient,u=function(){this.HighlightRules=o,this.$outdent=new s,this.$behaviour=new a,this.foldingRules=new l};i.inherits(u,r),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(t,e,n){var i=this.$getIndent(e);"start"==t&&(e.match(/^.*[\{\(\[]\s*$/)&&(i+=n));return i},this.checkOutdent=function(t,e,n){return this.$outdent.checkOutdent(e,n)},this.autoOutdent=function(t,e,n){this.$outdent.autoOutdent(e,n)},this.createWorker=function(t){var e=new c(["ace"],"ace/mode/json_worker","JsonWorker");return e.attachToDocument(t.getDocument()),e.on("annotate",(function(e){t.setAnnotations(e.data)})),e.on("terminate",(function(){t.clearAnnotations()})),e},this.$id="ace/mode/json"}.call(u.prototype),e.Mode=u})),ace.require(["ace/mode/json"],(function(e){t&&(t.exports=e)}))}).call(this,n("YuTi")(t))},Vi4m:function(t,e,n){var i=n("bYtY");var r=function(t){null!=t&&i.extend(this,t),this.otherDims={}};t.exports=r},Vp4D:function(t,e,n){t.exports=n.p+"89ebd0e0e6e5662cea81597f2e4ba9b7.js"},VpOo:function(t,e){e.buildPath=function(t,e){var n,i,r,o,s,a=e.x,l=e.y,c=e.width,u=e.height,h=e.r;c<0&&(a+=c,c=-c),u<0&&(l+=u,u=-u),"number"==typeof h?n=i=r=o=h:h instanceof Array?1===h.length?n=i=r=o=h[0]:2===h.length?(n=r=h[0],i=o=h[1]):3===h.length?(n=h[0],i=o=h[1],r=h[2]):(n=h[0],i=h[1],r=h[2],o=h[3]):n=i=r=o=0,n+i>c&&(n*=c/(s=n+i),i*=c/s),r+o>c&&(r*=c/(s=r+o),o*=c/s),i+r>u&&(i*=u/(s=i+r),r*=u/s),n+o>u&&(n*=u/(s=n+o),o*=u/s),t.moveTo(a+n,l),t.lineTo(a+c-i,l),0!==i&&t.arc(a+c-i,l+i,i,-Math.PI/2,0),t.lineTo(a+c,l+u-r),0!==r&&t.arc(a+c-r,l+u-r,r,0,Math.PI/2),t.lineTo(a+o,l+u),0!==o&&t.arc(a+o,l+u-o,o,Math.PI/2,Math.PI),t.lineTo(a,l+n),0!==n&&t.arc(a+n,l+n,n,Math.PI,1.5*Math.PI)}},W2YF:function(t,e,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(t,e,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(e,n);r&&!("get"in r?!e.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,i,r)}:function(t,e,n,i){void 0===i&&(i=n),t[i]=e[n]}),r=this&&this.__exportStar||function(t,e){for(var n in t)"default"===n||Object.prototype.hasOwnProperty.call(e,n)||i(e,t,n)};Object.defineProperty(e,"__esModule",{value:!0}),e.isHexString=e.getKeys=e.fromAscii=e.fromUtf8=e.toAscii=e.arrayContainsArray=e.getBinarySize=e.padToEven=e.stripHexPrefix=e.isHexPrefixed=void 0,r(n("UQuM"),e),r(n("rMPs"),e),r(n("0TpK"),e),r(n("hGN9"),e),r(n("slio"),e),r(n("DDDe"),e),r(n("6U5J"),e),r(n("zkNI"),e),r(n("ap2e"),e);var o=n("szLb");Object.defineProperty(e,"isHexPrefixed",{enumerable:!0,get:function(){return o.isHexPrefixed}}),Object.defineProperty(e,"stripHexPrefix",{enumerable:!0,get:function(){return o.stripHexPrefix}}),Object.defineProperty(e,"padToEven",{enumerable:!0,get:function(){return o.padToEven}}),Object.defineProperty(e,"getBinarySize",{enumerable:!0,get:function(){return o.getBinarySize}}),Object.defineProperty(e,"arrayContainsArray",{enumerable:!0,get:function(){return o.arrayContainsArray}}),Object.defineProperty(e,"toAscii",{enumerable:!0,get:function(){return o.toAscii}}),Object.defineProperty(e,"fromUtf8",{enumerable:!0,get:function(){return o.fromUtf8}}),Object.defineProperty(e,"fromAscii",{enumerable:!0,get:function(){return o.fromAscii}}),Object.defineProperty(e,"getKeys",{enumerable:!0,get:function(){return o.getKeys}}),Object.defineProperty(e,"isHexString",{enumerable:!0,get:function(){return o.isHexString}})},W6Pm:function(t,e,n){var i=n("cMGI"),r=n("Ie/w"),o=n("HST5"),s=n("Edxu"),a=n("OZ/i"),l=function(t,e){var n=[];return e.forEach((function(e){if("object"==typeof e.components){if("tuple"!==e.type.substring(0,5))throw new Error("components found but type is not tuple; report on GitHub");var i="",r=e.type.indexOf("[");r>=0&&(i=e.type.substring(r));var o=l(t,e.components);Array.isArray(o)&&t?n.push("tuple("+o.join(",")+")"+i):t?n.push("("+o+")"):n.push("("+o.join(",")+")"+i)}else n.push(e.type)})),n},c=function(t){if(!r.isHexStrict(t))throw new Error("The parameter must be a valid HEX string.");var e="",n=0,i=t.length;for("0x"===t.substring(0,2)&&(n=2);n7?n+=t[i].toUpperCase():n+=t[i];return n},toHex:r.toHex,toBN:r.toBN,bytesToHex:r.bytesToHex,hexToBytes:r.hexToBytes,hexToNumberString:r.hexToNumberString,hexToNumber:r.hexToNumber,toDecimal:r.hexToNumber,numberToHex:r.numberToHex,fromDecimal:r.numberToHex,hexToUtf8:r.hexToUtf8,hexToString:r.hexToUtf8,toUtf8:r.hexToUtf8,stripHexPrefix:r.stripHexPrefix,utf8ToHex:r.utf8ToHex,stringToHex:r.utf8ToHex,fromUtf8:r.utf8ToHex,hexToAscii:c,toAscii:c,asciiToHex:u,fromAscii:u,unitMap:i.unitMap,toWei:function(t,e){if(e=h(e),!r.isBN(t)&&"string"!=typeof t)throw new Error("Please pass numbers as strings or BN objects to avoid precision errors.");return r.isBN(t)?i.toWei(t,e):i.toWei(t,e).toString(10)},fromWei:function(t,e){if(e=h(e),!r.isBN(t)&&"string"!=typeof t)throw new Error("Please pass numbers as strings or BN objects to avoid precision errors.");return r.isBN(t)?i.fromWei(t,e):i.fromWei(t,e).toString(10)},padLeft:r.leftPad,leftPad:r.leftPad,padRight:r.rightPad,rightPad:r.rightPad,toTwosComplement:r.toTwosComplement,isBloom:r.isBloom,isUserEthereumAddressInBloom:r.isUserEthereumAddressInBloom,isContractAddressInBloom:r.isContractAddressInBloom,isTopic:r.isTopic,isTopicInBloom:r.isTopicInBloom,isInBloom:r.isInBloom,compareBlockNumbers:function(t,e){if(t===e)return 0;if("genesis"!==t&&"earliest"!==t&&0!==t||"genesis"!==e&&"earliest"!==e&&0!==e){if("genesis"===t||"earliest"===t||0===t)return-1;if("genesis"===e||"earliest"===e||0===e)return 1;if("latest"===t||"finalized"===t)return"pending"===e?-1:1;if("latest"===e||"finalized"===e)return"pending"===t?1:-1;if("pending"===t)return 1;if("pending"===e)return-1;if("safe"===t||"safe"===e)return;{let n=new a(t),i=new a(e);return n.lt(i)?-1:n.eq(i)?0:1}}return 0},toNumber:r.toNumber}},W7sv:function(t,e,n){t.exports=n("+qE3").EventEmitter},W9mP:function(t,e,n){t.exports=n.p+"a81cd084ae545af4318d919f40a91fa2.js"},"WL/I":function(t,e,n){t.exports=n.p+"bff4a02980e8088d0e56593d6da137cf.js"},"WN+l":function(t,e,n){var i=n("bYtY"),r=n("IwbS");e.rectCoordAxisBuildSplitArea=function(t,e,n,o){var s=n.axis;if(!s.scale.isBlank()){var a=n.getModel("splitArea"),l=a.getModel("areaStyle"),c=l.get("color"),u=o.coordinateSystem.getRect(),h=s.getTicksCoords({tickModel:a,clamp:!0});if(h.length){var d=c.length,f=t.__splitAreaColors,p=i.createHashMap(),g=0;if(f)for(var m=0;m{e.nextTick(()=>{this[s]?n(this[s]):t(h(void 0,!0))})});const n=this[l];let i;if(n)i=new Promise(function(t,e){return(n,i)=>{t.then(()=>{e[a]?n(h(void 0,!0)):e[c](n,i)},i)}}(n,this));else{const t=this[u].read();if(null!==t)return Promise.resolve(h(t,!1));i=new Promise(this[c])}return this[l]=i,i},[Symbol.asyncIterator](){return this},return(){return new Promise((t,e)=>{this[u].destroy(null,n=>{n?e(n):t(h(void 0,!0))})})}},p);t.exports=t=>{const e=Object.create(g,{[u]:{value:t,writable:!0},[r]:{value:null,writable:!0},[o]:{value:null,writable:!0},[s]:{value:null,writable:!0},[a]:{value:t._readableState.endEmitted,writable:!0},[c]:{value:(t,n)=>{const i=e[u].read();i?(e[l]=null,e[r]=null,e[o]=null,t(h(i,!1))):(e[r]=t,e[o]=n)},writable:!0}});return e[l]=null,i(t,t=>{if(t&&"ERR_STREAM_PREMATURE_CLOSE"!==t.code){const n=e[o];return null!==n&&(e[l]=null,e[r]=null,e[o]=null,n(t)),void(e[s]=t)}const n=e[r];null!==n&&(e[l]=null,e[r]=null,e[o]=null,n(h(void 0,!0))),e[a]=!0}),t.on("readable",f.bind(null,e)),e}}).call(this,n("8oxB"))},YGIo:function(t,e,n){t.exports=n.p+"0bb7acf5bee94a874690e9d25e8d58df.js"},YH21:function(t,e,n){var i=n("H6uX");e.Dispatcher=i;var r=n("ItGF"),o=n("Ze12"),s=o.isCanvasEl,a=o.transformCoordWithViewport,l="undefined"!=typeof window&&!!window.addEventListener,c=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,u=[];function h(t,e,n,i){return n=n||{},i||!r.canvasSupported?d(t,e,n):r.browser.firefox&&null!=e.layerX&&e.layerX!==e.offsetX?(n.zrX=e.layerX,n.zrY=e.layerY):null!=e.offsetX?(n.zrX=e.offsetX,n.zrY=e.offsetY):d(t,e,n),n}function d(t,e,n){if(r.domSupported&&t.getBoundingClientRect){var i=e.clientX,o=e.clientY;if(s(t)){var l=t.getBoundingClientRect();return n.zrX=i-l.left,void(n.zrY=o-l.top)}if(a(u,t,i,o))return n.zrX=u[0],void(n.zrY=u[1])}n.zrX=n.zrY=0}function f(t){return t||window.event}var p=l?function(t){t.preventDefault(),t.stopPropagation(),t.cancelBubble=!0}:function(t){t.returnValue=!1,t.cancelBubble=!0};e.clientToLocal=h,e.getNativeEvent=f,e.normalizeEvent=function(t,e,n){if(null!=(e=f(e)).zrX)return e;var i=e.type;if(i&&i.indexOf("touch")>=0){var r="touchend"!==i?e.targetTouches[0]:e.changedTouches[0];r&&h(t,r,e,n)}else h(t,e,e,n),e.zrDelta=e.wheelDelta?e.wheelDelta/120:-(e.detail||0)/3;var o=e.button;return null==e.which&&void 0!==o&&c.test(e.type)&&(e.which=1&o?1:2&o?3:4&o?2:0),e},e.addEventListener=function(t,e,n,i){l?t.addEventListener(e,n,i):t.attachEvent("on"+e,n)},e.removeEventListener=function(t,e,n,i){l?t.removeEventListener(e,n,i):t.detachEvent("on"+e,n)},e.stop=p,e.isMiddleOrRightButtonOnMouseUpDown=function(t){return 2===t.which||3===t.which},e.notLeftMouse=function(t){return t.which>1}},YMxS:function(t,e,n){t.exports=n.p+"e745f8fb4f054a3f5b66ccad100a1217.js"},YXkt:function(t,e,n){n("Tghj").__DEV__;var i=n("bYtY"),r=n("Qxkt"),o=n("gPAo"),s=n("7G+c"),a=n("KxfA"),l=a.defaultDimValueGetters,c=a.DefaultDataProvider,u=n("L0Ub").summarizeDimensions,h=n("Vi4m"),d=i.isObject,f={float:"undefined"==typeof Float64Array?Array:Float64Array,int:"undefined"==typeof Int32Array?Array:Int32Array,ordinal:Array,number:Array,time:Array},p="undefined"==typeof Uint32Array?Array:Uint32Array,g="undefined"==typeof Int32Array?Array:Int32Array,m="undefined"==typeof Uint16Array?Array:Uint16Array;function v(t){return t._rawCount>65535?p:m}var b=["hasItemOption","_nameList","_idList","_invertedIndicesMap","_rawData","_chunkSize","_chunkCount","_dimValueGetter","_count","_rawCount","_nameDimIdx","_idDimIdx"],y=["_extent","_approximateExtent","_rawExtent"];function w(t,e){i.each(b.concat(e.__wrappedMethods||[]),(function(n){e.hasOwnProperty(n)&&(t[n]=e[n])})),t.__wrappedMethods=e.__wrappedMethods,i.each(y,(function(n){t[n]=i.clone(e[n])})),t._calculationInfo=i.extend(e._calculationInfo)}var x=function(t,e){t=t||["x","y"];for(var n={},r=[],o={},s=0;s=0?this._indices[t]:-1}function T(t,e){var n=t._idList[e];return null==n&&(n=A(t,t._idDimIdx,e)),null==n&&(n="e\0\0"+e),n}function E(t){return i.isArray(t)||(t=[t]),t}function R(t,e){var n=t.dimensions,r=new x(i.map(n,t.getDimensionInfo,t),t.hostModel);w(r,t);for(var o=r._storage={},s=t._storage,a=0;a=0?(o[l]=L(s[l]),r._rawExtent[l]=I(),r._extent[l]=null):o[l]=s[l])}return r}function L(t){for(var e,n,i=new Array(t.length),r=0;ry[1]&&(y[1]=b)}e&&(this._nameList[d]=e[f])}this._rawCount=this._count=l,this._extent={},S(this)},_._initDataFromProvider=function(t,e){if(!(t>=e)){for(var n,i=this._chunkSize,r=this._rawData,o=this._storage,s=this.dimensions,a=s.length,l=this._dimensionInfos,c=this._nameList,u=this._idList,h=this._rawExtent,d=this._nameRepeatCount={},f=this._chunkCount,p=0;pk[1]&&(k[1]=A)}if(!r.pure){var C=c[v];if(m&&null==C)if(null!=m.name)c[v]=C=m.name;else if(null!=n){var T=s[n],E=o[T][b];if(E){C=E[y];var R=l[T].ordinalMeta;R&&R.categories.length&&(C=R.categories[C])}}var L=null==m?null:m.id;null==L&&null!=C&&(d[C]=d[C]||0,L=C,d[C]>0&&(L+="__ec__"+d[C]),d[C]++),null!=L&&(u[v]=L)}}!r.persistent&&r.clean&&r.clean(),this._rawCount=this._count=e,this._extent={},S(this)}},_.count=function(){return this._count},_.getIndices=function(){var t=this._indices;if(t){var e=t.constructor,n=this._count;if(e===Array){r=new e(n);for(var i=0;i=0&&e=0&&es&&(s=l)}return i=[o,s],this._extent[t]=i,i},_.getApproximateExtent=function(t){return t=this.getDimension(t),this._approximateExtent[t]||this.getDataExtent(t)},_.setApproximateExtent=function(t,e){e=this.getDimension(e),this._approximateExtent[e]=t.slice()},_.getCalculationInfo=function(t){return this._calculationInfo[t]},_.setCalculationInfo=function(t,e){d(t)?i.extend(this._calculationInfo,t):this._calculationInfo[t]=e},_.getSum=function(t){var e=0;if(this._storage[t])for(var n=0,i=this.count();n=this._rawCount||t<0)return-1;if(!this._indices)return t;var e=this._indices,n=e[t];if(null!=n&&nt))return o;r=o-1}}return-1},_.indicesOfNearest=function(t,e,n){var i=[];if(!this._storage[t])return i;null==n&&(n=1/0);for(var r=1/0,o=-1,s=0,a=0,l=this.count();a=0&&o<0)&&(r=u,o=c,s=0),c===o&&(i[s++]=a))}return i.length=s,i},_.getRawIndex=k,_.getRawDataItem=function(t){if(this._rawData.persistent)return this._rawData.getItem(this.getRawIndex(t));for(var e=[],n=0;n=l&&_<=c||isNaN(_))&&(o[s++]=h),h++}u=!0}else if(2===i){d=this._storage[a];var b=this._storage[e[1]],y=t[e[1]][0],w=t[e[1]][1];for(f=0;f=l&&_<=c||isNaN(_))&&(M>=y&&M<=w||isNaN(M))&&(o[s++]=h),h++}}u=!0}}if(!u)if(1===i)for(m=0;m=l&&_<=c||isNaN(_))&&(o[s++]=S)}else for(m=0;mt[T][1])&&(A=!1)}A&&(o[s++]=this.getRawIndex(m))}return s_[1]&&(_[1]=x)}}}return o},_.downSample=function(t,e,n,i){for(var r=R(this,[t]),o=r._storage,s=[],a=Math.floor(1/e),l=o[t],c=this.count(),u=this._chunkSize,h=r._rawExtent[t],d=new(v(this))(c),f=0,p=0;pc-p&&(a=c-p,s.length=a);for(var g=0;gh[1]&&(h[1]=w),d[f++]=x}return r._count=f,r._indices=d,r.getRawIndex=C,r},_.getItemModel=function(t){var e=this.hostModel;return new r(this.getRawDataItem(t),e,e&&e.ecModel)},_.diff=function(t){var e=this;return new o(t?t.getIndices():[],this.getIndices(),(function(e){return T(t,e)}),(function(t){return T(e,t)}))},_.getVisual=function(t){var e=this._visual;return e&&e[t]},_.setVisual=function(t,e){if(d(t))for(var n in t)t.hasOwnProperty(n)&&this.setVisual(n,t[n]);else this._visual=this._visual||{},this._visual[t]=e},_.setLayout=function(t,e){if(d(t))for(var n in t)t.hasOwnProperty(n)&&this.setLayout(n,t[n]);else this._layout[t]=e},_.getLayout=function(t){return this._layout[t]},_.getItemLayout=function(t){return this._itemLayouts[t]},_.setItemLayout=function(t,e,n){this._itemLayouts[t]=n?i.extend(this._itemLayouts[t]||{},e):e},_.clearItemLayouts=function(){this._itemLayouts.length=0},_.getItemVisual=function(t,e,n){var i=this._itemVisuals[t],r=i&&i[e];return null!=r||n?r:this.getVisual(e)},_.setItemVisual=function(t,e,n){var i=this._itemVisuals[t]||{},r=this.hasItemVisual;if(this._itemVisuals[t]=i,d(e))for(var o in e)e.hasOwnProperty(o)&&(i[o]=e[o],r[o]=!0);else i[e]=n,r[e]=!0},_.clearAllVisual=function(){this._visual={},this._itemVisuals=[],this.hasItemVisual={}};var O=function(t){t.seriesIndex=this.seriesIndex,t.dataIndex=this.dataIndex,t.dataType=this.dataType};_.setItemGraphicEl=function(t,e){var n=this.hostModel;e&&(e.dataIndex=t,e.dataType=this.dataType,e.seriesIndex=n&&n.seriesIndex,"group"===e.type&&e.traverse(O,e)),this._graphicEls[t]=e},_.getItemGraphicEl=function(t){return this._graphicEls[t]},_.eachItemGraphicEl=function(t,e){i.each(this._graphicEls,(function(n,i){n&&t&&t.call(e,n,i)}))},_.cloneShallow=function(t){if(!t){var e=i.map(this.dimensions,this.getDimensionInfo,this);t=new x(e,this.hostModel)}if(t._storage=this._storage,w(t,this),this._indices){var n=this._indices.constructor;t._indices=new n(this._indices)}else t._indices=null;return t.getRawIndex=t._indices?C:k,t},_.wrapMethod=function(t,e){var n=this[t];"function"==typeof n&&(this.__wrappedMethods=this.__wrappedMethods||[],this.__wrappedMethods.push(t),this[t]=function(){var t=n.apply(this,arguments);return e.apply(this,[t].concat(i.slice(arguments)))})},_.TRANSFERABLE_METHODS=["cloneShallow","downSample","map"],_.CHANGABLE_METHODS=["filterSelf","selectRange"];var $=x;t.exports=$},Ydeb:function(t,e,n){t.exports=n.p+"817d52a47a4657b8a4dab79e057f5fb0.js"},YgsL:function(t,e,n){var i=n("QBsz").distance;function r(t,e,n,i,r,o,s){var a=.5*(n-t),l=.5*(i-e);return(2*(e-n)+a+l)*s+(-3*(e-n)-2*a-l)*o+a*r+e}t.exports=function(t,e){for(var n=t.length,o=[],s=0,a=1;an-2?n-1:f+1],h=t[f>n-3?n-1:f+2]);var m=p*p,v=p*m;o.push([r(c[0],g[0],u[0],h[0],p,m,v),r(c[1],g[1],u[1],h[1],p,m,v)])}return o}},YjVm:function(t,e,n){t.exports=n.p+"631aaf24371bbc547ab21e8b11ebf657.js"},Yl7c:function(t,e,n){n("Tghj").__DEV__;var i=n("bYtY"),r="___EC__COMPONENT__CONTAINER___";function o(t){var e={main:"",sub:""};return t&&(t=t.split("."),e.main=t[0]||"",e.sub=t[1]||""),e}var s=0;function a(t,e){var n=i.slice(arguments,2);return this.superClass.prototype[e].apply(t,n)}function l(t,e,n){return this.superClass.prototype[e].apply(t,n)}e.parseClassType=o,e.enableClassExtend=function(t,e){t.$constructor=t,t.extend=function(t){var e=this,n=function(){t.$constructor?t.$constructor.apply(this,arguments):e.apply(this,arguments)};return i.extend(n.prototype,t),n.extend=this.extend,n.superCall=a,n.superApply=l,i.inherits(n,this),n.superClass=e,n}},e.enableClassCheck=function(t){var e=["__\0is_clz",s++,Math.random().toFixed(3)].join("_");t.prototype[e]=!0,t.isInstance=function(t){return!(!t||!t[e])}},e.enableClassManagement=function(t,e){e=e||{};var n={};if(t.registerClass=function(t,e){if(e)if(function(t){i.assert(/^[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)?$/.test(t),'componentType "'+t+'" illegal')}(e),(e=o(e)).sub){if(e.sub!==r){(function(t){var e=n[t.main];e&&e[r]||((e=n[t.main]={})[r]=!0);return e}(e))[e.sub]=t}}else n[e.main]=t;return t},t.getClass=function(t,e,i){var o=n[t];if(o&&o[r]&&(o=e?o[e]:null),i&&!o)throw new Error(e?"Component "+t+"."+(e||"")+" not exists. Load it first.":t+".type should be specified.");return o},t.getClassesByMainType=function(t){t=o(t);var e=[],s=n[t.main];return s&&s[r]?i.each(s,(function(t,n){n!==r&&e.push(t)})):e.push(s),e},t.hasClass=function(t){return t=o(t),!!n[t.main]},t.getAllClassMainTypes=function(){var t=[];return i.each(n,(function(e,n){t.push(n)})),t},t.hasSubTypes=function(t){t=o(t);var e=n[t.main];return e&&e[r]},t.parseClassType=o,e.registerWhenExtend){var s=t.extend;s&&(t.extend=function(e){var n=s.call(this,e);return t.registerClass(n,e.type)})}return t},e.setReadOnly=function(t,e){}},Ynxi:function(t,e,n){var i=n("bYtY"),r=n("ProS"),o=n("IwbS"),s=n("+TT/").getLayoutRect,a=n("7aKB").windowOpen;r.extendComponentModel({type:"title",layoutMode:{type:"box",ignoreSize:!0},defaultOption:{zlevel:0,z:6,show:!0,text:"",target:"blank",subtext:"",subtarget:"blank",left:0,top:0,backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderWidth:0,padding:5,itemGap:10,textStyle:{fontSize:18,fontWeight:"bolder",color:"#333"},subtextStyle:{color:"#aaa"}}}),r.extendComponentView({type:"title",render:function(t,e,n){if(this.group.removeAll(),t.get("show")){var r=this.group,l=t.getModel("textStyle"),c=t.getModel("subtextStyle"),u=t.get("textAlign"),h=i.retrieve2(t.get("textBaseline"),t.get("textVerticalAlign")),d=new o.Text({style:o.setTextStyle({},l,{text:t.get("text"),textFill:l.getTextColor()},{disableBox:!0}),z2:10}),f=d.getBoundingRect(),p=t.get("subtext"),g=new o.Text({style:o.setTextStyle({},c,{text:p,textFill:c.getTextColor(),y:f.height+t.get("itemGap"),textVerticalAlign:"top"},{disableBox:!0}),z2:10}),m=t.get("link"),v=t.get("sublink"),b=t.get("triggerEvent",!0);d.silent=!m&&!b,g.silent=!v&&!b,m&&d.on("click",(function(){a(m,"_"+t.get("target"))})),v&&g.on("click",(function(){a(v,"_"+t.get("subtarget"))})),d.eventData=g.eventData=b?{componentType:"title",componentIndex:t.componentIndex}:null,r.add(d),p&&r.add(g);var y=r.getBoundingRect(),w=t.getBoxLayoutParams();w.width=y.width,w.height=y.height;var x=s(w,{width:n.getWidth(),height:n.getHeight()},t.get("padding"));u||("middle"===(u=t.get("left")||t.get("right"))&&(u="center"),"right"===u?x.x+=x.width:"center"===u&&(x.x+=x.width/2)),h||("center"===(h=t.get("top")||t.get("bottom"))&&(h="middle"),"bottom"===h?x.y+=x.height:"middle"===h&&(x.y+=x.height/2),h=h||"top"),r.attr("position",[x.x,x.y]);var _={textAlign:u,textVerticalAlign:h};d.setStyle(_),g.setStyle(_),y=r.getBoundingRect();var M=x.margin,S=t.getItemStyle(["color","opacity"]);S.fill=t.get("backgroundColor");var A=new o.Rect({shape:{x:y.x-M[3],y:y.y-M[0],width:y.width+M[1]+M[3],height:y.height+M[0]+M[2],r:t.get("borderRadius")},style:S,subPixelOptimize:!0,silent:!0});r.add(A)}}})},Yzwg:function(t,e,n){t.exports=n.p+"63b236091dce5c38c8150dcf792457ba.js"},"Z2+3":function(t,e,n){"use strict";var i=n("gK+I"),r=n("P7XM"),o=n("6lN/"),s=n("86MQ");function a(t){o.call(this,"mont",t),this.a=new i(t.a,16).toRed(this.red),this.b=new i(t.b,16).toRed(this.red),this.i4=new i(4).toRed(this.red).redInvm(),this.two=new i(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}function l(t,e,n){o.BasePoint.call(this,t,"projective"),null===e&&null===n?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new i(e,16),this.z=new i(n,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}r(a,o),t.exports=a,a.prototype.validate=function(t){var e=t.normalize().x,n=e.redSqr(),i=n.redMul(e).redAdd(n.redMul(this.a)).redAdd(e);return 0===i.redSqrt().redSqr().cmp(i)},r(l,o.BasePoint),a.prototype.decodePoint=function(t,e){return this.point(s.toArray(t,e),1)},a.prototype.point=function(t,e){return new l(this,t,e)},a.prototype.pointFromJSON=function(t){return l.fromJSON(this,t)},l.prototype.precompute=function(){},l.prototype._encode=function(){return this.getX().toArray("be",this.curve.p.byteLength())},l.fromJSON=function(t,e){return new l(t,e[0],e[1]||t.one)},l.prototype.inspect=function(){return this.isInfinity()?"":""},l.prototype.isInfinity=function(){return 0===this.z.cmpn(0)},l.prototype.dbl=function(){var t=this.x.redAdd(this.z).redSqr(),e=this.x.redSub(this.z).redSqr(),n=t.redSub(e),i=t.redMul(e),r=n.redMul(e.redAdd(this.curve.a24.redMul(n)));return this.curve.point(i,r)},l.prototype.add=function(){throw new Error("Not supported on Montgomery curve")},l.prototype.diffAdd=function(t,e){var n=this.x.redAdd(this.z),i=this.x.redSub(this.z),r=t.x.redAdd(t.z),o=t.x.redSub(t.z).redMul(n),s=r.redMul(i),a=e.z.redMul(o.redAdd(s).redSqr()),l=e.x.redMul(o.redISub(s).redSqr());return this.curve.point(a,l)},l.prototype.mul=function(t){for(var e=t.clone(),n=this,i=this.curve.point(null,null),r=[];0!==e.cmpn(0);e.iushrn(1))r.push(e.andln(1));for(var o=r.length-1;o>=0;o--)0===r[o]?(n=n.diffAdd(i,this),i=i.dbl()):(i=n.diffAdd(i,this),n=n.dbl());return i},l.prototype.mulAdd=function(){throw new Error("Not supported on Montgomery curve")},l.prototype.jumlAdd=function(){throw new Error("Not supported on Montgomery curve")},l.prototype.eq=function(t){return 0===this.getX().cmp(t.getX())},l.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this},l.prototype.getX=function(){return this.normalize(),this.x.fromRed()}},ZBKW:function(t,e,n){t.exports=n.p+"60fc15a66fa7ba74ccd248f85b50fbe5.js"},ZDAU:function(t,e,n){var i=n("hwdV").Buffer,r=n("1IWx").Transform,o=n("qiJe").StringDecoder;function s(t){r.call(this),this.hashMode="string"==typeof t,this.hashMode?this[t]=this._finalOrDigest:this.final=this._finalOrDigest,this._final&&(this.__final=this._final,this._final=null),this._decoder=null,this._encoding=null}n("P7XM")(s,r),s.prototype.update=function(t,e,n){"string"==typeof t&&(t=i.from(t,e));var r=this._update(t);return this.hashMode?this:(n&&(r=this._toString(r,n)),r)},s.prototype.setAutoPadding=function(){},s.prototype.getAuthTag=function(){throw new Error("trying to get auth tag in unsupported state")},s.prototype.setAuthTag=function(){throw new Error("trying to set auth tag in unsupported state")},s.prototype.setAAD=function(){throw new Error("trying to set aad in unsupported state")},s.prototype._transform=function(t,e,n){var i;try{this.hashMode?this._update(t):this.push(this._update(t))}catch(t){i=t}finally{n(i)}},s.prototype._flush=function(t){var e;try{this.push(this.__final())}catch(t){e=t}t(e)},s.prototype._finalOrDigest=function(t){var e=this.__final()||i.alloc(0);return t&&(e=this._toString(e,t,!0)),e},s.prototype._toString=function(t,e,n){if(this._decoder||(this._decoder=new o(e),this._encoding=e),this._encoding!==e)throw new Error("can't switch encodings");var i=this._decoder.write(t);return n&&(i+=this._decoder.end()),i},t.exports=s},ZJ2f:function(t,e,n){t.exports=n.p+"d484810cd62a56a5dda7e67cbcb005d2.js"},ZJeI:function(t,e,n){t.exports=n.p+"83ea78d42f1a8e5f7346f3a30140ebfb.js"},ZVDW:function(t,e,n){t.exports=n.p+"1d26a3c6d2c540c8c3af2f8ef298eb05.js"},ZatM:function(t,e,n){"use strict";const i=n("kFRM").codes.ERR_STREAM_PREMATURE_CLOSE;function r(){}t.exports=function t(e,n,o){if("function"==typeof n)return t(e,null,n);n||(n={}),o=function(t){let e=!1;return function(){if(!e){e=!0;for(var n=arguments.length,i=new Array(n),r=0;r{e.writable||u()};var c=e._writableState&&e._writableState.finished;const u=()=>{a=!1,c=!0,s||o.call(e)};var h=e._readableState&&e._readableState.endEmitted;const d=()=>{s=!1,h=!0,a||o.call(e)},f=t=>{o.call(e,t)},p=()=>{let t;return s&&!h?(e._readableState&&e._readableState.ended||(t=new i),o.call(e,t)):a&&!c?(e._writableState&&e._writableState.ended||(t=new i),o.call(e,t)):void 0},g=()=>{e.req.on("finish",u)};return!function(t){return t.setHeader&&"function"==typeof t.abort}(e)?a&&!e._writableState&&(e.on("end",l),e.on("close",l)):(e.on("complete",u),e.on("abort",p),e.req?g():e.on("request",g)),e.on("end",d),e.on("finish",u),!1!==n.error&&e.on("error",f),e.on("close",p),function(){e.removeListener("complete",u),e.removeListener("abort",p),e.removeListener("request",g),e.req&&e.req.removeListener("finish",u),e.removeListener("end",l),e.removeListener("close",l),e.removeListener("finish",u),e.removeListener("end",d),e.removeListener("error",f),e.removeListener("close",p)}}},ZdjR:function(t,e,n){ace.config.setModuleUrl("ace/ext/beautify",n("EUP/")),ace.config.setModuleUrl("ace/ext/code_lens",n("t/TQ")),ace.config.setModuleUrl("ace/ext/elastic_tabstops_lite",n("hIa+")),ace.config.setModuleUrl("ace/ext/emmet",n("SJdk")),ace.config.setModuleUrl("ace/ext/error_marker",n("xoxs")),ace.config.setModuleUrl("ace/ext/hardwrap",n("pCwn")),ace.config.setModuleUrl("ace/ext/keyboard_menu",n("GcVj")),ace.config.setModuleUrl("ace/ext/language_tools",n("twpp")),ace.config.setModuleUrl("ace/ext/linking",n("qY+9")),ace.config.setModuleUrl("ace/ext/modelist",n("lMRJ")),ace.config.setModuleUrl("ace/ext/options",n("c+TU")),ace.config.setModuleUrl("ace/ext/prompt",n("vPKu")),ace.config.setModuleUrl("ace/ext/rtl",n("/xBA")),ace.config.setModuleUrl("ace/ext/searchbox",n("QI/J")),ace.config.setModuleUrl("ace/ext/settings_menu",n("Wob2")),ace.config.setModuleUrl("ace/ext/spellcheck",n("XKDL")),ace.config.setModuleUrl("ace/ext/split",n("Supm")),ace.config.setModuleUrl("ace/ext/static_highlight",n("YGIo")),ace.config.setModuleUrl("ace/ext/statusbar",n("Uy2s")),ace.config.setModuleUrl("ace/ext/textarea",n("1Iqo")),ace.config.setModuleUrl("ace/ext/themelist",n("F0sZ")),ace.config.setModuleUrl("ace/ext/whitespace",n("tcqs")),ace.config.setModuleUrl("ace/keyboard/emacs",n("4Tkn")),ace.config.setModuleUrl("ace/keyboard/sublime",n("9S90")),ace.config.setModuleUrl("ace/keyboard/vim",n("7HgW")),ace.config.setModuleUrl("ace/keyboard/vscode",n("aji8")),ace.config.setModuleUrl("ace/mode/abap",n("f+nS")),ace.config.setModuleUrl("ace/mode/abc",n("xAoY")),ace.config.setModuleUrl("ace/mode/actionscript",n("FyA2")),ace.config.setModuleUrl("ace/mode/ada",n("lKo8")),ace.config.setModuleUrl("ace/mode/alda",n("6dZI")),ace.config.setModuleUrl("ace/mode/apache_conf",n("W9mP")),ace.config.setModuleUrl("ace/mode/apex",n("Cqe9")),ace.config.setModuleUrl("ace/mode/applescript",n("PrQf")),ace.config.setModuleUrl("ace/mode/aql",n("7lKP")),ace.config.setModuleUrl("ace/mode/asciidoc",n("Hf8x")),ace.config.setModuleUrl("ace/mode/asl",n("Zke3")),ace.config.setModuleUrl("ace/mode/assembly_x86",n("cC92")),ace.config.setModuleUrl("ace/mode/autohotkey",n("t6F5")),ace.config.setModuleUrl("ace/mode/batchfile",n("D5FD")),ace.config.setModuleUrl("ace/mode/bibtex",n("gRPC")),ace.config.setModuleUrl("ace/mode/c9search",n("rrIz")),ace.config.setModuleUrl("ace/mode/cirru",n("hcv9")),ace.config.setModuleUrl("ace/mode/clojure",n("FL0Q")),ace.config.setModuleUrl("ace/mode/cobol",n("qbzb")),ace.config.setModuleUrl("ace/mode/coffee",n("6Cyk")),ace.config.setModuleUrl("ace/mode/coldfusion",n("ZVDW")),ace.config.setModuleUrl("ace/mode/crystal",n("zLZW")),ace.config.setModuleUrl("ace/mode/csharp",n("XOgq")),ace.config.setModuleUrl("ace/mode/csound_document",n("lHi7")),ace.config.setModuleUrl("ace/mode/csound_orchestra",n("olkj")),ace.config.setModuleUrl("ace/mode/csound_score",n("Uvt+")),ace.config.setModuleUrl("ace/mode/csp",n("bKUr")),ace.config.setModuleUrl("ace/mode/css",n("pbuy")),ace.config.setModuleUrl("ace/mode/curly",n("FIbT")),ace.config.setModuleUrl("ace/mode/c_cpp",n("ENBG")),ace.config.setModuleUrl("ace/mode/d",n("yC4Y")),ace.config.setModuleUrl("ace/mode/dart",n("M0Ar")),ace.config.setModuleUrl("ace/mode/diff",n("KGtJ")),ace.config.setModuleUrl("ace/mode/django",n("sjQ6")),ace.config.setModuleUrl("ace/mode/dockerfile",n("E4RL")),ace.config.setModuleUrl("ace/mode/dot",n("UC8s")),ace.config.setModuleUrl("ace/mode/drools",n("9mB6")),ace.config.setModuleUrl("ace/mode/edifact",n("pc4Z")),ace.config.setModuleUrl("ace/mode/eiffel",n("++r/")),ace.config.setModuleUrl("ace/mode/ejs",n("z9YE")),ace.config.setModuleUrl("ace/mode/elixir",n("LtUc")),ace.config.setModuleUrl("ace/mode/elm",n("rKKa")),ace.config.setModuleUrl("ace/mode/erlang",n("6uOc")),ace.config.setModuleUrl("ace/mode/forth",n("4LGm")),ace.config.setModuleUrl("ace/mode/fortran",n("oGc3")),ace.config.setModuleUrl("ace/mode/fsharp",n("5/Xo")),ace.config.setModuleUrl("ace/mode/fsl",n("77YJ")),ace.config.setModuleUrl("ace/mode/ftl",n("JCg0")),ace.config.setModuleUrl("ace/mode/gcode",n("+Wco")),ace.config.setModuleUrl("ace/mode/gherkin",n("Adi7")),ace.config.setModuleUrl("ace/mode/gitignore",n("nxyd")),ace.config.setModuleUrl("ace/mode/glsl",n("HQ7F")),ace.config.setModuleUrl("ace/mode/gobstones",n("MFIL")),ace.config.setModuleUrl("ace/mode/golang",n("q6Ws")),ace.config.setModuleUrl("ace/mode/graphqlschema",n("T+HR")),ace.config.setModuleUrl("ace/mode/groovy",n("olnV")),ace.config.setModuleUrl("ace/mode/haml",n("CTg8")),ace.config.setModuleUrl("ace/mode/handlebars",n("QiNh")),ace.config.setModuleUrl("ace/mode/haskell",n("CM8r")),ace.config.setModuleUrl("ace/mode/haskell_cabal",n("OSqW")),ace.config.setModuleUrl("ace/mode/haxe",n("9stc")),ace.config.setModuleUrl("ace/mode/hjson",n("eFUv")),ace.config.setModuleUrl("ace/mode/html",n("2Syz")),ace.config.setModuleUrl("ace/mode/html_elixir",n("ExhP")),ace.config.setModuleUrl("ace/mode/html_ruby",n("SPqj")),ace.config.setModuleUrl("ace/mode/ini",n("XsLq")),ace.config.setModuleUrl("ace/mode/io",n("0d1Z")),ace.config.setModuleUrl("ace/mode/ion",n("/vV6")),ace.config.setModuleUrl("ace/mode/jack",n("qJQu")),ace.config.setModuleUrl("ace/mode/jade",n("1sXG")),ace.config.setModuleUrl("ace/mode/java",n("+T+H")),ace.config.setModuleUrl("ace/mode/javascript",n("YjVm")),ace.config.setModuleUrl("ace/mode/jexl",n("r1LO")),ace.config.setModuleUrl("ace/mode/json",n("a0X8")),ace.config.setModuleUrl("ace/mode/json5",n("kIKG")),ace.config.setModuleUrl("ace/mode/jsoniq",n("3cgA")),ace.config.setModuleUrl("ace/mode/jsp",n("7no+")),ace.config.setModuleUrl("ace/mode/jssm",n("wMYD")),ace.config.setModuleUrl("ace/mode/jsx",n("Vp4D")),ace.config.setModuleUrl("ace/mode/julia",n("4I8g")),ace.config.setModuleUrl("ace/mode/kotlin",n("xYWh")),ace.config.setModuleUrl("ace/mode/latex",n("+lKS")),ace.config.setModuleUrl("ace/mode/latte",n("wMjp")),ace.config.setModuleUrl("ace/mode/less",n("npKC")),ace.config.setModuleUrl("ace/mode/liquid",n("caFp")),ace.config.setModuleUrl("ace/mode/lisp",n("kkJg")),ace.config.setModuleUrl("ace/mode/livescript",n("wxfR")),ace.config.setModuleUrl("ace/mode/logiql",n("it7O")),ace.config.setModuleUrl("ace/mode/logtalk",n("2tkK")),ace.config.setModuleUrl("ace/mode/lsl",n("2s4E")),ace.config.setModuleUrl("ace/mode/lua",n("XvXT")),ace.config.setModuleUrl("ace/mode/luapage",n("RylI")),ace.config.setModuleUrl("ace/mode/lucene",n("52wA")),ace.config.setModuleUrl("ace/mode/makefile",n("OUgY")),ace.config.setModuleUrl("ace/mode/markdown",n("jWH0")),ace.config.setModuleUrl("ace/mode/mask",n("SJqZ")),ace.config.setModuleUrl("ace/mode/matlab",n("tlln")),ace.config.setModuleUrl("ace/mode/maze",n("B/Zl")),ace.config.setModuleUrl("ace/mode/mediawiki",n("jZtN")),ace.config.setModuleUrl("ace/mode/mel",n("lygG")),ace.config.setModuleUrl("ace/mode/mips",n("vu/Q")),ace.config.setModuleUrl("ace/mode/mixal",n("39Hq")),ace.config.setModuleUrl("ace/mode/mushcode",n("29jt")),ace.config.setModuleUrl("ace/mode/mysql",n("DuT2")),ace.config.setModuleUrl("ace/mode/nginx",n("g3bW")),ace.config.setModuleUrl("ace/mode/nim",n("t1r0")),ace.config.setModuleUrl("ace/mode/nix",n("mPl1")),ace.config.setModuleUrl("ace/mode/nsis",n("UyCU")),ace.config.setModuleUrl("ace/mode/nunjucks",n("RmNl")),ace.config.setModuleUrl("ace/mode/objectivec",n("RLP2")),ace.config.setModuleUrl("ace/mode/ocaml",n("EJmE")),ace.config.setModuleUrl("ace/mode/partiql",n("7h4s")),ace.config.setModuleUrl("ace/mode/pascal",n("4Vdd")),ace.config.setModuleUrl("ace/mode/perl",n("Ahtn")),ace.config.setModuleUrl("ace/mode/pgsql",n("mqnL")),ace.config.setModuleUrl("ace/mode/php",n("KKkb")),ace.config.setModuleUrl("ace/mode/php_laravel_blade",n("PA2E")),ace.config.setModuleUrl("ace/mode/pig",n("4jQq")),ace.config.setModuleUrl("ace/mode/plain_text",n("qsE9")),ace.config.setModuleUrl("ace/mode/plsql",n("MxEj")),ace.config.setModuleUrl("ace/mode/powershell",n("oeCZ")),ace.config.setModuleUrl("ace/mode/praat",n("iEkD")),ace.config.setModuleUrl("ace/mode/prisma",n("eQHD")),ace.config.setModuleUrl("ace/mode/prolog",n("Lklp")),ace.config.setModuleUrl("ace/mode/properties",n("eTAD")),ace.config.setModuleUrl("ace/mode/protobuf",n("vAKk")),ace.config.setModuleUrl("ace/mode/puppet",n("fAjk")),ace.config.setModuleUrl("ace/mode/python",n("4Vmv")),ace.config.setModuleUrl("ace/mode/qml",n("i3TD")),ace.config.setModuleUrl("ace/mode/r",n("qywP")),ace.config.setModuleUrl("ace/mode/raku",n("U5fC")),ace.config.setModuleUrl("ace/mode/razor",n("pybX")),ace.config.setModuleUrl("ace/mode/rdoc",n("CrOw")),ace.config.setModuleUrl("ace/mode/red",n("mYza")),ace.config.setModuleUrl("ace/mode/redshift",n("H++T")),ace.config.setModuleUrl("ace/mode/rhtml",n("lv7e")),ace.config.setModuleUrl("ace/mode/robot",n("wnlL")),ace.config.setModuleUrl("ace/mode/rst",n("tm52")),ace.config.setModuleUrl("ace/mode/ruby",n("+uWz")),ace.config.setModuleUrl("ace/mode/rust",n("7Ysg")),ace.config.setModuleUrl("ace/mode/sac",n("fRJY")),ace.config.setModuleUrl("ace/mode/sass",n("9Jep")),ace.config.setModuleUrl("ace/mode/scad",n("B9PQ")),ace.config.setModuleUrl("ace/mode/scala",n("btG5")),ace.config.setModuleUrl("ace/mode/scheme",n("UY2b")),ace.config.setModuleUrl("ace/mode/scrypt",n("e5M8")),ace.config.setModuleUrl("ace/mode/scss",n("3mKl")),ace.config.setModuleUrl("ace/mode/sh",n("3h1o")),ace.config.setModuleUrl("ace/mode/sjs",n("5pSw")),ace.config.setModuleUrl("ace/mode/slim",n("xQFM")),ace.config.setModuleUrl("ace/mode/smarty",n("miO8")),ace.config.setModuleUrl("ace/mode/smithy",n("GOPk")),ace.config.setModuleUrl("ace/mode/snippets",n("JZRl")),ace.config.setModuleUrl("ace/mode/soy_template",n("AMR5")),ace.config.setModuleUrl("ace/mode/space",n("lawX")),ace.config.setModuleUrl("ace/mode/sparql",n("ylWm")),ace.config.setModuleUrl("ace/mode/sql",n("pjxt")),ace.config.setModuleUrl("ace/mode/sqlserver",n("WzTa")),ace.config.setModuleUrl("ace/mode/stylus",n("B0wF")),ace.config.setModuleUrl("ace/mode/svg",n("r0ss")),ace.config.setModuleUrl("ace/mode/swift",n("TqkN")),ace.config.setModuleUrl("ace/mode/tcl",n("zDzy")),ace.config.setModuleUrl("ace/mode/terraform",n("7615")),ace.config.setModuleUrl("ace/mode/tex",n("sEpj")),ace.config.setModuleUrl("ace/mode/text",n("SnIx")),ace.config.setModuleUrl("ace/mode/textile",n("C3+T")),ace.config.setModuleUrl("ace/mode/toml",n("M38D")),ace.config.setModuleUrl("ace/mode/tsx",n("6j/w")),ace.config.setModuleUrl("ace/mode/turtle",n("B1VC")),ace.config.setModuleUrl("ace/mode/twig",n("mjkl")),ace.config.setModuleUrl("ace/mode/typescript",n("HUi/")),ace.config.setModuleUrl("ace/mode/vala",n("cx4b")),ace.config.setModuleUrl("ace/mode/vbscript",n("HTL6")),ace.config.setModuleUrl("ace/mode/velocity",n("zmxD")),ace.config.setModuleUrl("ace/mode/verilog",n("DeVQ")),ace.config.setModuleUrl("ace/mode/vhdl",n("MrsM")),ace.config.setModuleUrl("ace/mode/visualforce",n("9WjW")),ace.config.setModuleUrl("ace/mode/wollok",n("b1Mk")),ace.config.setModuleUrl("ace/mode/xml",n("Ozfr")),ace.config.setModuleUrl("ace/mode/xquery",n("FELj")),ace.config.setModuleUrl("ace/mode/yaml",n("qO9C")),ace.config.setModuleUrl("ace/mode/zeek",n("Y0EO")),ace.config.setModuleUrl("ace/theme/ambiance",n("qxIs")),ace.config.setModuleUrl("ace/theme/chaos",n("hsfQ")),ace.config.setModuleUrl("ace/theme/chrome",n("piRb")),ace.config.setModuleUrl("ace/theme/cloud9_day",n("7dHp")),ace.config.setModuleUrl("ace/theme/cloud9_night",n("FdNM")),ace.config.setModuleUrl("ace/theme/cloud9_night_low_color",n("aRcM")),ace.config.setModuleUrl("ace/theme/clouds",n("tBeY")),ace.config.setModuleUrl("ace/theme/clouds_midnight",n("H1qW")),ace.config.setModuleUrl("ace/theme/cobalt",n("ZJ2f")),ace.config.setModuleUrl("ace/theme/crimson_editor",n("iIk/")),ace.config.setModuleUrl("ace/theme/dawn",n("UqDz")),ace.config.setModuleUrl("ace/theme/dracula",n("Xgh0")),ace.config.setModuleUrl("ace/theme/dreamweaver",n("49mq")),ace.config.setModuleUrl("ace/theme/eclipse",n("gpuJ")),ace.config.setModuleUrl("ace/theme/github",n("GTtX")),ace.config.setModuleUrl("ace/theme/gob",n("f9aN")),ace.config.setModuleUrl("ace/theme/gruvbox",n("ZvBk")),ace.config.setModuleUrl("ace/theme/gruvbox_dark_hard",n("0/+3")),ace.config.setModuleUrl("ace/theme/gruvbox_light_hard",n("bJjF")),ace.config.setModuleUrl("ace/theme/idle_fingers",n("kwTB")),ace.config.setModuleUrl("ace/theme/iplastic",n("sS4s")),ace.config.setModuleUrl("ace/theme/katzenmilch",n("iMG9")),ace.config.setModuleUrl("ace/theme/kr_theme",n("Kx6e")),ace.config.setModuleUrl("ace/theme/kuroir",n("SLIA")),ace.config.setModuleUrl("ace/theme/merbivore",n("WL/I")),ace.config.setModuleUrl("ace/theme/merbivore_soft",n("614k")),ace.config.setModuleUrl("ace/theme/monokai",n("Quqz")),ace.config.setModuleUrl("ace/theme/mono_industrial",n("Wo0X")),ace.config.setModuleUrl("ace/theme/nord_dark",n("ud1w")),ace.config.setModuleUrl("ace/theme/one_dark",n("xGfL")),ace.config.setModuleUrl("ace/theme/pastel_on_dark",n("22yp")),ace.config.setModuleUrl("ace/theme/solarized_dark",n("zWEz")),ace.config.setModuleUrl("ace/theme/solarized_light",n("5BDQ")),ace.config.setModuleUrl("ace/theme/sqlserver",n("+077")),ace.config.setModuleUrl("ace/theme/terminal",n("F+Gd")),ace.config.setModuleUrl("ace/theme/textmate",n("vgQK")),ace.config.setModuleUrl("ace/theme/tomorrow",n("7iDM")),ace.config.setModuleUrl("ace/theme/tomorrow_night",n("Nu51")),ace.config.setModuleUrl("ace/theme/tomorrow_night_blue",n("tTzs")),ace.config.setModuleUrl("ace/theme/tomorrow_night_bright",n("hhun")),ace.config.setModuleUrl("ace/theme/tomorrow_night_eighties",n("CSio")),ace.config.setModuleUrl("ace/theme/twilight",n("duWt")),ace.config.setModuleUrl("ace/theme/vibrant_ink",n("D4gj")),ace.config.setModuleUrl("ace/theme/xcode",n("o5wD")),ace.config.setModuleUrl("ace/mode/base_worker",n("5fp7")),ace.config.setModuleUrl("ace/mode/coffee_worker",n("c7Rk")),ace.config.setModuleUrl("ace/mode/css_worker",n("nGVq")),ace.config.setModuleUrl("ace/mode/html_worker",n("53rP")),ace.config.setModuleUrl("ace/mode/javascript_worker",n("gFSE")),ace.config.setModuleUrl("ace/mode/json_worker",n("HQZm")),ace.config.setModuleUrl("ace/mode/lua_worker",n("JoCo")),ace.config.setModuleUrl("ace/mode/php_worker",n("3ezA")),ace.config.setModuleUrl("ace/mode/xml_worker",n("jba/")),ace.config.setModuleUrl("ace/mode/xquery_worker",n("Oye4")),ace.config.setModuleUrl("ace/mode/yaml_worker",n("gan9")),ace.config.setModuleUrl("ace/snippets/abap",n("cgc5")),ace.config.setModuleUrl("ace/snippets/abc",n("2A/n")),ace.config.setModuleUrl("ace/snippets/actionscript",n("7M/r")),ace.config.setModuleUrl("ace/snippets/ada",n("J5l2")),ace.config.setModuleUrl("ace/snippets/alda",n("oBGn")),ace.config.setModuleUrl("ace/snippets/apache_conf",n("ZJeI")),ace.config.setModuleUrl("ace/snippets/apex",n("sqB8")),ace.config.setModuleUrl("ace/snippets/applescript",n("lxWr")),ace.config.setModuleUrl("ace/snippets/aql",n("ZBKW")),ace.config.setModuleUrl("ace/snippets/asciidoc",n("OWRr")),ace.config.setModuleUrl("ace/snippets/asl",n("5C9/")),ace.config.setModuleUrl("ace/snippets/assembly_x86",n("o7Op")),ace.config.setModuleUrl("ace/snippets/autohotkey",n("3vgu")),ace.config.setModuleUrl("ace/snippets/batchfile",n("iYcp")),ace.config.setModuleUrl("ace/snippets/bibtex",n("qm99")),ace.config.setModuleUrl("ace/snippets/c9search",n("5YDr")),ace.config.setModuleUrl("ace/snippets/cirru",n("Ydeb")),ace.config.setModuleUrl("ace/snippets/clojure",n("uRTN")),ace.config.setModuleUrl("ace/snippets/cobol",n("VAPA")),ace.config.setModuleUrl("ace/snippets/coffee",n("ub/A")),ace.config.setModuleUrl("ace/snippets/coldfusion",n("UQkF")),ace.config.setModuleUrl("ace/snippets/crystal",n("xu2H")),ace.config.setModuleUrl("ace/snippets/csharp",n("PBak")),ace.config.setModuleUrl("ace/snippets/csound_document",n("SWaG")),ace.config.setModuleUrl("ace/snippets/csound_orchestra",n("GSNa")),ace.config.setModuleUrl("ace/snippets/csound_score",n("AgDi")),ace.config.setModuleUrl("ace/snippets/csp",n("DEW2")),ace.config.setModuleUrl("ace/snippets/css",n("LBbT")),ace.config.setModuleUrl("ace/snippets/curly",n("YBAk")),ace.config.setModuleUrl("ace/snippets/c_cpp",n("gWFh")),ace.config.setModuleUrl("ace/snippets/d",n("iQjd")),ace.config.setModuleUrl("ace/snippets/dart",n("WwfI")),ace.config.setModuleUrl("ace/snippets/diff",n("ehHW")),ace.config.setModuleUrl("ace/snippets/django",n("Or6e")),ace.config.setModuleUrl("ace/snippets/dockerfile",n("lT3S")),ace.config.setModuleUrl("ace/snippets/dot",n("jebd")),ace.config.setModuleUrl("ace/snippets/drools",n("i0SQ")),ace.config.setModuleUrl("ace/snippets/edifact",n("UpLS")),ace.config.setModuleUrl("ace/snippets/eiffel",n("TyQe")),ace.config.setModuleUrl("ace/snippets/ejs",n("pZ5h")),ace.config.setModuleUrl("ace/snippets/elixir",n("E+VZ")),ace.config.setModuleUrl("ace/snippets/elm",n("tclM")),ace.config.setModuleUrl("ace/snippets/erlang",n("QyJv")),ace.config.setModuleUrl("ace/snippets/forth",n("S6BB")),ace.config.setModuleUrl("ace/snippets/fortran",n("Cg3s")),ace.config.setModuleUrl("ace/snippets/fsharp",n("n/0W")),ace.config.setModuleUrl("ace/snippets/fsl",n("8afI")),ace.config.setModuleUrl("ace/snippets/ftl",n("ttaG")),ace.config.setModuleUrl("ace/snippets/gcode",n("Lk2G")),ace.config.setModuleUrl("ace/snippets/gherkin",n("fZOU")),ace.config.setModuleUrl("ace/snippets/gitignore",n("cm+L")),ace.config.setModuleUrl("ace/snippets/glsl",n("+R99")),ace.config.setModuleUrl("ace/snippets/gobstones",n("Sn0o")),ace.config.setModuleUrl("ace/snippets/golang",n("ktA1")),ace.config.setModuleUrl("ace/snippets/graphqlschema",n("ekKn")),ace.config.setModuleUrl("ace/snippets/groovy",n("+3KH")),ace.config.setModuleUrl("ace/snippets/haml",n("0kr4")),ace.config.setModuleUrl("ace/snippets/handlebars",n("MnTO")),ace.config.setModuleUrl("ace/snippets/haskell",n("+RVn")),ace.config.setModuleUrl("ace/snippets/haskell_cabal",n("Pmrv")),ace.config.setModuleUrl("ace/snippets/haxe",n("SigQ")),ace.config.setModuleUrl("ace/snippets/hjson",n("c/c3")),ace.config.setModuleUrl("ace/snippets/html",n("opzT")),ace.config.setModuleUrl("ace/snippets/html_elixir",n("1SzN")),ace.config.setModuleUrl("ace/snippets/html_ruby",n("qwAG")),ace.config.setModuleUrl("ace/snippets/ini",n("g+4O")),ace.config.setModuleUrl("ace/snippets/io",n("AEPF")),ace.config.setModuleUrl("ace/snippets/ion",n("2enc")),ace.config.setModuleUrl("ace/snippets/jack",n("dmRs")),ace.config.setModuleUrl("ace/snippets/jade",n("9RWM")),ace.config.setModuleUrl("ace/snippets/java",n("blu0")),ace.config.setModuleUrl("ace/snippets/javascript",n("Icgu")),ace.config.setModuleUrl("ace/snippets/jexl",n("mCBF")),ace.config.setModuleUrl("ace/snippets/json",n("nAaz")),ace.config.setModuleUrl("ace/snippets/json5",n("hiOV")),ace.config.setModuleUrl("ace/snippets/jsoniq",n("JRfS")),ace.config.setModuleUrl("ace/snippets/jsp",n("4VtH")),ace.config.setModuleUrl("ace/snippets/jssm",n("aWFf")),ace.config.setModuleUrl("ace/snippets/jsx",n("oRyD")),ace.config.setModuleUrl("ace/snippets/julia",n("AuaA")),ace.config.setModuleUrl("ace/snippets/kotlin",n("eQke")),ace.config.setModuleUrl("ace/snippets/latex",n("YMxS")),ace.config.setModuleUrl("ace/snippets/latte",n("vrKq")),ace.config.setModuleUrl("ace/snippets/less",n("GbtE")),ace.config.setModuleUrl("ace/snippets/liquid",n("equH")),ace.config.setModuleUrl("ace/snippets/lisp",n("+k+H")),ace.config.setModuleUrl("ace/snippets/livescript",n("u3kY")),ace.config.setModuleUrl("ace/snippets/logiql",n("dhyE")),ace.config.setModuleUrl("ace/snippets/logtalk",n("j7Sb")),ace.config.setModuleUrl("ace/snippets/lsl",n("TIz7")),ace.config.setModuleUrl("ace/snippets/lua",n("zP+g")),ace.config.setModuleUrl("ace/snippets/luapage",n("HV9M")),ace.config.setModuleUrl("ace/snippets/lucene",n("j6CL")),ace.config.setModuleUrl("ace/snippets/makefile",n("kt2d")),ace.config.setModuleUrl("ace/snippets/markdown",n("mDWS")),ace.config.setModuleUrl("ace/snippets/mask",n("1xfk")),ace.config.setModuleUrl("ace/snippets/matlab",n("70OD")),ace.config.setModuleUrl("ace/snippets/maze",n("jR9x")),ace.config.setModuleUrl("ace/snippets/mediawiki",n("H3FR")),ace.config.setModuleUrl("ace/snippets/mel",n("Uszz")),ace.config.setModuleUrl("ace/snippets/mips",n("NzDk")),ace.config.setModuleUrl("ace/snippets/mixal",n("Fyjw")),ace.config.setModuleUrl("ace/snippets/mushcode",n("QWck")),ace.config.setModuleUrl("ace/snippets/mysql",n("AIO6")),ace.config.setModuleUrl("ace/snippets/nginx",n("gWd6")),ace.config.setModuleUrl("ace/snippets/nim",n("uX9t")),ace.config.setModuleUrl("ace/snippets/nix",n("96ag")),ace.config.setModuleUrl("ace/snippets/nsis",n("tBLl")),ace.config.setModuleUrl("ace/snippets/nunjucks",n("4oVz")),ace.config.setModuleUrl("ace/snippets/objectivec",n("nsVk")),ace.config.setModuleUrl("ace/snippets/ocaml",n("fNyB")),ace.config.setModuleUrl("ace/snippets/partiql",n("547h")),ace.config.setModuleUrl("ace/snippets/pascal",n("QJKI")),ace.config.setModuleUrl("ace/snippets/perl",n("uWz4")),ace.config.setModuleUrl("ace/snippets/pgsql",n("ChLG")),ace.config.setModuleUrl("ace/snippets/php",n("6UEL")),ace.config.setModuleUrl("ace/snippets/php_laravel_blade",n("/ks/")),ace.config.setModuleUrl("ace/snippets/pig",n("vgaW")),ace.config.setModuleUrl("ace/snippets/plain_text",n("kx82")),ace.config.setModuleUrl("ace/snippets/plsql",n("siMY")),ace.config.setModuleUrl("ace/snippets/powershell",n("a1dt")),ace.config.setModuleUrl("ace/snippets/praat",n("qPDZ")),ace.config.setModuleUrl("ace/snippets/prisma",n("Cqch")),ace.config.setModuleUrl("ace/snippets/prolog",n("TnIT")),ace.config.setModuleUrl("ace/snippets/properties",n("0fTf")),ace.config.setModuleUrl("ace/snippets/protobuf",n("gGYU")),ace.config.setModuleUrl("ace/snippets/puppet",n("HkDA")),ace.config.setModuleUrl("ace/snippets/python",n("HVe3")),ace.config.setModuleUrl("ace/snippets/qml",n("2XiD")),ace.config.setModuleUrl("ace/snippets/r",n("mSyi")),ace.config.setModuleUrl("ace/snippets/raku",n("gnFM")),ace.config.setModuleUrl("ace/snippets/razor",n("wlUN")),ace.config.setModuleUrl("ace/snippets/rdoc",n("vKrq")),ace.config.setModuleUrl("ace/snippets/red",n("Klge")),ace.config.setModuleUrl("ace/snippets/redshift",n("ml+/")),ace.config.setModuleUrl("ace/snippets/rhtml",n("pSUY")),ace.config.setModuleUrl("ace/snippets/robot",n("cvwJ")),ace.config.setModuleUrl("ace/snippets/rst",n("4jnI")),ace.config.setModuleUrl("ace/snippets/ruby",n("LOGt")),ace.config.setModuleUrl("ace/snippets/rust",n("iDd2")),ace.config.setModuleUrl("ace/snippets/sac",n("x1e2")),ace.config.setModuleUrl("ace/snippets/sass",n("FviS")),ace.config.setModuleUrl("ace/snippets/scad",n("8saB")),ace.config.setModuleUrl("ace/snippets/scala",n("c5Xk")),ace.config.setModuleUrl("ace/snippets/scheme",n("I9RN")),ace.config.setModuleUrl("ace/snippets/scrypt",n("N933")),ace.config.setModuleUrl("ace/snippets/scss",n("+W6p")),ace.config.setModuleUrl("ace/snippets/sh",n("Yzwg")),ace.config.setModuleUrl("ace/snippets/sjs",n("Cbsr")),ace.config.setModuleUrl("ace/snippets/slim",n("TuMY")),ace.config.setModuleUrl("ace/snippets/smarty",n("2GCP")),ace.config.setModuleUrl("ace/snippets/smithy",n("ykAu")),ace.config.setModuleUrl("ace/snippets/snippets",n("jhAW")),ace.config.setModuleUrl("ace/snippets/soy_template",n("E8MD")),ace.config.setModuleUrl("ace/snippets/space",n("4vq3")),ace.config.setModuleUrl("ace/snippets/sparql",n("JyfH")),ace.config.setModuleUrl("ace/snippets/sql",n("2Cji")),ace.config.setModuleUrl("ace/snippets/sqlserver",n("OZTt")),ace.config.setModuleUrl("ace/snippets/stylus",n("Kb1s")),ace.config.setModuleUrl("ace/snippets/svg",n("4DkM")),ace.config.setModuleUrl("ace/snippets/swift",n("Ljnb")),ace.config.setModuleUrl("ace/snippets/tcl",n("Pznk")),ace.config.setModuleUrl("ace/snippets/terraform",n("P6V2")),ace.config.setModuleUrl("ace/snippets/tex",n("DS3z")),ace.config.setModuleUrl("ace/snippets/text",n("bEaQ")),ace.config.setModuleUrl("ace/snippets/textile",n("AKCB")),ace.config.setModuleUrl("ace/snippets/toml",n("mYl2")),ace.config.setModuleUrl("ace/snippets/tsx",n("T1lI")),ace.config.setModuleUrl("ace/snippets/turtle",n("CseK")),ace.config.setModuleUrl("ace/snippets/twig",n("JAAf")),ace.config.setModuleUrl("ace/snippets/typescript",n("N396")),ace.config.setModuleUrl("ace/snippets/vala",n("iScd")),ace.config.setModuleUrl("ace/snippets/vbscript",n("v0oB")),ace.config.setModuleUrl("ace/snippets/velocity",n("v9Uf")),ace.config.setModuleUrl("ace/snippets/verilog",n("/zLz")),ace.config.setModuleUrl("ace/snippets/vhdl",n("yPIf")),ace.config.setModuleUrl("ace/snippets/visualforce",n("GRjI")),ace.config.setModuleUrl("ace/snippets/wollok",n("TqT/")),ace.config.setModuleUrl("ace/snippets/xml",n("fJBS")),ace.config.setModuleUrl("ace/snippets/xquery",n("Q054")),ace.config.setModuleUrl("ace/snippets/yaml",n("E5ok")),ace.config.setModuleUrl("ace/snippets/zeek",n("q6WE"))},Ze12:function(t,e,n){var i=n("ItGF"),r=n("hOwI").buildTransformer,o=[];function s(t,e,n,o,s){if(e.getBoundingClientRect&&i.domSupported&&!a(e)){var l=e.___zrEVENTSAVED||(e.___zrEVENTSAVED={}),c=function(t,e,n){for(var i=n?"invTrans":"trans",o=e[i],s=e.srcCoords,a=!0,l=[],c=[],u=0;u<4;u++){var h=t[u].getBoundingClientRect(),d=2*u,f=h.left,p=h.top;l.push(f,p),a=a&&s&&f===s[d]&&p===s[d+1],c.push(t[u].offsetLeft,t[u].offsetTop)}return a&&o?o:(e.srcCoords=l,e[i]=n?r(c,l):r(l,c))}(function(t,e){var n=e.markers;if(n)return n;n=e.markers=[];for(var i=["left","right"],r=["top","bottom"],o=0;o<4;o++){var s=document.createElement("div"),a=s.style,l=o%2,c=(o>>1)%2;a.cssText=["position: absolute","visibility: hidden","padding: 0","margin: 0","border-width: 0","user-select: none","width:0","height:0",i[l]+":0",r[c]+":0",i[1-l]+":auto",r[1-c]+":auto",""].join("!important;"),t.appendChild(s),n.push(s)}return n}(e,l),l,s);if(c)return c(t,n,o),!0}return!1}function a(t){return"CANVAS"===t.nodeName.toUpperCase()}e.transformLocalCoord=function(t,e,n,i,r){return s(o,e,i,r,!0)&&s(t,n,o[0],o[1])},e.transformCoordWithViewport=s,e.isCanvasEl=a},Zke3:function(t,e,n){t.exports=n.p+"64e5c32afb91e13122237cf17da6baa7.js"},Znkb:function(t,e,n){n("Tghj").__DEV__;var i=n("ProS"),r=n("zTMp"),o=i.extendComponentView({type:"axis",_axisPointer:null,axisPointerClass:null,render:function(t,e,n,i){this.axisPointerClass&&r.fixValue(t),o.superApply(this,"render",arguments),s(this,t,e,n,i,!0)},updateAxisPointer:function(t,e,n,i,r){s(this,t,e,n,i,!1)},remove:function(t,e){var n=this._axisPointer;n&&n.remove(e),o.superApply(this,"remove",arguments)},dispose:function(t,e){a(this,e),o.superApply(this,"dispose",arguments)}});function s(t,e,n,i,s,l){var c=o.getAxisPointerClass(t.axisPointerClass);if(c){var u=r.getAxisPointerModel(e);u?(t._axisPointer||(t._axisPointer=new c)).render(e,u,i,l):a(t,i)}}function a(t,e,n){var i=t._axisPointer;i&&i.dispose(e,n),t._axisPointer=null}var l=[];o.registerAxisPointerClass=function(t,e){l[t]=e},o.getAxisPointerClass=function(t){return t&&l[t]};var c=o;t.exports=c},ZvBk:function(t,e,n){t.exports=n.p+"b731b483b53dbc1af3e329d34b819ef9.js"},a0X8:function(t,e,n){t.exports=n.p+"504a0846d6283cc54c7ea6fe9984f737.js"},a1dt:function(t,e,n){t.exports=n.p+"4cbd6f8a4f52821c1d3476139078797d.js"},aKBX:function(t,e,n){"use strict";(function(e,i){var r;t.exports=A,A.ReadableState=S;n("+qE3").EventEmitter;var o=function(t,e){return t.listeners(e).length},s=n("An3H");const a=n("tjlA").Buffer,l=(void 0!==e?e:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{}).Uint8Array||function(){};const c=n(3);let u;u=c&&c.debuglog?c.debuglog("stream"):function(){};const h=n("txxU"),d=n("rAwC"),f=n("TSgA").getHighWaterMark,p=n("kFRM").codes,g=p.ERR_INVALID_ARG_TYPE,m=p.ERR_STREAM_PUSH_AFTER_EOF,v=p.ERR_METHOD_NOT_IMPLEMENTED,b=p.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;let y,w,x;n("P7XM")(A,s);const _=d.errorOrDestroy,M=["error","close","destroy","pause","resume"];function S(t,e,i){r=r||n("iKJY"),t=t||{},"boolean"!=typeof i&&(i=e instanceof r),this.objectMode=!!t.objectMode,i&&(this.objectMode=this.objectMode||!!t.readableObjectMode),this.highWaterMark=f(this,t,"readableHighWaterMark",i),this.buffer=new h,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=!1!==t.emitClose,this.autoDestroy=!!t.autoDestroy,this.destroyed=!1,this.defaultEncoding=t.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,t.encoding&&(y||(y=n("qiJe").StringDecoder),this.decoder=new y(t.encoding),this.encoding=t.encoding)}function A(t){if(r=r||n("iKJY"),!(this instanceof A))return new A(t);const e=this instanceof r;this._readableState=new S(t,this,e),this.readable=!0,t&&("function"==typeof t.read&&(this._read=t.read),"function"==typeof t.destroy&&(this._destroy=t.destroy)),s.call(this)}function k(t,e,n,i,r){u("readableAddChunk",e);var o,s=t._readableState;if(null===e)s.reading=!1,function(t,e){if(u("onEofChunk"),e.ended)return;if(e.decoder){var n=e.decoder.end();n&&n.length&&(e.buffer.push(n),e.length+=e.objectMode?1:n.length)}e.ended=!0,e.sync?E(t):(e.needReadable=!1,e.emittedReadable||(e.emittedReadable=!0,R(t)))}(t,s);else if(r||(o=function(t,e){var n;i=e,a.isBuffer(i)||i instanceof l||"string"==typeof e||void 0===e||t.objectMode||(n=new g("chunk",["string","Buffer","Uint8Array"],e));var i;return n}(s,e)),o)_(t,o);else if(s.objectMode||e&&e.length>0)if("string"==typeof e||s.objectMode||Object.getPrototypeOf(e)===a.prototype||(e=function(t){return a.from(t)}(e)),i)s.endEmitted?_(t,new b):C(t,s,e,!0);else if(s.ended)_(t,new m);else{if(s.destroyed)return!1;s.reading=!1,s.decoder&&!n?(e=s.decoder.write(e),s.objectMode||0!==e.length?C(t,s,e,!1):L(t,s)):C(t,s,e,!1)}else i||(s.reading=!1,L(t,s));return!s.ended&&(s.lengthe.highWaterMark&&(e.highWaterMark=function(t){return t>=1073741824?t=1073741824:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}function E(t){var e=t._readableState;u("emitReadable",e.needReadable,e.emittedReadable),e.needReadable=!1,e.emittedReadable||(u("emitReadable",e.flowing),e.emittedReadable=!0,i.nextTick(R,t))}function R(t){var e=t._readableState;u("emitReadable_",e.destroyed,e.length,e.ended),e.destroyed||!e.length&&!e.ended||(t.emit("readable"),e.emittedReadable=!1),e.needReadable=!e.flowing&&!e.ended&&e.length<=e.highWaterMark,D(t)}function L(t,e){e.readingMore||(e.readingMore=!0,i.nextTick(I,t,e))}function I(t,e){for(;!e.reading&&!e.ended&&(e.length0,e.resumeScheduled&&!e.paused?e.flowing=!0:t.listenerCount("data")>0&&t.resume()}function $(t){u("readable nexttick read 0"),t.read(0)}function P(t,e){u("resume",e.reading),e.reading||t.read(0),e.resumeScheduled=!1,t.emit("resume"),D(t),e.flowing&&!e.reading&&t.read(0)}function D(t){const e=t._readableState;for(u("flow",e.flowing);e.flowing&&null!==t.read(););}function B(t,e){return 0===e.length?null:(e.objectMode?n=e.buffer.shift():!t||t>=e.length?(n=e.decoder?e.buffer.join(""):1===e.buffer.length?e.buffer.first():e.buffer.concat(e.length),e.buffer.clear()):n=e.buffer.consume(t,e.decoder),n);var n}function N(t){var e=t._readableState;u("endReadable",e.endEmitted),e.endEmitted||(e.ended=!0,i.nextTick(F,e,t))}function F(t,e){if(u("endReadableNT",t.endEmitted,t.length),!t.endEmitted&&0===t.length&&(t.endEmitted=!0,e.readable=!1,e.emit("end"),t.autoDestroy)){const t=e._writableState;(!t||t.autoDestroy&&t.finished)&&e.destroy()}}function j(t,e){for(var n=0,i=t.length;n=e.highWaterMark:e.length>0)||e.ended))return u("read: emitReadable",e.length,e.ended),0===e.length&&e.ended?N(this):E(this),null;if(0===(t=T(t,e))&&e.ended)return 0===e.length&&N(this),null;var i,r=e.needReadable;return u("need readable",r),(0===e.length||e.length-t0?B(t,e):null)?(e.needReadable=e.length<=e.highWaterMark,t=0):(e.length-=t,e.awaitDrain=0),0===e.length&&(e.ended||(e.needReadable=!0),n!==t&&e.ended&&N(this)),null!==i&&this.emit("data",i),i},A.prototype._read=function(t){_(this,new v("_read()"))},A.prototype.pipe=function(t,e){var n=this,r=this._readableState;switch(r.pipesCount){case 0:r.pipes=t;break;case 1:r.pipes=[r.pipes,t];break;default:r.pipes.push(t)}r.pipesCount+=1,u("pipe count=%d opts=%j",r.pipesCount,e);var s=(!e||!1!==e.end)&&t!==i.stdout&&t!==i.stderr?l:m;function a(e,i){u("onunpipe"),e===n&&i&&!1===i.hasUnpiped&&(i.hasUnpiped=!0,u("cleanup"),t.removeListener("close",p),t.removeListener("finish",g),t.removeListener("drain",c),t.removeListener("error",f),t.removeListener("unpipe",a),n.removeListener("end",l),n.removeListener("end",m),n.removeListener("data",d),h=!0,!r.awaitDrain||t._writableState&&!t._writableState.needDrain||c())}function l(){u("onend"),t.end()}r.endEmitted?i.nextTick(s):n.once("end",s),t.on("unpipe",a);var c=function(t){return function(){var e=t._readableState;u("pipeOnDrain",e.awaitDrain),e.awaitDrain&&e.awaitDrain--,0===e.awaitDrain&&o(t,"data")&&(e.flowing=!0,D(t))}}(n);t.on("drain",c);var h=!1;function d(e){u("ondata");var i=t.write(e);u("dest.write",i),!1===i&&((1===r.pipesCount&&r.pipes===t||r.pipesCount>1&&-1!==j(r.pipes,t))&&!h&&(u("false write response, pause",r.awaitDrain),r.awaitDrain++),n.pause())}function f(e){u("onerror",e),m(),t.removeListener("error",f),0===o(t,"error")&&_(t,e)}function p(){t.removeListener("finish",g),m()}function g(){u("onfinish"),t.removeListener("close",p),m()}function m(){u("unpipe"),n.unpipe(t)}return n.on("data",d),function(t,e,n){if("function"==typeof t.prependListener)return t.prependListener(e,n);t._events&&t._events[e]?Array.isArray(t._events[e])?t._events[e].unshift(n):t._events[e]=[n,t._events[e]]:t.on(e,n)}(t,"error",f),t.once("close",p),t.once("finish",g),t.emit("pipe",n),r.flowing||(u("pipe resume"),n.resume()),t},A.prototype.unpipe=function(t){var e=this._readableState,n={hasUnpiped:!1};if(0===e.pipesCount)return this;if(1===e.pipesCount)return t&&t!==e.pipes||(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this,n)),this;if(!t){var i=e.pipes,r=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var o=0;o0,!1!==r.flowing&&this.resume()):"readable"===t&&(r.endEmitted||r.readableListening||(r.readableListening=r.needReadable=!0,r.flowing=!1,r.emittedReadable=!1,u("on readable",r.length,r.reading),r.length?E(this):r.reading||i.nextTick($,this))),n},A.prototype.addListener=A.prototype.on,A.prototype.removeListener=function(t,e){const n=s.prototype.removeListener.call(this,t,e);return"readable"===t&&i.nextTick(O,this),n},A.prototype.removeAllListeners=function(t){const e=s.prototype.removeAllListeners.apply(this,arguments);return"readable"!==t&&void 0!==t||i.nextTick(O,this),e},A.prototype.resume=function(){var t=this._readableState;return t.flowing||(u("resume"),t.flowing=!t.readableListening,function(t,e){e.resumeScheduled||(e.resumeScheduled=!0,i.nextTick(P,t,e))}(this,t)),t.paused=!1,this},A.prototype.pause=function(){return u("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(u("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this},A.prototype.wrap=function(t){var e=this._readableState,n=!1;for(var i in t.on("end",()=>{if(u("wrapped end"),e.decoder&&!e.ended){var t=e.decoder.end();t&&t.length&&this.push(t)}this.push(null)}),t.on("data",i=>{(u("wrapped data"),e.decoder&&(i=e.decoder.write(i)),e.objectMode&&null==i)||(e.objectMode||i&&i.length)&&(this.push(i)||(n=!0,t.pause()))}),t)void 0===this[i]&&"function"==typeof t[i]&&(this[i]=function(e){return function(){return t[e].apply(t,arguments)}}(i));for(var r=0;r{u("wrapped _read",e),n&&(n=!1,t.resume())},this},"function"==typeof Symbol&&(A.prototype[Symbol.asyncIterator]=function(){return void 0===w&&(w=n("YCz1")),w(this)}),Object.defineProperty(A.prototype,"readableHighWaterMark",{enumerable:!1,get:function(){return this._readableState.highWaterMark}}),Object.defineProperty(A.prototype,"readableBuffer",{enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}}),Object.defineProperty(A.prototype,"readableFlowing",{enumerable:!1,get:function(){return this._readableState.flowing},set:function(t){this._readableState&&(this._readableState.flowing=t)}}),A._fromList=B,Object.defineProperty(A.prototype,"readableLength",{enumerable:!1,get(){return this._readableState.length}}),"function"==typeof Symbol&&(A.from=function(t,e){return void 0===x&&(x=n("0rKm")),x(A,t,e)})}).call(this,n("yLpj"),n("8oxB"))},aKvl:function(t,e,n){var i=n("Sj9i").quadraticProjectPoint;e.containStroke=function(t,e,n,r,o,s,a,l,c){if(0===a)return!1;var u=a;return!(c>e+u&&c>r+u&&c>s+u||ct+u&&l>n+u&&l>o+u||l0&&d>0&&!p&&(l=0),l<0&&d<0&&!g&&(d=0));var m=e.ecModel;if(m&&"time"===s){var v,b=c("bar",m);if(i.each(b,(function(t){v|=t.getBaseAxis()===e.axis})),v){var y=u(b),w=function(t,e,n,r){var o=n.axis.getExtent(),s=o[1]-o[0],a=h(r,n.axis);if(void 0===a)return{min:t,max:e};var l=1/0;i.each(a,(function(t){l=Math.min(t.offset,l)}));var c=-1/0;i.each(a,(function(t){c=Math.max(t.offset+t.width,c)})),l=Math.abs(l),c=Math.abs(c);var u=l+c,d=e-t,f=d/(1-(l+c)/s)-d;return{min:t-=f*(l/u),max:e+=f*(c/u)}}(l,d,e,y);l=w.min,d=w.max}}return{extent:[l,d],fixMin:p,fixMax:g}}function p(t){var e,n=t.getLabelModel().get("formatter"),i="category"===t.type?t.scale.getExtent()[0]:null;return"string"==typeof n?(e=n,n=function(n){return n=t.scale.getLabel(n),e.replace("{value}",null!=n?n:"")}):"function"==typeof n?function(e,r){return null!=i&&(r=e-i),n(g(t,e),r)}:function(e){return t.scale.getLabel(e)}}function g(t,e){return"category"===t.type?t.scale.getLabel(e):e}function m(t){var e=t.get("interval");return null==e?"auto":e}n("IWp7"),n("jCoz"),e.getScaleExtent=f,e.niceScaleExtent=function(t,e){var n=f(t,e),i=n.extent,r=e.get("splitNumber");"log"===t.type&&(t.base=e.get("logBase"));var o=t.type;t.setExtent(i[0],i[1]),t.niceExtent({splitNumber:r,fixMin:n.fixMin,fixMax:n.fixMax,minInterval:"interval"===o||"time"===o?e.get("minInterval"):null,maxInterval:"interval"===o||"time"===o?e.get("maxInterval"):null});var s=e.get("interval");null!=s&&t.setInterval&&t.setInterval(s)},e.createScaleByModel=function(t,e){if(e=e||t.get("type"))switch(e){case"category":return new r(t.getOrdinalMeta?t.getOrdinalMeta():t.getCategories(),[1/0,-1/0]);case"value":return new o;default:return(s.getClass(e)||o).create(t)}},e.ifAxisCrossZero=function(t){var e=t.scale.getExtent(),n=e[0],i=e[1];return!(n>0&&i>0||n<0&&i<0)},e.makeLabelFormatter=p,e.getAxisRawValue=g,e.estimateLabelUnionRect=function(t){var e=t.model,n=t.scale;if(e.get("axisLabel.show")&&!n.isBlank()){var i,r,o="category"===t.type,s=n.getExtent();r=o?n.count():(i=n.getTicks()).length;var a,l,c,u,h,f,g,m,v,b=t.getLabelModel(),y=p(t),w=1;r>40&&(w=Math.ceil(r/40));for(var x=0;xn.blockIndex?n.step:null,o=i&&i.modDataCount;return{step:r,modBy:null!=o?Math.ceil(o/r):null,modDataCount:o}}},g.getPipeline=function(t){return this._pipelineMap.get(t)},g.updateStreamModes=function(t,e){var n=this._pipelineMap.get(t.uid),i=t.getData().count(),r=n.progressiveEnabled&&e.incrementalPrepareRender&&i>=n.threshold,o=t.get("large")&&i>=t.get("largeThreshold"),s="mod"===t.get("progressiveChunkMode")?i:null;t.pipelineContext=n.context={progressiveRender:r,modDataCount:s,large:o}},g.restorePipelines=function(t){var e=this,n=e._pipelineMap=a();t.eachSeries((function(t){var i=t.getProgressive(),r=t.uid;n.set(r,{id:r,head:null,tail:null,threshold:t.getProgressiveThreshold(),progressiveEnabled:i&&!(t.preventIncremental&&t.preventIncremental()),blockIndex:-1,step:Math.round(i||700),count:0}),C(e,t,t.dataTask)}))},g.prepareStageTasks=function(){var t=this._stageTaskMap,e=this.ecInstance.getModel(),n=this.api;r(this._allHandlers,(function(i){var o=t.get(i.uid)||t.set(i.uid,[]);i.reset&&function(t,e,n,i,r){var o=n.seriesTaskMap||(n.seriesTaskMap=a()),s=e.seriesType,l=e.getTargetSeries;e.createOnAllSeries?i.eachRawSeries(u):s?i.eachRawSeriesByType(s,u):l&&l(i,r).each(u);function u(n){var s=n.uid,a=o.get(s)||o.set(s,c({plan:_,reset:M,count:k}));a.context={model:n,ecModel:i,api:r,useClearVisual:e.isVisual&&!e.isLayout,plan:e.plan,reset:e.reset,scheduler:t},C(t,n,a)}var h=t._pipelineMap;o.each((function(t,e){h.get(e)||(t.dispose(),o.removeKey(e))}))}(this,i,o,e,n),i.overallReset&&function(t,e,n,i,o){var s=n.overallTask=n.overallTask||c({reset:b});s.context={ecModel:i,api:o,overallReset:e.overallReset,scheduler:t};var l=s.agentStubMap=s.agentStubMap||a(),u=e.seriesType,h=e.getTargetSeries,d=!0,f=e.modifyOutputEnd;u?i.eachRawSeriesByType(u,p):h?h(i,o).each(p):(d=!1,r(i.getSeries(),p));function p(e){var n=e.uid,i=l.get(n);i||(i=l.set(n,c({reset:y,onDirty:x})),s.dirty()),i.context={model:e,overallProgress:d,modifyOutputEnd:f},i.agent=s,i.__block=d,C(t,e,i)}var g=t._pipelineMap;l.each((function(t,e){g.get(e)||(t.dispose(),s.dirty(),l.removeKey(e))}))}(this,i,o,e,n)}),this)},g.prepareView=function(t,e,n,i){var r=t.renderTask,o=r.context;o.model=e,o.ecModel=n,o.api=i,r.__block=!t.incrementalPrepareRender,C(this,e,r)},g.performDataProcessorTasks=function(t,e){m(this,this._dataProcessorHandlers,t,e,{block:!0})},g.performVisualTasks=function(t,e,n){m(this,this._visualHandlers,t,e,n)},g.performSeriesTasks=function(t){var e;t.eachSeries((function(t){e|=t.dataTask.perform()})),this.unfinished|=e},g.plan=function(){this._pipelineMap.each((function(t){var e=t.tail;do{if(e.__block){t.blockIndex=e.__idxInPipeline;break}e=e.getUpstream()}while(e)}))};var v=g.updatePayload=function(t,e){"remain"!==e&&(t.context.payload=e)};function b(t){t.overallReset(t.ecModel,t.api,t.payload)}function y(t,e){return t.overallProgress&&w}function w(){this.agent.dirty(),this.getDownstream().dirty()}function x(){this.agent&&this.agent.dirty()}function _(t){return t.plan&&t.plan(t.model,t.ecModel,t.api,t.payload)}function M(t){t.useClearVisual&&t.data.clearAllVisual();var e=t.resetDefines=f(t.reset(t.model,t.ecModel,t.api,t.payload));return e.length>1?o(e,(function(t,e){return A(e)})):S}var S=A(0);function A(t){return function(e,n){var i=n.data,r=n.resetDefines[t];if(r&&r.dataEach)for(var o=e.start;o=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(e,n,i)}t.exports=s,s.prototype._init=function(t,e,n){var i=t.concat(e).concat(n);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var r=0;r=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(t.concat(n||[])),this._reseed=1},s.prototype.generate=function(t,e,n,i){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");"string"!=typeof e&&(i=n,n=e,e=null),n&&(n=r.toArray(n,i||"hex"),this._update(n));for(var o=[];o.length-1?setImmediate:r.nextTick;v.WritableState=m;var l=Object.create(n("Onz0"));l.inherits=n("P7XM");var c={deprecate:n("t9FE")},u=n("Kqrh"),h=n("9gtR").Buffer,d=(void 0!==i?i:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{}).Uint8Array||function(){};var f,p=n("xMD+");function g(){}function m(t,e){s=s||n("1t2c"),t=t||{};var i=e instanceof s;this.objectMode=!!t.objectMode,i&&(this.objectMode=this.objectMode||!!t.writableObjectMode);var l=t.highWaterMark,c=t.writableHighWaterMark,u=this.objectMode?16:16384;this.highWaterMark=l||0===l?l:i&&(c||0===c)?c:u,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var h=!1===t.decodeStrings;this.decodeStrings=!h,this.defaultEncoding=t.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(t){!function(t,e){var n=t._writableState,i=n.sync,o=n.writecb;if(function(t){t.writing=!1,t.writecb=null,t.length-=t.writelen,t.writelen=0}(n),e)!function(t,e,n,i,o){--e.pendingcb,n?(r.nextTick(o,i),r.nextTick(M,t,e),t._writableState.errorEmitted=!0,t.emit("error",i)):(o(i),t._writableState.errorEmitted=!0,t.emit("error",i),M(t,e))}(t,n,i,e,o);else{var s=x(n);s||n.corked||n.bufferProcessing||!n.bufferedRequest||w(t,n),i?a(y,t,n,s,o):y(t,n,s,o)}}(e,t)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new o(this)}function v(t){if(s=s||n("1t2c"),!(f.call(v,this)||this instanceof s))return new v(t);this._writableState=new m(t,this),this.writable=!0,t&&("function"==typeof t.write&&(this._write=t.write),"function"==typeof t.writev&&(this._writev=t.writev),"function"==typeof t.destroy&&(this._destroy=t.destroy),"function"==typeof t.final&&(this._final=t.final)),u.call(this)}function b(t,e,n,i,r,o,s){e.writelen=i,e.writecb=s,e.writing=!0,e.sync=!0,n?t._writev(r,e.onwrite):t._write(r,o,e.onwrite),e.sync=!1}function y(t,e,n,i){n||function(t,e){0===e.length&&e.needDrain&&(e.needDrain=!1,t.emit("drain"))}(t,e),e.pendingcb--,i(),M(t,e)}function w(t,e){e.bufferProcessing=!0;var n=e.bufferedRequest;if(t._writev&&n&&n.next){var i=e.bufferedRequestCount,r=new Array(i),s=e.corkedRequestsFree;s.entry=n;for(var a=0,l=!0;n;)r[a]=n,n.isBuf||(l=!1),n=n.next,a+=1;r.allBuffers=l,b(t,e,!0,e.length,r,"",s.finish),e.pendingcb++,e.lastBufferedRequest=null,s.next?(e.corkedRequestsFree=s.next,s.next=null):e.corkedRequestsFree=new o(e),e.bufferedRequestCount=0}else{for(;n;){var c=n.chunk,u=n.encoding,h=n.callback;if(b(t,e,!1,e.objectMode?1:c.length,c,u,h),n=n.next,e.bufferedRequestCount--,e.writing)break}null===n&&(e.lastBufferedRequest=null)}e.bufferedRequest=n,e.bufferProcessing=!1}function x(t){return t.ending&&0===t.length&&null===t.bufferedRequest&&!t.finished&&!t.writing}function _(t,e){t._final((function(n){e.pendingcb--,n&&t.emit("error",n),e.prefinished=!0,t.emit("prefinish"),M(t,e)}))}function M(t,e){var n=x(e);return n&&(!function(t,e){e.prefinished||e.finalCalled||("function"==typeof t._final?(e.pendingcb++,e.finalCalled=!0,r.nextTick(_,t,e)):(e.prefinished=!0,t.emit("prefinish")))}(t,e),0===e.pendingcb&&(e.finished=!0,t.emit("finish"))),n}l.inherits(v,u),m.prototype.getBuffer=function(){for(var t=this.bufferedRequest,e=[];t;)e.push(t),t=t.next;return e},function(){try{Object.defineProperty(m.prototype,"buffer",{get:c.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(t){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(f=Function.prototype[Symbol.hasInstance],Object.defineProperty(v,Symbol.hasInstance,{value:function(t){return!!f.call(this,t)||this===v&&(t&&t._writableState instanceof m)}})):f=function(t){return t instanceof this},v.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},v.prototype.write=function(t,e,n){var i,o=this._writableState,s=!1,a=!o.objectMode&&(i=t,h.isBuffer(i)||i instanceof d);return a&&!h.isBuffer(t)&&(t=function(t){return h.from(t)}(t)),"function"==typeof e&&(n=e,e=null),a?e="buffer":e||(e=o.defaultEncoding),"function"!=typeof n&&(n=g),o.ended?function(t,e){var n=new Error("write after end");t.emit("error",n),r.nextTick(e,n)}(this,n):(a||function(t,e,n,i){var o=!0,s=!1;return null===n?s=new TypeError("May not write null values to stream"):"string"==typeof n||void 0===n||e.objectMode||(s=new TypeError("Invalid non-string/buffer chunk")),s&&(t.emit("error",s),r.nextTick(i,s),o=!1),o}(this,o,t,n))&&(o.pendingcb++,s=function(t,e,n,i,r,o){if(!n){var s=function(t,e,n){t.objectMode||!1===t.decodeStrings||"string"!=typeof e||(e=h.from(e,n));return e}(e,i,r);i!==s&&(n=!0,r="buffer",i=s)}var a=e.objectMode?1:i.length;e.length+=a;var l=e.length-1))throw new TypeError("Unknown encoding: "+t);return this._writableState.defaultEncoding=t,this},Object.defineProperty(v.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),v.prototype._write=function(t,e,n){n(new Error("_write() is not implemented"))},v.prototype._writev=null,v.prototype.end=function(t,e,n){var i=this._writableState;"function"==typeof t?(n=t,t=null,e=null):"function"==typeof e&&(n=e,e=null),null!=t&&this.write(t,e),i.corked&&(i.corked=1,this.uncork()),i.ending||function(t,e,n){e.ending=!0,M(t,e),n&&(e.finished?r.nextTick(n):t.once("finish",n));e.ended=!0,t.writable=!1}(this,i,n)},Object.defineProperty(v.prototype,"destroyed",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(t){this._writableState&&(this._writableState.destroyed=t)}}),v.prototype.destroy=p.destroy,v.prototype._undestroy=p.undestroy,v.prototype._destroy=function(t,e){this.end(),e(t)}}).call(this,n("8oxB"),n("yLpj"))},b1Mk:function(t,e,n){t.exports=n.p+"6644246324f760500a6a905d4957a559.js"},b4LW:function(t,e,n){"use strict";(function(t){var i=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0}),e.getLength=e.decode=e.encode=void 0;var r=i(n("OZ/i"));function o(t,e){if("0"===t[0]&&"0"===t[1])throw new Error("invalid RLP: extra zeros");return parseInt(t,e)}function s(e,n){if(e<56)return t.from([e+n]);var i=l(e),r=l(n+55+i.length/2);return t.from(r+i,"hex")}function a(t){return"0x"===t.slice(0,2)}function l(t){if(t<0)throw new Error("Invalid integer as argument, must be unsigned!");var e=t.toString(16);return e.length%2?"0"+e:e}function c(e){if(!t.isBuffer(e)){if("string"==typeof e)return a(e)?t.from((i="string"!=typeof(o=e)?o:a(o)?o.slice(2):o).length%2?"0"+i:i,"hex"):t.from(e);if("number"==typeof e||"bigint"==typeof e)return e?(n=l(e),t.from(n,"hex")):t.from([]);if(null==e)return t.from([]);if(e instanceof Uint8Array)return t.from(e);if(r.default.isBN(e))return t.from(e.toArray());throw new Error("invalid type")}var n,i,o;return e}e.encode=function e(n){if(Array.isArray(n)){for(var i=[],r=0;rn.length)throw new Error("invalid rlp: total length is larger than the data");if(0===(a=n.slice(r,h)).length)throw new Error("invalid rlp, List has a invalid length");for(;a.length;)l=e(a),c.push(l.data),a=l.remainder;return{data:c,remainder:n.slice(h)}}(c(e));if(n)return i;if(0!==i.remainder.length)throw new Error("invalid remainder");return i.data},e.getLength=function(e){if(!e||0===e.length)return t.from([]);var n=c(e),i=n[0];if(i<=127)return n.length;if(i<=183)return i-127;if(i<=191)return i-182;if(i<=247)return i-191;var r=i-246;return r+o(n.slice(1,r).toString("hex"),16)}}).call(this,n("tjlA").Buffer)},b94t:function(t,e){const n=[1,0,32898,0,32906,2147483648,2147516416,2147483648,32907,0,2147483649,0,2147516545,2147483648,32777,2147483648,138,0,136,0,2147516425,0,2147483658,0,2147516555,0,139,2147483648,32905,2147483648,32771,2147483648,32770,2147483648,128,2147483648,32778,0,2147483658,2147483648,2147516545,2147483648,32896,2147483648,2147483649,0,2147516424,2147483648];e.p1600=function(t){for(let e=0;e<24;++e){const i=t[0]^t[10]^t[20]^t[30]^t[40],r=t[1]^t[11]^t[21]^t[31]^t[41],o=t[2]^t[12]^t[22]^t[32]^t[42],s=t[3]^t[13]^t[23]^t[33]^t[43],a=t[4]^t[14]^t[24]^t[34]^t[44],l=t[5]^t[15]^t[25]^t[35]^t[45],c=t[6]^t[16]^t[26]^t[36]^t[46],u=t[7]^t[17]^t[27]^t[37]^t[47],h=t[8]^t[18]^t[28]^t[38]^t[48],d=t[9]^t[19]^t[29]^t[39]^t[49];let f=h^(o<<1|s>>>31),p=d^(s<<1|o>>>31);const g=t[0]^f,m=t[1]^p,v=t[10]^f,b=t[11]^p,y=t[20]^f,w=t[21]^p,x=t[30]^f,_=t[31]^p,M=t[40]^f,S=t[41]^p;f=i^(a<<1|l>>>31),p=r^(l<<1|a>>>31);const A=t[2]^f,k=t[3]^p,C=t[12]^f,T=t[13]^p,E=t[22]^f,R=t[23]^p,L=t[32]^f,I=t[33]^p,O=t[42]^f,$=t[43]^p;f=o^(c<<1|u>>>31),p=s^(u<<1|c>>>31);const P=t[4]^f,D=t[5]^p,B=t[14]^f,N=t[15]^p,F=t[24]^f,j=t[25]^p,U=t[34]^f,z=t[35]^p,H=t[44]^f,W=t[45]^p;f=a^(h<<1|d>>>31),p=l^(d<<1|h>>>31);const V=t[6]^f,q=t[7]^p,G=t[16]^f,Y=t[17]^p,K=t[26]^f,Z=t[27]^p,X=t[36]^f,J=t[37]^p,Q=t[46]^f,tt=t[47]^p;f=c^(i<<1|r>>>31),p=u^(r<<1|i>>>31);const et=t[8]^f,nt=t[9]^p,it=t[18]^f,rt=t[19]^p,ot=t[28]^f,st=t[29]^p,at=t[38]^f,lt=t[39]^p,ct=t[48]^f,ut=t[49]^p,ht=g,dt=m,ft=b<<4|v>>>28,pt=v<<4|b>>>28,gt=y<<3|w>>>29,mt=w<<3|y>>>29,vt=_<<9|x>>>23,bt=x<<9|_>>>23,yt=M<<18|S>>>14,wt=S<<18|M>>>14,xt=A<<1|k>>>31,_t=k<<1|A>>>31,Mt=T<<12|C>>>20,St=C<<12|T>>>20,At=E<<10|R>>>22,kt=R<<10|E>>>22,Ct=I<<13|L>>>19,Tt=L<<13|I>>>19,Et=O<<2|$>>>30,Rt=$<<2|O>>>30,Lt=D<<30|P>>>2,It=P<<30|D>>>2,Ot=B<<6|N>>>26,$t=N<<6|B>>>26,Pt=j<<11|F>>>21,Dt=F<<11|j>>>21,Bt=U<<15|z>>>17,Nt=z<<15|U>>>17,Ft=W<<29|H>>>3,jt=H<<29|W>>>3,Ut=V<<28|q>>>4,zt=q<<28|V>>>4,Ht=Y<<23|G>>>9,Wt=G<<23|Y>>>9,Vt=K<<25|Z>>>7,qt=Z<<25|K>>>7,Gt=X<<21|J>>>11,Yt=J<<21|X>>>11,Kt=tt<<24|Q>>>8,Zt=Q<<24|tt>>>8,Xt=et<<27|nt>>>5,Jt=nt<<27|et>>>5,Qt=it<<20|rt>>>12,te=rt<<20|it>>>12,ee=st<<7|ot>>>25,ne=ot<<7|st>>>25,ie=at<<8|lt>>>24,re=lt<<8|at>>>24,oe=ct<<14|ut>>>18,se=ut<<14|ct>>>18;t[0]=ht^~Mt&Pt,t[1]=dt^~St&Dt,t[10]=Ut^~Qt>,t[11]=zt^~te&mt,t[20]=xt^~Ot&Vt,t[21]=_t^~$t&qt,t[30]=Xt^~ft&At,t[31]=Jt^~pt&kt,t[40]=Lt^~Ht&ee,t[41]=It^~Wt&ne,t[2]=Mt^~Pt&Gt,t[3]=St^~Dt&Yt,t[12]=Qt^~gt&Ct,t[13]=te^~mt&Tt,t[22]=Ot^~Vt&ie,t[23]=$t^~qt&re,t[32]=ft^~At&Bt,t[33]=pt^~kt&Nt,t[42]=Ht^~ee&vt,t[43]=Wt^~ne&bt,t[4]=Pt^~Gt&oe,t[5]=Dt^~Yt&se,t[14]=gt^~Ct&Ft,t[15]=mt^~Tt&jt,t[24]=Vt^~ie&yt,t[25]=qt^~re&wt,t[34]=At^~Bt&Kt,t[35]=kt^~Nt&Zt,t[44]=ee^~vt&Et,t[45]=ne^~bt&Rt,t[6]=Gt^~oe&ht,t[7]=Yt^~se&dt,t[16]=Ct^~Ft&Ut,t[17]=Tt^~jt&zt,t[26]=ie^~yt&xt,t[27]=re^~wt&_t,t[36]=Bt^~Kt&Xt,t[37]=Nt^~Zt&Jt,t[46]=vt^~Et&Lt,t[47]=bt^~Rt&It,t[8]=oe^~ht&Mt,t[9]=se^~dt&St,t[18]=Ft^~Ut&Qt,t[19]=jt^~zt&te,t[28]=yt^~xt&Ot,t[29]=wt^~_t&$t,t[38]=Kt^~Xt&ft,t[39]=Zt^~Jt&pt,t[48]=Et^~Lt&Ht,t[49]=Rt^~It&Wt,t[0]^=n[2*e],t[1]^=n[2*e+1]}}},b9oc:function(t,e,n){var i=n("bYtY").each,r="\0_ec_hist_store";function o(t){var e=t[r];return e||(e=t[r]=[{}]),e}e.push=function(t,e){var n=o(t);i(e,(function(e,i){for(var r=n.length-1;r>=0;r--){if(n[r][i])break}if(r<0){var o=t.queryComponents({mainType:"dataZoom",subType:"select",id:i})[0];if(o){var s=o.getPercentRange();n[0][i]={dataZoomId:i,start:s[0],end:s[1]}}}})),n.push(e)},e.pop=function(t){var e=o(t),n=e[e.length-1];e.length>1&&e.pop();var r={};return i(n,(function(t,n){for(var i=e.length-1;i>=0;i--){if(t=e[i][n]){r[n]=t;break}}})),r},e.clear=function(t){t[r]=null},e.count=function(t){return o(t).length}},bEaQ:function(t,e,n){t.exports=n.p+"2681042a598b029b51d51f7669b81c4d.js"},bJjF:function(t,e,n){t.exports=n.p+"a8fa7ec7cc9e6632aa3cd10be6ed5b5a.js"},bKUr:function(t,e,n){t.exports=n.p+"731a5afa4ad31a0a038e5742b5e98dd7.js"},bLfw:function(t,e,n){var i=n("bYtY"),r=n("Qxkt"),o=n("iRjW"),s=n("Yl7c"),a=s.enableClassManagement,l=s.parseClassType,c=n("4NO4").makeInner,u=n("+TT/"),h=n("3hzK"),d=c(),f=r.extend({type:"component",id:"",name:"",mainType:"",subType:"",componentIndex:0,defaultOption:null,ecModel:null,dependentModels:[],uid:null,layoutMode:null,$constructor:function(t,e,n,i){r.call(this,t,e,n,i),this.uid=o.getUID("ec_cpt_model")},init:function(t,e,n,i){this.mergeDefaultAndTheme(t,n)},mergeDefaultAndTheme:function(t,e){var n=this.layoutMode,r=n?u.getLayoutParams(t):{},o=e.getTheme();i.merge(t,o.get(this.mainType)),i.merge(t,this.getDefaultOption()),n&&u.mergeLayoutParam(t,r,n)},mergeOption:function(t,e){i.merge(this.option,t,!0);var n=this.layoutMode;n&&u.mergeLayoutParam(this.option,t,n)},optionUpdated:function(t,e){},getDefaultOption:function(){var t=d(this);if(!t.defaultOption){for(var e=[],n=this.constructor;n;){var r=n.prototype.defaultOption;r&&e.push(r),n=n.superClass}for(var o={},s=e.length-1;s>=0;s--)o=i.merge(o,e[s],!0);t.defaultOption=o}return t.defaultOption},getReferringComponents:function(t){return this.ecModel.queryComponents({mainType:t,index:this.get(t+"Index",!0),id:this.get(t+"Id",!0)})}});a(f,{registerWhenExtend:!0}),o.enableSubTypeDefaulter(f),o.enableTopologicalTravel(f,(function(t){var e=[];i.each(f.getClassesByMainType(t),(function(t){e=e.concat(t.prototype.dependencies||[])})),e=i.map(e,(function(t){return l(t).main})),"dataset"!==t&&i.indexOf(e,"dataset")<=0&&e.unshift("dataset");return e})),i.mixin(f,h);var p=f;t.exports=p},"bU/s":function(t,e,n){(function(t){!function(){var t=function(){return this}();t||"undefined"==typeof window||(t=window);var e=function(t,n,i){"string"==typeof t?(2==arguments.length&&(i=n),e.modules[t]||(e.payloads[t]=i,e.modules[t]=null)):e.original?e.original.apply(this,arguments):(console.error("dropping module because define wasn't a string."),console.trace())};e.modules={},e.payloads={};var n,i,r=function(t,e,n){if("string"==typeof e){var i=a(t,e);if(null!=i)return n&&n(),i}else if("[object Array]"===Object.prototype.toString.call(e)){for(var r=[],s=0,l=e.length;sthis.length)&&(e=this.length),e-=t.length;var n=this.indexOf(t,e);return-1!==n&&n===e})),String.prototype.repeat||i(String.prototype,"repeat",(function(t){for(var e="",n=this;t>0;)1&t&&(e+=n),(t>>=1)&&(n+=n);return e})),String.prototype.includes||i(String.prototype,"includes",(function(t,e){return-1!=this.indexOf(t,e)})),Object.assign||(Object.assign=function(t){if(null==t)throw new TypeError("Cannot convert undefined or null to object");for(var e=Object(t),n=1;n>>0,i=arguments[1],r=i>>0,o=r<0?Math.max(n+r,0):Math.min(r,n),s=arguments[2],a=void 0===s?n:s>>0,l=a<0?Math.max(n+a,0):Math.min(a,n);o0;)1&e&&(n+=t),(e>>=1)&&(t+=t);return n};var i=/^\s\s*/,r=/\s\s*$/;e.stringTrimLeft=function(t){return t.replace(i,"")},e.stringTrimRight=function(t){return t.replace(r,"")},e.copyObject=function(t){var e={};for(var n in t)e[n]=t[n];return e},e.copyArray=function(t){for(var e=[],n=0,i=t.length;n=0?parseFloat((o.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]):parseFloat((o.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]),e.isOldIE=e.isIE&&e.isIE<9,e.isGecko=e.isMozilla=o.match(/ Gecko\/\d+/),e.isOpera="object"==typeof opera&&"[object Opera]"==Object.prototype.toString.call(window.opera),e.isWebKit=parseFloat(o.split("WebKit/")[1])||void 0,e.isChrome=parseFloat(o.split(" Chrome/")[1])||void 0,e.isEdge=parseFloat(o.split(" Edge/")[1])||void 0,e.isAIR=o.indexOf("AdobeAIR")>=0,e.isAndroid=o.indexOf("Android")>=0,e.isChromeOS=o.indexOf(" CrOS ")>=0,e.isIOS=/iPad|iPhone|iPod/.test(o)&&!window.MSStream,e.isIOS&&(e.isMac=!0),e.isMobile=e.isIOS||e.isAndroid})),ace.define("ace/lib/dom",["require","exports","module","ace/lib/useragent"],(function(t,e,n){"use strict";var i,r=t("./useragent");e.buildDom=function t(e,n,i){if("string"==typeof e&&e){var r=document.createTextNode(e);return n&&n.appendChild(r),r}if(!Array.isArray(e))return e&&e.appendChild&&n&&n.appendChild(e),e;if("string"!=typeof e[0]||!e[0]){for(var o=[],s=0;s=1.5,r.isChromeOS&&(e.HI_DPI=!1),"undefined"!=typeof document){var l=document.createElement("div");e.HI_DPI&&void 0!==l.style.transform&&(e.HAS_CSS_TRANSFORMS=!0),r.isEdge||void 0===l.style.animationName||(e.HAS_CSS_ANIMATION=!0),l=null}e.HAS_CSS_TRANSFORMS?e.translate=function(t,e,n){t.style.transform="translate("+Math.round(e)+"px, "+Math.round(n)+"px)"}:e.translate=function(t,e,n){t.style.top=Math.round(n)+"px",t.style.left=Math.round(e)+"px"}})),ace.define("ace/lib/net",["require","exports","module","ace/lib/dom"],(function(t,e,n){ +/* + * based on code from: + * + * @license RequireJS text 0.25.0 Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved. + * Available via the MIT or new BSD license. + * see: http://github.com/jrburke/requirejs for details + */ +"use strict";var i=t("./dom");e.get=function(t,e){var n=new XMLHttpRequest;n.open("GET",t,!0),n.onreadystatechange=function(){4===n.readyState&&e(n.responseText)},n.send(null)},e.loadScript=function(t,e){var n=i.getDocumentHead(),r=document.createElement("script");r.src=t,n.appendChild(r),r.onload=r.onreadystatechange=function(t,n){!n&&r.readyState&&"loaded"!=r.readyState&&"complete"!=r.readyState||(r=r.onload=r.onreadystatechange=null,n||e())}},e.qualifyURL=function(t){var e=document.createElement("a");return e.href=t,e.href}})),ace.define("ace/lib/event_emitter",["require","exports","module"],(function(t,e,n){"use strict";var i={},r=function(){this.propagationStopped=!0},o=function(){this.defaultPrevented=!0};i._emit=i._dispatchEvent=function(t,e){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var n=this._eventRegistry[t]||[],i=this._defaultHandlers[t];if(n.length||i){"object"==typeof e&&e||(e={}),e.type||(e.type=t),e.stopPropagation||(e.stopPropagation=r),e.preventDefault||(e.preventDefault=o),n=n.slice();for(var s=0;s1&&(r=n[n.length-2]);var s=a[e+"Path"];return null==s?s=a.basePath:"/"==i&&(e=i=""),s&&"/"!=s.slice(-1)&&(s+="/"),s+e+i+r+this.get("suffix")},e.setModuleUrl=function(t,e){return a.$moduleUrls[t]=e};var l=function(e,n){return"ace/theme/textmate"===e||"./theme/textmate"===e?n(null,t("./theme/textmate")):console.error("loader is not configured")};e.setLoader=function(t){l=t},e.dynamicModules=Object.create(null),e.$loading={},e.loadModule=function(n,i){var o,s;Array.isArray(n)&&(s=n[0],n=n[1]);var a=function(t){if(t&&!e.$loading[n])return i&&i(t);if(e.$loading[n]||(e.$loading[n]=[]),e.$loading[n].push(i),!(e.$loading[n].length>1)){var o=function(){l(n,(function(t,i){e._emit("load.module",{name:n,module:i});var r=e.$loading[n];e.$loading[n]=null,r.forEach((function(t){t&&t(i)}))}))};if(!e.get("packaged"))return o();r.loadScript(e.moduleUrl(n,s),o),c()}};if(e.dynamicModules[n])e.dynamicModules[n]().then((function(t){t.default?a(t.default):a(t)}));else{try{o=t(n)}catch(t){}a(o)}},e.setModuleLoader=function(t,n){e.dynamicModules[t]=n};var c=function(){a.basePath||a.workerPath||a.modePath||a.themePath||Object.keys(a.$moduleUrls).length||(console.error("Unable to infer path to ace from script src,","use ace.config.set('basePath', 'path') to enable dynamic loading of modes and themes","or with webpack use ace/webpack-resolver"),c=function(){})};e.version="1.15.3"})),ace.define("ace/loader_build",["require","exports","module","ace/lib/fixoldbrowsers","ace/config"],(function(t,e,i){"use strict";t("./lib/fixoldbrowsers");var r=t("./config");r.setLoader((function(e,n){t([e],(function(t){n(null,t)}))}));var o=function(){return this||"undefined"!=typeof window&&window}();function s(e){if(o&&o.document){r.set("packaged",e||t.packaged||i.packaged||o.define&&n("B9Yq").packaged);var s={},a="",l=document.currentScript||document._currentScript,c=l&&l.ownerDocument||document;l&&l.src&&(a=l.src.split(/[?#]/)[0].split("/").slice(0,-1).join("/")||"");for(var u,h=c.getElementsByTagName("script"),d=0;d1?++h>4&&(h=1):h=1,o.isIE){var s=Math.abs(t.clientX-a)>5||Math.abs(t.clientY-l)>5;c&&!s||(h=1),c&&clearTimeout(c),c=setTimeout((function(){c=null}),n[h-1]||600),1==h&&(a=t.clientX,l=t.clientY)}if(t._clicks=h,i[r]("mousedown",t),h>4)h=0;else if(h>1)return i[r](d[h],t)}Array.isArray(t)||(t=[t]),t.forEach((function(t){u(t,"mousedown",f,s)}))};var d=function(t){return 0|(t.ctrlKey?1:0)|(t.altKey?2:0)|(t.shiftKey?4:0)|(t.metaKey?8:0)};function f(t,e,n){var i=d(e);if(!o.isMac&&s){if(e.getModifierState&&(e.getModifierState("OS")||e.getModifierState("Win"))&&(i|=8),s.altGr){if(3==(3&i))return;s.altGr=0}if(18===n||17===n){var l="location"in e?e.location:e.keyLocation;if(17===n&&1===l)1==s[n]&&(a=e.timeStamp);else if(18===n&&3===i&&2===l){e.timeStamp-a<50&&(s.altGr=!0)}}}if((n in r.MODIFIER_KEYS&&(n=-1),!i&&13===n)&&(3===(l="location"in e?e.location:e.keyLocation)&&(t(e,i,-n),e.defaultPrevented)))return;if(o.isChromeOS&&8&i){if(t(e,i,n),e.defaultPrevented)return;i&=-9}return!!(i||n in r.FUNCTION_KEYS||n in r.PRINTABLE_KEYS)&&t(e,i,n)}function p(){s=Object.create(null)}if(e.getModifierString=function(t){return r.KEY_MODS[d(t)]},e.addCommandKeyListener=function(t,n,i){if(o.isOldGecko||o.isOpera&&!("KeyboardEvent"in window)){var r=null;u(t,"keydown",(function(t){r=t.keyCode}),i),u(t,"keypress",(function(t){return f(n,t,r)}),i)}else{var a=null;u(t,"keydown",(function(t){s[t.keyCode]=(s[t.keyCode]||0)+1;var e=f(n,t,t.keyCode);return a=t.defaultPrevented,e}),i),u(t,"keypress",(function(t){a&&(t.ctrlKey||t.altKey||t.shiftKey||t.metaKey)&&(e.stopEvent(t),a=null)}),i),u(t,"keyup",(function(t){s[t.keyCode]=null}),i),s||(p(),u(window,"focus",p))}},"object"==typeof window&&window.postMessage&&!o.isOldIE){var g=1;e.nextTick=function(t,n){n=n||window;var i="zero-timeout-message-"+g++,r=function(o){o.data==i&&(e.stopPropagation(o),h(n,"message",r),t())};u(n,"message",r),n.postMessage(i,"*")}}e.$idleBlocked=!1,e.onIdle=function(t,n){return setTimeout((function n(){e.$idleBlocked?setTimeout(n,100):t()}),n)},e.$idleBlockId=null,e.blockIdle=function(t){e.$idleBlockId&&clearTimeout(e.$idleBlockId),e.$idleBlocked=!0,e.$idleBlockId=setTimeout((function(){e.$idleBlocked=!1}),t||100)},e.nextFrame="object"==typeof window&&(window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame),e.nextFrame?e.nextFrame=e.nextFrame.bind(window):e.nextFrame=function(t){setTimeout(t,17)}})),ace.define("ace/range",["require","exports","module"],(function(t,e,n){"use strict";var i=function(t,e,n,i){this.start={row:t,column:e},this.end={row:n,column:i}};(function(){this.isEqual=function(t){return this.start.row===t.start.row&&this.end.row===t.end.row&&this.start.column===t.start.column&&this.end.column===t.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(t,e){return 0==this.compare(t,e)},this.compareRange=function(t){var e,n=t.end,i=t.start;return 1==(e=this.compare(n.row,n.column))?1==(e=this.compare(i.row,i.column))?2:0==e?1:0:-1==e?-2:-1==(e=this.compare(i.row,i.column))?-1:1==e?42:0},this.comparePoint=function(t){return this.compare(t.row,t.column)},this.containsRange=function(t){return 0==this.comparePoint(t.start)&&0==this.comparePoint(t.end)},this.intersects=function(t){var e=this.compareRange(t);return-1==e||0==e||1==e},this.isEnd=function(t,e){return this.end.row==t&&this.end.column==e},this.isStart=function(t,e){return this.start.row==t&&this.start.column==e},this.setStart=function(t,e){"object"==typeof t?(this.start.column=t.column,this.start.row=t.row):(this.start.row=t,this.start.column=e)},this.setEnd=function(t,e){"object"==typeof t?(this.end.column=t.column,this.end.row=t.row):(this.end.row=t,this.end.column=e)},this.inside=function(t,e){return 0==this.compare(t,e)&&(!this.isEnd(t,e)&&!this.isStart(t,e))},this.insideStart=function(t,e){return 0==this.compare(t,e)&&!this.isEnd(t,e)},this.insideEnd=function(t,e){return 0==this.compare(t,e)&&!this.isStart(t,e)},this.compare=function(t,e){return this.isMultiLine()||t!==this.start.row?tthis.end.row?1:this.start.row===t?e>=this.start.column?0:-1:this.end.row===t?e<=this.end.column?0:1:0:ethis.end.column?1:0},this.compareStart=function(t,e){return this.start.row==t&&this.start.column==e?-1:this.compare(t,e)},this.compareEnd=function(t,e){return this.end.row==t&&this.end.column==e?1:this.compare(t,e)},this.compareInside=function(t,e){return this.end.row==t&&this.end.column==e?1:this.start.row==t&&this.start.column==e?-1:this.compare(t,e)},this.clipRows=function(t,e){if(this.end.row>e)var n={row:e+1,column:0};else if(this.end.rowe)var r={row:e+1,column:0};else if(this.start.rowDate.now()-50)||(i=!1)},cancel:function(){i=Date.now()}}})),ace.define("ace/keyboard/textinput",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/lib/dom","ace/lib/lang","ace/clipboard","ace/lib/keys"],(function(t,e,n){"use strict";var i=t("../lib/event"),r=t("../lib/useragent"),o=t("../lib/dom"),s=t("../lib/lang"),a=t("../clipboard"),l=r.isChrome<18,c=r.isIE,u=r.isChrome>63,h=t("../lib/keys"),d=h.KEY_MODS,f=r.isIOS,p=f?/\s/:/\n/,g=r.isMobile;e.TextInput=function(t,e){var n=o.createElement("textarea");n.className="ace_text-input",n.setAttribute("wrap","off"),n.setAttribute("autocorrect","off"),n.setAttribute("autocapitalize","off"),n.setAttribute("spellcheck",!1),n.style.opacity="0",t.insertBefore(n,t.firstChild);var m=!1,v=!1,b=!1,y=!1,w="";g||(n.style.fontSize="1px");var x=!1,_=!1,M="",S=0,A=0,k=0;try{var C=document.activeElement===n}catch(t){}this.setAriaOptions=function(t){t.activeDescendant?(n.setAttribute("aria-haspopup","true"),n.setAttribute("aria-autocomplete","list"),n.setAttribute("aria-activedescendant",t.activeDescendant)):(n.setAttribute("aria-haspopup","false"),n.setAttribute("aria-autocomplete","both"),n.removeAttribute("aria-activedescendant")),t.role&&n.setAttribute("role",t.role)},this.setAriaOptions({role:"textbox"}),i.addListener(n,"blur",(function(t){_||(e.onBlur(t),C=!1)}),e),i.addListener(n,"focus",(function(t){if(!_){if(C=!0,r.isEdge)try{if(!document.hasFocus())return}catch(t){}e.onFocus(t),r.isEdge?setTimeout(T):T()}}),e),this.$focusScroll=!1,this.focus=function(){if(w||u||"browser"==this.$focusScroll)return n.focus({preventScroll:!0});var t=n.style.top;n.style.position="fixed",n.style.top="0px";try{var e=0!=n.getBoundingClientRect().top}catch(t){return}var i=[];if(e)for(var r=n.parentElement;r&&1==r.nodeType;)i.push(r),r.setAttribute("ace_nocontext",!0),r=!r.parentElement&&r.getRootNode?r.getRootNode().host:r.parentElement;n.focus({preventScroll:!0}),e&&i.forEach((function(t){t.removeAttribute("ace_nocontext")})),setTimeout((function(){n.style.position="","0px"==n.style.top&&(n.style.top=t)}),0)},this.blur=function(){n.blur()},this.isFocused=function(){return C},e.on("beforeEndOperation",(function(){var t=e.curOp,i=t&&t.command&&t.command.name;if("insertstring"!=i){var r=i&&(t.docChanged||t.selectionChanged);b&&r&&(M=n.value="",F()),T()}}));var T=f?function(t){if(C&&(!m||t)&&!y){t||(t="");var i="\n ab"+t+"cde fg\n";i!=n.value&&(n.value=M=i);var r=4+(t.length||(e.selection.isEmpty()?0:1));4==S&&A==r||n.setSelectionRange(4,r),S=4,A=r}}:function(){if(!b&&!y&&(C||R)){b=!0;var t=0,i=0,r="";if(e.session){var o=e.selection,s=o.getRange(),a=o.cursor.row;if(t=s.start.column,i=s.end.column,r=e.session.getLine(a),s.start.row!=a){var l=e.session.getLine(a-1);t=s.start.rowa+1?c.length:i,i+=r.length+1,r=r+"\n"+c}else g&&a>0&&(r="\n"+r,i+=1,t+=1);r.length>400&&(t<400&&i<400?r=r.slice(0,400):(r="\n",t==i?t=i=0:(t=0,i=1)))}var u=r+"\n\n";if(u!=M&&(n.value=M=u,S=A=u.length),R&&(S=n.selectionStart,A=n.selectionEnd),A!=i||S!=t||n.selectionEnd!=A)try{n.setSelectionRange(t,i),S=t,A=i}catch(t){}b=!1}};this.resetSelection=T,C&&e.onFocus();var E=null;this.setInputHandler=function(t){E=t},this.getInputHandler=function(){return E};var R=!1,L=function(t,i){if(R&&(R=!1),v)return T(),t&&e.onPaste(t),v=!1,"";for(var o=n.selectionStart,s=n.selectionEnd,a=S,l=M.length-A,c=t,u=t.length-o,h=t.length-s,d=0;a>0&&M[d]==t[d];)d++,a--;for(c=c.slice(d),d=1;l>0&&M.length-d>S-1&&M[M.length-d]==t[t.length-d];)d++,l--;u-=d-1,h-=d-1;var f=c.length-d+1;if(f<0&&(a=-f,f=0),c=c.slice(0,f),!(i||c||u||a||l||h))return"";y=!0;var p=!1;return r.isAndroid&&". "==c&&(c=" ",p=!0),c&&!a&&!l&&!u&&!h||x?e.onTextInput(c):e.onTextInput(c,{extendLeft:a,extendRight:l,restoreStart:u,restoreEnd:h}),y=!1,M=t,S=o,A=s,k=h,p?"\n":c},I=function(t){if(b)return N();if(t&&t.inputType){if("historyUndo"==t.inputType)return e.execCommand("undo");if("historyRedo"==t.inputType)return e.execCommand("redo")}var i=n.value,r=L(i,!0);(i.length>500||p.test(r)||g&&S<1&&S==A)&&T()},O=function(t,e,n){var i=t.clipboardData||window.clipboardData;if(i&&!l){var r=c||n?"Text":"text/plain";try{return e?!1!==i.setData(r,e):i.getData(r)}catch(t){if(!n)return O(t,e,!0)}}},$=function(t,r){var o=e.getCopyText();if(!o)return i.preventDefault(t);O(t,o)?(f&&(T(o),m=o,setTimeout((function(){m=!1}),10)),r?e.onCut():e.onCopy(),i.preventDefault(t)):(m=!0,n.value=o,n.select(),setTimeout((function(){m=!1,T(),r?e.onCut():e.onCopy()})))},P=function(t){$(t,!0)},D=function(t){$(t,!1)},B=function(t){var o=O(t);a.pasteCancelled()||("string"==typeof o?(o&&e.onPaste(o,t),r.isIE&&setTimeout(T),i.preventDefault(t)):(n.value="",v=!0))};i.addCommandKeyListener(n,e.onCommandKey.bind(e),e),i.addListener(n,"select",(function(t){b||(m?m=!1:!function(t){return 0===t.selectionStart&&t.selectionEnd>=M.length&&t.value===M&&M&&t.selectionEnd!==A}(n)?g&&n.selectionStart!=S&&T():(e.selectAll(),T()))}),e),i.addListener(n,"input",I,e),i.addListener(n,"cut",P,e),i.addListener(n,"copy",D,e),i.addListener(n,"paste",B,e),"oncut"in n&&"oncopy"in n&&"onpaste"in n||i.addListener(t,"keydown",(function(t){if((!r.isMac||t.metaKey)&&t.ctrlKey)switch(t.keyCode){case 67:D(t);break;case 86:B(t);break;case 88:P(t)}}),e);var N=function(){if(b&&e.onCompositionUpdate&&!e.$readOnly){if(x)return j();if(b.useTextareaForIME)e.onCompositionUpdate(n.value);else{var t=n.value;L(t),b.markerRange&&(b.context&&(b.markerRange.start.column=b.selectionStart=b.context.compositionStartOffset),b.markerRange.end.column=b.markerRange.start.column+A-b.selectionStart+k)}}},F=function(t){e.onCompositionEnd&&!e.$readOnly&&(b=!1,e.onCompositionEnd(),e.off("mousedown",j),t&&I())};function j(){_=!0,n.blur(),n.focus(),_=!1}var U,z=s.delayedCall(N,50).schedule.bind(null,null);function H(){clearTimeout(U),U=setTimeout((function(){w&&(n.style.cssText=w,w=""),e.renderer.$isMousePressed=!1,e.renderer.$keepTextAreaAtCursor&&e.renderer.$moveTextAreaToCursor()}),0)}i.addListener(n,"compositionstart",(function(t){if(!b&&e.onCompositionStart&&!e.$readOnly&&(b={},!x)){t.data&&(b.useTextareaForIME=!1),setTimeout(N,0),e._signal("compositionStart"),e.on("mousedown",j);var i=e.getSelectionRange();i.end.row=i.start.row,i.end.column=i.start.column,b.markerRange=i,b.selectionStart=S,e.onCompositionStart(b),b.useTextareaForIME?(M=n.value="",S=0,A=0):(n.msGetInputContext&&(b.context=n.msGetInputContext()),n.getInputContext&&(b.context=n.getInputContext()))}}),e),i.addListener(n,"compositionupdate",N,e),i.addListener(n,"keyup",(function(t){27==t.keyCode&&n.value.lengthA&&"\n"==M[o]?s=h.end:iA&&M.slice(0,o).split("\n").length>2?s=h.down:o>A&&" "==M[o-1]?(s=h.right,a=d.option):(o>A||o==A&&A!=S&&i==o)&&(s=h.right),i!==o&&(a|=d.shift),s){if(!e.onCommandKey({},a,s)&&e.commands){s=h.keyCodeToString(s);var l=e.commands.findKeyCommand(a,s);l&&e.execCommand(l)}S=i,A=o,T("")}}};document.addEventListener("selectionchange",o),e.on("destroy",(function(){document.removeEventListener("selectionchange",o)}))}(0,e,n),this.destroy=function(){n.parentElement&&n.parentElement.removeChild(n)}},e.$setUserAgentForTests=function(t,e){g=t,f=e}})),ace.define("ace/mouse/default_handlers",["require","exports","module","ace/lib/useragent"],(function(t,e,n){"use strict";var i=t("../lib/useragent");function r(t){t.$clickSelection=null;var e=t.editor;e.setDefaultHandler("mousedown",this.onMouseDown.bind(t)),e.setDefaultHandler("dblclick",this.onDoubleClick.bind(t)),e.setDefaultHandler("tripleclick",this.onTripleClick.bind(t)),e.setDefaultHandler("quadclick",this.onQuadClick.bind(t)),e.setDefaultHandler("mousewheel",this.onMouseWheel.bind(t));["select","startSelect","selectEnd","selectAllEnd","selectByWordsEnd","selectByLinesEnd","dragWait","dragWaitEnd","focusWait"].forEach((function(e){t[e]=this[e]}),this),t.selectByLines=this.extendSelectionBy.bind(t,"getLineRange"),t.selectByWords=this.extendSelectionBy.bind(t,"getWordRange")}function o(t,e){if(t.start.row==t.end.row)var n=2*e.column-t.start.column-t.end.column;else if(t.start.row!=t.end.row-1||t.start.column||t.end.column)n=2*e.row-t.start.row-t.end.row;else var n=e.column-4;return n<0?{cursor:t.start,anchor:t.end}:{cursor:t.end,anchor:t.start}}(function(){this.onMouseDown=function(t){var e=t.inSelection(),n=t.getDocumentPosition();this.mousedownEvent=t;var r=this.editor,o=t.getButton();return 0!==o?((r.getSelectionRange().isEmpty()||1==o)&&r.selection.moveToPosition(n),void(2==o&&(r.textInput.onContextMenu(t.domEvent),i.isMozilla||t.preventDefault()))):(this.mousedownEvent.time=Date.now(),!e||r.isFocused()||(r.focus(),!this.$focusTimeout||this.$clickSelection||r.inMultiSelectMode)?(this.captureMouse(t),this.startSelect(n,t.domEvent._clicks>1),t.preventDefault()):(this.setState("focusWait"),void this.captureMouse(t)))},this.startSelect=function(t,e){t=t||this.editor.renderer.screenToTextCoordinates(this.x,this.y);var n=this.editor;this.mousedownEvent&&(this.mousedownEvent.getShiftKey()?n.selection.selectToPosition(t):e||n.selection.moveToPosition(t),e||this.select(),n.setStyle("ace_selecting"),this.setState("select"))},this.select=function(){var t,e=this.editor,n=e.renderer.screenToTextCoordinates(this.x,this.y);if(this.$clickSelection){var i=this.$clickSelection.comparePoint(n);if(-1==i)t=this.$clickSelection.end;else if(1==i)t=this.$clickSelection.start;else{var r=o(this.$clickSelection,n);n=r.cursor,t=r.anchor}e.selection.setSelectionAnchor(t.row,t.column)}e.selection.selectToPosition(n),e.renderer.scrollCursorIntoView()},this.extendSelectionBy=function(t){var e,n=this.editor,i=n.renderer.screenToTextCoordinates(this.x,this.y),r=n.selection[t](i.row,i.column);if(this.$clickSelection){var s=this.$clickSelection.comparePoint(r.start),a=this.$clickSelection.comparePoint(r.end);if(-1==s&&a<=0)e=this.$clickSelection.end,r.end.row==i.row&&r.end.column==i.column||(i=r.start);else if(1==a&&s>=0)e=this.$clickSelection.start,r.start.row==i.row&&r.start.column==i.column||(i=r.end);else if(-1==s&&1==a)i=r.end,e=r.start;else{var l=o(this.$clickSelection,i);i=l.cursor,e=l.anchor}n.selection.setSelectionAnchor(e.row,e.column)}n.selection.selectToPosition(i),n.renderer.scrollCursorIntoView()},this.selectEnd=this.selectAllEnd=this.selectByWordsEnd=this.selectByLinesEnd=function(){this.$clickSelection=null,this.editor.unsetStyle("ace_selecting")},this.focusWait=function(){var t,e,n,i,r=(t=this.mousedownEvent.x,e=this.mousedownEvent.y,n=this.x,i=this.y,Math.sqrt(Math.pow(n-t,2)+Math.pow(i-e,2))),o=Date.now();(r>0||o-this.mousedownEvent.time>this.$focusTimeout)&&this.startSelect(this.mousedownEvent.getDocumentPosition())},this.onDoubleClick=function(t){var e=t.getDocumentPosition(),n=this.editor,i=n.session.getBracketRange(e);i?(i.isEmpty()&&(i.start.column--,i.end.column++),this.setState("select")):(i=n.selection.getWordRange(e.row,e.column),this.setState("selectByWords")),this.$clickSelection=i,this.select()},this.onTripleClick=function(t){var e=t.getDocumentPosition(),n=this.editor;this.setState("selectByLines");var i=n.getSelectionRange();i.isMultiLine()&&i.contains(e.row,e.column)?(this.$clickSelection=n.selection.getLineRange(i.start.row),this.$clickSelection.end=n.selection.getLineRange(i.end.row).end):this.$clickSelection=n.selection.getLineRange(e.row),this.select()},this.onQuadClick=function(t){var e=this.editor;e.selectAll(),this.$clickSelection=e.getSelectionRange(),this.setState("selectAll")},this.onMouseWheel=function(t){if(!t.getAccelKey()){t.getShiftKey()&&t.wheelY&&!t.wheelX&&(t.wheelX=t.wheelY,t.wheelY=0);var e=this.editor;this.$lastScroll||(this.$lastScroll={t:0,vx:0,vy:0,allowed:0});var n=this.$lastScroll,i=t.domEvent.timeStamp,r=i-n.t,o=r?t.wheelX/r:n.vx,s=r?t.wheelY/r:n.vy;r<550&&(o=(o+n.vx)/2,s=(s+n.vy)/2);var a=Math.abs(o/s),l=!1;if(a>=1&&e.renderer.isScrollableBy(t.wheelX*t.speed,0)&&(l=!0),a<=1&&e.renderer.isScrollableBy(0,t.wheelY*t.speed)&&(l=!0),l)n.allowed=i;else if(i-n.allowed<550){Math.abs(o)<=1.5*Math.abs(n.vx)&&Math.abs(s)<=1.5*Math.abs(n.vy)?(l=!0,n.allowed=i):n.allowed=0}return n.t=i,n.vx=o,n.vy=s,l?(e.renderer.scrollBy(t.wheelX*t.speed,t.wheelY*t.speed),t.stop()):void 0}}}).call(r.prototype),e.DefaultHandlers=r})),ace.define("ace/tooltip",["require","exports","module","ace/lib/oop","ace/lib/dom"],(function(t,e,n){"use strict";t("./lib/oop");var i=t("./lib/dom");function r(t){this.isOpen=!1,this.$element=null,this.$parentNode=t}(function(){this.$init=function(){return this.$element=i.createElement("div"),this.$element.className="ace_tooltip",this.$element.style.display="none",this.$parentNode.appendChild(this.$element),this.$element},this.getElement=function(){return this.$element||this.$init()},this.setText=function(t){this.getElement().textContent=t},this.setHtml=function(t){this.getElement().innerHTML=t},this.setPosition=function(t,e){this.getElement().style.left=t+"px",this.getElement().style.top=e+"px"},this.setClassName=function(t){i.addCssClass(this.getElement(),t)},this.show=function(t,e,n){null!=t&&this.setText(t),null!=e&&null!=n&&this.setPosition(e,n),this.isOpen||(this.getElement().style.display="block",this.isOpen=!0)},this.hide=function(){this.isOpen&&(this.getElement().style.display="none",this.getElement().className="ace_tooltip",this.isOpen=!1)},this.getHeight=function(){return this.getElement().offsetHeight},this.getWidth=function(){return this.getElement().offsetWidth},this.destroy=function(){this.isOpen=!1,this.$element&&this.$element.parentNode&&this.$element.parentNode.removeChild(this.$element)}}).call(r.prototype),e.Tooltip=r})),ace.define("ace/mouse/default_gutter_handler",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event","ace/tooltip"],(function(t,e,n){"use strict";var i=t("../lib/dom"),r=t("../lib/oop"),o=t("../lib/event"),s=t("../tooltip").Tooltip;function a(t){s.call(this,t)}r.inherits(a,s),function(){this.setPosition=function(t,e){var n=window.innerWidth||document.documentElement.clientWidth,i=window.innerHeight||document.documentElement.clientHeight,r=this.getWidth(),o=this.getHeight();(t+=15)+r>n&&(t-=t+r-n),(e+=15)+o>i&&(e-=20+o),s.prototype.setPosition.call(this,t,e)}}.call(a.prototype),e.GutterHandler=function(t){var e,n,r,s=t.editor,l=s.renderer.$gutterLayer,c=new a(s.container);function u(){e&&(e=clearTimeout(e)),r&&(c.hide(),r=null,s._signal("hideGutterTooltip",c),s.off("mousewheel",u))}function h(t){c.setPosition(t.x,t.y)}t.editor.setDefaultHandler("guttermousedown",(function(e){if(s.isFocused()&&0==e.getButton()&&"foldWidgets"!=l.getRegion(e)){var n=e.getDocumentPosition().row,i=s.session.selection;if(e.getShiftKey())i.selectTo(n,0);else{if(2==e.domEvent.detail)return s.selectAll(),e.preventDefault();t.$clickSelection=s.selection.getLineRange(n)}return t.setState("selectByLines"),t.captureMouse(e),e.preventDefault()}})),t.editor.setDefaultHandler("guttermousemove",(function(o){var a=o.domEvent.target||o.domEvent.srcElement;if(i.hasCssClass(a,"ace_fold-widget"))return u();r&&t.$tooltipFollowsMouse&&h(o),n=o,e||(e=setTimeout((function(){e=null,n&&!t.isMousePressed?function(){var e=n.getDocumentPosition().row,i=l.$annotations[e];if(!i)return u();if(e==s.session.getLength()){var o=s.renderer.pixelToScreenCoordinates(0,n.y).row,a=n.$pos;if(o>s.session.documentToScreenRow(a.row,a.column))return u()}if(r!=i){r=i.text.join("
      "),c.setHtml(r);var d=i.className;if(d&&c.setClassName(d.trim()),c.show(),s._signal("showGutterTooltip",c),s.on("mousewheel",u),t.$tooltipFollowsMouse)h(n);else{var f=n.domEvent.target.getBoundingClientRect(),p=c.getElement().style;p.left=f.right+"px",p.top=f.bottom+"px"}}}():u()}),50))})),o.addListener(s.renderer.$gutter,"mouseout",(function(t){n=null,r&&!e&&(e=setTimeout((function(){e=null,u()}),50))}),s),s.on("changeSession",u)}})),ace.define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"],(function(t,e,n){"use strict";var i=t("../lib/event"),r=t("../lib/useragent"),o=e.MouseEvent=function(t,e){this.domEvent=t,this.editor=e,this.x=this.clientX=t.clientX,this.y=this.clientY=t.clientY,this.$pos=null,this.$inSelection=null,this.propagationStopped=!1,this.defaultPrevented=!1};(function(){this.stopPropagation=function(){i.stopPropagation(this.domEvent),this.propagationStopped=!0},this.preventDefault=function(){i.preventDefault(this.domEvent),this.defaultPrevented=!0},this.stop=function(){this.stopPropagation(),this.preventDefault()},this.getDocumentPosition=function(){return this.$pos||(this.$pos=this.editor.renderer.screenToTextCoordinates(this.clientX,this.clientY)),this.$pos},this.inSelection=function(){if(null!==this.$inSelection)return this.$inSelection;var t=this.editor.getSelectionRange();if(t.isEmpty())this.$inSelection=!1;else{var e=this.getDocumentPosition();this.$inSelection=t.contains(e.row,e.column)}return this.$inSelection},this.getButton=function(){return i.getButton(this.domEvent)},this.getShiftKey=function(){return this.domEvent.shiftKey},this.getAccelKey=r.isMac?function(){return this.domEvent.metaKey}:function(){return this.domEvent.ctrlKey}}).call(o.prototype)})),ace.define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],(function(t,e,n){"use strict";var i=t("../lib/dom"),r=t("../lib/event"),o=t("../lib/useragent");function s(t){var e=t.editor,n=i.createElement("div");n.style.cssText="top:-100px;position:absolute;z-index:2147483647;opacity:0.5",n.textContent=" ";["dragWait","dragWaitEnd","startDrag","dragReadyEnd","onMouseDrag"].forEach((function(e){t[e]=this[e]}),this),e.on("mousedown",this.onMouseDown.bind(t));var s,l,c,u,h,d,f,p,g,m,v,b=e.container,y=0;function w(){var t=d;(function(t,n){var i=Date.now(),r=!n||t.row!=n.row,o=!n||t.column!=n.column;!m||r||o?(e.moveCursorToPosition(t),m=i,v={x:l,y:c}):a(v.x,v.y,l,c)>5?m=null:i-m>=200&&(e.renderer.scrollCursorIntoView(),m=null)})(d=e.renderer.screenToTextCoordinates(l,c),t),function(t,n){var i=Date.now(),r=e.renderer.layerConfig.lineHeight,o=e.renderer.layerConfig.characterWidth,s=e.renderer.scroller.getBoundingClientRect(),a={x:{left:l-s.left,right:s.right-l},y:{top:c-s.top,bottom:s.bottom-c}},u=Math.min(a.x.left,a.x.right),h=Math.min(a.y.top,a.y.bottom),d={row:t.row,column:t.column};u/o<=2&&(d.column+=a.x.left=200&&e.renderer.scrollCursorIntoView(d):g=i:g=null}(d,t)}function x(){h=e.selection.toOrientedRange(),s=e.session.addMarker(h,"ace_selection",e.getSelectionStyle()),e.clearSelection(),e.isFocused()&&e.renderer.$cursorLayer.setBlinking(!1),clearInterval(u),w(),u=setInterval(w,20),y=0,r.addListener(document,"mousemove",S)}function _(){clearInterval(u),e.session.removeMarker(s),s=null,e.selection.fromOrientedRange(h),e.isFocused()&&!p&&e.$resetCursorStyle(),h=null,d=null,y=0,g=null,m=null,r.removeListener(document,"mousemove",S)}this.onDragStart=function(t){if(this.cancelDrag||!b.draggable){var i=this;return setTimeout((function(){i.startSelect(),i.captureMouse(t)}),0),t.preventDefault()}h=e.getSelectionRange();var r=t.dataTransfer;r.effectAllowed=e.getReadOnly()?"copy":"copyMove",e.container.appendChild(n),r.setDragImage&&r.setDragImage(n,0,0),setTimeout((function(){e.container.removeChild(n)})),r.clearData(),r.setData("Text",e.session.getTextRange()),p=!0,this.setState("drag")},this.onDragEnd=function(t){if(b.draggable=!1,p=!1,this.setState(null),!e.getReadOnly()){var n=t.dataTransfer.dropEffect;f||"move"!=n||e.session.remove(e.getSelectionRange()),e.$resetCursorStyle()}this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle("")},this.onDragEnter=function(t){if(!e.getReadOnly()&&A(t.dataTransfer))return l=t.clientX,c=t.clientY,s||x(),y++,t.dataTransfer.dropEffect=f=k(t),r.preventDefault(t)},this.onDragOver=function(t){if(!e.getReadOnly()&&A(t.dataTransfer))return l=t.clientX,c=t.clientY,s||(x(),y++),null!==M&&(M=null),t.dataTransfer.dropEffect=f=k(t),r.preventDefault(t)},this.onDragLeave=function(t){if(--y<=0&&s)return _(),f=null,r.preventDefault(t)},this.onDrop=function(t){if(d){var n=t.dataTransfer;if(p)switch(f){case"move":h=h.contains(d.row,d.column)?{start:d,end:d}:e.moveText(h,d);break;case"copy":h=e.moveText(h,d,!0)}else{var i=n.getData("Text");h={start:d,end:e.session.insert(d,i)},e.focus(),f=null}return _(),r.preventDefault(t)}},r.addListener(b,"dragstart",this.onDragStart.bind(t),e),r.addListener(b,"dragend",this.onDragEnd.bind(t),e),r.addListener(b,"dragenter",this.onDragEnter.bind(t),e),r.addListener(b,"dragover",this.onDragOver.bind(t),e),r.addListener(b,"dragleave",this.onDragLeave.bind(t),e),r.addListener(b,"drop",this.onDrop.bind(t),e);var M=null;function S(){null==M&&(M=setTimeout((function(){null!=M&&s&&_()}),20))}function A(t){var e=t.types;return!e||Array.prototype.some.call(e,(function(t){return"text/plain"==t||"Text"==t}))}function k(t){var e=["copy","copymove","all","uninitialized"],n=o.isMac?t.altKey:t.ctrlKey,i="uninitialized";try{i=t.dataTransfer.effectAllowed.toLowerCase()}catch(t){}var r="none";return n&&e.indexOf(i)>=0?r="copy":["move","copymove","linkmove","all","uninitialized"].indexOf(i)>=0?r="move":e.indexOf(i)>=0&&(r="copy"),r}}function a(t,e,n,i){return Math.sqrt(Math.pow(n-t,2)+Math.pow(i-e,2))}(function(){this.dragWait=function(){Date.now()-this.mousedownEvent.time>this.editor.getDragDelay()&&this.startDrag()},this.dragWaitEnd=function(){this.editor.container.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()),this.selectEnd()},this.dragReadyEnd=function(t){this.editor.$resetCursorStyle(),this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle(""),this.dragWaitEnd()},this.startDrag=function(){this.cancelDrag=!1;var t=this.editor;t.container.draggable=!0,t.renderer.$cursorLayer.setBlinking(!1),t.setStyle("ace_dragging");var e=o.isWin?"default":"move";t.renderer.setCursorStyle(e),this.setState("dragReady")},this.onMouseDrag=function(t){var e=this.editor.container;o.isIE&&"dragReady"==this.state&&(a(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y)>3&&e.dragDrop());"dragWait"===this.state&&(a(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y)>0&&(e.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition())))},this.onMouseDown=function(t){if(this.$dragEnabled){this.mousedownEvent=t;var e=this.editor,n=t.inSelection(),i=t.getButton();if(1===(t.domEvent.detail||1)&&0===i&&n){if(t.editor.inMultiSelectMode&&(t.getAccelKey()||t.getShiftKey()))return;this.mousedownEvent.time=Date.now();var r=t.domEvent.target||t.domEvent.srcElement;if("unselectable"in r&&(r.unselectable="on"),e.getDragDelay()){if(o.isWebKit)this.cancelDrag=!0,e.container.draggable=!0;this.setState("dragWait")}else this.startDrag();this.captureMouse(t,this.onMouseDrag.bind(this)),t.defaultPrevented=!0}}}}).call(s.prototype),e.DragdropHandler=s})),ace.define("ace/mouse/touch_handler",["require","exports","module","ace/mouse/mouse_event","ace/lib/event","ace/lib/dom"],(function(t,e,n){"use strict";var i=t("./mouse_event").MouseEvent,r=t("../lib/event"),o=t("../lib/dom");e.addTouchListeners=function(t,e){var n,s,a,l,c,u,h,d,f,p="scroll",g=0,m=0,v=0,b=0;function y(){var t=window.navigator&&window.navigator.clipboard,n=!1,i=function(i){var r,s,a=i.target.getAttribute("action");if("more"==a||!n)return n=!n,r=e.getCopyText(),s=e.session.getUndoManager().hasUndo(),void f.replaceChild(o.buildDom(n?["span",!r&&["span",{class:"ace_mobile-button",action:"selectall"},"Select All"],r&&["span",{class:"ace_mobile-button",action:"copy"},"Copy"],r&&["span",{class:"ace_mobile-button",action:"cut"},"Cut"],t&&["span",{class:"ace_mobile-button",action:"paste"},"Paste"],s&&["span",{class:"ace_mobile-button",action:"undo"},"Undo"],["span",{class:"ace_mobile-button",action:"find"},"Find"],["span",{class:"ace_mobile-button",action:"openCommandPallete"},"Palette"]]:["span"]),f.firstChild);"paste"==a?t.readText().then((function(t){e.execCommand(a,t)})):a&&("cut"!=a&&"copy"!=a||(t?t.writeText(e.getCopyText()):document.execCommand("copy")),e.execCommand(a)),f.firstChild.style.display="none",n=!1,"openCommandPallete"!=a&&e.focus()};f=o.buildDom(["div",{class:"ace_mobile-menu",ontouchstart:function(t){p="menu",t.stopPropagation(),t.preventDefault(),e.textInput.focus()},ontouchend:function(t){t.stopPropagation(),t.preventDefault(),i(t)},onclick:i},["span"],["span",{class:"ace_mobile-button",action:"more"},"..."]],e.container)}function w(){f||y();var t=e.selection.cursor,n=e.renderer.textToScreenCoordinates(t.row,t.column),i=e.renderer.textToScreenCoordinates(0,0).pageX,r=e.renderer.scrollLeft,o=e.container.getBoundingClientRect();f.style.top=n.pageY-o.top-3+"px",n.pageX-o.left1)return clearTimeout(c),c=null,a=-1,void(p="zoom");d=e.$mouseHandler.isMousePressed=!0;var o=e.renderer.layerConfig.lineHeight,u=e.renderer.layerConfig.lineHeight,f=t.timeStamp;l=f;var y=r[0],w=y.clientX,x=y.clientY;Math.abs(n-w)+Math.abs(s-x)>o&&(a=-1),n=t.clientX=w,s=t.clientY=x,v=b=0;var M=new i(t,e);if(h=M.getDocumentPosition(),f-a<500&&1==r.length&&!g)m++,t.preventDefault(),t.button=0,function(){c=null,clearTimeout(c),e.selection.moveToPosition(h);var t=m>=2?e.selection.getLineRange(h.row):e.session.getBracketRange(h);t&&!t.isEmpty()?e.selection.setRange(t):e.selection.selectWord(),p="wait"}();else{m=0;var S=e.selection.cursor,A=e.selection.isEmpty()?S:e.selection.anchor,k=e.renderer.$cursorLayer.getPixelPosition(S,!0),C=e.renderer.$cursorLayer.getPixelPosition(A,!0),T=e.renderer.scroller.getBoundingClientRect(),E=e.renderer.layerConfig.offset,R=e.renderer.scrollLeft,L=function(t,e){return(t/=u)*t+(e=e/o-.75)*e};if(t.clientXO?"cursor":"anchor"),p=O<3.5?"anchor":I<3.5?"cursor":"scroll",c=setTimeout(_,450)}a=f}),e),r.addListener(t,"touchend",(function(t){d=e.$mouseHandler.isMousePressed=!1,u&&clearInterval(u),"zoom"==p?(p="",g=0):c?(e.selection.moveToPosition(h),g=0,w()):"scroll"==p?(g+=60,u=setInterval((function(){g--<=0&&(clearInterval(u),u=null),Math.abs(v)<.01&&(v=0),Math.abs(b)<.01&&(b=0),g<20&&(v*=.9),g<20&&(b*=.9);var t=e.session.getScrollTop();e.renderer.scrollBy(10*v,10*b),t==e.session.getScrollTop()&&(g=0)}),10),x()):w(),clearTimeout(c),c=null}),e),r.addListener(t,"touchmove",(function(t){c&&(clearTimeout(c),c=null);var r=t.touches;if(!(r.length>1||"zoom"==p)){var o=r[0],a=n-o.clientX,u=s-o.clientY;if("wait"==p){if(!(a*a+u*u>4))return t.preventDefault();p="cursor"}n=o.clientX,s=o.clientY,t.clientX=o.clientX,t.clientY=o.clientY;var h=t.timeStamp,d=h-l;if(l=h,"scroll"==p){var f=new i(t,e);f.speed=1,f.wheelX=a,f.wheelY=u,10*Math.abs(a)=t){for(o=h+1;o=t;)o++;for(a=h,l=o-1;a=e.length||2!=(l=n[r-1])&&3!=l||2!=(c=e[r+1])&&3!=c?4:(o&&(c=3),c==l?c:4);case 10:return 2==(l=r>0?n[r-1]:5)&&r+10&&2==n[r-1])return 2;if(o)return 4;for(h=r+1,u=e.length;h=1425&&f<=2303||64286==f;if(l=e[h],p&&(1==l||7==l))return 1}return r<1||5==(l=e[r-1])?4:n[r-1];case 5:return o=!1,s=!0,i;case 6:return a=!0,4;case 13:case 14:case 16:case 17:case 15:o=!1;case 18:return 4}}function p(t){var e=t.charCodeAt(0),n=e>>8;return 0==n?e>191?0:u[e]:5==n?/[\u0591-\u05f4]/.test(t)?1:0:6==n?/[\u0610-\u061a\u064b-\u065f\u06d6-\u06e4\u06e7-\u06ed]/.test(t)?12:/[\u0660-\u0669\u066b-\u066c]/.test(t)?3:1642==e?11:/[\u06f0-\u06f9]/.test(t)?2:7:32==n&&e<=8287?h[255&e]:254==n&&e>=65136?7:4}e.L=0,e.R=1,e.EN=2,e.ON_R=3,e.AN=4,e.R_H=5,e.B=6,e.RLE=7,e.DOT="·",e.doBidiReorder=function(t,n,u){if(t.length<2)return{};var h=t.split(""),g=new Array(h.length),m=new Array(h.length),v=[];i=u?1:0,function(t,e,n,u){var h=i?c:l,d=null,g=null,m=null,v=0,b=null,y=-1,w=null,x=null,_=[];if(!u)for(w=0,u=[];w0)if(16==b){for(w=y;w-1){for(w=y;w=0&&8==u[M];M--)e[M]=i}}(h,v,h.length,n);for(var b=0;b7&&n[b]<13||4===n[b]||18===n[b])?v[b]=e.ON_R:b>0&&"ل"===h[b-1]&&/\u0622|\u0623|\u0625|\u0627/.test(h[b])&&(v[b-1]=v[b]=e.R_H,b++);h[h.length-1]===e.DOT&&(v[h.length-1]=e.B),"‫"===h[0]&&(v[0]=e.RLE);for(b=0;b=0&&(t=this.session.$docRowCache[n])}return t},this.getSplitIndex=function(){var t=0,e=this.session.$screenRowCache;if(e.length)for(var n,i=this.session.$getRowCacheIndex(e,this.currentRow);this.currentRow-t>0&&(n=this.session.$getRowCacheIndex(e,this.currentRow-t-1))===i;)i=n,t++;else t=this.currentRow;return t},this.updateRowLine=function(t,e){void 0===t&&(t=this.getDocumentRow());var n=t===this.session.getLength()-1?this.EOF:this.EOL;if(this.wrapIndent=0,this.line=this.session.getLine(t),this.isRtlDir=this.$isRtl||this.line.charAt(0)===this.RLE,this.session.$useWrapMode){var o=this.session.$wrapData[t];o&&(void 0===e&&(e=this.getSplitIndex()),e>0&&o.length?(this.wrapIndent=o.indent,this.wrapOffset=this.wrapIndent*this.charWidths[i.L],this.line=ee?this.session.getOverwrite()?t:t-1:e,r=i.getVisualFromLogicalIdx(n,this.bidiMap),o=this.bidiMap.bidiLevels,s=0;!this.session.getOverwrite()&&t<=e&&o[r]%2!=0&&r++;for(var a=0;ae&&o[r]%2==0&&(s+=this.charWidths[o[r]]),this.wrapIndent&&(s+=this.isRtlDir?-1*this.wrapOffset:this.wrapOffset),this.isRtlDir&&(s+=this.rtlLineOffset),s},this.getSelections=function(t,e){var n,i=this.bidiMap,r=i.bidiLevels,o=[],s=0,a=Math.min(t,e)-this.wrapIndent,l=Math.max(t,e)-this.wrapIndent,c=!1,u=!1,h=0;this.wrapIndent&&(s+=this.isRtlDir?-1*this.wrapOffset:this.wrapOffset);for(var d,f=0;f=a&&dn+o/2;){if(n+=o,i===r.length-1){o=0;break}o=this.charWidths[r[++i]]}return i>0&&r[i-1]%2!=0&&r[i]%2==0?(t0&&r[i-1]%2==0&&r[i]%2!=0?e=1+(t>n?this.bidiMap.logicalFromVisual[i]:this.bidiMap.logicalFromVisual[i-1]):this.isRtlDir&&i===r.length-1&&0===o&&r[i-1]%2==0||!this.isRtlDir&&0===i&&r[i]%2!=0?e=1+this.bidiMap.logicalFromVisual[i]:(i>0&&r[i-1]%2!=0&&0!==o&&i--,e=this.bidiMap.logicalFromVisual[i]),0===e&&this.isRtlDir&&e++,e+this.wrapIndent}}).call(s.prototype),e.BidiHandler=s})),ace.define("ace/selection",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter","ace/range"],(function(t,e,n){"use strict";var i=t("./lib/oop"),r=t("./lib/lang"),o=t("./lib/event_emitter").EventEmitter,s=t("./range").Range,a=function(t){this.session=t,this.doc=t.getDocument(),this.clearSelection(),this.cursor=this.lead=this.doc.createAnchor(0,0),this.anchor=this.doc.createAnchor(0,0),this.$silent=!1;var e=this;this.cursor.on("change",(function(t){e.$cursorChanged=!0,e.$silent||e._emit("changeCursor"),e.$isEmpty||e.$silent||e._emit("changeSelection"),e.$keepDesiredColumnOnChange||t.old.column==t.value.column||(e.$desiredColumn=null)})),this.anchor.on("change",(function(){e.$anchorChanged=!0,e.$isEmpty||e.$silent||e._emit("changeSelection")}))};(function(){i.implement(this,o),this.isEmpty=function(){return this.$isEmpty||this.anchor.row==this.lead.row&&this.anchor.column==this.lead.column},this.isMultiLine=function(){return!this.$isEmpty&&this.anchor.row!=this.cursor.row},this.getCursor=function(){return this.lead.getPosition()},this.setAnchor=function(t,e){this.$isEmpty=!1,this.anchor.setPosition(t,e)},this.setSelectionAnchor=this.setAnchor,this.getAnchor=function(){return this.$isEmpty?this.getSelectionLead():this.anchor.getPosition()},this.getSelectionAnchor=this.getAnchor,this.getSelectionLead=function(){return this.lead.getPosition()},this.isBackwards=function(){var t=this.anchor,e=this.lead;return t.row>e.row||t.row==e.row&&t.column>e.column},this.getRange=function(){var t=this.anchor,e=this.lead;return this.$isEmpty?s.fromPoints(e,e):this.isBackwards()?s.fromPoints(e,t):s.fromPoints(t,e)},this.clearSelection=function(){this.$isEmpty||(this.$isEmpty=!0,this._emit("changeSelection"))},this.selectAll=function(){this.$setSelection(0,0,Number.MAX_VALUE,Number.MAX_VALUE)},this.setRange=this.setSelectionRange=function(t,e){var n=e?t.end:t.start,i=e?t.start:t.end;this.$setSelection(n.row,n.column,i.row,i.column)},this.$setSelection=function(t,e,n,i){if(!this.$silent){var r=this.$isEmpty,o=this.inMultiSelectMode;this.$silent=!0,this.$cursorChanged=this.$anchorChanged=!1,this.anchor.setPosition(t,e),this.cursor.setPosition(n,i),this.$isEmpty=!s.comparePoints(this.anchor,this.cursor),this.$silent=!1,this.$cursorChanged&&this._emit("changeCursor"),(this.$cursorChanged||this.$anchorChanged||r!=this.$isEmpty||o)&&this._emit("changeSelection")}},this.$moveSelection=function(t){var e=this.lead;this.$isEmpty&&this.setSelectionAnchor(e.row,e.column),t.call(this)},this.selectTo=function(t,e){this.$moveSelection((function(){this.moveCursorTo(t,e)}))},this.selectToPosition=function(t){this.$moveSelection((function(){this.moveCursorToPosition(t)}))},this.moveTo=function(t,e){this.clearSelection(),this.moveCursorTo(t,e)},this.moveToPosition=function(t){this.clearSelection(),this.moveCursorToPosition(t)},this.selectUp=function(){this.$moveSelection(this.moveCursorUp)},this.selectDown=function(){this.$moveSelection(this.moveCursorDown)},this.selectRight=function(){this.$moveSelection(this.moveCursorRight)},this.selectLeft=function(){this.$moveSelection(this.moveCursorLeft)},this.selectLineStart=function(){this.$moveSelection(this.moveCursorLineStart)},this.selectLineEnd=function(){this.$moveSelection(this.moveCursorLineEnd)},this.selectFileEnd=function(){this.$moveSelection(this.moveCursorFileEnd)},this.selectFileStart=function(){this.$moveSelection(this.moveCursorFileStart)},this.selectWordRight=function(){this.$moveSelection(this.moveCursorWordRight)},this.selectWordLeft=function(){this.$moveSelection(this.moveCursorWordLeft)},this.getWordRange=function(t,e){if(void 0===e){var n=t||this.lead;t=n.row,e=n.column}return this.session.getWordRange(t,e)},this.selectWord=function(){this.setSelectionRange(this.getWordRange())},this.selectAWord=function(){var t=this.getCursor(),e=this.session.getAWordRange(t.row,t.column);this.setSelectionRange(e)},this.getLineRange=function(t,e){var n,i="number"==typeof t?t:this.lead.row,r=this.session.getFoldLine(i);return r?(i=r.start.row,n=r.end.row):n=i,!0===e?new s(i,0,n,this.session.getLine(n).length):new s(i,0,n+1,0)},this.selectLine=function(){this.setSelectionRange(this.getLineRange())},this.moveCursorUp=function(){this.moveCursorBy(-1,0)},this.moveCursorDown=function(){this.moveCursorBy(1,0)},this.wouldMoveIntoSoftTab=function(t,e,n){var i=t.column,r=t.column+e;return n<0&&(i=t.column-e,r=t.column),this.session.isTabStop(t)&&this.doc.getLine(t.row).slice(i,r).split(" ").length-1==e},this.moveCursorLeft=function(){var t,e=this.lead.getPosition();if(t=this.session.getFoldAt(e.row,e.column,-1))this.moveCursorTo(t.start.row,t.start.column);else if(0===e.column)e.row>0&&this.moveCursorTo(e.row-1,this.doc.getLine(e.row-1).length);else{var n=this.session.getTabSize();this.wouldMoveIntoSoftTab(e,n,-1)&&!this.session.getNavigateWithinSoftTabs()?this.moveCursorBy(0,-n):this.moveCursorBy(0,-1)}},this.moveCursorRight=function(){var t,e=this.lead.getPosition();if(t=this.session.getFoldAt(e.row,e.column,1))this.moveCursorTo(t.end.row,t.end.column);else if(this.lead.column==this.doc.getLine(this.lead.row).length)this.lead.row0&&(e.column=i)}}this.moveCursorTo(e.row,e.column)},this.moveCursorFileEnd=function(){var t=this.doc.getLength()-1,e=this.doc.getLine(t).length;this.moveCursorTo(t,e)},this.moveCursorFileStart=function(){this.moveCursorTo(0,0)},this.moveCursorLongWordRight=function(){var t=this.lead.row,e=this.lead.column,n=this.doc.getLine(t),i=n.substring(e);this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;var r=this.session.getFoldAt(t,e,1);if(r)this.moveCursorTo(r.end.row,r.end.column);else{if(this.session.nonTokenRe.exec(i)&&(e+=this.session.nonTokenRe.lastIndex,this.session.nonTokenRe.lastIndex=0,i=n.substring(e)),e>=n.length)return this.moveCursorTo(t,n.length),this.moveCursorRight(),void(t0&&this.moveCursorWordLeft());this.session.tokenRe.exec(o)&&(n-=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0),this.moveCursorTo(e,n)}},this.$shortWordEndIndex=function(t){var e,n=0,i=/\s/,r=this.session.tokenRe;if(r.lastIndex=0,this.session.tokenRe.exec(t))n=this.session.tokenRe.lastIndex;else{for(;(e=t[n])&&i.test(e);)n++;if(n<1)for(r.lastIndex=0;(e=t[n])&&!r.test(e);)if(r.lastIndex=0,n++,i.test(e)){if(n>2){n--;break}for(;(e=t[n])&&i.test(e);)n++;if(n>2)break}}return r.lastIndex=0,n},this.moveCursorShortWordRight=function(){var t=this.lead.row,e=this.lead.column,n=this.doc.getLine(t),i=n.substring(e),r=this.session.getFoldAt(t,e,1);if(r)return this.moveCursorTo(r.end.row,r.end.column);if(e==n.length){var o=this.doc.getLength();do{t++,i=this.doc.getLine(t)}while(t0&&/^\s*$/.test(i));n=i.length,/\s+$/.test(i)||(i="")}var o=r.stringReverse(i),s=this.$shortWordEndIndex(o);return this.moveCursorTo(e,n-s)},this.moveCursorWordRight=function(){this.session.$selectLongWords?this.moveCursorLongWordRight():this.moveCursorShortWordRight()},this.moveCursorWordLeft=function(){this.session.$selectLongWords?this.moveCursorLongWordLeft():this.moveCursorShortWordLeft()},this.moveCursorBy=function(t,e){var n,i=this.session.documentToScreenPosition(this.lead.row,this.lead.column);if(0===e&&(0!==t&&(this.session.$bidiHandler.isBidiRow(i.row,this.lead.row)?(n=this.session.$bidiHandler.getPosLeft(i.column),i.column=Math.round(n/this.session.$bidiHandler.charWidths[0])):n=i.column*this.session.$bidiHandler.charWidths[0]),this.$desiredColumn?i.column=this.$desiredColumn:this.$desiredColumn=i.column),0!=t&&this.session.lineWidgets&&this.session.lineWidgets[this.lead.row]){var r=this.session.lineWidgets[this.lead.row];t<0?t-=r.rowsAbove||0:t>0&&(t+=r.rowCount-(r.rowsAbove||0))}var o=this.session.screenToDocumentPosition(i.row+t,i.column,n);0!==t&&0===e&&o.row===this.lead.row&&(o.column,this.lead.column),this.moveCursorTo(o.row,o.column+e,0===e)},this.moveCursorToPosition=function(t){this.moveCursorTo(t.row,t.column)},this.moveCursorTo=function(t,e,n){var i=this.session.getFoldAt(t,e,1);i&&(t=i.start.row,e=i.start.column),this.$keepDesiredColumnOnChange=!0;var r=this.session.getLine(t);/[\uDC00-\uDFFF]/.test(r.charAt(e))&&r.charAt(e-1)&&(this.lead.row==t&&this.lead.column==e+1?e-=1:e+=1),this.lead.setPosition(t,e),this.$keepDesiredColumnOnChange=!1,n||(this.$desiredColumn=null)},this.moveCursorToScreen=function(t,e,n){var i=this.session.screenToDocumentPosition(t,e);this.moveCursorTo(i.row,i.column,n)},this.detach=function(){this.lead.detach(),this.anchor.detach()},this.fromOrientedRange=function(t){this.setSelectionRange(t,t.cursor==t.start),this.$desiredColumn=t.desiredColumn||this.$desiredColumn},this.toOrientedRange=function(t){var e=this.getRange();return t?(t.start.column=e.start.column,t.start.row=e.start.row,t.end.column=e.end.column,t.end.row=e.end.row):t=e,t.cursor=this.isBackwards()?t.start:t.end,t.desiredColumn=this.$desiredColumn,t},this.getRangeOfMovements=function(t){var e=this.getCursor();try{t(this);var n=this.getCursor();return s.fromPoints(e,n)}catch(t){return s.fromPoints(e,e)}finally{this.moveCursorToPosition(e)}},this.toJSON=function(){if(this.rangeCount)var t=this.ranges.map((function(t){var e=t.clone();return e.isBackwards=t.cursor==t.start,e}));else(t=this.getRange()).isBackwards=this.isBackwards();return t},this.fromJSON=function(t){if(null==t.start){if(this.rangeList&&t.length>1){this.toSingleRange(t[0]);for(var e=t.length;e--;){var n=s.fromPoints(t[e].start,t[e].end);t[e].isBackwards&&(n.cursor=n.start),this.addRange(n,!0)}return}t=t[0]}this.rangeList&&this.toSingleRange(t),this.setSelectionRange(t,t.isBackwards)},this.isEqual=function(t){if((t.length||this.rangeCount)&&t.length!=this.rangeCount)return!1;if(!t.length||!this.ranges)return this.getRange().isEqual(t);for(var e=this.ranges.length;e--;)if(!this.ranges[e].isEqual(t[e]))return!1;return!0}}).call(a.prototype),e.Selection=a})),ace.define("ace/tokenizer",["require","exports","module","ace/config"],(function(t,e,n){"use strict";var i=t("./config"),r=2e3,o=function(t){for(var e in this.states=t,this.regExps={},this.matchMappings={},this.states){for(var n=this.states[e],i=[],r=0,o=this.matchMappings[e]={defaultToken:"text"},s="g",a=[],l=0;l1?this.$applyToken:c.token),h>1&&(/\\\d/.test(c.regex)?u=c.regex.replace(/\\([0-9]+)/g,(function(t,e){return"\\"+(parseInt(e,10)+r+1)})):(h=1,u=this.removeCapturingGroups(c.regex)),c.splitRegex||"string"==typeof c.token||a.push(c)),o[r]=l,r+=h,i.push(u),c.onMatch||(c.onMatch=null)}}i.length||(o[0]=0,i.push("$")),a.forEach((function(t){t.splitRegex=this.createSplitterRegexp(t.regex,s)}),this),this.regExps[e]=new RegExp("("+i.join(")|(")+")|($)",s)}};(function(){this.$setMaxTokenCount=function(t){r=0|t},this.$applyToken=function(t){var e=this.splitRegex.exec(t).slice(1),n=this.token.apply(this,e);if("string"==typeof n)return[{type:n,value:t}];for(var i=[],r=0,o=n.length;ru){var v=t.substring(u,m-g.length);d.type==f?d.value+=v:(d.type&&c.push(d),d={type:f,value:v})}for(var b=0;br){for(h>2*t.length&&this.reportError("infinite loop with in ace tokenizer",{startState:e,line:t});u1&&n[0]!==i&&n.unshift("#tmp",i),{tokens:c,state:n.length?n:i}},this.reportError=i.reportError}).call(o.prototype),e.Tokenizer=o})),ace.define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/lang"],(function(t,e,n){"use strict";var i=t("../lib/lang"),r=function(){this.$rules={start:[{token:"empty_line",regex:"^$"},{defaultToken:"text"}]}};(function(){this.addRules=function(t,e){if(e)for(var n in t){for(var i=t[n],r=0;r=this.$rowTokens.length;){if(this.$row+=1,t||(t=this.$session.getLength()),this.$row>=t)return this.$row=t-1,null;this.$rowTokens=this.$session.getTokens(this.$row),this.$tokenIndex=0}return this.$rowTokens[this.$tokenIndex]},this.getCurrentToken=function(){return this.$rowTokens[this.$tokenIndex]},this.getCurrentTokenRow=function(){return this.$row},this.getCurrentTokenColumn=function(){var t=this.$rowTokens,e=this.$tokenIndex,n=t[e].start;if(void 0!==n)return n;for(n=0;e>0;)n+=t[e-=1].value.length;return n},this.getCurrentTokenPosition=function(){return{row:this.$row,column:this.getCurrentTokenColumn()}},this.getCurrentTokenRange=function(){var t=this.$rowTokens[this.$tokenIndex],e=this.getCurrentTokenColumn();return new i(this.$row,e,this.$row,e+t.value.length)}}).call(r.prototype),e.TokenIterator=r})),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],(function(t,e,n){"use strict";var i,r=t("../../lib/oop"),o=t("../behaviour").Behaviour,s=t("../../token_iterator").TokenIterator,a=t("../../lib/lang"),l=["text","paren.rparen","rparen","paren","punctuation.operator"],c=["text","paren.rparen","rparen","paren","punctuation.operator","comment"],u={},h={'"':'"',"'":"'"},d=function(t){var e=-1;if(t.multiSelect&&(e=t.selection.index,u.rangeCount!=t.multiSelect.rangeCount&&(u={rangeCount:t.multiSelect.rangeCount})),u[e])return i=u[e];i=u[e]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},f=function(t,e,n,i){var r=t.end.row-t.start.row;return{text:n+e+i,selection:[0,t.start.column+1,r,t.end.column+(r?0:1)]}},p=function(t){this.add("braces","insertion",(function(e,n,r,o,s){var l=r.getCursorPosition(),c=o.doc.getLine(l.row);if("{"==s){d(r);var u=r.getSelectionRange(),h=o.doc.getTextRange(u);if(""!==h&&"{"!==h&&r.getWrapBehavioursEnabled())return f(u,h,"{","}");if(p.isSaneInsertion(r,o))return/[\]\}\)]/.test(c[l.column])||r.inMultiSelectMode||t&&t.braces?(p.recordAutoInsert(r,o,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(r,o,"{"),{text:"{",selection:[1,1]})}else if("}"==s){if(d(r),"}"==c.substring(l.column,l.column+1))if(null!==o.$findOpeningBracket("}",{column:l.column+1,row:l.row})&&p.isAutoInsertedClosing(l,c,s))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}else{if("\n"==s||"\r\n"==s){d(r);var g="";if(p.isMaybeInsertedClosing(l,c)&&(g=a.stringRepeat("}",i.maybeInsertedBrackets),p.clearMaybeInsertedClosing()),"}"===c.substring(l.column,l.column+1)){var m=o.findMatchingBracket({row:l.row,column:l.column+1},"}");if(!m)return null;var v=this.$getIndent(o.getLine(m.row))}else{if(!g)return void p.clearMaybeInsertedClosing();v=this.$getIndent(c)}var b=v+o.getTabString();return{text:"\n"+b+"\n"+v+g,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}})),this.add("braces","deletion",(function(t,e,n,r,o){var s=r.doc.getTextRange(o);if(!o.isMultiLine()&&"{"==s){if(d(n),"}"==r.doc.getLine(o.start.row).substring(o.end.column,o.end.column+1))return o.end.column++,o;i.maybeInsertedBrackets--}})),this.add("parens","insertion",(function(t,e,n,i,r){if("("==r){d(n);var o=n.getSelectionRange(),s=i.doc.getTextRange(o);if(""!==s&&n.getWrapBehavioursEnabled())return f(o,s,"(",")");if(p.isSaneInsertion(n,i))return p.recordAutoInsert(n,i,")"),{text:"()",selection:[1,1]}}else if(")"==r){d(n);var a=n.getCursorPosition(),l=i.doc.getLine(a.row);if(")"==l.substring(a.column,a.column+1))if(null!==i.$findOpeningBracket(")",{column:a.column+1,row:a.row})&&p.isAutoInsertedClosing(a,l,r))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}})),this.add("parens","deletion",(function(t,e,n,i,r){var o=i.doc.getTextRange(r);if(!r.isMultiLine()&&"("==o&&(d(n),")"==i.doc.getLine(r.start.row).substring(r.start.column+1,r.start.column+2)))return r.end.column++,r})),this.add("brackets","insertion",(function(t,e,n,i,r){if("["==r){d(n);var o=n.getSelectionRange(),s=i.doc.getTextRange(o);if(""!==s&&n.getWrapBehavioursEnabled())return f(o,s,"[","]");if(p.isSaneInsertion(n,i))return p.recordAutoInsert(n,i,"]"),{text:"[]",selection:[1,1]}}else if("]"==r){d(n);var a=n.getCursorPosition(),l=i.doc.getLine(a.row);if("]"==l.substring(a.column,a.column+1))if(null!==i.$findOpeningBracket("]",{column:a.column+1,row:a.row})&&p.isAutoInsertedClosing(a,l,r))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}})),this.add("brackets","deletion",(function(t,e,n,i,r){var o=i.doc.getTextRange(r);if(!r.isMultiLine()&&"["==o&&(d(n),"]"==i.doc.getLine(r.start.row).substring(r.start.column+1,r.start.column+2)))return r.end.column++,r})),this.add("string_dquotes","insertion",(function(t,e,n,i,r){var o=i.$mode.$quotes||h;if(1==r.length&&o[r]){if(this.lineCommentStart&&-1!=this.lineCommentStart.indexOf(r))return;d(n);var s=r,a=n.getSelectionRange(),l=i.doc.getTextRange(a);if(!(""===l||1==l.length&&o[l])&&n.getWrapBehavioursEnabled())return f(a,l,s,s);if(!l){var c=n.getCursorPosition(),u=i.doc.getLine(c.row),p=u.substring(c.column-1,c.column),g=u.substring(c.column,c.column+1),m=i.getTokenAt(c.row,c.column),v=i.getTokenAt(c.row,c.column+1);if("\\"==p&&m&&/escape/.test(m.type))return null;var b,y=m&&/string|escape/.test(m.type),w=!v||/string|escape/.test(v.type);if(g==s)(b=y!==w)&&/string\.end/.test(v.type)&&(b=!1);else{if(y&&!w)return null;if(y&&w)return null;var x=i.$mode.tokenRe;x.lastIndex=0;var _=x.test(p);x.lastIndex=0;var M=x.test(p);if(_||M)return null;if(g&&!/[\s;,.})\]\\]/.test(g))return null;var S=u[c.column-2];if(p==s&&(S==s||x.test(S)))return null;b=!0}return{text:b?s+s:"",selection:[1,1]}}}})),this.add("string_dquotes","deletion",(function(t,e,n,i,r){var o=i.$mode.$quotes||h,s=i.doc.getTextRange(r);if(!r.isMultiLine()&&o.hasOwnProperty(s)&&(d(n),i.doc.getLine(r.start.row).substring(r.start.column+1,r.start.column+2)==s))return r.end.column++,r}))};p.isSaneInsertion=function(t,e){var n=t.getCursorPosition(),i=new s(e,n.row,n.column);if(!this.$matchTokenType(i.getCurrentToken()||"text",l)){if(/[)}\]]/.test(t.session.getLine(n.row)[n.column]))return!0;var r=new s(e,n.row,n.column+1);if(!this.$matchTokenType(r.getCurrentToken()||"text",l))return!1}return i.stepForward(),i.getCurrentTokenRow()!==n.row||this.$matchTokenType(i.getCurrentToken()||"text",c)},p.$matchTokenType=function(t,e){return e.indexOf(t.type||t)>-1},p.recordAutoInsert=function(t,e,n){var r=t.getCursorPosition(),o=e.doc.getLine(r.row);this.isAutoInsertedClosing(r,o,i.autoInsertedLineEnd[0])||(i.autoInsertedBrackets=0),i.autoInsertedRow=r.row,i.autoInsertedLineEnd=n+o.substr(r.column),i.autoInsertedBrackets++},p.recordMaybeInsert=function(t,e,n){var r=t.getCursorPosition(),o=e.doc.getLine(r.row);this.isMaybeInsertedClosing(r,o)||(i.maybeInsertedBrackets=0),i.maybeInsertedRow=r.row,i.maybeInsertedLineStart=o.substr(0,r.column)+n,i.maybeInsertedLineEnd=o.substr(r.column),i.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(t,e,n){return i.autoInsertedBrackets>0&&t.row===i.autoInsertedRow&&n===i.autoInsertedLineEnd[0]&&e.substr(t.column)===i.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(t,e){return i.maybeInsertedBrackets>0&&t.row===i.maybeInsertedRow&&e.substr(t.column)===i.maybeInsertedLineEnd&&e.substr(0,t.column)==i.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){i.autoInsertedLineEnd=i.autoInsertedLineEnd.substr(1),i.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){i&&(i.maybeInsertedBrackets=0,i.maybeInsertedRow=-1)},r.inherits(p,o),e.CstyleBehaviour=p})),ace.define("ace/unicode",["require","exports","module"],(function(t,e,n){"use strict";for(var i=[48,9,8,25,5,0,2,25,48,0,11,0,5,0,6,22,2,30,2,457,5,11,15,4,8,0,2,0,18,116,2,1,3,3,9,0,2,2,2,0,2,19,2,82,2,138,2,4,3,155,12,37,3,0,8,38,10,44,2,0,2,1,2,1,2,0,9,26,6,2,30,10,7,61,2,9,5,101,2,7,3,9,2,18,3,0,17,58,3,100,15,53,5,0,6,45,211,57,3,18,2,5,3,11,3,9,2,1,7,6,2,2,2,7,3,1,3,21,2,6,2,0,4,3,3,8,3,1,3,3,9,0,5,1,2,4,3,11,16,2,2,5,5,1,3,21,2,6,2,1,2,1,2,1,3,0,2,4,5,1,3,2,4,0,8,3,2,0,8,15,12,2,2,8,2,2,2,21,2,6,2,1,2,4,3,9,2,2,2,2,3,0,16,3,3,9,18,2,2,7,3,1,3,21,2,6,2,1,2,4,3,8,3,1,3,2,9,1,5,1,2,4,3,9,2,0,17,1,2,5,4,2,2,3,4,1,2,0,2,1,4,1,4,2,4,11,5,4,4,2,2,3,3,0,7,0,15,9,18,2,2,7,2,2,2,22,2,9,2,4,4,7,2,2,2,3,8,1,2,1,7,3,3,9,19,1,2,7,2,2,2,22,2,9,2,4,3,8,2,2,2,3,8,1,8,0,2,3,3,9,19,1,2,7,2,2,2,22,2,15,4,7,2,2,2,3,10,0,9,3,3,9,11,5,3,1,2,17,4,23,2,8,2,0,3,6,4,0,5,5,2,0,2,7,19,1,14,57,6,14,2,9,40,1,2,0,3,1,2,0,3,0,7,3,2,6,2,2,2,0,2,0,3,1,2,12,2,2,3,4,2,0,2,5,3,9,3,1,35,0,24,1,7,9,12,0,2,0,2,0,5,9,2,35,5,19,2,5,5,7,2,35,10,0,58,73,7,77,3,37,11,42,2,0,4,328,2,3,3,6,2,0,2,3,3,40,2,3,3,32,2,3,3,6,2,0,2,3,3,14,2,56,2,3,3,66,5,0,33,15,17,84,13,619,3,16,2,25,6,74,22,12,2,6,12,20,12,19,13,12,2,2,2,1,13,51,3,29,4,0,5,1,3,9,34,2,3,9,7,87,9,42,6,69,11,28,4,11,5,11,11,39,3,4,12,43,5,25,7,10,38,27,5,62,2,28,3,10,7,9,14,0,89,75,5,9,18,8,13,42,4,11,71,55,9,9,4,48,83,2,2,30,14,230,23,280,3,5,3,37,3,5,3,7,2,0,2,0,2,0,2,30,3,52,2,6,2,0,4,2,2,6,4,3,3,5,5,12,6,2,2,6,67,1,20,0,29,0,14,0,17,4,60,12,5,0,4,11,18,0,5,0,3,9,2,0,4,4,7,0,2,0,2,0,2,3,2,10,3,3,6,4,5,0,53,1,2684,46,2,46,2,132,7,6,15,37,11,53,10,0,17,22,10,6,2,6,2,6,2,6,2,6,2,6,2,6,2,6,2,31,48,0,470,1,36,5,2,4,6,1,5,85,3,1,3,2,2,89,2,3,6,40,4,93,18,23,57,15,513,6581,75,20939,53,1164,68,45,3,268,4,27,21,31,3,13,13,1,2,24,9,69,11,1,38,8,3,102,3,1,111,44,25,51,13,68,12,9,7,23,4,0,5,45,3,35,13,28,4,64,15,10,39,54,10,13,3,9,7,22,4,1,5,66,25,2,227,42,2,1,3,9,7,11171,13,22,5,48,8453,301,3,61,3,105,39,6,13,4,6,11,2,12,2,4,2,0,2,1,2,1,2,107,34,362,19,63,3,53,41,11,5,15,17,6,13,1,25,2,33,4,2,134,20,9,8,25,5,0,2,25,12,88,4,5,3,5,3,5,3,2],r=0,o=[],s=0;s2?i%c!=c-1:i%c==0})}else{if(!this.blockComment)return!1;var f=this.blockComment.start,p=this.blockComment.end,g=new RegExp("^(\\s*)(?:"+l.escapeRegExp(f)+")"),m=new RegExp("(?:"+l.escapeRegExp(p)+")\\s*$"),v=function(t,e){y(t,e)||o&&!/\S/.test(t)||(r.insertInLine({row:e,column:t.length},p),r.insertInLine({row:e,column:a},f))},b=function(t,e){var n;(n=t.match(m))&&r.removeInLine(e,t.length-n[0].length,t.length),(n=t.match(g))&&r.removeInLine(e,n[1].length,n[0].length)},y=function(t,n){if(g.test(t))return!0;for(var i=e.getTokens(n),r=0;rt.length&&(x=t.length)})),a==1/0&&(a=x,o=!1,s=!1),u&&a%c!=0&&(a=Math.floor(a/c)*c),w(s?b:v)},this.toggleBlockComment=function(t,e,n,i){var r=this.blockComment;if(r){!r.start&&r[0]&&(r=r[0]);var o,s,a=(g=new c(e,i.row,i.column)).getCurrentToken(),l=(e.selection,e.selection.toOrientedRange());if(a&&/comment/.test(a.type)){for(var h,d;a&&/comment/.test(a.type);){if(-1!=(m=a.value.indexOf(r.start))){var f=g.getCurrentTokenRow(),p=g.getCurrentTokenColumn()+m;h=new u(f,p,f,p+r.start.length);break}a=g.stepBackward()}var g;for(a=(g=new c(e,i.row,i.column)).getCurrentToken();a&&/comment/.test(a.type);){var m;if(-1!=(m=a.value.indexOf(r.end))){f=g.getCurrentTokenRow(),p=g.getCurrentTokenColumn()+m;d=new u(f,p,f,p+r.end.length);break}a=g.stepForward()}d&&e.remove(d),h&&(e.remove(h),o=h.start.row,s=-r.start.length)}else s=r.start.length,o=n.start.row,e.insert(n.end,r.end),e.insert(n.start,r.start);l.start.row==o&&(l.start.column+=s),l.end.row==o&&(l.end.column+=s),e.selection.fromOrientedRange(l)}},this.getNextLineIndent=function(t,e,n){return this.$getIndent(e)},this.checkOutdent=function(t,e,n){return!1},this.autoOutdent=function(t,e,n){},this.$getIndent=function(t){return t.match(/^\s*/)[0]},this.createWorker=function(t){return null},this.createModeDelegates=function(t){for(var e in this.$embeds=[],this.$modes={},t)if(t[e]){var n=t[e],r=n.prototype.$id,o=i.$modes[r];o||(i.$modes[r]=o=new n),i.$modes[e]||(i.$modes[e]=o),this.$embeds.push(e),this.$modes[e]=o}var s=["toggleBlockComment","toggleCommentLines","getNextLineIndent","checkOutdent","autoOutdent","transformAction","getCompletions"];for(e=0;ethis.row)){var n=function(e,n,i){var r="insert"==e.action,o=(r?1:-1)*(e.end.row-e.start.row),s=(r?1:-1)*(e.end.column-e.start.column),a=e.start,l=r?a:e.end;if(t(n,a,i))return{row:n.row,column:n.column};if(t(l,n,!i))return{row:n.row+o,column:n.column+(n.row==l.row?s:0)};return{row:a.row,column:a.column}}(e,{row:this.row,column:this.column},this.$insertRight);this.setPosition(n.row,n.column,!0)}},this.setPosition=function(t,e,n){var i;if(i=n?{row:t,column:e}:this.$clipPositionToDocument(t,e),this.row!=i.row||this.column!=i.column){var r={row:this.row,column:this.column};this.row=i.row,this.column=i.column,this._signal("change",{old:r,value:i})}},this.detach=function(){this.document.off("change",this.$onChange)},this.attach=function(t){this.document=t||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(t,e){var n={};return t>=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):t<0?(n.row=0,n.column=0):(n.row=t,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,e))),e<0&&(n.column=0),n}}).call(o.prototype)})),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],(function(t,e,n){"use strict";var i=t("./lib/oop"),r=t("./apply_delta").applyDelta,o=t("./lib/event_emitter").EventEmitter,s=t("./range").Range,a=t("./anchor").Anchor,l=function(t){this.$lines=[""],0===t.length?this.$lines=[""]:Array.isArray(t)?this.insertMergedLines({row:0,column:0},t):this.insert({row:0,column:0},t)};(function(){i.implement(this,o),this.setValue=function(t){var e=this.getLength()-1;this.remove(new s(0,0,e,this.getLine(e).length)),this.insert({row:0,column:0},t||"")},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(t,e){return new a(this,t,e)},0==="aaa".split(/a/).length?this.$split=function(t){return t.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(t){return t.split(/\r\n|\r|\n/)},this.$detectNewLine=function(t){var e=t.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=e?e[1]:"\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine||"\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(t){this.$newLineMode!==t&&(this.$newLineMode=t,this._signal("changeNewLineMode"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(t){return"\r\n"==t||"\r"==t||"\n"==t},this.getLine=function(t){return this.$lines[t]||""},this.getLines=function(t,e){return this.$lines.slice(t,e+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(t){return this.getLinesForRange(t).join(this.getNewLineCharacter())},this.getLinesForRange=function(t){var e;if(t.start.row===t.end.row)e=[this.getLine(t.start.row).substring(t.start.column,t.end.column)];else{(e=this.getLines(t.start.row,t.end.row))[0]=(e[0]||"").substring(t.start.column);var n=e.length-1;t.end.row-t.start.row==n&&(e[n]=e[n].substring(0,t.end.column))}return e},this.insertLines=function(t,e){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(t,e)},this.removeLines=function(t,e){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(t,e)},this.insertNewLine=function(t){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."),this.insertMergedLines(t,["",""])},this.insert=function(t,e){return this.getLength()<=1&&this.$detectNewLine(e),this.insertMergedLines(t,this.$split(e))},this.insertInLine=function(t,e){var n=this.clippedPos(t.row,t.column),i=this.pos(t.row,t.column+e.length);return this.applyDelta({start:n,end:i,action:"insert",lines:[e]},!0),this.clonePos(i)},this.clippedPos=function(t,e){var n=this.getLength();void 0===t?t=n:t<0?t=0:t>=n&&(t=n-1,e=void 0);var i=this.getLine(t);return null==e&&(e=i.length),{row:t,column:e=Math.min(Math.max(e,0),i.length)}},this.clonePos=function(t){return{row:t.row,column:t.column}},this.pos=function(t,e){return{row:t,column:e}},this.$clipPosition=function(t){var e=this.getLength();return t.row>=e?(t.row=Math.max(0,e-1),t.column=this.getLine(e-1).length):(t.row=Math.max(0,t.row),t.column=Math.min(Math.max(t.column,0),this.getLine(t.row).length)),t},this.insertFullLines=function(t,e){var n=0;(t=Math.min(Math.max(t,0),this.getLength()))0,i=e=0&&this.applyDelta({start:this.pos(t,this.getLine(t).length),end:this.pos(t+1,0),action:"remove",lines:["",""]})},this.replace=function(t,e){return t instanceof s||(t=s.fromPoints(t.start,t.end)),0===e.length&&t.isEmpty()?t.start:e==this.getTextRange(t)?t.end:(this.remove(t),e?this.insert(t.start,e):t.start)},this.applyDeltas=function(t){for(var e=0;e=0;e--)this.revertDelta(t[e])},this.applyDelta=function(t,e){var n="insert"==t.action;(n?t.lines.length<=1&&!t.lines[0]:!s.comparePoints(t.start,t.end))||(n&&t.lines.length>2e4?this.$splitAndapplyLargeDelta(t,2e4):(r(this.$lines,t,e),this._signal("change",t)))},this.$safeApplyDelta=function(t){var e=this.$lines.length;("remove"==t.action&&t.start.row20){n.running=setTimeout(n.$worker,20);break}}n.currentLine=e,-1==i&&(i=e),o<=i&&n.fireUpdateEvent(o,i)}}};(function(){i.implement(this,r),this.setTokenizer=function(t){this.tokenizer=t,this.lines=[],this.states=[],this.start(0)},this.setDocument=function(t){this.doc=t,this.lines=[],this.states=[],this.stop()},this.fireUpdateEvent=function(t,e){var n={first:t,last:e};this._signal("update",{data:n})},this.start=function(t){this.currentLine=Math.min(t||0,this.currentLine,this.doc.getLength()),this.lines.splice(this.currentLine,this.lines.length),this.states.splice(this.currentLine,this.states.length),this.stop(),this.running=setTimeout(this.$worker,700)},this.scheduleStart=function(){this.running||(this.running=setTimeout(this.$worker,700))},this.$updateOnChange=function(t){var e=t.start.row,n=t.end.row-e;if(0===n)this.lines[e]=null;else if("remove"==t.action)this.lines.splice(e,n+1,null),this.states.splice(e,n+1,null);else{var i=Array(n+1);i.unshift(e,1),this.lines.splice.apply(this.lines,i),this.states.splice.apply(this.states,i)}this.currentLine=Math.min(e,this.currentLine,this.doc.getLength()),this.stop()},this.stop=function(){this.running&&clearTimeout(this.running),this.running=!1},this.getTokens=function(t){return this.lines[t]||this.$tokenizeRow(t)},this.getState=function(t){return this.currentLine==t&&this.$tokenizeRow(t),this.states[t]||"start"},this.$tokenizeRow=function(t){var e=this.doc.getLine(t),n=this.states[t-1],i=this.tokenizer.getLineTokens(e,n,t);return this.states[t]+""!=i.state+""?(this.states[t]=i.state,this.lines[t+1]=null,this.currentLine>t+1&&(this.currentLine=t+1)):this.currentLine==t&&(this.currentLine=t+1),this.lines[t]=i.tokens},this.cleanup=function(){this.running=!1,this.lines=[],this.states=[],this.currentLine=0,this.removeAllListeners()}}).call(o.prototype),e.BackgroundTokenizer=o})),ace.define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],(function(t,e,n){"use strict";var i=t("./lib/lang"),r=(t("./lib/oop"),t("./range").Range),o=function(t,e,n){this.setRegexp(t),this.clazz=e,this.type=n||"text"};(function(){this.MAX_RANGES=500,this.setRegexp=function(t){this.regExp+""!=t+""&&(this.regExp=t,this.cache=[])},this.update=function(t,e,n,o){if(this.regExp)for(var s=o.firstRow,a=o.lastRow,l={},c=s;c<=a;c++){var u=this.cache[c];null==u&&((u=i.getMatchOffsets(n.getLine(c),this.regExp)).length>this.MAX_RANGES&&(u=u.slice(0,this.MAX_RANGES)),u=u.map((function(t){return new r(c,t.offset,c,t.offset+t.length)})),this.cache[c]=u.length?u:"");for(var h=u.length;h--;){var d=u[h].toScreenRange(n),f=d.toString();l[f]||(l[f]=!0,e.drawSingleLineMarker(t,d,this.clazz,o))}}}}).call(o.prototype),e.SearchHighlight=o})),ace.define("ace/edit_session/fold_line",["require","exports","module","ace/range"],(function(t,e,n){"use strict";var i=t("../range").Range;function r(t,e){this.foldData=t,Array.isArray(e)?this.folds=e:e=this.folds=[e];var n=e[e.length-1];this.range=new i(e[0].start.row,e[0].start.column,n.end.row,n.end.column),this.start=this.range.start,this.end=this.range.end,this.folds.forEach((function(t){t.setFoldLine(this)}),this)}(function(){this.shiftRow=function(t){this.start.row+=t,this.end.row+=t,this.folds.forEach((function(e){e.start.row+=t,e.end.row+=t}))},this.addFold=function(t){if(t.sameRow){if(t.start.rowthis.endRow)throw new Error("Can't add a fold to this FoldLine as it has no connection");this.folds.push(t),this.folds.sort((function(t,e){return-t.range.compareEnd(e.start.row,e.start.column)})),this.range.compareEnd(t.start.row,t.start.column)>0?(this.end.row=t.end.row,this.end.column=t.end.column):this.range.compareStart(t.end.row,t.end.column)<0&&(this.start.row=t.start.row,this.start.column=t.start.column)}else if(t.start.row==this.end.row)this.folds.push(t),this.end.row=t.end.row,this.end.column=t.end.column;else{if(t.end.row!=this.start.row)throw new Error("Trying to add fold to FoldRow that doesn't have a matching row");this.folds.unshift(t),this.start.row=t.start.row,this.start.column=t.start.column}t.foldLine=this},this.containsRow=function(t){return t>=this.start.row&&t<=this.end.row},this.walk=function(t,e,n){var i,r,o=0,s=this.folds,a=!0;null==e&&(e=this.end.row,n=this.end.column);for(var l=0;l0)){var l=i(t,s.start);return 0===a?e&&0!==l?-o-2:o:l>0||0===l&&!e?o:-o-1}}return-o-1},this.add=function(t){var e=!t.isEmpty(),n=this.pointIndex(t.start,e);n<0&&(n=-n-1);var i=this.pointIndex(t.end,e,n);return i<0?i=-i-1:i++,this.ranges.splice(n,i-n,t)},this.addList=function(t){for(var e=[],n=t.length;n--;)e.push.apply(e,this.add(t[n]));return e},this.substractPoint=function(t){var e=this.pointIndex(t);if(e>=0)return this.ranges.splice(e,1)},this.merge=function(){for(var t,e=[],n=this.ranges,r=(n=n.sort((function(t,e){return i(t.start,e.start)})))[0],o=1;o=0},this.containsPoint=function(t){return this.pointIndex(t)>=0},this.rangeAtPoint=function(t){var e=this.pointIndex(t);if(e>=0)return this.ranges[e]},this.clipRows=function(t,e){var n=this.ranges;if(n[0].start.row>e||n[n.length-1].start.row=i)break}if("insert"==t.action)for(var l=r-i,c=-e.column+n.column;si)break;if(u.start.row==i&&u.start.column>=e.column&&(u.start.column==e.column&&this.$bias<=0||(u.start.column+=c,u.start.row+=l)),u.end.row==i&&u.end.column>=e.column){if(u.end.column==e.column&&this.$bias<0)continue;u.end.column==e.column&&c>0&&su.start.column&&u.end.column==o[s+1].start.column&&(u.end.column-=c),u.end.column+=c,u.end.row+=l}}else for(l=i-r,c=e.column-n.column;sr)break;u.end.rowe.column)&&(u.end.column=e.column,u.end.row=e.row):(u.end.column+=c,u.end.row+=l):u.end.row>r&&(u.end.row+=l),u.start.rowe.column)&&(u.start.column=e.column,u.start.row=e.row):(u.start.column+=c,u.start.row+=l):u.start.row>r&&(u.start.row+=l)}if(0!=l&&s=t)return r;if(r.end.row>t)return null}return null},this.getNextFoldLine=function(t,e){var n=this.$foldData,i=0;for(e&&(i=n.indexOf(e)),-1==i&&(i=0);i=t)return r}return null},this.getFoldedRowCount=function(t,e){for(var n=this.$foldData,i=e-t+1,r=0;r=e){a=t?i-=e-a:i=0);break}s>=t&&(i-=a>=t?s-a:s-t+1)}return i},this.$addFoldLine=function(t){return this.$foldData.push(t),this.$foldData.sort((function(t,e){return t.start.row-e.start.row})),t},this.addFold=function(t,e){var n,i=this.$foldData,s=!1;t instanceof o?n=t:(n=new o(e,t)).collapseChildren=e.collapseChildren,this.$clipRangeToDocument(n.range);var a=n.start.row,l=n.start.column,c=n.end.row,u=n.end.column,h=this.getFoldAt(a,l,1),d=this.getFoldAt(c,u,-1);if(h&&d==h)return h.addSubFold(n);h&&!h.range.isStart(a,l)&&this.removeFold(h),d&&!d.range.isEnd(c,u)&&this.removeFold(d);var f=this.getFoldsInRange(n.range);f.length>0&&(this.removeFolds(f),n.collapseChildren||f.forEach((function(t){n.addSubFold(t)})));for(var p=0;p0&&this.foldAll(t.start.row+1,t.end.row,t.collapseChildren-1),t.subFolds=[]},this.expandFolds=function(t){t.forEach((function(t){this.expandFold(t)}),this)},this.unfold=function(t,e){var n,r;if(null==t)n=new i(0,0,this.getLength(),0),null==e&&(e=!0);else if("number"==typeof t)n=new i(t,0,t,this.getLine(t).length);else if("row"in t)n=i.fromPoints(t,t);else{if(Array.isArray(t))return r=[],t.forEach((function(t){r=r.concat(this.unfold(t))}),this),r;n=t}for(var o=r=this.getFoldsInRangeList(n);1==r.length&&i.comparePoints(r[0].start,n.start)<0&&i.comparePoints(r[0].end,n.end)>0;)this.expandFolds(r),r=this.getFoldsInRangeList(n);if(0!=e?this.removeFolds(r):this.expandFolds(r),o.length)return o},this.isRowFolded=function(t,e){return!!this.getFoldLine(t,e)},this.getRowFoldEnd=function(t,e){var n=this.getFoldLine(t,e);return n?n.end.row:t},this.getRowFoldStart=function(t,e){var n=this.getFoldLine(t,e);return n?n.start.row:t},this.getFoldDisplayLine=function(t,e,n,i,r){null==i&&(i=t.start.row),null==r&&(r=0),null==e&&(e=t.end.row),null==n&&(n=this.getLine(e).length);var o=this.doc,s="";return t.walk((function(t,e,n,a){if(!(eu)break}while(o&&l.test(o.type)&&!/^comment.start/.test(o.type));o=r.stepBackward()}else o=r.getCurrentToken();return c.end.row=r.getCurrentTokenRow(),c.end.column=r.getCurrentTokenColumn(),/^comment.end/.test(o.type)||(c.end.column+=o.value.length-2),c}},this.foldAll=function(t,e,n,i){null==n&&(n=1e5);var r=this.foldWidgets;if(r){e=e||this.getLength();for(var o=t=t||0;o=t&&(o=s.end.row,s.collapseChildren=n,this.addFold("...",s))}}},this.foldToLevel=function(t){for(this.foldAll();t-- >0;)this.unfold(null,!1)},this.foldAllComments=function(){var t=this;this.foldAll(null,null,null,(function(e){for(var n=t.getTokens(e),i=0;i=0;){var o=n[r];if(null==o&&(o=n[r]=this.getFoldWidget(r)),"start"==o){var s=this.getFoldWidgetRange(r);if(i||(i=s),s&&s.end.row>=t)break}r--}return{range:-1!==r&&s,firstRange:i}},this.onFoldWidgetClick=function(t,e){var n={children:(e=e.domEvent).shiftKey,all:e.ctrlKey||e.metaKey,siblings:e.altKey};if(!this.$toggleFoldWidget(t,n)){var i=e.target||e.srcElement;i&&/ace_fold-widget/.test(i.className)&&(i.className+=" ace_invalid")}},this.$toggleFoldWidget=function(t,e){if(this.getFoldWidget){var n=this.getFoldWidget(t),i=this.getLine(t),r="end"===n?-1:1,o=this.getFoldAt(t,-1===r?0:i.length,r);if(o)return e.children||e.all?this.removeFold(o):this.expandFold(o),o;var s=this.getFoldWidgetRange(t,!0);if(s&&!s.isMultiLine()&&(o=this.getFoldAt(s.start.row,s.start.column,1))&&s.isEqual(o.range))return this.removeFold(o),o;if(e.siblings){var a=this.getParentFoldRangeData(t);if(a.range)var l=a.range.start.row+1,c=a.range.end.row;this.foldAll(l,c,e.all?1e4:0)}else e.children?(c=s?s.end.row:this.getLength(),this.foldAll(t+1,c,e.all?1e4:0)):s&&(e.all&&(s.collapseChildren=1e4),this.addFold("...",s));return s}},this.toggleFoldWidget=function(t){var e=this.selection.getCursor().row;e=this.getRowFoldStart(e);var n=this.$toggleFoldWidget(e,{});if(!n){var i=this.getParentFoldRangeData(e,!0);if(n=i.range||i.firstRange){e=n.start.row;var r=this.getFoldAt(e,this.getLine(e).length,1);r?this.removeFold(r):this.addFold("...",n)}}},this.updateFoldWidgets=function(t){var e=t.start.row,n=t.end.row-e;if(0===n)this.foldWidgets[e]=null;else if("remove"==t.action)this.foldWidgets.splice(e,n+1,null);else{var i=Array(n+1);i.unshift(e,1),this.foldWidgets.splice.apply(this.foldWidgets,i)}},this.tokenizerUpdateFoldWidgets=function(t){var e=t.data;e.first!=e.last&&this.foldWidgets.length>e.first&&this.foldWidgets.splice(e.first,this.foldWidgets.length)}}})),ace.define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"],(function(t,e,n){"use strict";var i=t("../token_iterator").TokenIterator,r=t("../range").Range;e.BracketMatch=function(){this.findMatchingBracket=function(t,e){if(0==t.column)return null;var n=e||this.getLine(t.row).charAt(t.column-1);if(""==n)return null;var i=n.match(/([\(\[\{])|([\)\]\}])/);return i?i[1]?this.$findClosingBracket(i[1],t):this.$findOpeningBracket(i[2],t):null},this.getBracketRange=function(t){var e,n=this.getLine(t.row),i=!0,o=n.charAt(t.column-1),s=o&&o.match(/([\(\[\{])|([\)\]\}])/);if(s||(o=n.charAt(t.column),t={row:t.row,column:t.column+1},s=o&&o.match(/([\(\[\{])|([\)\]\}])/),i=!1),!s)return null;if(s[1]){if(!(a=this.$findClosingBracket(s[1],t)))return null;e=r.fromPoints(t,a),i||(e.end.column++,e.start.column--),e.cursor=e.end}else{var a;if(!(a=this.$findOpeningBracket(s[2],t)))return null;e=r.fromPoints(a,t),i||(e.start.column++,e.end.column--),e.cursor=e.start}return e},this.getMatchingBracketRanges=function(t,e){var n=this.getLine(t.row),i=/([\(\[\{])|([\)\]\}])/,o=!e&&n.charAt(t.column-1),s=o&&o.match(i);if(s||(o=(void 0===e||e)&&n.charAt(t.column),t={row:t.row,column:t.column+1},s=o&&o.match(i)),!s)return null;var a=new r(t.row,t.column-1,t.row,t.column),l=s[1]?this.$findClosingBracket(s[1],t):this.$findOpeningBracket(s[2],t);return l?[a,new r(l.row,l.column,l.row,l.column+1)]:[a]},this.$brackets={")":"(","(":")","]":"[","[":"]","{":"}","}":"{","<":">",">":"<"},this.$findOpeningBracket=function(t,e,n){var r=this.$brackets[t],o=1,s=new i(this,e.row,e.column),a=s.getCurrentToken();if(a||(a=s.stepForward()),a){n||(n=new RegExp("(\\.?"+a.type.replace(".","\\.").replace("rparen",".paren").replace(/\b(?:end)\b/,"(?:start|begin|end)")+")+"));for(var l=e.column-s.getCurrentTokenColumn()-2,c=a.value;;){for(;l>=0;){var u=c.charAt(l);if(u==r){if(0==(o-=1))return{row:s.getCurrentTokenRow(),column:l+s.getCurrentTokenColumn()}}else u==t&&(o+=1);l-=1}do{a=s.stepBackward()}while(a&&!n.test(a.type));if(null==a)break;l=(c=a.value).length-1}return null}},this.$findClosingBracket=function(t,e,n){var r=this.$brackets[t],o=1,s=new i(this,e.row,e.column),a=s.getCurrentToken();if(a||(a=s.stepForward()),a){n||(n=new RegExp("(\\.?"+a.type.replace(".","\\.").replace("lparen",".paren").replace(/\b(?:start|begin)\b/,"(?:start|begin|end)")+")+"));for(var l=e.column-s.getCurrentTokenColumn();;){for(var c=a.value,u=c.length;l"===e.value?i=!0:-1!==e.type.indexOf("tag-name")&&(n=!0))}while(e&&!n);return e},this.$findClosingTag=function(t,e){var n,i=e.value,o=e.value,s=0,a=new r(t.getCurrentTokenRow(),t.getCurrentTokenColumn(),t.getCurrentTokenRow(),t.getCurrentTokenColumn()+1);e=t.stepForward();var l=new r(t.getCurrentTokenRow(),t.getCurrentTokenColumn(),t.getCurrentTokenRow(),t.getCurrentTokenColumn()+e.value.length),c=!1;do{if(n=e,e=t.stepForward()){if(">"===e.value&&!c){var u=new r(t.getCurrentTokenRow(),t.getCurrentTokenColumn(),t.getCurrentTokenRow(),t.getCurrentTokenColumn()+1);c=!0}if(-1!==e.type.indexOf("tag-name")){if(o===(i=e.value))if("<"===n.value)s++;else if(""!==e.value)return;var f=new r(t.getCurrentTokenRow(),t.getCurrentTokenColumn(),t.getCurrentTokenRow(),t.getCurrentTokenColumn()+1)}}else if(o===i&&"/>"===e.value&&--s<0)f=d=h=new r(t.getCurrentTokenRow(),t.getCurrentTokenColumn(),t.getCurrentTokenRow(),t.getCurrentTokenColumn()+2),u=new r(l.end.row,l.end.column,l.end.row,l.end.column+1)}}while(e&&s>=0);if(a&&u&&h&&f&&l&&d)return{openTag:new r(a.start.row,a.start.column,u.end.row,u.end.column),closeTag:new r(h.start.row,h.start.column,f.end.row,f.end.column),openTagName:l,closeTagName:d}},this.$findOpeningTag=function(t,e){var n=t.getCurrentToken(),i=e.value,o=0,s=t.getCurrentTokenRow(),a=t.getCurrentTokenColumn(),l=a+2,c=new r(s,a,s,l);t.stepForward();var u=new r(t.getCurrentTokenRow(),t.getCurrentTokenColumn(),t.getCurrentTokenRow(),t.getCurrentTokenColumn()+e.value.length);if((e=t.stepForward())&&">"===e.value){var h=new r(t.getCurrentTokenRow(),t.getCurrentTokenColumn(),t.getCurrentTokenRow(),t.getCurrentTokenColumn()+1);t.stepBackward(),t.stepBackward();do{if(e=n,s=t.getCurrentTokenRow(),l=(a=t.getCurrentTokenColumn())+e.value.length,n=t.stepBackward(),e)if(-1!==e.type.indexOf("tag-name")){if(i===e.value)if("<"===n.value){if(++o>0){var d=new r(s,a,s,l),f=new r(t.getCurrentTokenRow(),t.getCurrentTokenColumn(),t.getCurrentTokenRow(),t.getCurrentTokenColumn()+1);do{e=t.stepForward()}while(e&&">"!==e.value);var p=new r(t.getCurrentTokenRow(),t.getCurrentTokenColumn(),t.getCurrentTokenRow(),t.getCurrentTokenColumn()+1)}}else""===e.value){for(var g=0,m=n;m;){if(-1!==m.type.indexOf("tag-name")&&m.value===i){o--;break}if("<"===m.value)break;m=t.stepBackward(),g++}for(var v=0;vn&&(this.$docRowCache.splice(n,e),this.$screenRowCache.splice(n,e))},this.$getRowCacheIndex=function(t,e){for(var n=0,i=t.length-1;n<=i;){var r=n+i>>1,o=t[r];if(e>o)n=r+1;else{if(!(e=e);o++);return(n=i[o])?(n.index=o,n.start=r-n.value.length,n):null},this.setUndoManager=function(t){if(this.$undoManager=t,this.$informUndoManager&&this.$informUndoManager.cancel(),t){var e=this;t.addSession(this),this.$syncInformUndoManager=function(){e.$informUndoManager.cancel(),e.mergeUndoDeltas=!1},this.$informUndoManager=r.delayedCall(this.$syncInformUndoManager)}else this.$syncInformUndoManager=function(){}},this.markUndoGroup=function(){this.$syncInformUndoManager&&this.$syncInformUndoManager()},this.$defaultUndoManager={undo:function(){},redo:function(){},hasUndo:function(){},hasRedo:function(){},reset:function(){},add:function(){},addSelection:function(){},startNewGroup:function(){},addSession:function(){}},this.getUndoManager=function(){return this.$undoManager||this.$defaultUndoManager},this.getTabString=function(){return this.getUseSoftTabs()?r.stringRepeat(" ",this.getTabSize()):"\t"},this.setUseSoftTabs=function(t){this.setOption("useSoftTabs",t)},this.getUseSoftTabs=function(){return this.$useSoftTabs&&!this.$mode.$indentWithTabs},this.setTabSize=function(t){this.setOption("tabSize",t)},this.getTabSize=function(){return this.$tabSize},this.isTabStop=function(t){return this.$useSoftTabs&&t.column%this.$tabSize==0},this.setNavigateWithinSoftTabs=function(t){this.setOption("navigateWithinSoftTabs",t)},this.getNavigateWithinSoftTabs=function(){return this.$navigateWithinSoftTabs},this.$overwrite=!1,this.setOverwrite=function(t){this.setOption("overwrite",t)},this.getOverwrite=function(){return this.$overwrite},this.toggleOverwrite=function(){this.setOverwrite(!this.$overwrite)},this.addGutterDecoration=function(t,e){this.$decorations[t]||(this.$decorations[t]=""),this.$decorations[t]+=" "+e,this._signal("changeBreakpoint",{})},this.removeGutterDecoration=function(t,e){this.$decorations[t]=(this.$decorations[t]||"").replace(" "+e,""),this._signal("changeBreakpoint",{})},this.getBreakpoints=function(){return this.$breakpoints},this.setBreakpoints=function(t){this.$breakpoints=[];for(var e=0;e0&&(i=!!n.charAt(e-1).match(this.tokenRe)),i||(i=!!n.charAt(e).match(this.tokenRe)),i)var r=this.tokenRe;else if(/^\s+$/.test(n.slice(e-1,e+1)))r=/\s/;else r=this.nonTokenRe;var o=e;if(o>0){do{o--}while(o>=0&&n.charAt(o).match(r));o++}for(var s=e;st&&(t=e.screenWidth)})),this.lineWidgetWidth=t},this.$computeWidth=function(t){if(this.$modified||t){if(this.$modified=!1,this.$useWrapMode)return this.screenWidth=this.$wrapLimit;for(var e=this.doc.getAllLines(),n=this.$rowLengthCache,i=0,r=0,o=this.$foldData[r],s=o?o.start.row:1/0,a=e.length,l=0;ls){if((l=o.end.row+1)>=a)break;s=(o=this.$foldData[r++])?o.start.row:1/0}null==n[l]&&(n[l]=this.$getStringScreenWidth(e[l])[0]),n[l]>i&&(i=n[l])}this.screenWidth=i}},this.getLine=function(t){return this.doc.getLine(t)},this.getLines=function(t,e){return this.doc.getLines(t,e)},this.getLength=function(){return this.doc.getLength()},this.getTextRange=function(t){return this.doc.getTextRange(t||this.selection.getRange())},this.insert=function(t,e){return this.doc.insert(t,e)},this.remove=function(t){return this.doc.remove(t)},this.removeFullLines=function(t,e){return this.doc.removeFullLines(t,e)},this.undoChanges=function(t,e){if(t.length){this.$fromUndo=!0;for(var n=t.length-1;-1!=n;n--){var i=t[n];"insert"==i.action||"remove"==i.action?this.doc.revertDelta(i):i.folds&&this.addFolds(i.folds)}!e&&this.$undoSelect&&(t.selectionBefore?this.selection.fromJSON(t.selectionBefore):this.selection.setRange(this.$getUndoSelection(t,!0))),this.$fromUndo=!1}},this.redoChanges=function(t,e){if(t.length){this.$fromUndo=!0;for(var n=0;nt.end.column&&(o.start.column+=c),o.end.row==t.end.row&&o.end.column>t.end.column&&(o.end.column+=c)),s&&o.start.row>=t.end.row&&(o.start.row+=s,o.end.row+=s)}if(o.end=this.insert(o.start,i),r.length){var a=t.start,l=o.start,c=(s=l.row-a.row,l.column-a.column);this.addFolds(r.map((function(t){return(t=t.clone()).start.row==a.row&&(t.start.column+=c),t.end.row==a.row&&(t.end.column+=c),t.start.row+=s,t.end.row+=s,t})))}return o},this.indentRows=function(t,e,n){n=n.replace(/\t/g,this.getTabString());for(var i=t;i<=e;i++)this.doc.insertInLine({row:i,column:0},n)},this.outdentRows=function(t){for(var e=t.collapseRows(),n=new u(0,0,0,0),i=this.getTabSize(),r=e.start.row;r<=e.end.row;++r){var o=this.getLine(r);n.start.row=r,n.end.row=r;for(var s=0;s0){var r;if((r=this.getRowFoldEnd(e+n))>this.doc.getLength()-1)return 0;i=r-e}else{t=this.$clipRowToDocument(t);i=(e=this.$clipRowToDocument(e))-t+1}var o=new u(t,0,e,Number.MAX_VALUE),s=this.getFoldsInRange(o).map((function(t){return(t=t.clone()).start.row+=i,t.end.row+=i,t})),a=0==n?this.doc.getLines(t,e):this.doc.removeFullLines(t,e);return this.doc.insertFullLines(t+i,a),s.length&&this.addFolds(s),i},this.moveLinesUp=function(t,e){return this.$moveLines(t,e,-1)},this.moveLinesDown=function(t,e){return this.$moveLines(t,e,1)},this.duplicateLines=function(t,e){return this.$moveLines(t,e,0)},this.$clipRowToDocument=function(t){return Math.max(0,Math.min(t,this.doc.getLength()-1))},this.$clipColumnToRow=function(t,e){return e<0?0:Math.min(this.doc.getLine(t).length,e)},this.$clipPositionToDocument=function(t,e){if(e=Math.max(0,e),t<0)t=0,e=0;else{var n=this.doc.getLength();t>=n?(t=n-1,e=this.doc.getLine(n-1).length):e=Math.min(this.doc.getLine(t).length,e)}return{row:t,column:e}},this.$clipRangeToDocument=function(t){t.start.row<0?(t.start.row=0,t.start.column=0):t.start.column=this.$clipColumnToRow(t.start.row,t.start.column);var e=this.doc.getLength()-1;return t.end.row>e?(t.end.row=e,t.end.column=this.doc.getLine(e).length):t.end.column=this.$clipColumnToRow(t.end.row,t.end.column),t},this.$wrapLimit=80,this.$useWrapMode=!1,this.$wrapLimitRange={min:null,max:null},this.setUseWrapMode=function(t){if(t!=this.$useWrapMode){if(this.$useWrapMode=t,this.$modified=!0,this.$resetRowCache(0),t){var e=this.getLength();this.$wrapData=Array(e),this.$updateWrapData(0,e-1)}this._signal("changeWrapMode")}},this.getUseWrapMode=function(){return this.$useWrapMode},this.setWrapLimitRange=function(t,e){this.$wrapLimitRange.min===t&&this.$wrapLimitRange.max===e||(this.$wrapLimitRange={min:t,max:e},this.$modified=!0,this.$bidiHandler.markAsDirty(),this.$useWrapMode&&this._signal("changeWrapMode"))},this.adjustWrapLimit=function(t,e){var n=this.$wrapLimitRange;n.max<0&&(n={min:e,max:e});var i=this.$constrainWrapLimit(t,n.min,n.max);return i!=this.$wrapLimit&&i>1&&(this.$wrapLimit=i,this.$modified=!0,this.$useWrapMode&&(this.$updateWrapData(0,this.getLength()-1),this.$resetRowCache(0),this._signal("changeWrapLimit")),!0)},this.$constrainWrapLimit=function(t,e,n){return e&&(t=Math.max(e,t)),n&&(t=Math.min(n,t)),t},this.getWrapLimit=function(){return this.$wrapLimit},this.setWrapLimit=function(t){this.setWrapLimitRange(t,t)},this.getWrapLimitRange=function(){return{min:this.$wrapLimitRange.min,max:this.$wrapLimitRange.max}},this.$updateInternalDataOnChange=function(t){var e=this.$useWrapMode,n=t.action,i=t.start,r=t.end,o=i.row,s=r.row,a=s-o,l=null;if(this.$updating=!0,0!=a)if("remove"===n){this[e?"$wrapData":"$rowLengthCache"].splice(o,a);var c=this.$foldData;l=this.getFoldsInRange(t),this.removeFolds(l);var u=0;if(g=this.getFoldLine(r.row)){g.addRemoveChars(r.row,r.column,i.column-r.column),g.shiftRow(-a);var h=this.getFoldLine(o);h&&h!==g&&(h.merge(g),g=h),u=c.indexOf(g)+1}for(;u=r.row&&g.shiftRow(-a)}s=o}else{var d=Array(a);d.unshift(o,0);var f=e?this.$wrapData:this.$rowLengthCache;f.splice.apply(f,d);c=this.$foldData,u=0;if(g=this.getFoldLine(o)){var p=g.range.compareInside(i.row,i.column);0==p?(g=g.split(i.row,i.column))&&(g.shiftRow(a),g.addRemoveChars(s,0,r.column-i.column)):-1==p&&(g.addRemoveChars(o,0,r.column-i.column),g.shiftRow(a)),u=c.indexOf(g)+1}for(;u=o&&g.shiftRow(a)}}else a=Math.abs(t.start.column-t.end.column),"remove"===n&&(l=this.getFoldsInRange(t),this.removeFolds(l),a=-a),(g=this.getFoldLine(o))&&g.addRemoveChars(o,i.column,a);return e&&this.$wrapData.length!=this.doc.getLength()&&console.error("doc.getLength() and $wrapData.length have to be the same!"),this.$updating=!1,e?this.$updateWrapData(o,s):this.$updateRowLengthCache(o,s),l},this.$updateRowLengthCache=function(t,e,n){this.$rowLengthCache[t]=null,this.$rowLengthCache[e]=null},this.$updateWrapData=function(n,i){var r,o,s=this.doc.getAllLines(),a=this.getTabSize(),l=this.$wrapData,c=this.$wrapLimit,u=n;for(i=Math.min(i,s.length-1);u<=i;)(o=this.getFoldLine(u,o))?(r=[],o.walk(function(n,i,o,a){var l;if(null!=n){(l=this.$getDisplayTokens(n,r.length))[0]=t;for(var c=1;c=4352&&t<=4447||t>=4515&&t<=4519||t>=4602&&t<=4607||t>=9001&&t<=9002||t>=11904&&t<=11929||t>=11931&&t<=12019||t>=12032&&t<=12245||t>=12272&&t<=12283||t>=12288&&t<=12350||t>=12353&&t<=12438||t>=12441&&t<=12543||t>=12549&&t<=12589||t>=12593&&t<=12686||t>=12688&&t<=12730||t>=12736&&t<=12771||t>=12784&&t<=12830||t>=12832&&t<=12871||t>=12880&&t<=13054||t>=13056&&t<=19903||t>=19968&&t<=42124||t>=42128&&t<=42182||t>=43360&&t<=43388||t>=44032&&t<=55203||t>=55216&&t<=55238||t>=55243&&t<=55291||t>=63744&&t<=64255||t>=65040&&t<=65049||t>=65072&&t<=65106||t>=65108&&t<=65126||t>=65128&&t<=65131||t>=65281&&t<=65376||t>=65504&&t<=65510)}this.$computeWrapSplits=function(n,i,r){if(0==n.length)return[];var o=[],s=n.length,a=0,l=0,c=this.$wrapAsCode,u=this.$indentedSoftWrap,h=i<=Math.max(2*r,8)||!1===u?0:Math.floor(i/2);function d(t){for(var e=t-a,i=a;ii-f;){var p=a+i-f;if(n[p-1]>=10&&n[p]>=10)d(p);else if(n[p]!=t&&n[p]!=e){for(var g=Math.max(p-(i-(i>>2)),a-1);p>g&&n[p]g&&n[p]g&&9==n[p];)p--}else for(;p>g&&n[p]<10;)p--;p>g?d(++p):(2==n[p=a+i]&&p--,d(p-f))}else{for(;p!=a-1&&n[p]!=t;p--);if(p>a){d(p);continue}for(p=a+i;p39&&s<48||s>57&&s<64?r.push(9):s>=4352&&n(s)?r.push(1,2):r.push(1)}return r},this.$getStringScreenWidth=function(t,e,i){if(0==e)return[0,0];var r,o;for(null==e&&(e=1/0),i=i||0,o=0;o=4352&&n(r)?i+=2:i+=1,!(i>e));o++);return[i,o]},this.lineWidgets=null,this.getRowLength=function(t){var e=1;return this.lineWidgets&&(e+=this.lineWidgets[t]&&this.lineWidgets[t].rowCount||0),this.$useWrapMode&&this.$wrapData[t]?this.$wrapData[t].length+e:e},this.getRowLineCount=function(t){return this.$useWrapMode&&this.$wrapData[t]?this.$wrapData[t].length+1:1},this.getRowWrapIndent=function(t){if(this.$useWrapMode){var e=this.screenToDocumentPosition(t,Number.MAX_VALUE),n=this.$wrapData[e.row];return n.length&&n[0]=0){a=c[u],o=this.$docRowCache[u];var d=t>c[h-1]}else d=!h;for(var f=this.getLength()-1,p=this.getNextFoldLine(o),g=p?p.start.row:1/0;a<=t&&!(a+(l=this.getRowLength(o))>t||o>=f);)a+=l,++o>g&&(o=p.end.row+1,g=(p=this.getNextFoldLine(o,p))?p.start.row:1/0),d&&(this.$docRowCache.push(o),this.$screenRowCache.push(a));if(p&&p.start.row<=o)i=this.getFoldDisplayLine(p),o=p.start.row;else{if(a+l<=t||o>f)return{row:f,column:this.getLine(f).length};i=this.getLine(o),p=null}var m=0,v=Math.floor(t-a);if(this.$useWrapMode){var b=this.$wrapData[o];b&&(r=b[v],v>0&&b.length&&(m=b.indent,s=b[v-1]||b[b.length-1],i=i.substring(s)))}return void 0!==n&&this.$bidiHandler.isBidiRow(a+v,o,v)&&(e=this.$bidiHandler.offsetToCol(n)),s+=this.$getStringScreenWidth(i,e-m)[1],this.$useWrapMode&&s>=r&&(s=r-1),p?p.idxToPosition(s):{row:o,column:s}},this.documentToScreenPosition=function(t,e){if(void 0===e)var n=this.$clipPositionToDocument(t.row,t.column);else n=this.$clipPositionToDocument(t,e);t=n.row,e=n.column;var i,r=0,o=null;(i=this.getFoldAt(t,e,1))&&(t=i.start.row,e=i.start.column);var s,a=0,l=this.$docRowCache,c=this.$getRowCacheIndex(l,t),u=l.length;if(u&&c>=0){a=l[c],r=this.$screenRowCache[c];var h=t>l[u-1]}else h=!u;for(var d=this.getNextFoldLine(a),f=d?d.start.row:1/0;a=f){if((s=d.end.row+1)>t)break;f=(d=this.getNextFoldLine(s,d))?d.start.row:1/0}else s=a+1;r+=this.getRowLength(a),a=s,h&&(this.$docRowCache.push(a),this.$screenRowCache.push(r))}var p="";d&&a>=f?(p=this.getFoldDisplayLine(d,t,e),o=d.start.row):(p=this.getLine(t).substring(0,e),o=t);var g=0;if(this.$useWrapMode){var m=this.$wrapData[o];if(m){for(var v=0;p.length>=m[v];)r++,v++;p=p.substring(m[v-1]||0,p.length),g=v>0?m.indent:0}}return this.lineWidgets&&this.lineWidgets[a]&&this.lineWidgets[a].rowsAbove&&(r+=this.lineWidgets[a].rowsAbove),{row:r,column:g+this.$getStringScreenWidth(p)[0]}},this.documentToScreenColumn=function(t,e){return this.documentToScreenPosition(t,e).column},this.documentToScreenRow=function(t,e){return this.documentToScreenPosition(t,e).row},this.getScreenLength=function(){var t=0,e=null;if(this.$useWrapMode)for(var n=this.$wrapData.length,i=0,r=(a=0,(e=this.$foldData[a++])?e.start.row:1/0);ir&&(i=e.end.row+1,r=(e=this.$foldData[a++])?e.start.row:1/0)}else{t=this.getLength();for(var s=this.$foldData,a=0;an);o++);return[i,o]})},this.destroy=function(){this.destroyed||(this.bgTokenizer.setDocument(null),this.bgTokenizer.cleanup(),this.destroyed=!0),this.$stopWorker(),this.removeAllListeners(),this.doc&&this.doc.off("change",this.$onChange),this.selection.detach()},this.isFullWidth=n}.call(p.prototype),t("./edit_session/folding").Folding.call(p.prototype),t("./edit_session/bracket_match").BracketMatch.call(p.prototype),s.defineOptions(p.prototype,"session",{wrap:{set:function(t){if(t&&"off"!=t?"free"==t?t=!0:"printMargin"==t?t=-1:"string"==typeof t&&(t=parseInt(t,10)||!1):t=!1,this.$wrap!=t)if(this.$wrap=t,t){var e="number"==typeof t?t:null;this.setWrapLimitRange(e,e),this.setUseWrapMode(!0)}else this.setUseWrapMode(!1)},get:function(){return this.getUseWrapMode()?-1==this.$wrap?"printMargin":this.getWrapLimitRange().min?this.$wrap:"free":"off"},handlesSet:!0},wrapMethod:{set:function(t){(t="auto"==t?"text"!=this.$mode.type:"text"!=t)!=this.$wrapAsCode&&(this.$wrapAsCode=t,this.$useWrapMode&&(this.$useWrapMode=!1,this.setUseWrapMode(!0)))},initialValue:"auto"},indentedSoftWrap:{set:function(){this.$useWrapMode&&(this.$useWrapMode=!1,this.setUseWrapMode(!0))},initialValue:!0},firstLineNumber:{set:function(){this._signal("changeBreakpoint")},initialValue:1},useWorker:{set:function(t){this.$useWorker=t,this.$stopWorker(),t&&this.$startWorker()},initialValue:!0},useSoftTabs:{initialValue:!0},tabSize:{set:function(t){(t=parseInt(t))>0&&this.$tabSize!==t&&(this.$modified=!0,this.$rowLengthCache=[],this.$tabSize=t,this._signal("changeTabSize"))},initialValue:4,handlesSet:!0},navigateWithinSoftTabs:{initialValue:!1},foldStyle:{set:function(t){this.setFoldStyle(t)},handlesSet:!0},overwrite:{set:function(t){this._signal("changeOverwrite")},initialValue:!1},newLineMode:{set:function(t){this.doc.setNewLineMode(t)},get:function(){return this.doc.getNewLineMode()},handlesSet:!0},mode:{set:function(t){this.setMode(t)},get:function(){return this.$modeId},handlesSet:!0}}),e.EditSession=p})),ace.define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],(function(t,e,n){"use strict";var i=t("./lib/lang"),r=t("./lib/oop"),o=t("./range").Range,s=function(){this.$options={}};(function(){this.set=function(t){return r.mixin(this.$options,t),this},this.getOptions=function(){return i.copyObject(this.$options)},this.setOptions=function(t){this.$options=t},this.find=function(t){var e=this.$options,n=this.$matchIterator(t,e);if(!n)return!1;var i=null;return n.forEach((function(t,n,r,s){return i=new o(t,n,r,s),!(n==s&&e.start&&e.start.start&&0!=e.skipCurrent&&i.isEqual(e.start))||(i=null,!1)})),i},this.findAll=function(t){var e=this.$options;if(!e.needle)return[];this.$assembleRegExp(e);var n=e.range,r=n?t.getLines(n.start.row,n.end.row):t.doc.getAllLines(),s=[],a=e.re;if(e.$isMultiLine){var l,c=a.length,u=r.length-c;t:for(var h=a.offset||0;h<=u;h++){for(var d=0;dg||(s.push(l=new o(h,g,h+c-1,m)),c>2&&(h=h+c-2))}}else for(var v=0;vx&&s[d].end.row==_;)d--;for(s=s.slice(v,d+1),v=0,d=s.length;v=a;n--)if(h(n,Number.MAX_VALUE,t))return;if(0!=e.wrap)for(n=l,a=s.row;n>=a;n--)if(h(n,Number.MAX_VALUE,t))return}};else c=function(t){var n=s.row;if(!h(n,s.column,t)){for(n+=1;n<=l;n++)if(h(n,0,t))return;if(0!=e.wrap)for(n=a,l=s.row;n<=l;n++)if(h(n,0,t))return}};if(e.$isMultiLine)var u=n.length,h=function(e,r,o){var s=i?e-u+1:e;if(!(s<0||s+u>t.getLength())){var a=t.getLine(s),l=a.search(n[0]);if(!(!i&&lr))return!!o(s,l,s+u-1,h)||void 0}}};else if(i)h=function(e,i,r){var o,s=t.getLine(e),a=[],l=0;for(n.lastIndex=0;o=n.exec(s);){var c=o[0].length;if(l=o.index,!c){if(l>=s.length)break;n.lastIndex=l+=1}if(o.index+c>i)break;a.push(o.index,c)}for(var u=a.length-1;u>=0;u-=2){var h=a[u-1];if(r(e,h,e,h+(c=a[u])))return!0}};else h=function(e,i,r){var o,s,a=t.getLine(e);for(n.lastIndex=i;s=n.exec(a);){var l=s[0].length;if(r(e,o=s.index,e,o+l))return!0;if(!l&&(n.lastIndex=o+=1,o>=a.length))return!1}};return{forEach:c}}}).call(s.prototype),e.Search=s})),ace.define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"],(function(t,e,n){"use strict";var i=t("../lib/keys"),r=t("../lib/useragent"),o=i.KEY_MODS;function s(t,e){this.platform=e||(r.isMac?"mac":"win"),this.commands={},this.commandKeyBinding={},this.addCommands(t),this.$singleCommand=!0}function a(t,e){s.call(this,t,e),this.$singleCommand=!1}a.prototype=s.prototype,function(){function t(t){return"object"==typeof t&&t.bindKey&&t.bindKey.position||(t.isDefault?-100:0)}this.addCommand=function(t){this.commands[t.name]&&this.removeCommand(t),this.commands[t.name]=t,t.bindKey&&this._buildKeyHash(t)},this.removeCommand=function(t,e){var n=t&&("string"==typeof t?t:t.name);t=this.commands[n],e||delete this.commands[n];var i=this.commandKeyBinding;for(var r in i){var o=i[r];if(o==t)delete i[r];else if(Array.isArray(o)){var s=o.indexOf(t);-1!=s&&(o.splice(s,1),1==o.length&&(i[r]=o[0]))}}},this.bindKey=function(t,e,n){if("object"==typeof t&&t&&(null==n&&(n=t.position),t=t[this.platform]),t)return"function"==typeof e?this.addCommand({exec:e,bindKey:t,name:e.name||t}):void t.split("|").forEach((function(t){var i="";if(-1!=t.indexOf(" ")){var r=t.split(/\s+/);t=r.pop(),r.forEach((function(t){var e=this.parseKeys(t),n=o[e.hashId]+e.key;i+=(i?" ":"")+n,this._addCommandToBinding(i,"chainKeys")}),this),i+=" "}var s=this.parseKeys(t),a=o[s.hashId]+s.key;this._addCommandToBinding(i+a,e,n)}),this)},this._addCommandToBinding=function(e,n,i){var r,o=this.commandKeyBinding;if(n)if(!o[e]||this.$singleCommand)o[e]=n;else{Array.isArray(o[e])?-1!=(r=o[e].indexOf(n))&&o[e].splice(r,1):o[e]=[o[e]],"number"!=typeof i&&(i=t(n));var s=o[e];for(r=0;ri)break}s.splice(r,0,n)}else delete o[e]},this.addCommands=function(t){t&&Object.keys(t).forEach((function(e){var n=t[e];if(n){if("string"==typeof n)return this.bindKey(n,e);"function"==typeof n&&(n={exec:n}),"object"==typeof n&&(n.name||(n.name=e),this.addCommand(n))}}),this)},this.removeCommands=function(t){Object.keys(t).forEach((function(e){this.removeCommand(t[e])}),this)},this.bindKeys=function(t){Object.keys(t).forEach((function(e){this.bindKey(e,t[e])}),this)},this._buildKeyHash=function(t){this.bindKey(t.bindKey,t)},this.parseKeys=function(t){var e=t.toLowerCase().split(/[\-\+]([\-\+])?/).filter((function(t){return t})),n=e.pop(),r=i[n];if(i.FUNCTION_KEYS[r])n=i.FUNCTION_KEYS[r].toLowerCase();else{if(!e.length)return{key:n,hashId:-1};if(1==e.length&&"shift"==e[0])return{key:n.toUpperCase(),hashId:-1}}for(var o=0,s=e.length;s--;){var a=i.KEY_MODS[e[s]];if(null==a)return"undefined"!=typeof console&&console.error("invalid modifier "+e[s]+" in "+t),!1;o|=a}return{key:n,hashId:o}},this.findKeyCommand=function(t,e){var n=o[t]+e;return this.commandKeyBinding[n]},this.handleKeyboard=function(t,e,n,i){if(!(i<0)){var r=o[e]+n,s=this.commandKeyBinding[r];return t.$keyChain&&(t.$keyChain+=" "+r,s=this.commandKeyBinding[t.$keyChain]||s),!s||"chainKeys"!=s&&"chainKeys"!=s[s.length-1]?(t.$keyChain&&(e&&4!=e||1!=n.length?(-1==e||i>0)&&(t.$keyChain=""):t.$keyChain=t.$keyChain.slice(0,-r.length-1)),{command:s}):(t.$keyChain=t.$keyChain||r,{command:"null"})}},this.getStatusText=function(t,e){return e.$keyChain||""}}.call(s.prototype),e.HashHandler=s,e.MultiHashHandler=a})),ace.define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"],(function(t,e,n){"use strict";var i=t("../lib/oop"),r=t("../keyboard/hash_handler").MultiHashHandler,o=t("../lib/event_emitter").EventEmitter,s=function(t,e){r.call(this,e,t),this.byName=this.commands,this.setDefaultHandler("exec",(function(t){return t.args?t.command.exec(t.editor,t.args,t.event,!1):t.command.exec(t.editor,{},t.event,!0)}))};i.inherits(s,r),function(){i.implement(this,o),this.exec=function(t,e,n){if(Array.isArray(t)){for(var i=t.length;i--;)if(this.exec(t[i],e,n))return!0;return!1}if("string"==typeof t&&(t=this.commands[t]),!t)return!1;if(e&&e.$readOnly&&!t.readOnly)return!1;if(0!=this.$checkCommandState&&t.isAvailable&&!t.isAvailable(e))return!1;var r={editor:e,command:t,args:n};return r.returnValue=this._emit("exec",r),this._signal("afterExec",r),!1!==r.returnValue},this.toggleRecording=function(t){if(!this.$inReplay)return t&&t._emit("changeStatus"),this.recording?(this.macro.pop(),this.off("exec",this.$addCommandToMacro),this.macro.length||(this.macro=this.oldMacro),this.recording=!1):(this.$addCommandToMacro||(this.$addCommandToMacro=function(t){this.macro.push([t.command,t.args])}.bind(this)),this.oldMacro=this.macro,this.macro=[],this.on("exec",this.$addCommandToMacro),this.recording=!0)},this.replay=function(t){if(!this.$inReplay&&this.macro){if(this.recording)return this.toggleRecording(t);try{this.$inReplay=!0,this.macro.forEach((function(e){"string"==typeof e?this.exec(e,t):this.exec(e[0],t,e[1])}),this)}finally{this.$inReplay=!1}}},this.trimMacro=function(t){return t.map((function(t){return"string"!=typeof t[0]&&(t[0]=t[0].name),t[1]||(t=t[0]),t}))}}.call(s.prototype),e.CommandManager=s})),ace.define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config","ace/range"],(function(t,e,n){"use strict";var i=t("../lib/lang"),r=t("../config"),o=t("../range").Range;function s(t,e){return{win:t,mac:e}}e.commands=[{name:"showSettingsMenu",description:"Show settings menu",bindKey:s("Ctrl-,","Command-,"),exec:function(t){r.loadModule("ace/ext/settings_menu",(function(e){e.init(t),t.showSettingsMenu()}))},readOnly:!0},{name:"goToNextError",description:"Go to next error",bindKey:s("Alt-E","F4"),exec:function(t){r.loadModule("ace/ext/error_marker",(function(e){e.showErrorMarker(t,1)}))},scrollIntoView:"animate",readOnly:!0},{name:"goToPreviousError",description:"Go to previous error",bindKey:s("Alt-Shift-E","Shift-F4"),exec:function(t){r.loadModule("ace/ext/error_marker",(function(e){e.showErrorMarker(t,-1)}))},scrollIntoView:"animate",readOnly:!0},{name:"selectall",description:"Select all",bindKey:s("Ctrl-A","Command-A"),exec:function(t){t.selectAll()},readOnly:!0},{name:"centerselection",description:"Center selection",bindKey:s(null,"Ctrl-L"),exec:function(t){t.centerSelection()},readOnly:!0},{name:"gotoline",description:"Go to line...",bindKey:s("Ctrl-L","Command-L"),exec:function(t,e){"number"!=typeof e||isNaN(e)||t.gotoLine(e),t.prompt({$type:"gotoLine"})},readOnly:!0},{name:"fold",bindKey:s("Alt-L|Ctrl-F1","Command-Alt-L|Command-F1"),exec:function(t){t.session.toggleFold(!1)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"unfold",bindKey:s("Alt-Shift-L|Ctrl-Shift-F1","Command-Alt-Shift-L|Command-Shift-F1"),exec:function(t){t.session.toggleFold(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleFoldWidget",description:"Toggle fold widget",bindKey:s("F2","F2"),exec:function(t){t.session.toggleFoldWidget()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleParentFoldWidget",description:"Toggle parent fold widget",bindKey:s("Alt-F2","Alt-F2"),exec:function(t){t.session.toggleFoldWidget(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"foldall",description:"Fold all",bindKey:s(null,"Ctrl-Command-Option-0"),exec:function(t){t.session.foldAll()},scrollIntoView:"center",readOnly:!0},{name:"foldAllComments",description:"Fold all comments",bindKey:s(null,"Ctrl-Command-Option-0"),exec:function(t){t.session.foldAllComments()},scrollIntoView:"center",readOnly:!0},{name:"foldOther",description:"Fold other",bindKey:s("Alt-0","Command-Option-0"),exec:function(t){t.session.foldAll(),t.session.unfold(t.selection.getAllRanges())},scrollIntoView:"center",readOnly:!0},{name:"unfoldall",description:"Unfold all",bindKey:s("Alt-Shift-0","Command-Option-Shift-0"),exec:function(t){t.session.unfold()},scrollIntoView:"center",readOnly:!0},{name:"findnext",description:"Find next",bindKey:s("Ctrl-K","Command-G"),exec:function(t){t.findNext()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"findprevious",description:"Find previous",bindKey:s("Ctrl-Shift-K","Command-Shift-G"),exec:function(t){t.findPrevious()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"selectOrFindNext",description:"Select or find next",bindKey:s("Alt-K","Ctrl-G"),exec:function(t){t.selection.isEmpty()?t.selection.selectWord():t.findNext()},readOnly:!0},{name:"selectOrFindPrevious",description:"Select or find previous",bindKey:s("Alt-Shift-K","Ctrl-Shift-G"),exec:function(t){t.selection.isEmpty()?t.selection.selectWord():t.findPrevious()},readOnly:!0},{name:"find",description:"Find",bindKey:s("Ctrl-F","Command-F"),exec:function(t){r.loadModule("ace/ext/searchbox",(function(e){e.Search(t)}))},readOnly:!0},{name:"overwrite",description:"Overwrite",bindKey:"Insert",exec:function(t){t.toggleOverwrite()},readOnly:!0},{name:"selecttostart",description:"Select to start",bindKey:s("Ctrl-Shift-Home","Command-Shift-Home|Command-Shift-Up"),exec:function(t){t.getSelection().selectFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotostart",description:"Go to start",bindKey:s("Ctrl-Home","Command-Home|Command-Up"),exec:function(t){t.navigateFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectup",description:"Select up",bindKey:s("Shift-Up","Shift-Up|Ctrl-Shift-P"),exec:function(t){t.getSelection().selectUp()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golineup",description:"Go line up",bindKey:s("Up","Up|Ctrl-P"),exec:function(t,e){t.navigateUp(e.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttoend",description:"Select to end",bindKey:s("Ctrl-Shift-End","Command-Shift-End|Command-Shift-Down"),exec:function(t){t.getSelection().selectFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotoend",description:"Go to end",bindKey:s("Ctrl-End","Command-End|Command-Down"),exec:function(t){t.navigateFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectdown",description:"Select down",bindKey:s("Shift-Down","Shift-Down|Ctrl-Shift-N"),exec:function(t){t.getSelection().selectDown()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golinedown",description:"Go line down",bindKey:s("Down","Down|Ctrl-N"),exec:function(t,e){t.navigateDown(e.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordleft",description:"Select word left",bindKey:s("Ctrl-Shift-Left","Option-Shift-Left"),exec:function(t){t.getSelection().selectWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordleft",description:"Go to word left",bindKey:s("Ctrl-Left","Option-Left"),exec:function(t){t.navigateWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolinestart",description:"Select to line start",bindKey:s("Alt-Shift-Left","Command-Shift-Left|Ctrl-Shift-A"),exec:function(t){t.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolinestart",description:"Go to line start",bindKey:s("Alt-Left|Home","Command-Left|Home|Ctrl-A"),exec:function(t){t.navigateLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectleft",description:"Select left",bindKey:s("Shift-Left","Shift-Left|Ctrl-Shift-B"),exec:function(t){t.getSelection().selectLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoleft",description:"Go to left",bindKey:s("Left","Left|Ctrl-B"),exec:function(t,e){t.navigateLeft(e.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordright",description:"Select word right",bindKey:s("Ctrl-Shift-Right","Option-Shift-Right"),exec:function(t){t.getSelection().selectWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordright",description:"Go to word right",bindKey:s("Ctrl-Right","Option-Right"),exec:function(t){t.navigateWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolineend",description:"Select to line end",bindKey:s("Alt-Shift-Right","Command-Shift-Right|Shift-End|Ctrl-Shift-E"),exec:function(t){t.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolineend",description:"Go to line end",bindKey:s("Alt-Right|End","Command-Right|End|Ctrl-E"),exec:function(t){t.navigateLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectright",description:"Select right",bindKey:s("Shift-Right","Shift-Right"),exec:function(t){t.getSelection().selectRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoright",description:"Go to right",bindKey:s("Right","Right|Ctrl-F"),exec:function(t,e){t.navigateRight(e.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectpagedown",description:"Select page down",bindKey:"Shift-PageDown",exec:function(t){t.selectPageDown()},readOnly:!0},{name:"pagedown",description:"Page down",bindKey:s(null,"Option-PageDown"),exec:function(t){t.scrollPageDown()},readOnly:!0},{name:"gotopagedown",description:"Go to page down",bindKey:s("PageDown","PageDown|Ctrl-V"),exec:function(t){t.gotoPageDown()},readOnly:!0},{name:"selectpageup",description:"Select page up",bindKey:"Shift-PageUp",exec:function(t){t.selectPageUp()},readOnly:!0},{name:"pageup",description:"Page up",bindKey:s(null,"Option-PageUp"),exec:function(t){t.scrollPageUp()},readOnly:!0},{name:"gotopageup",description:"Go to page up",bindKey:"PageUp",exec:function(t){t.gotoPageUp()},readOnly:!0},{name:"scrollup",description:"Scroll up",bindKey:s("Ctrl-Up",null),exec:function(t){t.renderer.scrollBy(0,-2*t.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"scrolldown",description:"Scroll down",bindKey:s("Ctrl-Down",null),exec:function(t){t.renderer.scrollBy(0,2*t.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"selectlinestart",description:"Select line start",bindKey:"Shift-Home",exec:function(t){t.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectlineend",description:"Select line end",bindKey:"Shift-End",exec:function(t){t.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"togglerecording",description:"Toggle recording",bindKey:s("Ctrl-Alt-E","Command-Option-E"),exec:function(t){t.commands.toggleRecording(t)},readOnly:!0},{name:"replaymacro",description:"Replay macro",bindKey:s("Ctrl-Shift-E","Command-Shift-E"),exec:function(t){t.commands.replay(t)},readOnly:!0},{name:"jumptomatching",description:"Jump to matching",bindKey:s("Ctrl-\\|Ctrl-P","Command-\\"),exec:function(t){t.jumpToMatching()},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"selecttomatching",description:"Select to matching",bindKey:s("Ctrl-Shift-\\|Ctrl-Shift-P","Command-Shift-\\"),exec:function(t){t.jumpToMatching(!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"expandToMatching",description:"Expand to matching",bindKey:s("Ctrl-Shift-M","Ctrl-Shift-M"),exec:function(t){t.jumpToMatching(!0,!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"passKeysToBrowser",description:"Pass keys to browser",bindKey:s(null,null),exec:function(){},passEvent:!0,readOnly:!0},{name:"copy",description:"Copy",exec:function(t){},readOnly:!0},{name:"cut",description:"Cut",exec:function(t){var e=t.$copyWithEmptySelection&&t.selection.isEmpty()?t.selection.getLineRange():t.selection.getRange();t._emit("cut",e),e.isEmpty()||t.session.remove(e),t.clearSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"paste",description:"Paste",exec:function(t,e){t.$handlePaste(e)},scrollIntoView:"cursor"},{name:"removeline",description:"Remove line",bindKey:s("Ctrl-D","Command-D"),exec:function(t){t.removeLines()},scrollIntoView:"cursor",multiSelectAction:"forEachLine"},{name:"duplicateSelection",description:"Duplicate selection",bindKey:s("Ctrl-Shift-D","Command-Shift-D"),exec:function(t){t.duplicateSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"sortlines",description:"Sort lines",bindKey:s("Ctrl-Alt-S","Command-Alt-S"),exec:function(t){t.sortLines()},scrollIntoView:"selection",multiSelectAction:"forEachLine"},{name:"togglecomment",description:"Toggle comment",bindKey:s("Ctrl-/","Command-/"),exec:function(t){t.toggleCommentLines()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"toggleBlockComment",description:"Toggle block comment",bindKey:s("Ctrl-Shift-/","Command-Shift-/"),exec:function(t){t.toggleBlockComment()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"modifyNumberUp",description:"Modify number up",bindKey:s("Ctrl-Shift-Up","Alt-Shift-Up"),exec:function(t){t.modifyNumber(1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"modifyNumberDown",description:"Modify number down",bindKey:s("Ctrl-Shift-Down","Alt-Shift-Down"),exec:function(t){t.modifyNumber(-1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"replace",description:"Replace",bindKey:s("Ctrl-H","Command-Option-F"),exec:function(t){r.loadModule("ace/ext/searchbox",(function(e){e.Search(t,!0)}))}},{name:"undo",description:"Undo",bindKey:s("Ctrl-Z","Command-Z"),exec:function(t){t.undo()}},{name:"redo",description:"Redo",bindKey:s("Ctrl-Shift-Z|Ctrl-Y","Command-Shift-Z|Command-Y"),exec:function(t){t.redo()}},{name:"copylinesup",description:"Copy lines up",bindKey:s("Alt-Shift-Up","Command-Option-Up"),exec:function(t){t.copyLinesUp()},scrollIntoView:"cursor"},{name:"movelinesup",description:"Move lines up",bindKey:s("Alt-Up","Option-Up"),exec:function(t){t.moveLinesUp()},scrollIntoView:"cursor"},{name:"copylinesdown",description:"Copy lines down",bindKey:s("Alt-Shift-Down","Command-Option-Down"),exec:function(t){t.copyLinesDown()},scrollIntoView:"cursor"},{name:"movelinesdown",description:"Move lines down",bindKey:s("Alt-Down","Option-Down"),exec:function(t){t.moveLinesDown()},scrollIntoView:"cursor"},{name:"del",description:"Delete",bindKey:s("Delete","Delete|Ctrl-D|Shift-Delete"),exec:function(t){t.remove("right")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"backspace",description:"Backspace",bindKey:s("Shift-Backspace|Backspace","Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"),exec:function(t){t.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"cut_or_delete",description:"Cut or delete",bindKey:s("Shift-Delete",null),exec:function(t){if(!t.selection.isEmpty())return!1;t.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestart",description:"Remove to line start",bindKey:s("Alt-Backspace","Command-Backspace"),exec:function(t){t.removeToLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineend",description:"Remove to line end",bindKey:s("Alt-Delete","Ctrl-K|Command-Delete"),exec:function(t){t.removeToLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestarthard",description:"Remove to line start hard",bindKey:s("Ctrl-Shift-Backspace",null),exec:function(t){var e=t.selection.getRange();e.start.column=0,t.session.remove(e)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineendhard",description:"Remove to line end hard",bindKey:s("Ctrl-Shift-Delete",null),exec:function(t){var e=t.selection.getRange();e.end.column=Number.MAX_VALUE,t.session.remove(e)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordleft",description:"Remove word left",bindKey:s("Ctrl-Backspace","Alt-Backspace|Ctrl-Alt-Backspace"),exec:function(t){t.removeWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordright",description:"Remove word right",bindKey:s("Ctrl-Delete","Alt-Delete"),exec:function(t){t.removeWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"outdent",description:"Outdent",bindKey:s("Shift-Tab","Shift-Tab"),exec:function(t){t.blockOutdent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"indent",description:"Indent",bindKey:s("Tab","Tab"),exec:function(t){t.indent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"blockoutdent",description:"Block outdent",bindKey:s("Ctrl-[","Ctrl-["),exec:function(t){t.blockOutdent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"blockindent",description:"Block indent",bindKey:s("Ctrl-]","Ctrl-]"),exec:function(t){t.blockIndent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"insertstring",description:"Insert string",exec:function(t,e){t.insert(e)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"inserttext",description:"Insert text",exec:function(t,e){t.insert(i.stringRepeat(e.text||"",e.times||1))},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"splitline",description:"Split line",bindKey:s(null,"Ctrl-O"),exec:function(t){t.splitLine()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"transposeletters",description:"Transpose letters",bindKey:s("Alt-Shift-X","Ctrl-T"),exec:function(t){t.transposeLetters()},multiSelectAction:function(t){t.transposeSelections(1)},scrollIntoView:"cursor"},{name:"touppercase",description:"To uppercase",bindKey:s("Ctrl-U","Ctrl-U"),exec:function(t){t.toUpperCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"tolowercase",description:"To lowercase",bindKey:s("Ctrl-Shift-U","Ctrl-Shift-U"),exec:function(t){t.toLowerCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"autoindent",description:"Auto Indent",bindKey:s(null,null),exec:function(t){t.autoIndent()},multiSelectAction:"forEachLine",scrollIntoView:"animate"},{name:"expandtoline",description:"Expand to line",bindKey:s("Ctrl-Shift-L","Command-Shift-L"),exec:function(t){var e=t.selection.getRange();e.start.column=e.end.column=0,e.end.row++,t.selection.setRange(e,!1)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"openlink",bindKey:s("Ctrl+F3","F3"),exec:function(t){t.openLink()}},{name:"joinlines",description:"Join lines",bindKey:s(null,null),exec:function(t){for(var e=t.selection.isBackwards(),n=e?t.selection.getSelectionLead():t.selection.getSelectionAnchor(),r=e?t.selection.getSelectionAnchor():t.selection.getSelectionLead(),s=t.session.doc.getLine(n.row).length,a=t.session.doc.getTextRange(t.selection.getRange()).replace(/\n\s*/," ").length,l=t.session.doc.getLine(n.row),c=n.row+1;c<=r.row+1;c++){var u=i.stringTrimLeft(i.stringTrimRight(t.session.doc.getLine(c)));0!==u.length&&(u=" "+u),l+=u}r.row+10?(t.selection.moveCursorTo(n.row,n.column),t.selection.selectTo(n.row,n.column+a)):(s=t.session.doc.getLine(n.row).length>s?s+1:s,t.selection.moveCursorTo(n.row,s))},multiSelectAction:"forEach",readOnly:!0},{name:"invertSelection",description:"Invert selection",bindKey:s(null,null),exec:function(t){var e=t.session.doc.getLength()-1,n=t.session.doc.getLine(e).length,i=t.selection.rangeList.ranges,r=[];i.length<1&&(i=[t.selection.getRange()]);for(var s=0;se[n].column&&n++,o.unshift(n,0),e.splice.apply(e,o),this.$updateRows()}}},this.$updateRows=function(){var t=this.session.lineWidgets;if(t){var e=!0;t.forEach((function(t,n){if(t)for(e=!1,t.row=n;t.$oldWidget;)t.$oldWidget.row=n,t=t.$oldWidget})),e&&(this.session.lineWidgets=null)}},this.$registerLineWidget=function(t){this.session.lineWidgets||(this.session.lineWidgets=new Array(this.session.getLength()));var e=this.session.lineWidgets[t.row];return e&&(t.$oldWidget=e,e.el&&e.el.parentNode&&(e.el.parentNode.removeChild(e.el),e._inDocument=!1)),this.session.lineWidgets[t.row]=t,t},this.addLineWidget=function(t){if(this.$registerLineWidget(t),t.session=this.session,!this.editor)return t;var e=this.editor.renderer;t.html&&!t.el&&(t.el=i.createElement("div"),t.el.innerHTML=t.html),t.text&&!t.el&&(t.el=i.createElement("div"),t.el.textContent=t.text),t.el&&(i.addCssClass(t.el,"ace_lineWidgetContainer"),t.className&&i.addCssClass(t.el,t.className),t.el.style.position="absolute",t.el.style.zIndex=5,e.container.appendChild(t.el),t._inDocument=!0,t.coverGutter||(t.el.style.zIndex=3),null==t.pixelHeight&&(t.pixelHeight=t.el.offsetHeight)),null==t.rowCount&&(t.rowCount=t.pixelHeight/e.layerConfig.lineHeight);var n=this.session.getFoldAt(t.row,0);if(t.$fold=n,n){var r=this.session.lineWidgets;t.row!=n.end.row||r[n.start.row]?t.hidden=!0:r[n.start.row]=t}return this.session._emit("changeFold",{data:{start:{row:t.row}}}),this.$updateRows(),this.renderWidgets(null,e),this.onWidgetChanged(t),t},this.removeLineWidget=function(t){if(t._inDocument=!1,t.session=null,t.el&&t.el.parentNode&&t.el.parentNode.removeChild(t.el),t.editor&&t.editor.destroy)try{t.editor.destroy()}catch(t){}if(this.session.lineWidgets){var e=this.session.lineWidgets[t.row];if(e==t)this.session.lineWidgets[t.row]=t.$oldWidget,t.$oldWidget&&this.onWidgetChanged(t.$oldWidget);else for(;e;){if(e.$oldWidget==t){e.$oldWidget=t.$oldWidget;break}e=e.$oldWidget}}this.session._emit("changeFold",{data:{start:{row:t.row}}}),this.$updateRows()},this.getWidgetsAtRow=function(t){for(var e=this.session.lineWidgets,n=e&&e[t],i=[];n;)i.push(n),n=n.$oldWidget;return i},this.onWidgetChanged=function(t){this.session._changedWidgets.push(t),this.editor&&this.editor.renderer.updateFull()},this.measureWidgets=function(t,e){var n=this.session._changedWidgets,i=e.layerConfig;if(n&&n.length){for(var r=1/0,o=0;o0&&!i[r];)r--;this.firstRow=n.firstRow,this.lastRow=n.lastRow,e.$cursorLayer.config=n;for(var s=r;s<=o;s++){var a=i[s];if(a&&a.el)if(a.hidden)a.el.style.top=-100-(a.pixelHeight||0)+"px";else{a._inDocument||(a._inDocument=!0,e.container.appendChild(a.el));var l=e.$cursorLayer.getPixelPosition({row:s,column:0},!0).top;a.coverLine||(l+=n.lineHeight*this.session.getRowLineCount(a.row)),a.el.style.top=l-n.offset+"px";var c=a.coverGutter?0:e.gutterWidth;a.fixedWidth||(c-=e.scrollLeft),a.el.style.left=c+"px",a.fullWidth&&a.screenWidth&&(a.el.style.minWidth=n.width+2*n.padding+"px"),a.fixedWidth?a.el.style.right=e.scrollBar.getWidth()+"px":a.el.style.right=""}}}}}).call(r.prototype),e.LineWidgets=r})),ace.define("ace/editor",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/keyboard/textinput","ace/mouse/mouse_handler","ace/mouse/fold_handler","ace/keyboard/keybinding","ace/edit_session","ace/search","ace/range","ace/lib/event_emitter","ace/commands/command_manager","ace/commands/default_commands","ace/config","ace/token_iterator","ace/line_widgets","ace/clipboard"],(function(t,e,n){"use strict";var i=this&&this.__values||function(t){var e="function"==typeof Symbol&&Symbol.iterator,n=e&&t[e],i=0;if(n)return n.call(t);if(t&&"number"==typeof t.length)return{next:function(){return t&&i>=t.length&&(t=void 0),{value:t&&t[i++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")},r=t("./lib/oop"),o=t("./lib/dom"),s=t("./lib/lang"),a=t("./lib/useragent"),l=t("./keyboard/textinput").TextInput,c=t("./mouse/mouse_handler").MouseHandler,u=t("./mouse/fold_handler").FoldHandler,h=t("./keyboard/keybinding").KeyBinding,d=t("./edit_session").EditSession,f=t("./search").Search,p=t("./range").Range,g=t("./lib/event_emitter").EventEmitter,m=t("./commands/command_manager").CommandManager,v=t("./commands/default_commands").commands,b=t("./config"),y=t("./token_iterator").TokenIterator,w=t("./line_widgets").LineWidgets,x=t("./clipboard"),_=function(t,e,n){this.$toDestroy=[];var i=t.getContainerElement();this.container=i,this.renderer=t,this.id="editor"+ ++_.$uid,this.commands=new m(a.isMac?"mac":"win",v),"object"==typeof document&&(this.textInput=new l(t.getTextAreaContainer(),this),this.renderer.textarea=this.textInput.getElement(),this.$mouseHandler=new c(this),new u(this)),this.keyBinding=new h(this),this.$search=(new f).set({wrap:!0}),this.$historyTracker=this.$historyTracker.bind(this),this.commands.on("exec",this.$historyTracker),this.$initOperationListeners(),this._$emitInputEvent=s.delayedCall(function(){this._signal("input",{}),this.session&&!this.session.destroyed&&this.session.bgTokenizer.scheduleStart()}.bind(this)),this.on("change",(function(t,e){e._$emitInputEvent.schedule(31)})),this.setSession(e||n&&n.session||new d("")),b.resetOptions(this),n&&this.setOptions(n),b._signal("editor",this)};_.$uid=0,function(){r.implement(this,g),this.$initOperationListeners=function(){this.commands.on("exec",this.startOperation.bind(this),!0),this.commands.on("afterExec",this.endOperation.bind(this),!0),this.$opResetTimer=s.delayedCall(this.endOperation.bind(this,!0)),this.on("change",function(){this.curOp||(this.startOperation(),this.curOp.selectionBefore=this.$lastSel),this.curOp.docChanged=!0}.bind(this),!0),this.on("changeSelection",function(){this.curOp||(this.startOperation(),this.curOp.selectionBefore=this.$lastSel),this.curOp.selectionChanged=!0}.bind(this),!0)},this.curOp=null,this.prevOp={},this.startOperation=function(t){if(this.curOp){if(!t||this.curOp.command)return;this.prevOp=this.curOp}t||(this.previousCommand=null,t={}),this.$opResetTimer.schedule(),this.curOp=this.session.curOp={command:t.command||{},args:t.args,scrollTop:this.renderer.scrollTop},this.curOp.selectionBefore=this.selection.toJSON()},this.endOperation=function(t){if(this.curOp&&this.session){if(t&&!1===t.returnValue||!this.session)return this.curOp=null;if(1==t&&this.curOp.command&&"mouse"==this.curOp.command.name)return;if(this._signal("beforeEndOperation"),!this.curOp)return;var e=this.curOp.command,n=e&&e.scrollIntoView;if(n){switch(n){case"center-animate":n="animate";case"center":this.renderer.scrollCursorIntoView(null,.5);break;case"animate":case"cursor":this.renderer.scrollCursorIntoView();break;case"selectionPart":var i=this.selection.getRange(),r=this.renderer.layerConfig;(i.start.row>=r.lastRow||i.end.row<=r.firstRow)&&this.renderer.scrollSelectionIntoView(this.selection.anchor,this.selection.lead)}"animate"==n&&this.renderer.animateScrolling(this.curOp.scrollTop)}var o=this.selection.toJSON();this.curOp.selectionAfter=o,this.$lastSel=this.selection.toJSON(),this.session.getUndoManager().addSelection(o),this.prevOp=this.curOp,this.curOp=null}},this.$mergeableCommands=["backspace","del","insertstring"],this.$historyTracker=function(t){if(this.$mergeUndoDeltas){var e=this.prevOp,n=this.$mergeableCommands,i=e.command&&t.command.name==e.command.name;if("insertstring"==t.command.name){var r=t.args;void 0===this.mergeNextCommand&&(this.mergeNextCommand=!0),i=i&&this.mergeNextCommand&&(!/\s/.test(r)||/\s/.test(e.args)),this.mergeNextCommand=!0}else i=i&&-1!==n.indexOf(t.command.name);"always"!=this.$mergeUndoDeltas&&Date.now()-this.sequenceStartTime>2e3&&(i=!1),i?this.session.mergeUndoDeltas=!0:-1!==n.indexOf(t.command.name)&&(this.sequenceStartTime=Date.now())}},this.setKeyboardHandler=function(t,e){if(t&&"string"==typeof t&&"ace"!=t){this.$keybindingId=t;var n=this;b.loadModule(["keybinding",t],(function(i){n.$keybindingId==t&&n.keyBinding.setKeyboardHandler(i&&i.handler),e&&e()}))}else this.$keybindingId=null,this.keyBinding.setKeyboardHandler(t),e&&e()},this.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()},this.setSession=function(t){if(this.session!=t){this.curOp&&this.endOperation(),this.curOp={};var e=this.session;if(e){this.session.off("change",this.$onDocumentChange),this.session.off("changeMode",this.$onChangeMode),this.session.off("tokenizerUpdate",this.$onTokenizerUpdate),this.session.off("changeTabSize",this.$onChangeTabSize),this.session.off("changeWrapLimit",this.$onChangeWrapLimit),this.session.off("changeWrapMode",this.$onChangeWrapMode),this.session.off("changeFold",this.$onChangeFold),this.session.off("changeFrontMarker",this.$onChangeFrontMarker),this.session.off("changeBackMarker",this.$onChangeBackMarker),this.session.off("changeBreakpoint",this.$onChangeBreakpoint),this.session.off("changeAnnotation",this.$onChangeAnnotation),this.session.off("changeOverwrite",this.$onCursorChange),this.session.off("changeScrollTop",this.$onScrollTopChange),this.session.off("changeScrollLeft",this.$onScrollLeftChange);var n=this.session.getSelection();n.off("changeCursor",this.$onCursorChange),n.off("changeSelection",this.$onSelectionChange)}this.session=t,t?(this.$onDocumentChange=this.onDocumentChange.bind(this),t.on("change",this.$onDocumentChange),this.renderer.setSession(t),this.$onChangeMode=this.onChangeMode.bind(this),t.on("changeMode",this.$onChangeMode),this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this),t.on("tokenizerUpdate",this.$onTokenizerUpdate),this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer),t.on("changeTabSize",this.$onChangeTabSize),this.$onChangeWrapLimit=this.onChangeWrapLimit.bind(this),t.on("changeWrapLimit",this.$onChangeWrapLimit),this.$onChangeWrapMode=this.onChangeWrapMode.bind(this),t.on("changeWrapMode",this.$onChangeWrapMode),this.$onChangeFold=this.onChangeFold.bind(this),t.on("changeFold",this.$onChangeFold),this.$onChangeFrontMarker=this.onChangeFrontMarker.bind(this),this.session.on("changeFrontMarker",this.$onChangeFrontMarker),this.$onChangeBackMarker=this.onChangeBackMarker.bind(this),this.session.on("changeBackMarker",this.$onChangeBackMarker),this.$onChangeBreakpoint=this.onChangeBreakpoint.bind(this),this.session.on("changeBreakpoint",this.$onChangeBreakpoint),this.$onChangeAnnotation=this.onChangeAnnotation.bind(this),this.session.on("changeAnnotation",this.$onChangeAnnotation),this.$onCursorChange=this.onCursorChange.bind(this),this.session.on("changeOverwrite",this.$onCursorChange),this.$onScrollTopChange=this.onScrollTopChange.bind(this),this.session.on("changeScrollTop",this.$onScrollTopChange),this.$onScrollLeftChange=this.onScrollLeftChange.bind(this),this.session.on("changeScrollLeft",this.$onScrollLeftChange),this.selection=t.getSelection(),this.selection.on("changeCursor",this.$onCursorChange),this.$onSelectionChange=this.onSelectionChange.bind(this),this.selection.on("changeSelection",this.$onSelectionChange),this.onChangeMode(),this.onCursorChange(),this.onScrollTopChange(),this.onScrollLeftChange(),this.onSelectionChange(),this.onChangeFrontMarker(),this.onChangeBackMarker(),this.onChangeBreakpoint(),this.onChangeAnnotation(),this.session.getUseWrapMode()&&this.renderer.adjustWrapLimit(),this.renderer.updateFull()):(this.selection=null,this.renderer.setSession(t)),this._signal("changeSession",{session:t,oldSession:e}),this.curOp=null,e&&e._signal("changeEditor",{oldEditor:this}),t&&t._signal("changeEditor",{editor:this}),t&&!t.destroyed&&t.bgTokenizer.scheduleStart()}},this.getSession=function(){return this.session},this.setValue=function(t,e){return this.session.doc.setValue(t),e?1==e?this.navigateFileEnd():-1==e&&this.navigateFileStart():this.selectAll(),t},this.getValue=function(){return this.session.getValue()},this.getSelection=function(){return this.selection},this.resize=function(t){this.renderer.onResize(t)},this.setTheme=function(t,e){this.renderer.setTheme(t,e)},this.getTheme=function(){return this.renderer.getTheme()},this.setStyle=function(t){this.renderer.setStyle(t)},this.unsetStyle=function(t){this.renderer.unsetStyle(t)},this.getFontSize=function(){return this.getOption("fontSize")||o.computedStyle(this.container).fontSize},this.setFontSize=function(t){this.setOption("fontSize",t)},this.$highlightBrackets=function(){if(!this.$highlightPending){var t=this;this.$highlightPending=!0,setTimeout((function(){t.$highlightPending=!1;var e=t.session;if(e&&!e.destroyed){e.$bracketHighlight&&(e.$bracketHighlight.markerIds.forEach((function(t){e.removeMarker(t)})),e.$bracketHighlight=null);var n=t.getCursorPosition(),i=t.getKeyboardHandler(),r=i&&i.$getDirectionForHighlight&&i.$getDirectionForHighlight(t),o=e.getMatchingBracketRanges(n,r);if(!o){var s=new y(e,n.row,n.column).getCurrentToken();if(s&&/\b(?:tag-open|tag-name)/.test(s.type)){var a=e.getMatchingTags(n);a&&(o=[a.openTagName,a.closeTagName])}}if(!o&&e.$mode.getMatching&&(o=e.$mode.getMatching(t.session)),o){var l="ace_bracket";Array.isArray(o)?1==o.length&&(l="ace_error_bracket"):o=[o],2==o.length&&(0==p.comparePoints(o[0].end,o[1].start)?o=[p.fromPoints(o[0].start,o[1].end)]:0==p.comparePoints(o[0].start,o[1].end)&&(o=[p.fromPoints(o[1].start,o[0].end)])),e.$bracketHighlight={ranges:o,markerIds:o.map((function(t){return e.addMarker(t,l,"text")}))},t.getHighlightIndentGuides()&&t.renderer.$textLayer.$highlightIndentGuide()}else t.getHighlightIndentGuides()&&t.renderer.$textLayer.$highlightIndentGuide()}}),50)}},this.focus=function(){this.textInput.focus()},this.isFocused=function(){return this.textInput.isFocused()},this.blur=function(){this.textInput.blur()},this.onFocus=function(t){this.$isFocused||(this.$isFocused=!0,this.renderer.showCursor(),this.renderer.visualizeFocus(),this._emit("focus",t))},this.onBlur=function(t){this.$isFocused&&(this.$isFocused=!1,this.renderer.hideCursor(),this.renderer.visualizeBlur(),this._emit("blur",t))},this.$cursorChange=function(){this.renderer.updateCursor(),this.$highlightBrackets(),this.$updateHighlightActiveLine()},this.onDocumentChange=function(t){var e=this.session.$useWrapMode,n=t.start.row==t.end.row?t.end.row:1/0;this.renderer.updateLines(t.start.row,n,e),this._signal("change",t),this.$cursorChange()},this.onTokenizerUpdate=function(t){var e=t.data;this.renderer.updateLines(e.first,e.last)},this.onScrollTopChange=function(){this.renderer.scrollToY(this.session.getScrollTop())},this.onScrollLeftChange=function(){this.renderer.scrollToX(this.session.getScrollLeft())},this.onCursorChange=function(){this.$cursorChange(),this._signal("changeSelection")},this.$updateHighlightActiveLine=function(){var t,e=this.getSession();if(this.$highlightActiveLine&&("line"==this.$selectionStyle&&this.selection.isMultiLine()||(t=this.getCursorPosition()),this.renderer.theme&&this.renderer.theme.$selectionColorConflict&&!this.selection.isEmpty()&&(t=!1),!this.renderer.$maxLines||1!==this.session.getLength()||this.renderer.$minLines>1||(t=!1)),e.$highlightLineMarker&&!t)e.removeMarker(e.$highlightLineMarker.id),e.$highlightLineMarker=null;else if(!e.$highlightLineMarker&&t){var n=new p(t.row,t.column,t.row,1/0);n.id=e.addMarker(n,"ace_active-line","screenLine"),e.$highlightLineMarker=n}else t&&(e.$highlightLineMarker.start.row=t.row,e.$highlightLineMarker.end.row=t.row,e.$highlightLineMarker.start.column=t.column,e._signal("changeBackMarker"))},this.onSelectionChange=function(t){var e=this.session;if(e.$selectionMarker&&e.removeMarker(e.$selectionMarker),e.$selectionMarker=null,this.selection.isEmpty())this.$updateHighlightActiveLine();else{var n=this.selection.getRange(),i=this.getSelectionStyle();e.$selectionMarker=e.addMarker(n,"ace_selection",i)}var r=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp();this.session.highlight(r),this._signal("changeSelection")},this.$getSelectionHighLightRegexp=function(){var t=this.session,e=this.getSelectionRange();if(!e.isEmpty()&&!e.isMultiLine()){var n=e.start.column,i=e.end.column,r=t.getLine(e.start.row),o=r.substring(n,i);if(!(o.length>5e3)&&/[\w\d]/.test(o)){var s=this.$search.$assembleRegExp({wholeWord:!0,caseSensitive:!0,needle:o}),a=r.substring(n-1,i+1);if(s.test(a))return s}}},this.onChangeFrontMarker=function(){this.renderer.updateFrontMarkers()},this.onChangeBackMarker=function(){this.renderer.updateBackMarkers()},this.onChangeBreakpoint=function(){this.renderer.updateBreakpoints()},this.onChangeAnnotation=function(){this.renderer.setAnnotations(this.session.getAnnotations())},this.onChangeMode=function(t){this.renderer.updateText(),this._emit("changeMode",t)},this.onChangeWrapLimit=function(){this.renderer.updateFull()},this.onChangeWrapMode=function(){this.renderer.onResize(!0)},this.onChangeFold=function(){this.$updateHighlightActiveLine(),this.renderer.updateFull()},this.getSelectedText=function(){return this.session.getTextRange(this.getSelectionRange())},this.getCopyText=function(){var t=this.getSelectedText(),e=this.session.doc.getNewLineCharacter(),n=!1;if(!t&&this.$copyWithEmptySelection){n=!0;for(var i=this.selection.getAllRanges(),r=0;ra.search(/\S|$/)){var l=a.substr(r.column).search(/\S|$/);n.doc.removeInLine(r.row,r.column,r.column+l)}}this.clearSelection();var c=r.column,u=n.getState(r.row),h=(a=n.getLine(r.row),i.checkOutdent(u,a,t));if(n.insert(r,t),o&&o.selection&&(2==o.selection.length?this.selection.setSelectionRange(new p(r.row,c+o.selection[0],r.row,c+o.selection[1])):this.selection.setSelectionRange(new p(r.row+o.selection[0],o.selection[1],r.row+o.selection[2],o.selection[3]))),this.$enableAutoIndent){if(n.getDocument().isNewLine(t)){var d=i.getNextLineIndent(u,a.slice(0,r.column),n.getTabString());n.insert({row:r.row+1,column:0},d)}h&&i.autoOutdent(u,n,r.row)}},this.autoIndent=function(){var t,e,n=this.session,i=n.getMode();if(this.selection.isEmpty())t=0,e=n.doc.getLength()-1;else{var r=this.getSelectionRange();t=r.start.row,e=r.end.row}for(var o,s,a,l="",c="",u="",h=n.getTabString(),d=t;d<=e;d++)d>0&&(l=n.getState(d-1),c=n.getLine(d-1),u=i.getNextLineIndent(l,c,h)),o=n.getLine(d),u!==(s=i.$getIndent(o))&&(s.length>0&&(a=new p(d,0,d,s.length),n.remove(a)),u.length>0&&n.insert({row:d,column:0},u)),i.autoOutdent(l,n,d)},this.onTextInput=function(t,e){if(!e)return this.keyBinding.onTextInput(t);this.startOperation({command:{name:"insertstring"}});var n=this.applyComposition.bind(this,t,e);this.selection.rangeCount?this.forEachSelection(n):n(),this.endOperation()},this.applyComposition=function(t,e){var n;(e.extendLeft||e.extendRight)&&((n=this.selection.getRange()).start.column-=e.extendLeft,n.end.column+=e.extendRight,n.start.column<0&&(n.start.row--,n.start.column+=this.session.getLine(n.start.row).length+1),this.selection.setRange(n),t||n.isEmpty()||this.remove());(!t&&this.selection.isEmpty()||this.insert(t,!0),e.restoreStart||e.restoreEnd)&&((n=this.selection.getRange()).start.column-=e.restoreStart,n.end.column-=e.restoreEnd,this.selection.setRange(n))},this.onCommandKey=function(t,e,n){return this.keyBinding.onCommandKey(t,e,n)},this.setOverwrite=function(t){this.session.setOverwrite(t)},this.getOverwrite=function(){return this.session.getOverwrite()},this.toggleOverwrite=function(){this.session.toggleOverwrite()},this.setScrollSpeed=function(t){this.setOption("scrollSpeed",t)},this.getScrollSpeed=function(){return this.getOption("scrollSpeed")},this.setDragDelay=function(t){this.setOption("dragDelay",t)},this.getDragDelay=function(){return this.getOption("dragDelay")},this.setSelectionStyle=function(t){this.setOption("selectionStyle",t)},this.getSelectionStyle=function(){return this.getOption("selectionStyle")},this.setHighlightActiveLine=function(t){this.setOption("highlightActiveLine",t)},this.getHighlightActiveLine=function(){return this.getOption("highlightActiveLine")},this.setHighlightGutterLine=function(t){this.setOption("highlightGutterLine",t)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.setHighlightSelectedWord=function(t){this.setOption("highlightSelectedWord",t)},this.getHighlightSelectedWord=function(){return this.$highlightSelectedWord},this.setAnimatedScroll=function(t){this.renderer.setAnimatedScroll(t)},this.getAnimatedScroll=function(){return this.renderer.getAnimatedScroll()},this.setShowInvisibles=function(t){this.renderer.setShowInvisibles(t)},this.getShowInvisibles=function(){return this.renderer.getShowInvisibles()},this.setDisplayIndentGuides=function(t){this.renderer.setDisplayIndentGuides(t)},this.getDisplayIndentGuides=function(){return this.renderer.getDisplayIndentGuides()},this.setHighlightIndentGuides=function(t){this.renderer.setHighlightIndentGuides(t)},this.getHighlightIndentGuides=function(){return this.renderer.getHighlightIndentGuides()},this.setShowPrintMargin=function(t){this.renderer.setShowPrintMargin(t)},this.getShowPrintMargin=function(){return this.renderer.getShowPrintMargin()},this.setPrintMarginColumn=function(t){this.renderer.setPrintMarginColumn(t)},this.getPrintMarginColumn=function(){return this.renderer.getPrintMarginColumn()},this.setReadOnly=function(t){this.setOption("readOnly",t)},this.getReadOnly=function(){return this.getOption("readOnly")},this.setBehavioursEnabled=function(t){this.setOption("behavioursEnabled",t)},this.getBehavioursEnabled=function(){return this.getOption("behavioursEnabled")},this.setWrapBehavioursEnabled=function(t){this.setOption("wrapBehavioursEnabled",t)},this.getWrapBehavioursEnabled=function(){return this.getOption("wrapBehavioursEnabled")},this.setShowFoldWidgets=function(t){this.setOption("showFoldWidgets",t)},this.getShowFoldWidgets=function(){return this.getOption("showFoldWidgets")},this.setFadeFoldWidgets=function(t){this.setOption("fadeFoldWidgets",t)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.remove=function(t){this.selection.isEmpty()&&("left"==t?this.selection.selectLeft():this.selection.selectRight());var e=this.getSelectionRange();if(this.getBehavioursEnabled()){var n=this.session,i=n.getState(e.start.row),r=n.getMode().transformAction(i,"deletion",this,n,e);if(0===e.end.column){var o=n.getTextRange(e);if("\n"==o[o.length-1]){var s=n.getLine(e.end.row);/^\s+$/.test(s)&&(e.end.column=s.length)}}r&&(e=r)}this.session.remove(e),this.clearSelection()},this.removeWordRight=function(){this.selection.isEmpty()&&this.selection.selectWordRight(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeWordLeft=function(){this.selection.isEmpty()&&this.selection.selectWordLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineStart=function(){this.selection.isEmpty()&&this.selection.selectLineStart(),this.selection.isEmpty()&&this.selection.selectLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineEnd=function(){this.selection.isEmpty()&&this.selection.selectLineEnd();var t=this.getSelectionRange();t.start.column==t.end.column&&t.start.row==t.end.row&&(t.end.column=0,t.end.row++),this.session.remove(t),this.clearSelection()},this.splitLine=function(){this.selection.isEmpty()||(this.session.remove(this.getSelectionRange()),this.clearSelection());var t=this.getCursorPosition();this.insert("\n"),this.moveCursorToPosition(t)},this.setGhostText=function(t,e){this.session.widgetManager||(this.session.widgetManager=new w(this.session),this.session.widgetManager.attach(this)),this.renderer.setGhostText(t,e)},this.removeGhostText=function(){this.session.widgetManager&&this.renderer.removeGhostText()},this.transposeLetters=function(){if(this.selection.isEmpty()){var t=this.getCursorPosition(),e=t.column;if(0!==e){var n,i,r=this.session.getLine(t.row);ee.toLowerCase()?1:0}));var r=new p(0,0,0,0);for(i=t.first;i<=t.last;i++){var o=e.getLine(i);r.start.row=i,r.end.row=i,r.end.column=o.length,e.replace(r,n[i-t.first])}},this.toggleCommentLines=function(){var t=this.session.getState(this.getCursorPosition().row),e=this.$getSelectedRows();this.session.getMode().toggleCommentLines(t,this.session,e.first,e.last)},this.toggleBlockComment=function(){var t=this.getCursorPosition(),e=this.session.getState(t.row),n=this.getSelectionRange();this.session.getMode().toggleBlockComment(e,this.session,n,t)},this.getNumberAt=function(t,e){var n=/[\-]?[0-9]+(?:\.[0-9]+)?/g;n.lastIndex=0;for(var i=this.session.getLine(t);n.lastIndex=e)return{value:r[0],start:r.index,end:r.index+r[0].length}}return null},this.modifyNumber=function(t){var e=this.selection.getCursor().row,n=this.selection.getCursor().column,i=new p(e,n-1,e,n),r=this.session.getTextRange(i);if(!isNaN(parseFloat(r))&&isFinite(r)){var o=this.getNumberAt(e,n);if(o){var s=o.value.indexOf(".")>=0?o.start+o.value.indexOf(".")+1:o.end,a=o.start+o.value.length-s,l=parseFloat(o.value);l*=Math.pow(10,a),s!==o.end&&n=a&&o<=l&&(n=e,c.selection.clearSelection(),c.moveCursorTo(t,a+i),c.selection.selectTo(t,l+i)),a=l}));for(var u,h=this.$toggleWordPairs,d=0;d=l&&s<=c&&d.match(/((?:https?|ftp):\/\/[\S]+)/)){a=d.replace(/[\s:.,'";}\]]+$/,"");break}l=c}}catch(t){n={error:t}}finally{try{h&&!h.done&&(r=u.return)&&r.call(u)}finally{if(n)throw n.error}}return a},this.openLink=function(){var t=this.selection.getCursor(),e=this.findLinkAt(t.row,t.column);return e&&window.open(e,"_blank"),null!=e},this.removeLines=function(){var t=this.$getSelectedRows();this.session.removeFullLines(t.first,t.last),this.clearSelection()},this.duplicateSelection=function(){var t=this.selection,e=this.session,n=t.getRange(),i=t.isBackwards();if(n.isEmpty()){var r=n.start.row;e.duplicateLines(r,r)}else{var o=i?n.start:n.end,s=e.insert(o,e.getTextRange(n),!1);n.start=o,n.end=s,t.setSelectionRange(n,i)}},this.moveLinesDown=function(){this.$moveLines(1,!1)},this.moveLinesUp=function(){this.$moveLines(-1,!1)},this.moveText=function(t,e,n){return this.session.moveText(t,e,n)},this.copyLinesUp=function(){this.$moveLines(-1,!0)},this.copyLinesDown=function(){this.$moveLines(1,!0)},this.$moveLines=function(t,e){var n,i,r=this.selection;if(!r.inMultiSelectMode||this.inVirtualSelectionMode){var o=r.toOrientedRange();n=this.$getSelectedRows(o),i=this.session.$moveLines(n.first,n.last,e?0:t),e&&-1==t&&(i=0),o.moveBy(i,0),r.fromOrientedRange(o)}else{var s=r.rangeList.ranges;r.rangeList.detach(this.session),this.inVirtualSelectionMode=!0;for(var a=0,l=0,c=s.length,u=0;uf+1)break;f=p.last}for(u--,a=this.session.$moveLines(d,f,e?0:t),e&&-1==t&&(h=u+1);h<=u;)s[h].moveBy(a,0),h++;e||(a=0),l+=a}r.fromOrientedRange(r.ranges[0]),r.rangeList.attach(this.session),this.inVirtualSelectionMode=!1}},this.$getSelectedRows=function(t){return t=(t||this.getSelectionRange()).collapseRows(),{first:this.session.getRowFoldStart(t.start.row),last:this.session.getRowFoldEnd(t.end.row)}},this.onCompositionStart=function(t){this.renderer.showComposition(t)},this.onCompositionUpdate=function(t){this.renderer.setCompositionText(t)},this.onCompositionEnd=function(){this.renderer.hideComposition()},this.getFirstVisibleRow=function(){return this.renderer.getFirstVisibleRow()},this.getLastVisibleRow=function(){return this.renderer.getLastVisibleRow()},this.isRowVisible=function(t){return t>=this.getFirstVisibleRow()&&t<=this.getLastVisibleRow()},this.isRowFullyVisible=function(t){return t>=this.renderer.getFirstFullyVisibleRow()&&t<=this.renderer.getLastFullyVisibleRow()},this.$getVisibleRowCount=function(){return this.renderer.getScrollBottomRow()-this.renderer.getScrollTopRow()+1},this.$moveByPage=function(t,e){var n=this.renderer,i=this.renderer.layerConfig,r=t*Math.floor(i.height/i.lineHeight);!0===e?this.selection.$moveSelection((function(){this.moveCursorBy(r,0)})):!1===e&&(this.selection.moveCursorBy(r,0),this.selection.clearSelection());var o=n.scrollTop;n.scrollBy(0,r*i.lineHeight),null!=e&&n.scrollCursorIntoView(null,.5),n.animateScrolling(o)},this.selectPageDown=function(){this.$moveByPage(1,!0)},this.selectPageUp=function(){this.$moveByPage(-1,!0)},this.gotoPageDown=function(){this.$moveByPage(1,!1)},this.gotoPageUp=function(){this.$moveByPage(-1,!1)},this.scrollPageDown=function(){this.$moveByPage(1)},this.scrollPageUp=function(){this.$moveByPage(-1)},this.scrollToRow=function(t){this.renderer.scrollToRow(t)},this.scrollToLine=function(t,e,n,i){this.renderer.scrollToLine(t,e,n,i)},this.centerSelection=function(){var t=this.getSelectionRange(),e={row:Math.floor(t.start.row+(t.end.row-t.start.row)/2),column:Math.floor(t.start.column+(t.end.column-t.start.column)/2)};this.renderer.alignCursor(e,.5)},this.getCursorPosition=function(){return this.selection.getCursor()},this.getCursorPositionScreen=function(){return this.session.documentToScreenPosition(this.getCursorPosition())},this.getSelectionRange=function(){return this.selection.getRange()},this.selectAll=function(){this.selection.selectAll()},this.clearSelection=function(){this.selection.clearSelection()},this.moveCursorTo=function(t,e){this.selection.moveCursorTo(t,e)},this.moveCursorToPosition=function(t){this.selection.moveCursorToPosition(t)},this.jumpToMatching=function(t,e){var n=this.getCursorPosition(),i=new y(this.session,n.row,n.column),r=i.getCurrentToken(),o=0;r&&-1!==r.type.indexOf("tag-name")&&(r=i.stepBackward());var s=r||i.stepForward();if(s){var a,l,c=!1,u={},h=n.column-s.start,d={")":"(","(":"(","]":"[","[":"[","{":"{","}":"{"};do{if(s.value.match(/[{}()\[\]]/g)){for(;h1?u[s.value]++:"=0;--o)this.$tryReplace(n[o],t)&&i++;return this.selection.setSelectionRange(r),i},this.$tryReplace=function(t,e){var n=this.session.getTextRange(t);return null!==(e=this.$search.replace(n,e))?(t.end=this.session.replace(t,e),t):null},this.getLastSearchOptions=function(){return this.$search.getOptions()},this.find=function(t,e,n){e||(e={}),"string"==typeof t||t instanceof RegExp?e.needle=t:"object"==typeof t&&r.mixin(e,t);var i=this.selection.getRange();null==e.needle&&((t=this.session.getTextRange(i)||this.$search.$options.needle)||(i=this.session.getWordRange(i.start.row,i.start.column),t=this.session.getTextRange(i)),this.$search.set({needle:t})),this.$search.set(e),e.start||this.$search.set({start:i});var o=this.$search.find(this.session);return e.preventScroll?o:o?(this.revealRange(o,n),o):(e.backwards?i.start=i.end:i.end=i.start,void this.selection.setRange(i))},this.findNext=function(t,e){this.find({skipCurrent:!0,backwards:!1},t,e)},this.findPrevious=function(t,e){this.find(t,{skipCurrent:!0,backwards:!0},e)},this.revealRange=function(t,e){this.session.unfold(t),this.selection.setSelectionRange(t);var n=this.renderer.scrollTop;this.renderer.scrollSelectionIntoView(t.start,t.end,.5),!1!==e&&this.renderer.animateScrolling(n)},this.undo=function(){this.session.getUndoManager().undo(this.session),this.renderer.scrollCursorIntoView(null,.5)},this.redo=function(){this.session.getUndoManager().redo(this.session),this.renderer.scrollCursorIntoView(null,.5)},this.destroy=function(){this.$toDestroy&&(this.$toDestroy.forEach((function(t){t.destroy()})),this.$toDestroy=null),this.$mouseHandler&&this.$mouseHandler.destroy(),this.renderer.destroy(),this._signal("destroy",this),this.session&&this.session.destroy(),this._$emitInputEvent&&this._$emitInputEvent.cancel(),this.removeAllListeners()},this.setAutoScrollEditorIntoView=function(t){if(t){var e,n=this,i=!1;this.$scrollAnchor||(this.$scrollAnchor=document.createElement("div"));var r=this.$scrollAnchor;r.style.cssText="position:absolute",this.container.insertBefore(r,this.container.firstChild);var o=this.on("changeSelection",(function(){i=!0})),s=this.renderer.on("beforeRender",(function(){i&&(e=n.renderer.container.getBoundingClientRect())})),a=this.renderer.on("afterRender",(function(){if(i&&e&&(n.isFocused()||n.searchBox&&n.searchBox.isFocused())){var t=n.renderer,o=t.$cursorLayer.$pixelPos,s=t.layerConfig,a=o.top-s.offset;null!=(i=o.top>=0&&a+e.top<0||!(o.topwindow.innerHeight)&&null)&&(r.style.top=a+"px",r.style.left=o.left+"px",r.style.height=s.lineHeight+"px",r.scrollIntoView(i)),i=e=null}}));this.setAutoScrollEditorIntoView=function(t){t||(delete this.setAutoScrollEditorIntoView,this.off("changeSelection",o),this.renderer.off("afterRender",a),this.renderer.off("beforeRender",s))}}},this.$resetCursorStyle=function(){var t=this.$cursorStyle||"ace",e=this.renderer.$cursorLayer;e&&(e.setSmoothBlinking(/smooth/.test(t)),e.isBlinking=!this.$readOnly&&"wide"!=t,o.setCssClass(e.element,"ace_slim-cursors",/slim/.test(t)))},this.prompt=function(t,e,n){var i=this;b.loadModule("ace/ext/prompt",(function(r){r.prompt(i,t,e,n)}))}}.call(_.prototype),b.defineOptions(_.prototype,"editor",{selectionStyle:{set:function(t){this.onSelectionChange(),this._signal("changeSelectionStyle",{data:t})},initialValue:"line"},highlightActiveLine:{set:function(){this.$updateHighlightActiveLine()},initialValue:!0},highlightSelectedWord:{set:function(t){this.$onSelectionChange()},initialValue:!0},readOnly:{set:function(t){this.textInput.setReadOnly(t),this.$resetCursorStyle()},initialValue:!1},copyWithEmptySelection:{set:function(t){this.textInput.setCopyWithEmptySelection(t)},initialValue:!1},cursorStyle:{set:function(t){this.$resetCursorStyle()},values:["ace","slim","smooth","wide"],initialValue:"ace"},mergeUndoDeltas:{values:[!1,!0,"always"],initialValue:!0},behavioursEnabled:{initialValue:!0},wrapBehavioursEnabled:{initialValue:!0},enableAutoIndent:{initialValue:!0},autoScrollEditorIntoView:{set:function(t){this.setAutoScrollEditorIntoView(t)}},keyboardHandler:{set:function(t){this.setKeyboardHandler(t)},get:function(){return this.$keybindingId},handlesSet:!0},value:{set:function(t){this.session.setValue(t)},get:function(){return this.getValue()},handlesSet:!0,hidden:!0},session:{set:function(t){this.setSession(t)},get:function(){return this.session},handlesSet:!0,hidden:!0},showLineNumbers:{set:function(t){this.renderer.$gutterLayer.setShowLineNumbers(t),this.renderer.$loop.schedule(this.renderer.CHANGE_GUTTER),t&&this.$relativeLineNumbers?M.attach(this):M.detach(this)},initialValue:!0},relativeLineNumbers:{set:function(t){this.$showLineNumbers&&t?M.attach(this):M.detach(this)}},placeholder:{set:function(t){this.$updatePlaceholder||(this.$updatePlaceholder=function(){var t=this.session&&(this.renderer.$composition||this.getValue());if(t&&this.renderer.placeholderNode)this.renderer.off("afterRender",this.$updatePlaceholder),o.removeCssClass(this.container,"ace_hasPlaceholder"),this.renderer.placeholderNode.remove(),this.renderer.placeholderNode=null;else if(t||this.renderer.placeholderNode)!t&&this.renderer.placeholderNode&&(this.renderer.placeholderNode.textContent=this.$placeholder||"");else{this.renderer.on("afterRender",this.$updatePlaceholder),o.addCssClass(this.container,"ace_hasPlaceholder");var e=o.createElement("div");e.className="ace_placeholder",e.textContent=this.$placeholder||"",this.renderer.placeholderNode=e,this.renderer.content.appendChild(this.renderer.placeholderNode)}}.bind(this),this.on("input",this.$updatePlaceholder)),this.$updatePlaceholder()}},customScrollbar:"renderer",hScrollBarAlwaysVisible:"renderer",vScrollBarAlwaysVisible:"renderer",highlightGutterLine:"renderer",animatedScroll:"renderer",showInvisibles:"renderer",showPrintMargin:"renderer",printMarginColumn:"renderer",printMargin:"renderer",fadeFoldWidgets:"renderer",showFoldWidgets:"renderer",displayIndentGuides:"renderer",highlightIndentGuides:"renderer",showGutter:"renderer",fontSize:"renderer",fontFamily:"renderer",maxLines:"renderer",minLines:"renderer",scrollPastEnd:"renderer",fixedWidthGutter:"renderer",theme:"renderer",hasCssTransforms:"renderer",maxPixelHeight:"renderer",useTextareaForIME:"renderer",scrollSpeed:"$mouseHandler",dragDelay:"$mouseHandler",dragEnabled:"$mouseHandler",focusTimeout:"$mouseHandler",tooltipFollowsMouse:"$mouseHandler",firstLineNumber:"session",overwrite:"session",newLineMode:"session",useWorker:"session",useSoftTabs:"session",navigateWithinSoftTabs:"session",tabSize:"session",wrap:"session",indentedSoftWrap:"session",foldStyle:"session",mode:"session"});var M={getText:function(t,e){return(Math.abs(t.selection.lead.row-e)||e+1+(e<9?"·":""))+""},getWidth:function(t,e,n){return Math.max(e.toString().length,(n.lastRow+1).toString().length,2)*n.characterWidth},update:function(t,e){e.renderer.$loop.schedule(e.renderer.CHANGE_GUTTER)},attach:function(t){t.renderer.$gutterLayer.$renderer=this,t.on("changeSelection",this.update),this.update(null,t)},detach:function(t){t.renderer.$gutterLayer.$renderer==this&&(t.renderer.$gutterLayer.$renderer=null),t.off("changeSelection",this.update),this.update(null,t)}};e.Editor=_})),ace.define("ace/undomanager",["require","exports","module","ace/range"],(function(t,e,n){"use strict";var i=function(){this.$maxRev=0,this.$fromUndo=!1,this.$undoDepth=1/0,this.reset()};(function(){this.addSession=function(t){this.$session=t},this.add=function(t,e,n){if(!this.$fromUndo&&t!=this.$lastDelta){if(this.$keepRedoStack||(this.$redoStack.length=0),!1===e||!this.lastDeltas){this.lastDeltas=[];var i=this.$undoStack.length;i>this.$undoDepth-1&&this.$undoStack.splice(0,i-this.$undoDepth+1),this.$undoStack.push(this.lastDeltas),t.id=this.$rev=++this.$maxRev}"remove"!=t.action&&"insert"!=t.action||(this.$lastDelta=t),this.lastDeltas.push(t)}},this.addSelection=function(t,e){this.selections.push({value:t,rev:e||this.$rev})},this.startNewGroup=function(){return this.lastDeltas=null,this.$rev},this.markIgnored=function(t,e){null==e&&(e=this.$rev+1);for(var n=this.$undoStack,i=n.length;i--;){var r=n[i][0];if(r.id<=t)break;r.id0},this.canRedo=function(){return this.$redoStack.length>0},this.bookmark=function(t){null==t&&(t=this.$rev),this.mark=t},this.isAtBookmark=function(){return this.$rev===this.mark},this.toJSON=function(){},this.fromJSON=function(){},this.hasUndo=this.canUndo,this.hasRedo=this.canRedo,this.isClean=this.isAtBookmark,this.markClean=this.bookmark,this.$prettyPrint=function(t){return t?a(t):a(this.$undoStack)+"\n---\n"+a(this.$redoStack)}}).call(i.prototype);var r=t("./range").Range,o=r.comparePoints;r.comparePoints;function s(t){return{row:t.row,column:t.column}}function a(t){if(t=t||this,Array.isArray(t))return t.map(a).join("\n");var e="";return t.action?(e="insert"==t.action?"+":"-",e+="["+t.lines+"]"):t.value&&(e=Array.isArray(t.value)?t.value.map(l).join("\n"):l(t.value)),t.start&&(e+=l(t)),(t.id||t.rev)&&(e+="\t("+(t.id||t.rev)+")"),e}function l(t){return t.start.row+":"+t.start.column+"=>"+t.end.row+":"+t.end.column}function c(t,e){var n="insert"==t.action,i="insert"==e.action;if(n&&i)if(o(e.start,t.end)>=0)d(e,t,-1);else{if(!(o(e.start,t.start)<=0))return null;d(t,e,1)}else if(n&&!i)if(o(e.start,t.end)>=0)d(e,t,-1);else{if(!(o(e.end,t.start)<=0))return null;d(t,e,-1)}else if(!n&&i)if(o(e.start,t.start)>=0)d(e,t,1);else{if(!(o(e.start,t.start)<=0))return null;d(t,e,1)}else if(!n&&!i)if(o(e.start,t.start)>=0)d(e,t,1);else{if(!(o(e.end,t.start)<=0))return null;d(t,e,-1)}return[e,t]}function u(t,e){for(var n=t.length;n--;)for(var i=0;i=0?d(t,e,-1):(o(t.start,e.start)<=0||d(t,r.fromPoints(e.start,t.start),-1),d(e,t,1));else if(!n&&i)o(e.start,t.end)>=0?d(e,t,-1):(o(e.start,t.start)<=0||d(e,r.fromPoints(t.start,e.start),-1),d(t,e,1));else if(!n&&!i)if(o(e.start,t.end)>=0)d(e,t,-1);else{var s,a;if(!(o(e.end,t.start)<=0))return o(t.start,e.start)<0&&(s=t,t=p(t,e.start)),o(t.end,e.end)>0&&(a=p(t,e.end)),f(e.end,t.start,t.end,-1),a&&!s&&(t.lines=a.lines,t.start=a.start,t.end=a.end,a=t),[e,s,a].filter(Boolean);d(t,e,-1)}return[e,t]}function d(t,e,n){f(t.start,e.start,e.end,n),f(t.end,e.start,e.end,n)}function f(t,e,n,i){t.row==(1==i?e:n).row&&(t.column+=i*(n.column-e.column)),t.row+=i*(n.row-e.row)}function p(t,e){var n=t.lines,i=t.end;t.end=s(e);var r=t.end.row-t.start.row,o=n.splice(r,n.length),a=r?e.column:e.column-t.start.column;return n.push(o[0].substring(0,a)),o[0]=o[0].substr(a),{start:s(e),end:i,lines:o,action:t.action}}function g(t,e){e=function(t){return{start:s(t.start),end:s(t.end),action:t.action,lines:t.lines.slice()}}(e);for(var n=t.length;n--;){for(var i=t[n],r=0;ro&&(l=r.end.row+1,o=(r=e.getNextFoldLine(l,r))?r.start.row:1/0),l>i){for(;this.$lines.getLength()>a+1;)this.$lines.pop();break}(s=this.$lines.get(++a))?s.row=l:(s=this.$lines.createCell(l,t,this.session,c),this.$lines.push(s)),this.$renderCell(s,t,r,l),l++}this._signal("afterRender"),this.$updateGutterWidth(t)},this.$updateGutterWidth=function(t){var e=this.session,n=e.gutterRenderer||this.$renderer,i=e.$firstLineNumber,r=this.$lines.last()?this.$lines.last().text:"";(this.$fixedWidth||e.$useWrapMode)&&(r=e.getLength()+i-1);var o=n?n.getWidth(e,r,t):r.toString().length*t.characterWidth,s=this.$padding||this.$computePadding();(o+=s.left+s.right)===this.gutterWidth||isNaN(o)||(this.gutterWidth=o,this.element.parentNode.style.width=this.element.style.width=Math.ceil(this.gutterWidth)+"px",this._signal("changeGutterWidth",o))},this.$updateCursorRow=function(){if(this.$highlightGutterLine){var t=this.session.selection.getCursor();this.$cursorRow!==t.row&&(this.$cursorRow=t.row)}},this.updateLineHighlight=function(){if(this.$highlightGutterLine){var t=this.session.selection.cursor.row;if(this.$cursorRow=t,!this.$cursorCell||this.$cursorCell.row!=t){this.$cursorCell&&(this.$cursorCell.element.className=this.$cursorCell.element.className.replace("ace_gutter-active-line ",""));var e=this.$lines.cells;this.$cursorCell=null;for(var n=0;n=this.$cursorRow){if(i.row>this.$cursorRow){var r=this.session.getFoldLine(this.$cursorRow);if(!(n>0&&r&&r.start.row==e[n-1].row))break;i=e[n-1]}i.element.className="ace_gutter-active-line "+i.element.className,this.$cursorCell=i;break}}}}},this.scrollLines=function(t){var e=this.config;if(this.config=t,this.$updateCursorRow(),this.$lines.pageChanged(e,t))return this.update(t);this.$lines.moveContainer(t);var n=Math.min(t.lastRow+t.gutterOffset,this.session.getLength()-1),i=this.oldLastRow;if(this.oldLastRow=n,!e||i0;r--)this.$lines.shift();if(i>n)for(r=this.session.getFoldedRowCount(n+1,i);r>0;r--)this.$lines.pop();t.firstRowi&&this.$lines.push(this.$renderLines(t,i+1,n)),this.updateLineHighlight(),this._signal("afterRender"),this.$updateGutterWidth(t)},this.$renderLines=function(t,e,n){for(var i=[],r=e,o=this.session.getNextFoldLine(r),s=o?o.start.row:1/0;r>s&&(r=o.end.row+1,s=(o=this.session.getNextFoldLine(r,o))?o.start.row:1/0),!(r>n);){var a=this.$lines.createCell(r,t,this.session,c);this.$renderCell(a,t,o,r),i.push(a),r++}return i},this.$renderCell=function(t,e,n,r){var o=t.element,s=this.session,a=o.childNodes[0],l=o.childNodes[1],c=s.$firstLineNumber,u=s.$breakpoints,h=s.$decorations,d=s.gutterRenderer||this.$renderer,f=this.$showFoldWidgets&&s.foldWidgets,p=n?n.start.row:Number.MAX_VALUE,g="ace_gutter-cell ";if(this.$highlightGutterLine&&(r==this.$cursorRow||n&&r=p&&this.$cursorRow<=n.end.row)&&(g+="ace_gutter-active-line ",this.$cursorCell!=t&&(this.$cursorCell&&(this.$cursorCell.element.className=this.$cursorCell.element.className.replace("ace_gutter-active-line ","")),this.$cursorCell=t)),u[r]&&(g+=u[r]),h[r]&&(g+=h[r]),this.$annotations[r]&&(g+=this.$annotations[r].className),o.className!=g&&(o.className=g),f){var m=f[r];null==m&&(m=f[r]=s.getFoldWidget(r))}if(m){g="ace_fold-widget ace_"+m;"start"==m&&r==p&&rn.right-e.right?"foldWidgets":void 0}}).call(l.prototype),e.Gutter=l})),ace.define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"],(function(t,e,n){"use strict";var i=t("../range").Range,r=t("../lib/dom"),o=function(t){this.element=r.createElement("div"),this.element.className="ace_layer ace_marker-layer",t.appendChild(this.element)};(function(){this.$padding=0,this.setPadding=function(t){this.$padding=t},this.setSession=function(t){this.session=t},this.setMarkers=function(t){this.markers=t},this.elt=function(t,e){var n=-1!=this.i&&this.element.childNodes[this.i];n?this.i++:(n=document.createElement("div"),this.element.appendChild(n),this.i=-1),n.style.cssText=e,n.className=t},this.update=function(t){if(t){var e;for(var n in this.config=t,this.i=0,this.markers){var i=this.markers[n];if(i.range){var r=i.range.clipRows(t.firstRow,t.lastRow);if(!r.isEmpty())if(r=r.toScreenRange(this.session),i.renderer){var o=this.$getTop(r.start.row,t),s=this.$padding+r.start.column*t.characterWidth;i.renderer(e,r,s,o,t)}else"fullLine"==i.type?this.drawFullLineMarker(e,r,i.clazz,t):"screenLine"==i.type?this.drawScreenLineMarker(e,r,i.clazz,t):r.isMultiLine()?"text"==i.type?this.drawTextMarker(e,r,i.clazz,t):this.drawMultiLineMarker(e,r,i.clazz,t):this.drawSingleLineMarker(e,r,i.clazz+" ace_start ace_br15",t)}else i.update(e,this,this.session,t)}if(-1!=this.i)for(;this.id?4:0)|(c==l?8:0)),r,c==l?0:1,o)},this.drawMultiLineMarker=function(t,e,n,i,r){var o=this.$padding,s=i.lineHeight,a=this.$getTop(e.start.row,i),l=o+e.start.column*i.characterWidth;(r=r||"",this.session.$bidiHandler.isBidiRow(e.start.row))?((c=e.clone()).end.row=c.start.row,c.end.column=this.session.getLine(c.start.row).length,this.drawBidiSingleLineMarker(t,c,n+" ace_br1 ace_start",i,null,r)):this.elt(n+" ace_br1 ace_start","height:"+s+"px;right:0;top:"+a+"px;left:"+l+"px;"+(r||""));if(this.session.$bidiHandler.isBidiRow(e.end.row)){var c;(c=e.clone()).start.row=c.end.row,c.start.column=0,this.drawBidiSingleLineMarker(t,c,n+" ace_br12",i,null,r)}else{a=this.$getTop(e.end.row,i);var u=e.end.column*i.characterWidth;this.elt(n+" ace_br12","height:"+s+"px;width:"+u+"px;top:"+a+"px;left:"+o+"px;"+(r||""))}if(!((s=(e.end.row-e.start.row-1)*i.lineHeight)<=0)){a=this.$getTop(e.start.row+1,i);var h=(e.start.column?1:0)|(e.end.column?0:8);this.elt(n+(h?" ace_br"+h:""),"height:"+s+"px;right:0;top:"+a+"px;left:"+o+"px;"+(r||""))}},this.drawSingleLineMarker=function(t,e,n,i,r,o){if(this.session.$bidiHandler.isBidiRow(e.start.row))return this.drawBidiSingleLineMarker(t,e,n,i,r,o);var s=i.lineHeight,a=(e.end.column+(r||0)-e.start.column)*i.characterWidth,l=this.$getTop(e.start.row,i),c=this.$padding+e.start.column*i.characterWidth;this.elt(n,"height:"+s+"px;width:"+a+"px;top:"+l+"px;left:"+c+"px;"+(o||""))},this.drawBidiSingleLineMarker=function(t,e,n,i,r,o){var s=i.lineHeight,a=this.$getTop(e.start.row,i),l=this.$padding;this.session.$bidiHandler.getSelections(e.start.column,e.end.column).forEach((function(t){this.elt(n,"height:"+s+"px;width:"+(t.width+(r||0))+"px;top:"+a+"px;left:"+(l+t.left)+"px;"+(o||""))}),this)},this.drawFullLineMarker=function(t,e,n,i,r){var o=this.$getTop(e.start.row,i),s=i.lineHeight;e.start.row!=e.end.row&&(s+=this.$getTop(e.end.row,i)-o),this.elt(n,"height:"+s+"px;top:"+o+"px;left:0;right:0;"+(r||""))},this.drawScreenLineMarker=function(t,e,n,i,r){var o=this.$getTop(e.start.row,i),s=i.lineHeight;this.elt(n,"height:"+s+"px;top:"+o+"px;left:0;right:0;"+(r||""))}}).call(o.prototype),e.Marker=o})),ace.define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/layer/lines","ace/lib/event_emitter"],(function(t,e,n){"use strict";var i=t("../lib/oop"),r=t("../lib/dom"),o=t("../lib/lang"),s=t("./lines").Lines,a=t("../lib/event_emitter").EventEmitter,l=function(t){this.dom=r,this.element=this.dom.createElement("div"),this.element.className="ace_layer ace_text-layer",t.appendChild(this.element),this.$updateEolChar=this.$updateEolChar.bind(this),this.$lines=new s(this.element)};(function(){i.implement(this,a),this.EOF_CHAR="¶",this.EOL_CHAR_LF="¬",this.EOL_CHAR_CRLF="¤",this.EOL_CHAR=this.EOL_CHAR_LF,this.TAB_CHAR="—",this.SPACE_CHAR="·",this.$padding=0,this.MAX_LINE_LENGTH=1e4,this.$updateEolChar=function(){var t=this.session.doc,e="\n"==t.getNewLineCharacter()&&"windows"!=t.getNewLineMode()?this.EOL_CHAR_LF:this.EOL_CHAR_CRLF;if(this.EOL_CHAR!=e)return this.EOL_CHAR=e,!0},this.setPadding=function(t){this.$padding=t,this.element.style.margin="0 "+t+"px"},this.getLineHeight=function(){return this.$fontMetrics.$characterSize.height||0},this.getCharacterWidth=function(){return this.$fontMetrics.$characterSize.width||0},this.$setFontMetrics=function(t){this.$fontMetrics=t,this.$fontMetrics.on("changeCharacterSize",function(t){this._signal("changeCharacterSize",t)}.bind(this)),this.$pollSizeChanges()},this.checkForSizeChanges=function(){this.$fontMetrics.checkForSizeChanges()},this.$pollSizeChanges=function(){return this.$pollSizeChangesTimer=this.$fontMetrics.$pollSizeChanges()},this.setSession=function(t){this.session=t,t&&this.$computeTabString()},this.showInvisibles=!1,this.showSpaces=!1,this.showTabs=!1,this.showEOL=!1,this.setShowInvisibles=function(t){return this.showInvisibles!=t&&(this.showInvisibles=t,"string"==typeof t?(this.showSpaces=/tab/i.test(t),this.showTabs=/space/i.test(t),this.showEOL=/eol/i.test(t)):this.showSpaces=this.showTabs=this.showEOL=t,this.$computeTabString(),!0)},this.displayIndentGuides=!0,this.setDisplayIndentGuides=function(t){return this.displayIndentGuides!=t&&(this.displayIndentGuides=t,this.$computeTabString(),!0)},this.$highlightIndentGuides=!0,this.setHighlightIndentGuides=function(t){return this.$highlightIndentGuides!==t&&(this.$highlightIndentGuides=t,t)},this.$tabStrings=[],this.onChangeTabSize=this.$computeTabString=function(){var t=this.session.getTabSize();this.tabSize=t;for(var e=this.$tabStrings=[0],n=1;nu&&(a=l.end.row+1,u=(l=this.session.getNextFoldLine(a,l))?l.start.row:1/0),!(a>r);){var h=o[s++];if(h){this.dom.removeChildren(h),this.$renderLine(h,a,a==u&&l),c&&(h.style.top=this.$lines.computeLineTop(a,t,this.session)+"px");var d=t.lineHeight*this.session.getRowLength(a)+"px";h.style.height!=d&&(c=!0,h.style.height=d)}a++}if(c)for(;s0;r--)this.$lines.shift();if(e.lastRow>t.lastRow)for(r=this.session.getFoldedRowCount(t.lastRow+1,e.lastRow);r>0;r--)this.$lines.pop();t.firstRowe.lastRow&&this.$lines.push(this.$renderLinesFragment(t,e.lastRow+1,t.lastRow)),this.$highlightIndentGuide()},this.$renderLinesFragment=function(t,e,n){for(var i=[],o=e,s=this.session.getNextFoldLine(o),a=s?s.start.row:1/0;o>a&&(o=s.end.row+1,a=(s=this.session.getNextFoldLine(o,s))?s.start.row:1/0),!(o>n);){var l=this.$lines.createCell(o,t,this.session),c=l.element;this.dom.removeChildren(c),r.setStyle(c.style,"height",this.$lines.computeLineHeight(o,t,this.session)+"px"),r.setStyle(c.style,"top",this.$lines.computeLineTop(o,t,this.session)+"px"),this.$renderLine(c,o,o==a&&s),this.$useLineGroups()?c.className="ace_line_group":c.className="ace_line",i.push(l),o++}return i},this.update=function(t){this.$lines.moveContainer(t),this.config=t;for(var e=t.firstRow,n=t.lastRow,i=this.$lines;i.getLength();)i.pop();i.push(this.$renderLinesFragment(t,e,n))},this.$textToken={text:!0,rparen:!0,lparen:!0},this.$renderToken=function(t,e,n,i){for(var r,s=/(\t)|( +)|([\x00-\x1f\x80-\xa0\xad\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\uFEFF\uFFF9-\uFFFC\u2066\u2067\u2068\u202A\u202B\u202D\u202E\u202C\u2069]+)|(\u3000)|([\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3001-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]|[\uD800-\uDBFF][\uDC00-\uDFFF])/g,a=this.dom.createFragment(this.element),l=0;r=s.exec(i);){var c=r[1],u=r[2],h=r[3],d=r[4],f=r[5];if(this.showSpaces||!u){var p=l!=r.index?i.slice(l,r.index):"";if(l=r.index+r[0].length,p&&a.appendChild(this.dom.createTextNode(p,this.element)),c){var g=this.session.getScreenTabSize(e+r.index);a.appendChild(this.$tabStrings[g].cloneNode(!0)),e+=g-1}else if(u){if(this.showSpaces)(v=this.dom.createElement("span")).className="ace_invisible ace_invisible_space",v.textContent=o.stringRepeat(this.SPACE_CHAR,u.length),a.appendChild(v);else a.appendChild(this.com.createTextNode(u,this.element))}else if(h){(v=this.dom.createElement("span")).className="ace_invisible ace_invisible_space ace_invalid",v.textContent=o.stringRepeat(this.SPACE_CHAR,h.length),a.appendChild(v)}else if(d){e+=1,(v=this.dom.createElement("span")).style.width=2*this.config.characterWidth+"px",v.className=this.showSpaces?"ace_cjk ace_invisible ace_invisible_space":"ace_cjk",v.textContent=this.showSpaces?this.SPACE_CHAR:d,a.appendChild(v)}else if(f){e+=1,(v=this.dom.createElement("span")).style.width=2*this.config.characterWidth+"px",v.className="ace_cjk",v.textContent=f,a.appendChild(v)}}}if(a.appendChild(this.dom.createTextNode(l?i.slice(l):i,this.element)),this.$textToken[n.type])t.appendChild(a);else{var m="ace_"+n.type.replace(/\./g," ace_"),v=this.dom.createElement("span");"fold"==n.type&&(v.style.width=n.value.length*this.config.characterWidth+"px"),v.className=m,v.appendChild(a),t.appendChild(v)}return e+i.length},this.renderIndentGuide=function(t,e,n){var i=e.search(this.$indentGuideRe);if(i<=0||i>=n)return e;if(" "==e[0]){for(var r=(i-=i%this.tabSize)/this.tabSize,o=0;or[o].start.row?this.$highlightIndentGuideMarker.dir=-1:this.$highlightIndentGuideMarker.dir=1;break}if(!this.$highlightIndentGuideMarker.end&&""!==t[e.row]&&e.column===t[e.row].length){this.$highlightIndentGuideMarker.dir=1;for(o=e.row+1;o0)for(var i=0;i=this.$highlightIndentGuideMarker.start+1){if(i.row>=this.$highlightIndentGuideMarker.end)break;this.$setIndentGuideActive(i,e)}}else for(n=t.length-1;n>=0;n--){i=t[n];if(this.$highlightIndentGuideMarker.end&&i.row=s;)a=this.$renderToken(l,a,u,h.substring(0,s-i)),h=h.substring(s-i),i=s,l=this.$createLineElement(),t.appendChild(l),l.appendChild(this.dom.createTextNode(o.stringRepeat(" ",n.indent),this.element)),a=0,s=n[++r]||Number.MAX_VALUE;0!=h.length&&(i+=h.length,a=this.$renderToken(l,a,u,h))}}n[n.length-1]>this.MAX_LINE_LENGTH&&this.$renderOverflowMessage(l,a,null,"",!0)},this.$renderSimpleLine=function(t,e){for(var n=0,i=0;ithis.MAX_LINE_LENGTH)return this.$renderOverflowMessage(t,n,r,o);n=this.$renderToken(t,n,r,o)}}},this.$renderOverflowMessage=function(t,e,n,i,r){n&&this.$renderToken(t,e,n,i.slice(0,this.MAX_LINE_LENGTH-e));var o=this.dom.createElement("span");o.className="ace_inline_button ace_keyword ace_toggle_wrap",o.textContent=r?"":"",t.appendChild(o)},this.$renderLine=function(t,e,n){if(n||0==n||(n=this.session.getFoldLine(e)),n)var i=this.$getFoldLineTokens(e,n);else i=this.session.getTokens(e);var r=t;if(i.length){var o=this.session.getRowSplitData(e);if(o&&o.length){this.$renderWrappedLine(t,i,o);r=t.lastChild}else{r=t;this.$useLineGroups()&&(r=this.$createLineElement(),t.appendChild(r)),this.$renderSimpleLine(r,i)}}else this.$useLineGroups()&&(r=this.$createLineElement(),t.appendChild(r));if(this.showEOL&&r){n&&(e=n.end.row);var s=this.dom.createElement("span");s.className="ace_invisible ace_invisible_eol",s.textContent=e==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,r.appendChild(s)}},this.$getFoldLineTokens=function(t,e){var n=this.session,i=[];var r=n.getTokens(t);return e.walk((function(t,e,o,s,a){null!=t?i.push({type:"fold",value:t}):(a&&(r=n.getTokens(e)),r.length&&function(t,e,n){for(var r=0,o=0;o+t[r].value.lengthn-e&&(s=s.substring(0,n-e)),i.push({type:t[r].type,value:s}),o=e+s.length,r+=1);on?i.push({type:t[r].type,value:s.substring(0,n-o)}):i.push(t[r]),o+=s.length,r+=1}}(r,s,o))}),e.end.row,this.session.getLine(e.end.row).length),i},this.$useLineGroups=function(){return this.session.getUseWrapMode()},this.destroy=function(){}}).call(l.prototype),e.Text=l})),ace.define("ace/layer/cursor",["require","exports","module","ace/lib/dom"],(function(t,e,n){"use strict";var i=t("../lib/dom"),r=function(t){this.element=i.createElement("div"),this.element.className="ace_layer ace_cursor-layer",t.appendChild(this.element),this.isVisible=!1,this.isBlinking=!0,this.blinkInterval=1e3,this.smoothBlinking=!1,this.cursors=[],this.cursor=this.addCursor(),i.addCssClass(this.element,"ace_hidden-cursors"),this.$updateCursors=this.$updateOpacity.bind(this)};(function(){this.$updateOpacity=function(t){for(var e=this.cursors,n=e.length;n--;)i.setStyle(e[n].style,"opacity",t?"":"0")},this.$startCssAnimation=function(){for(var t=this.cursors,e=t.length;e--;)t[e].style.animationDuration=this.blinkInterval+"ms";this.$isAnimating=!0,setTimeout(function(){this.$isAnimating&&i.addCssClass(this.element,"ace_animate-blinking")}.bind(this))},this.$stopCssAnimation=function(){this.$isAnimating=!1,i.removeCssClass(this.element,"ace_animate-blinking")},this.$padding=0,this.setPadding=function(t){this.$padding=t},this.setSession=function(t){this.session=t},this.setBlinking=function(t){t!=this.isBlinking&&(this.isBlinking=t,this.restartTimer())},this.setBlinkInterval=function(t){t!=this.blinkInterval&&(this.blinkInterval=t,this.restartTimer())},this.setSmoothBlinking=function(t){t!=this.smoothBlinking&&(this.smoothBlinking=t,i.setCssClass(this.element,"ace_smooth-blinking",t),this.$updateCursors(!0),this.restartTimer())},this.addCursor=function(){var t=i.createElement("div");return t.className="ace_cursor",this.element.appendChild(t),this.cursors.push(t),t},this.removeCursor=function(){if(this.cursors.length>1){var t=this.cursors.pop();return t.parentNode.removeChild(t),t}},this.hideCursor=function(){this.isVisible=!1,i.addCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.showCursor=function(){this.isVisible=!0,i.removeCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.restartTimer=function(){var t=this.$updateCursors;if(clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.$stopCssAnimation(),this.smoothBlinking&&(this.$isSmoothBlinking=!1,i.removeCssClass(this.element,"ace_smooth-blinking")),t(!0),this.isBlinking&&this.blinkInterval&&this.isVisible)if(this.smoothBlinking&&(this.$isSmoothBlinking=!0,setTimeout(function(){this.$isSmoothBlinking&&i.addCssClass(this.element,"ace_smooth-blinking")}.bind(this))),i.HAS_CSS_ANIMATION)this.$startCssAnimation();else{var e=function(){this.timeoutId=setTimeout((function(){t(!1)}),.6*this.blinkInterval)}.bind(this);this.intervalId=setInterval((function(){t(!0),e()}),this.blinkInterval),e()}else this.$stopCssAnimation()},this.getPixelPosition=function(t,e){if(!this.config||!this.session)return{left:0,top:0};t||(t=this.session.selection.getCursor());var n=this.session.documentToScreenPosition(t);return{left:this.$padding+(this.session.$bidiHandler.isBidiRow(n.row,t.row)?this.session.$bidiHandler.getPosLeft(n.column):n.column*this.config.characterWidth),top:(n.row-(e?this.config.firstRowScreen:0))*this.config.lineHeight}},this.isCursorInView=function(t,e){return t.top>=0&&t.topt.height+t.offset||s.top<0)&&n>1)){var a=this.cursors[r++]||this.addCursor(),l=a.style;this.drawCursor?this.drawCursor(a,s,t,e[n],this.session):this.isCursorInView(s,t)?(i.setStyle(l,"display","block"),i.translate(a,s.left,s.top),i.setStyle(l,"width",Math.round(t.characterWidth)+"px"),i.setStyle(l,"height",t.lineHeight+"px")):i.setStyle(l,"display","none")}}for(;this.cursors.length>r;)this.removeCursor();var c=this.session.getOverwrite();this.$setOverwrite(c),this.$pixelPos=s,this.restartTimer()},this.drawCursor=null,this.$setOverwrite=function(t){t!=this.overwrite&&(this.overwrite=t,t?i.addCssClass(this.element,"ace_overwrite-cursors"):i.removeCssClass(this.element,"ace_overwrite-cursors"))},this.destroy=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId)}}).call(r.prototype),e.Cursor=r})),ace.define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],(function(t,e,n){"use strict";var i=t("./lib/oop"),r=t("./lib/dom"),o=t("./lib/event"),s=t("./lib/event_emitter").EventEmitter,a=function(t){this.element=r.createElement("div"),this.element.className="ace_scrollbar ace_scrollbar"+this.classSuffix,this.inner=r.createElement("div"),this.inner.className="ace_scrollbar-inner",this.inner.textContent=" ",this.element.appendChild(this.inner),t.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,o.addListener(this.element,"scroll",this.onScroll.bind(this)),o.addListener(this.element,"mousedown",o.preventDefault)};(function(){i.implement(this,s),this.setVisible=function(t){this.element.style.display=t?"":"none",this.isVisible=t,this.coeff=1}}).call(a.prototype);var l=function(t,e){a.call(this,t),this.scrollTop=0,this.scrollHeight=0,e.$scrollbarWidth=this.width=r.scrollbarWidth(t.ownerDocument),this.inner.style.width=this.element.style.width=(this.width||15)+5+"px",this.$minWidth=0};i.inherits(l,a),function(){this.classSuffix="-v",this.onScroll=function(){if(!this.skipEvent){if(this.scrollTop=this.element.scrollTop,1!=this.coeff){var t=this.element.clientHeight/this.scrollHeight;this.scrollTop=this.scrollTop*(1-t)/(this.coeff-t)}this._emit("scroll",{data:this.scrollTop})}this.skipEvent=!1},this.getWidth=function(){return Math.max(this.isVisible?this.width:0,this.$minWidth||0)},this.setHeight=function(t){this.element.style.height=t+"px"},this.setInnerHeight=this.setScrollHeight=function(t){this.scrollHeight=t,t>32768?(this.coeff=32768/t,t=32768):1!=this.coeff&&(this.coeff=1),this.inner.style.height=t+"px"},this.setScrollTop=function(t){this.scrollTop!=t&&(this.skipEvent=!0,this.scrollTop=t,this.element.scrollTop=t*this.coeff)}}.call(l.prototype);var c=function(t,e){a.call(this,t),this.scrollLeft=0,this.height=e.$scrollbarWidth,this.inner.style.height=this.element.style.height=(this.height||15)+5+"px"};i.inherits(c,a),function(){this.classSuffix="-h",this.onScroll=function(){this.skipEvent||(this.scrollLeft=this.element.scrollLeft,this._emit("scroll",{data:this.scrollLeft})),this.skipEvent=!1},this.getHeight=function(){return this.isVisible?this.height:0},this.setWidth=function(t){this.element.style.width=t+"px"},this.setInnerWidth=function(t){this.inner.style.width=t+"px"},this.setScrollWidth=function(t){this.inner.style.width=t+"px"},this.setScrollLeft=function(t){this.scrollLeft!=t&&(this.skipEvent=!0,this.scrollLeft=this.element.scrollLeft=t)}}.call(c.prototype),e.ScrollBar=l,e.ScrollBarV=l,e.ScrollBarH=c,e.VScrollBar=l,e.HScrollBar=c})),ace.define("ace/scrollbar_custom",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],(function(t,e,n){"use strict";var i=t("./lib/oop"),r=t("./lib/dom"),o=t("./lib/event"),s=t("./lib/event_emitter").EventEmitter;r.importCssString(".ace_editor>.ace_sb-v div, .ace_editor>.ace_sb-h div{\n position: absolute;\n background: rgba(128, 128, 128, 0.6);\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n border: 1px solid #bbb;\n border-radius: 2px;\n z-index: 8;\n}\n.ace_editor>.ace_sb-v, .ace_editor>.ace_sb-h {\n position: absolute;\n z-index: 6;\n background: none;\n overflow: hidden!important;\n}\n.ace_editor>.ace_sb-v {\n z-index: 6;\n right: 0;\n top: 0;\n width: 12px;\n}\n.ace_editor>.ace_sb-v div {\n z-index: 8;\n right: 0;\n width: 100%;\n}\n.ace_editor>.ace_sb-h {\n bottom: 0;\n left: 0;\n height: 12px;\n}\n.ace_editor>.ace_sb-h div {\n bottom: 0;\n height: 100%;\n}\n.ace_editor>.ace_sb_grabbed {\n z-index: 8;\n background: #000;\n}","ace_scrollbar.css",!1);var a=function(t){this.element=r.createElement("div"),this.element.className="ace_sb"+this.classSuffix,this.inner=r.createElement("div"),this.inner.className="",this.element.appendChild(this.inner),this.VScrollWidth=12,this.HScrollHeight=12,t.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,o.addMultiMouseDownListener(this.element,[500,300,300],this,"onMouseDown")};(function(){i.implement(this,s),this.setVisible=function(t){this.element.style.display=t?"":"none",this.isVisible=t,this.coeff=1}}).call(a.prototype);var l=function(t,e){a.call(this,t),this.scrollTop=0,this.scrollHeight=0,this.parent=t,this.width=this.VScrollWidth,this.renderer=e,this.inner.style.width=this.element.style.width=(this.width||15)+"px",this.$minWidth=0};i.inherits(l,a),function(){this.classSuffix="-v",i.implement(this,s),this.onMouseDown=function(t,e){if("mousedown"===t&&0===o.getButton(e)&&2!==e.detail){if(e.target===this.inner){var n=this,i=e.clientY,r=e.clientY,s=this.thumbTop;o.capture(this.inner,(function(t){i=t.clientY}),(function(){clearInterval(a)}));var a=setInterval((function(){if(void 0!==i){var t=n.scrollTopFromThumbTop(s+i-r);t!==n.scrollTop&&n._emit("scroll",{data:t})}}),20);return o.preventDefault(e)}var l=e.clientY-this.element.getBoundingClientRect().top-this.thumbHeight/2;return this._emit("scroll",{data:this.scrollTopFromThumbTop(l)}),o.preventDefault(e)}},this.getHeight=function(){return this.height},this.scrollTopFromThumbTop=function(t){var e=t*(this.pageHeight-this.viewHeight)/(this.slideHeight-this.thumbHeight);return(e>>=0)<0?e=0:e>this.pageHeight-this.viewHeight&&(e=this.pageHeight-this.viewHeight),e},this.getWidth=function(){return Math.max(this.isVisible?this.width:0,this.$minWidth||0)},this.setHeight=function(t){this.height=Math.max(0,t),this.slideHeight=this.height,this.viewHeight=this.height,this.setScrollHeight(this.pageHeight,!0)},this.setInnerHeight=this.setScrollHeight=function(t,e){(this.pageHeight!==t||e)&&(this.pageHeight=t,this.thumbHeight=this.slideHeight*this.viewHeight/this.pageHeight,this.thumbHeight>this.slideHeight&&(this.thumbHeight=this.slideHeight),this.thumbHeight<15&&(this.thumbHeight=15),this.inner.style.height=this.thumbHeight+"px",this.scrollTop>this.pageHeight-this.viewHeight&&(this.scrollTop=this.pageHeight-this.viewHeight,this.scrollTop<0&&(this.scrollTop=0),this._emit("scroll",{data:this.scrollTop})))},this.setScrollTop=function(t){this.scrollTop=t,t<0&&(t=0),this.thumbTop=t*(this.slideHeight-this.thumbHeight)/(this.pageHeight-this.viewHeight),this.inner.style.top=this.thumbTop+"px"}}.call(l.prototype);var c=function(t,e){a.call(this,t),this.scrollLeft=0,this.scrollWidth=0,this.height=this.HScrollHeight,this.inner.style.height=this.element.style.height=(this.height||12)+"px",this.renderer=e};i.inherits(c,a),function(){this.classSuffix="-h",i.implement(this,s),this.onMouseDown=function(t,e){if("mousedown"===t&&0===o.getButton(e)&&2!==e.detail){if(e.target===this.inner){var n=this,i=e.clientX,r=e.clientX,s=this.thumbLeft;o.capture(this.inner,(function(t){i=t.clientX}),(function(){clearInterval(a)}));var a=setInterval((function(){if(void 0!==i){var t=n.scrollLeftFromThumbLeft(s+i-r);t!==n.scrollLeft&&n._emit("scroll",{data:t})}}),20);return o.preventDefault(e)}var l=e.clientX-this.element.getBoundingClientRect().left-this.thumbWidth/2;return this._emit("scroll",{data:this.scrollLeftFromThumbLeft(l)}),o.preventDefault(e)}},this.getHeight=function(){return this.isVisible?this.height:0},this.scrollLeftFromThumbLeft=function(t){var e=t*(this.pageWidth-this.viewWidth)/(this.slideWidth-this.thumbWidth);return(e>>=0)<0?e=0:e>this.pageWidth-this.viewWidth&&(e=this.pageWidth-this.viewWidth),e},this.setWidth=function(t){this.width=Math.max(0,t),this.element.style.width=this.width+"px",this.slideWidth=this.width,this.viewWidth=this.width,this.setScrollWidth(this.pageWidth,!0)},this.setInnerWidth=this.setScrollWidth=function(t,e){(this.pageWidth!==t||e)&&(this.pageWidth=t,this.thumbWidth=this.slideWidth*this.viewWidth/this.pageWidth,this.thumbWidth>this.slideWidth&&(this.thumbWidth=this.slideWidth),this.thumbWidth<15&&(this.thumbWidth=15),this.inner.style.width=this.thumbWidth+"px",this.scrollLeft>this.pageWidth-this.viewWidth&&(this.scrollLeft=this.pageWidth-this.viewWidth,this.scrollLeft<0&&(this.scrollLeft=0),this._emit("scroll",{data:this.scrollLeft})))},this.setScrollLeft=function(t){this.scrollLeft=t,t<0&&(t=0),this.thumbLeft=t*(this.slideWidth-this.thumbWidth)/(this.pageWidth-this.viewWidth),this.inner.style.left=this.thumbLeft+"px"}}.call(c.prototype),e.ScrollBar=l,e.ScrollBarV=l,e.ScrollBarH=c,e.VScrollBar=l,e.HScrollBar=c})),ace.define("ace/renderloop",["require","exports","module","ace/lib/event"],(function(t,e,n){"use strict";var i=t("./lib/event"),r=function(t,e){this.onRender=t,this.pending=!1,this.changes=0,this.$recursionLimit=2,this.window=e||window;var n=this;this._flush=function(t){n.pending=!1;var e=n.changes;if(e&&(i.blockIdle(100),n.changes=0,n.onRender(e)),n.changes){if(n.$recursionLimit--<0)return;n.schedule()}else n.$recursionLimit=2}};(function(){this.schedule=function(t){this.changes=this.changes|t,this.changes&&!this.pending&&(i.nextFrame(this._flush),this.pending=!0)},this.clear=function(t){var e=this.changes;return this.changes=0,e}}).call(r.prototype),e.RenderLoop=r})),ace.define("ace/layer/font_metrics",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/lib/useragent","ace/lib/event_emitter"],(function(t,e,n){var i=t("../lib/oop"),r=t("../lib/dom"),o=t("../lib/lang"),s=t("../lib/event"),a=t("../lib/useragent"),l=t("../lib/event_emitter").EventEmitter,c="function"==typeof ResizeObserver,u=200,h=e.FontMetrics=function(t){this.el=r.createElement("div"),this.$setMeasureNodeStyles(this.el.style,!0),this.$main=r.createElement("div"),this.$setMeasureNodeStyles(this.$main.style),this.$measureNode=r.createElement("div"),this.$setMeasureNodeStyles(this.$measureNode.style),this.el.appendChild(this.$main),this.el.appendChild(this.$measureNode),t.appendChild(this.el),this.$measureNode.textContent=o.stringRepeat("X",512),this.$characterSize={width:0,height:0},c?this.$addObserver():this.checkForSizeChanges()};(function(){i.implement(this,l),this.$characterSize={width:0,height:0},this.$setMeasureNodeStyles=function(t,e){t.width=t.height="auto",t.left=t.top="0px",t.visibility="hidden",t.position="absolute",t.whiteSpace="pre",a.isIE<8?t["font-family"]="inherit":t.font="inherit",t.overflow=e?"hidden":"visible"},this.checkForSizeChanges=function(t){if(void 0===t&&(t=this.$measureSizes()),t&&(this.$characterSize.width!==t.width||this.$characterSize.height!==t.height)){this.$measureNode.style.fontWeight="bold";var e=this.$measureSizes();this.$measureNode.style.fontWeight="",this.$characterSize=t,this.charSizes=Object.create(null),this.allowBoldFonts=e&&e.width===t.width&&e.height===t.height,this._emit("changeCharacterSize",{data:t})}},this.$addObserver=function(){var t=this;this.$observer=new window.ResizeObserver((function(e){t.checkForSizeChanges()})),this.$observer.observe(this.$measureNode)},this.$pollSizeChanges=function(){if(this.$pollSizeChangesTimer||this.$observer)return this.$pollSizeChangesTimer;var t=this;return this.$pollSizeChangesTimer=s.onIdle((function e(){t.checkForSizeChanges(),s.onIdle(e,500)}),500)},this.setPolling=function(t){t?this.$pollSizeChanges():this.$pollSizeChangesTimer&&(clearInterval(this.$pollSizeChangesTimer),this.$pollSizeChangesTimer=0)},this.$measureSizes=function(t){var e={height:(t||this.$measureNode).clientHeight,width:(t||this.$measureNode).clientWidth/512};return 0===e.width||0===e.height?null:e},this.$measureCharWidth=function(t){return this.$main.textContent=o.stringRepeat(t,512),this.$main.getBoundingClientRect().width/512},this.getCharacterWidth=function(t){var e=this.charSizes[t];return void 0===e&&(e=this.charSizes[t]=this.$measureCharWidth(t)/this.$characterSize.width),e},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.$observer&&this.$observer.disconnect(),this.el&&this.el.parentNode&&this.el.parentNode.removeChild(this.el)},this.$getZoom=function t(e){return e&&e.parentElement?(window.getComputedStyle(e).zoom||1)*t(e.parentElement):1},this.$initTransformMeasureNodes=function(){var t=function(t,e){return["div",{style:"position: absolute;top:"+t+"px;left:"+e+"px;"}]};this.els=r.buildDom([t(0,0),t(u,0),t(0,u),t(u,u)],this.el)},this.transformCoordinates=function(t,e){t&&(t=o(1/this.$getZoom(this.el),t));function n(t,e,n){var i=t[1]*e[0]-t[0]*e[1];return[(-e[1]*n[0]+e[0]*n[1])/i,(+t[1]*n[0]-t[0]*n[1])/i]}function i(t,e){return[t[0]-e[0],t[1]-e[1]]}function r(t,e){return[t[0]+e[0],t[1]+e[1]]}function o(t,e){return[t*e[0],t*e[1]]}function s(t){var e=t.getBoundingClientRect();return[e.left,e.top]}this.els||this.$initTransformMeasureNodes();var a=s(this.els[0]),l=s(this.els[1]),c=s(this.els[2]),h=s(this.els[3]),d=n(i(h,l),i(h,c),i(r(l,c),r(h,a))),f=o(1+d[0],i(l,a)),p=o(1+d[1],i(c,a));if(e){var g=e,m=d[0]*g[0]/u+d[1]*g[1]/u+1,v=r(o(g[0],f),o(g[1],p));return r(o(1/m/u,v),a)}var b=i(t,a),y=n(i(f,o(d[0],b)),i(p,o(d[1],b)),b);return o(u,y)}}).call(h.prototype)})),ace.define("ace/css/editor.css",["require","exports","module"],(function(t,e,n){n.exports='\n.ace_br1 {border-top-left-radius : 3px;}\n.ace_br2 {border-top-right-radius : 3px;}\n.ace_br3 {border-top-left-radius : 3px; border-top-right-radius: 3px;}\n.ace_br4 {border-bottom-right-radius: 3px;}\n.ace_br5 {border-top-left-radius : 3px; border-bottom-right-radius: 3px;}\n.ace_br6 {border-top-right-radius : 3px; border-bottom-right-radius: 3px;}\n.ace_br7 {border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px;}\n.ace_br8 {border-bottom-left-radius : 3px;}\n.ace_br9 {border-top-left-radius : 3px; border-bottom-left-radius: 3px;}\n.ace_br10{border-top-right-radius : 3px; border-bottom-left-radius: 3px;}\n.ace_br11{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-left-radius: 3px;}\n.ace_br12{border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\n.ace_br13{border-top-left-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\n.ace_br14{border-top-right-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\n.ace_br15{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\n\n\n.ace_editor {\n position: relative;\n overflow: hidden;\n padding: 0;\n font: 12px/normal \'Monaco\', \'Menlo\', \'Ubuntu Mono\', \'Consolas\', \'source-code-pro\', monospace;\n direction: ltr;\n text-align: left;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\n.ace_scroller {\n position: absolute;\n overflow: hidden;\n top: 0;\n bottom: 0;\n background-color: inherit;\n -ms-user-select: none;\n -moz-user-select: none;\n -webkit-user-select: none;\n user-select: none;\n cursor: text;\n}\n\n.ace_content {\n position: absolute;\n box-sizing: border-box;\n min-width: 100%;\n contain: style size layout;\n font-variant-ligatures: no-common-ligatures;\n}\n\n.ace_dragging .ace_scroller:before{\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n content: \'\';\n background: rgba(250, 250, 250, 0.01);\n z-index: 1000;\n}\n.ace_dragging.ace_dark .ace_scroller:before{\n background: rgba(0, 0, 0, 0.01);\n}\n\n.ace_gutter {\n position: absolute;\n overflow : hidden;\n width: auto;\n top: 0;\n bottom: 0;\n left: 0;\n cursor: default;\n z-index: 4;\n -ms-user-select: none;\n -moz-user-select: none;\n -webkit-user-select: none;\n user-select: none;\n contain: style size layout;\n}\n\n.ace_gutter-active-line {\n position: absolute;\n left: 0;\n right: 0;\n}\n\n.ace_scroller.ace_scroll-left:after {\n content: "";\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;\n pointer-events: none;\n}\n\n.ace_gutter-cell {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n padding-left: 19px;\n padding-right: 6px;\n background-repeat: no-repeat;\n}\n\n.ace_gutter-cell.ace_error {\n background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg==");\n background-repeat: no-repeat;\n background-position: 2px center;\n}\n\n.ace_gutter-cell.ace_warning {\n background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg==");\n background-position: 2px center;\n}\n\n.ace_gutter-cell.ace_info {\n background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII=");\n background-position: 2px center;\n}\n.ace_dark .ace_gutter-cell.ace_info {\n background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC");\n}\n\n.ace_scrollbar {\n contain: strict;\n position: absolute;\n right: 0;\n bottom: 0;\n z-index: 6;\n}\n\n.ace_scrollbar-inner {\n position: absolute;\n cursor: text;\n left: 0;\n top: 0;\n}\n\n.ace_scrollbar-v{\n overflow-x: hidden;\n overflow-y: scroll;\n top: 0;\n}\n\n.ace_scrollbar-h {\n overflow-x: scroll;\n overflow-y: hidden;\n left: 0;\n}\n\n.ace_print-margin {\n position: absolute;\n height: 100%;\n}\n\n.ace_text-input {\n position: absolute;\n z-index: 0;\n width: 0.5em;\n height: 1em;\n opacity: 0;\n background: transparent;\n -moz-appearance: none;\n appearance: none;\n border: none;\n resize: none;\n outline: none;\n overflow: hidden;\n font: inherit;\n padding: 0 1px;\n margin: 0 -1px;\n contain: strict;\n -ms-user-select: text;\n -moz-user-select: text;\n -webkit-user-select: text;\n user-select: text;\n /*with `pre-line` chrome inserts   instead of space*/\n white-space: pre!important;\n}\n.ace_text-input.ace_composition {\n background: transparent;\n color: inherit;\n z-index: 1000;\n opacity: 1;\n}\n.ace_composition_placeholder { color: transparent }\n.ace_composition_marker { \n border-bottom: 1px solid;\n position: absolute;\n border-radius: 0;\n margin-top: 1px;\n}\n\n[ace_nocontext=true] {\n transform: none!important;\n filter: none!important;\n clip-path: none!important;\n mask : none!important;\n contain: none!important;\n perspective: none!important;\n mix-blend-mode: initial!important;\n z-index: auto;\n}\n\n.ace_layer {\n z-index: 1;\n position: absolute;\n overflow: hidden;\n /* workaround for chrome bug https://github.com/ajaxorg/ace/issues/2312*/\n word-wrap: normal;\n white-space: pre;\n height: 100%;\n width: 100%;\n box-sizing: border-box;\n /* setting pointer-events: auto; on node under the mouse, which changes\n during scroll, will break mouse wheel scrolling in Safari */\n pointer-events: none;\n}\n\n.ace_gutter-layer {\n position: relative;\n width: auto;\n text-align: right;\n pointer-events: auto;\n height: 1000000px;\n contain: style size layout;\n}\n\n.ace_text-layer {\n font: inherit !important;\n position: absolute;\n height: 1000000px;\n width: 1000000px;\n contain: style size layout;\n}\n\n.ace_text-layer > .ace_line, .ace_text-layer > .ace_line_group {\n contain: style size layout;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n}\n\n.ace_hidpi .ace_text-layer,\n.ace_hidpi .ace_gutter-layer,\n.ace_hidpi .ace_content,\n.ace_hidpi .ace_gutter {\n contain: strict;\n will-change: transform;\n}\n.ace_hidpi .ace_text-layer > .ace_line, \n.ace_hidpi .ace_text-layer > .ace_line_group {\n contain: strict;\n}\n\n.ace_cjk {\n display: inline-block;\n text-align: center;\n}\n\n.ace_cursor-layer {\n z-index: 4;\n}\n\n.ace_cursor {\n z-index: 4;\n position: absolute;\n box-sizing: border-box;\n border-left: 2px solid;\n /* workaround for smooth cursor repaintng whole screen in chrome */\n transform: translatez(0);\n}\n\n.ace_multiselect .ace_cursor {\n border-left-width: 1px;\n}\n\n.ace_slim-cursors .ace_cursor {\n border-left-width: 1px;\n}\n\n.ace_overwrite-cursors .ace_cursor {\n border-left-width: 0;\n border-bottom: 1px solid;\n}\n\n.ace_hidden-cursors .ace_cursor {\n opacity: 0.2;\n}\n\n.ace_hasPlaceholder .ace_hidden-cursors .ace_cursor {\n opacity: 0;\n}\n\n.ace_smooth-blinking .ace_cursor {\n transition: opacity 0.18s;\n}\n\n.ace_animate-blinking .ace_cursor {\n animation-duration: 1000ms;\n animation-timing-function: step-end;\n animation-name: blink-ace-animate;\n animation-iteration-count: infinite;\n}\n\n.ace_animate-blinking.ace_smooth-blinking .ace_cursor {\n animation-duration: 1000ms;\n animation-timing-function: ease-in-out;\n animation-name: blink-ace-animate-smooth;\n}\n \n@keyframes blink-ace-animate {\n from, to { opacity: 1; }\n 60% { opacity: 0; }\n}\n\n@keyframes blink-ace-animate-smooth {\n from, to { opacity: 1; }\n 45% { opacity: 1; }\n 60% { opacity: 0; }\n 85% { opacity: 0; }\n}\n\n.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {\n position: absolute;\n z-index: 3;\n}\n\n.ace_marker-layer .ace_selection {\n position: absolute;\n z-index: 5;\n}\n\n.ace_marker-layer .ace_bracket {\n position: absolute;\n z-index: 6;\n}\n\n.ace_marker-layer .ace_error_bracket {\n position: absolute;\n border-bottom: 1px solid #DE5555;\n border-radius: 0;\n}\n\n.ace_marker-layer .ace_active-line {\n position: absolute;\n z-index: 2;\n}\n\n.ace_marker-layer .ace_selected-word {\n position: absolute;\n z-index: 4;\n box-sizing: border-box;\n}\n\n.ace_line .ace_fold {\n box-sizing: border-box;\n\n display: inline-block;\n height: 11px;\n margin-top: -2px;\n vertical-align: middle;\n\n background-image:\n url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),\n url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=");\n background-repeat: no-repeat, repeat-x;\n background-position: center center, top left;\n color: transparent;\n\n border: 1px solid black;\n border-radius: 2px;\n\n cursor: pointer;\n pointer-events: auto;\n}\n\n.ace_dark .ace_fold {\n}\n\n.ace_fold:hover{\n background-image:\n url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),\n url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC");\n}\n\n.ace_tooltip {\n background-color: #FFF;\n background-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1));\n border: 1px solid gray;\n border-radius: 1px;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);\n color: black;\n max-width: 100%;\n padding: 3px 4px;\n position: fixed;\n z-index: 999999;\n box-sizing: border-box;\n cursor: default;\n white-space: pre;\n word-wrap: break-word;\n line-height: normal;\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n pointer-events: none;\n}\n\n.ace_folding-enabled > .ace_gutter-cell {\n padding-right: 13px;\n}\n\n.ace_fold-widget {\n box-sizing: border-box;\n\n margin: 0 -12px 0 1px;\n display: none;\n width: 11px;\n vertical-align: top;\n\n background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==");\n background-repeat: no-repeat;\n background-position: center;\n\n border-radius: 3px;\n \n border: 1px solid transparent;\n cursor: pointer;\n}\n\n.ace_folding-enabled .ace_fold-widget {\n display: inline-block; \n}\n\n.ace_fold-widget.ace_end {\n background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==");\n}\n\n.ace_fold-widget.ace_closed {\n background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==");\n}\n\n.ace_fold-widget:hover {\n border: 1px solid rgba(0, 0, 0, 0.3);\n background-color: rgba(255, 255, 255, 0.2);\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);\n}\n\n.ace_fold-widget:active {\n border: 1px solid rgba(0, 0, 0, 0.4);\n background-color: rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);\n}\n/**\n * Dark version for fold widgets\n */\n.ace_dark .ace_fold-widget {\n background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC");\n}\n.ace_dark .ace_fold-widget.ace_end {\n background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==");\n}\n.ace_dark .ace_fold-widget.ace_closed {\n background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==");\n}\n.ace_dark .ace_fold-widget:hover {\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\n background-color: rgba(255, 255, 255, 0.1);\n}\n.ace_dark .ace_fold-widget:active {\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\n}\n\n.ace_inline_button {\n border: 1px solid lightgray;\n display: inline-block;\n margin: -1px 8px;\n padding: 0 5px;\n pointer-events: auto;\n cursor: pointer;\n}\n.ace_inline_button:hover {\n border-color: gray;\n background: rgba(200,200,200,0.2);\n display: inline-block;\n pointer-events: auto;\n}\n\n.ace_fold-widget.ace_invalid {\n background-color: #FFB4B4;\n border-color: #DE5555;\n}\n\n.ace_fade-fold-widgets .ace_fold-widget {\n transition: opacity 0.4s ease 0.05s;\n opacity: 0;\n}\n\n.ace_fade-fold-widgets:hover .ace_fold-widget {\n transition: opacity 0.05s ease 0.05s;\n opacity:1;\n}\n\n.ace_underline {\n text-decoration: underline;\n}\n\n.ace_bold {\n font-weight: bold;\n}\n\n.ace_nobold .ace_bold {\n font-weight: normal;\n}\n\n.ace_italic {\n font-style: italic;\n}\n\n\n.ace_error-marker {\n background-color: rgba(255, 0, 0,0.2);\n position: absolute;\n z-index: 9;\n}\n\n.ace_highlight-marker {\n background-color: rgba(255, 255, 0,0.2);\n position: absolute;\n z-index: 8;\n}\n\n.ace_mobile-menu {\n position: absolute;\n line-height: 1.5;\n border-radius: 4px;\n -ms-user-select: none;\n -moz-user-select: none;\n -webkit-user-select: none;\n user-select: none;\n background: white;\n box-shadow: 1px 3px 2px grey;\n border: 1px solid #dcdcdc;\n color: black;\n}\n.ace_dark > .ace_mobile-menu {\n background: #333;\n color: #ccc;\n box-shadow: 1px 3px 2px grey;\n border: 1px solid #444;\n\n}\n.ace_mobile-button {\n padding: 2px;\n cursor: pointer;\n overflow: hidden;\n}\n.ace_mobile-button:hover {\n background-color: #eee;\n opacity:1;\n}\n.ace_mobile-button:active {\n background-color: #ddd;\n}\n\n.ace_placeholder {\n font-family: arial;\n transform: scale(0.9);\n transform-origin: left;\n white-space: pre;\n opacity: 0.7;\n margin: 0 10px;\n}\n\n.ace_ghost_text {\n opacity: 0.5;\n font-style: italic;\n}'})),ace.define("ace/layer/decorators",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event_emitter"],(function(t,e,n){"use strict";var i=t("../lib/dom"),r=t("../lib/oop"),o=t("../lib/event_emitter").EventEmitter,s=function(t,e){this.canvas=i.createElement("canvas"),this.renderer=e,this.pixelRatio=1,this.maxHeight=e.layerConfig.maxHeight,this.lineHeight=e.layerConfig.lineHeight,this.canvasHeight=t.parent.scrollHeight,this.heightRatio=this.canvasHeight/this.maxHeight,this.canvasWidth=t.width,this.minDecorationHeight=2*this.pixelRatio|0,this.halfMinDecorationHeight=this.minDecorationHeight/2|0,this.canvas.width=this.canvasWidth,this.canvas.height=this.canvasHeight,this.canvas.style.top="0px",this.canvas.style.right="0px",this.canvas.style.zIndex="7px",this.canvas.style.position="absolute",this.colors={},this.colors.dark={error:"rgba(255, 18, 18, 1)",warning:"rgba(18, 136, 18, 1)",info:"rgba(18, 18, 136, 1)"},this.colors.light={error:"rgb(255,51,51)",warning:"rgb(32,133,72)",info:"rgb(35,68,138)"},t.element.appendChild(this.canvas)};(function(){r.implement(this,o),this.$updateDecorators=function(t){var e=!0===this.renderer.theme.isDark?this.colors.dark:this.colors.light;t&&(this.maxHeight=t.maxHeight,this.lineHeight=t.lineHeight,this.canvasHeight=t.height,(t.lastRow+1)*this.lineHeighte.priority?1:0}));for(var o=this.renderer.session.$foldData,s=0;sthis.canvasHeight&&(d=this.canvasHeight-this.halfMinDecorationHeight),u=Math.round(d-this.halfMinDecorationHeight),h=Math.round(d+this.halfMinDecorationHeight)}n.fillStyle=e[i[s].type]||null,n.fillRect(0,c,this.canvasWidth,h-u)}}var f=this.renderer.session.selection.getCursor();if(f){l=this.compensateFoldRows(f.row,o),c=Math.round((f.row-l)*this.lineHeight*this.heightRatio);n.fillStyle="rgba(0, 0, 0, 0.5)",n.fillRect(0,c,this.canvasWidth,2)}},this.compensateFoldRows=function(t,e){var n=0;if(e&&e.length>0)for(var i=0;ie[i].start.row&&t=e[i].end.row&&(n+=e[i].end.row-e[i].start.row);return n}}).call(s.prototype),e.Decorator=s})),ace.define("ace/virtual_renderer",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/config","ace/layer/gutter","ace/layer/marker","ace/layer/text","ace/layer/cursor","ace/scrollbar","ace/scrollbar","ace/scrollbar_custom","ace/scrollbar_custom","ace/renderloop","ace/layer/font_metrics","ace/lib/event_emitter","ace/css/editor.css","ace/layer/decorators","ace/lib/useragent"],(function(t,e,n){"use strict";var i=t("./lib/oop"),r=t("./lib/dom"),o=t("./config"),s=t("./layer/gutter").Gutter,a=t("./layer/marker").Marker,l=t("./layer/text").Text,c=t("./layer/cursor").Cursor,u=t("./scrollbar").HScrollBar,h=t("./scrollbar").VScrollBar,d=t("./scrollbar_custom").HScrollBar,f=t("./scrollbar_custom").VScrollBar,p=t("./renderloop").RenderLoop,g=t("./layer/font_metrics").FontMetrics,m=t("./lib/event_emitter").EventEmitter,v=t("./css/editor.css"),b=t("./layer/decorators").Decorator,y=t("./lib/useragent"),w=y.isIE;r.importCssString(v,"ace_editor.css",!1);var x=function(t,e){var n=this;this.container=t||r.createElement("div"),r.addCssClass(this.container,"ace_editor"),r.HI_DPI&&r.addCssClass(this.container,"ace_hidpi"),this.setTheme(e),null==o.get("useStrictCSP")&&o.set("useStrictCSP",!1),this.$gutter=r.createElement("div"),this.$gutter.className="ace_gutter",this.container.appendChild(this.$gutter),this.$gutter.setAttribute("aria-hidden",!0),this.scroller=r.createElement("div"),this.scroller.className="ace_scroller",this.container.appendChild(this.scroller),this.content=r.createElement("div"),this.content.className="ace_content",this.scroller.appendChild(this.content),this.$gutterLayer=new s(this.$gutter),this.$gutterLayer.on("changeGutterWidth",this.onGutterResize.bind(this)),this.$markerBack=new a(this.content);var i=this.$textLayer=new l(this.content);this.canvas=i.element,this.$markerFront=new a(this.content),this.$cursorLayer=new c(this.content),this.$horizScroll=!1,this.$vScroll=!1,this.scrollBar=this.scrollBarV=new h(this.container,this),this.scrollBarH=new u(this.container,this),this.scrollBarV.on("scroll",(function(t){n.$scrollAnimation||n.session.setScrollTop(t.data-n.scrollMargin.top)})),this.scrollBarH.on("scroll",(function(t){n.$scrollAnimation||n.session.setScrollLeft(t.data-n.scrollMargin.left)})),this.scrollTop=0,this.scrollLeft=0,this.cursorPos={row:0,column:0},this.$fontMetrics=new g(this.container),this.$textLayer.$setFontMetrics(this.$fontMetrics),this.$textLayer.on("changeCharacterSize",(function(t){n.updateCharacterSize(),n.onResize(!0,n.gutterWidth,n.$size.width,n.$size.height),n._signal("changeCharacterSize",t)})),this.$size={width:0,height:0,scrollerHeight:0,scrollerWidth:0,$dirty:!0},this.layerConfig={width:1,padding:0,firstRow:0,firstRowScreen:0,lastRow:0,lineHeight:0,characterWidth:0,minHeight:1,maxHeight:1,offset:0,height:1,gutterOffset:1},this.scrollMargin={left:0,right:0,top:0,bottom:0,v:0,h:0},this.margin={left:0,right:0,top:0,bottom:0,v:0,h:0},this.$keepTextAreaAtCursor=!y.isIOS,this.$loop=new p(this.$renderChanges.bind(this),this.container.ownerDocument.defaultView),this.$loop.schedule(this.CHANGE_FULL),this.updateCharacterSize(),this.setPadding(4),o.resetOptions(this),o._signal("renderer",this)};(function(){this.CHANGE_CURSOR=1,this.CHANGE_MARKER=2,this.CHANGE_GUTTER=4,this.CHANGE_SCROLL=8,this.CHANGE_LINES=16,this.CHANGE_TEXT=32,this.CHANGE_SIZE=64,this.CHANGE_MARKER_BACK=128,this.CHANGE_MARKER_FRONT=256,this.CHANGE_FULL=512,this.CHANGE_H_SCROLL=1024,i.implement(this,m),this.updateCharacterSize=function(){this.$textLayer.allowBoldFonts!=this.$allowBoldFonts&&(this.$allowBoldFonts=this.$textLayer.allowBoldFonts,this.setStyle("ace_nobold",!this.$allowBoldFonts)),this.layerConfig.characterWidth=this.characterWidth=this.$textLayer.getCharacterWidth(),this.layerConfig.lineHeight=this.lineHeight=this.$textLayer.getLineHeight(),this.$updatePrintMargin(),r.setStyle(this.scroller.style,"line-height",this.lineHeight+"px")},this.setSession=function(t){this.session&&this.session.doc.off("changeNewLineMode",this.onChangeNewLineMode),this.session=t,t&&this.scrollMargin.top&&t.getScrollTop()<=0&&t.setScrollTop(-this.scrollMargin.top),this.$cursorLayer.setSession(t),this.$markerBack.setSession(t),this.$markerFront.setSession(t),this.$gutterLayer.setSession(t),this.$textLayer.setSession(t),t&&(this.$loop.schedule(this.CHANGE_FULL),this.session.$setFontMetrics(this.$fontMetrics),this.scrollBarH.scrollLeft=this.scrollBarV.scrollTop=null,this.onChangeNewLineMode=this.onChangeNewLineMode.bind(this),this.onChangeNewLineMode(),this.session.doc.on("changeNewLineMode",this.onChangeNewLineMode))},this.updateLines=function(t,e,n){if(void 0===e&&(e=1/0),this.$changedLines?(this.$changedLines.firstRow>t&&(this.$changedLines.firstRow=t),this.$changedLines.lastRowthis.layerConfig.lastRow||this.$loop.schedule(this.CHANGE_LINES)},this.onChangeNewLineMode=function(){this.$loop.schedule(this.CHANGE_TEXT),this.$textLayer.$updateEolChar(),this.session.$bidiHandler.setEolChar(this.$textLayer.EOL_CHAR)},this.onChangeTabSize=function(){this.$loop.schedule(this.CHANGE_TEXT|this.CHANGE_MARKER),this.$textLayer.onChangeTabSize()},this.updateText=function(){this.$loop.schedule(this.CHANGE_TEXT)},this.updateFull=function(t){t?this.$renderChanges(this.CHANGE_FULL,!0):this.$loop.schedule(this.CHANGE_FULL)},this.updateFontSize=function(){this.$textLayer.checkForSizeChanges()},this.$changes=0,this.$updateSizeAsync=function(){this.$loop.pending?this.$size.$dirty=!0:this.onResize()},this.onResize=function(t,e,n,i){if(!(this.resizing>2)){this.resizing>0?this.resizing++:this.resizing=t?1:0;var r=this.container;i||(i=r.clientHeight||r.scrollHeight),n||(n=r.clientWidth||r.scrollWidth);var o=this.$updateCachedSize(t,e,n,i);if(!this.$size.scrollerHeight||!n&&!i)return this.resizing=0;t&&(this.$gutterLayer.$padding=null),t?this.$renderChanges(o|this.$changes,!0):this.$loop.schedule(o|this.$changes),this.resizing&&(this.resizing=0),this.scrollBarH.scrollLeft=this.scrollBarV.scrollTop=null,this.$customScrollbar&&this.$updateCustomScrollbar(!0)}},this.$updateCachedSize=function(t,e,n,i){i-=this.$extraHeight||0;var o=0,s=this.$size,a={width:s.width,height:s.height,scrollerHeight:s.scrollerHeight,scrollerWidth:s.scrollerWidth};if(i&&(t||s.height!=i)&&(s.height=i,o|=this.CHANGE_SIZE,s.scrollerHeight=s.height,this.$horizScroll&&(s.scrollerHeight-=this.scrollBarH.getHeight()),this.scrollBarV.setHeight(s.scrollerHeight),this.scrollBarV.element.style.bottom=this.scrollBarH.getHeight()+"px",o|=this.CHANGE_SCROLL),n&&(t||s.width!=n)){o|=this.CHANGE_SIZE,s.width=n,null==e&&(e=this.$showGutter?this.$gutter.offsetWidth:0),this.gutterWidth=e,r.setStyle(this.scrollBarH.element.style,"left",e+"px"),r.setStyle(this.scroller.style,"left",e+this.margin.left+"px"),s.scrollerWidth=Math.max(0,n-e-this.scrollBarV.getWidth()-this.margin.h),r.setStyle(this.$gutter.style,"left",this.margin.left+"px");var l=this.scrollBarV.getWidth()+"px";r.setStyle(this.scrollBarH.element.style,"right",l),r.setStyle(this.scroller.style,"right",l),r.setStyle(this.scroller.style,"bottom",this.scrollBarH.getHeight()),this.scrollBarH.setWidth(s.scrollerWidth),(this.session&&this.session.getUseWrapMode()&&this.adjustWrapLimit()||t)&&(o|=this.CHANGE_FULL)}return s.$dirty=!n||!i,o&&this._signal("resize",a),o},this.onGutterResize=function(t){var e=this.$showGutter?t:0;e!=this.gutterWidth&&(this.$changes|=this.$updateCachedSize(!0,e,this.$size.width,this.$size.height)),this.session.getUseWrapMode()&&this.adjustWrapLimit()||this.$size.$dirty?this.$loop.schedule(this.CHANGE_FULL):this.$computeLayerConfig()},this.adjustWrapLimit=function(){var t=this.$size.scrollerWidth-2*this.$padding,e=Math.floor(t/this.characterWidth);return this.session.adjustWrapLimit(e,this.$showPrintMargin&&this.$printMarginColumn)},this.setAnimatedScroll=function(t){this.setOption("animatedScroll",t)},this.getAnimatedScroll=function(){return this.$animatedScroll},this.setShowInvisibles=function(t){this.setOption("showInvisibles",t),this.session.$bidiHandler.setShowInvisibles(t)},this.getShowInvisibles=function(){return this.getOption("showInvisibles")},this.getDisplayIndentGuides=function(){return this.getOption("displayIndentGuides")},this.setDisplayIndentGuides=function(t){this.setOption("displayIndentGuides",t)},this.getHighlightIndentGuides=function(){return this.getOption("highlightIndentGuides")},this.setHighlightIndentGuides=function(t){this.setOption("highlightIndentGuides",t)},this.setShowPrintMargin=function(t){this.setOption("showPrintMargin",t)},this.getShowPrintMargin=function(){return this.getOption("showPrintMargin")},this.setPrintMarginColumn=function(t){this.setOption("printMarginColumn",t)},this.getPrintMarginColumn=function(){return this.getOption("printMarginColumn")},this.getShowGutter=function(){return this.getOption("showGutter")},this.setShowGutter=function(t){return this.setOption("showGutter",t)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.setFadeFoldWidgets=function(t){this.setOption("fadeFoldWidgets",t)},this.setHighlightGutterLine=function(t){this.setOption("highlightGutterLine",t)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.$updatePrintMargin=function(){if(this.$showPrintMargin||this.$printMarginEl){if(!this.$printMarginEl){var t=r.createElement("div");t.className="ace_layer ace_print-margin-layer",this.$printMarginEl=r.createElement("div"),this.$printMarginEl.className="ace_print-margin",t.appendChild(this.$printMarginEl),this.content.insertBefore(t,this.content.firstChild)}var e=this.$printMarginEl.style;e.left=Math.round(this.characterWidth*this.$printMarginColumn+this.$padding)+"px",e.visibility=this.$showPrintMargin?"visible":"hidden",this.session&&-1==this.session.$wrap&&this.adjustWrapLimit()}},this.getContainerElement=function(){return this.container},this.getMouseEventTarget=function(){return this.scroller},this.getTextAreaContainer=function(){return this.container},this.$moveTextAreaToCursor=function(){if(!this.$isMousePressed){var t=this.textarea.style,e=this.$composition;if(this.$keepTextAreaAtCursor||e){var n=this.$cursorLayer.$pixelPos;if(n){e&&e.markerRange&&(n=this.$cursorLayer.getPixelPosition(e.markerRange.start,!0));var i=this.layerConfig,o=n.top,s=n.left;o-=i.offset;var a=e&&e.useTextareaForIME?this.lineHeight:w?0:1;if(o<0||o>i.height-a)r.translate(this.textarea,0,0);else{var l=1,c=this.$size.height-a;if(e)if(e.useTextareaForIME){var u=this.textarea.value;l=this.characterWidth*this.session.$getStringScreenWidth(u)[0]}else o+=this.lineHeight+2;else o+=this.lineHeight;(s-=this.scrollLeft)>this.$size.scrollerWidth-l&&(s=this.$size.scrollerWidth-l),s+=this.gutterWidth+this.margin.left,r.setStyle(t,"height",a+"px"),r.setStyle(t,"width",l+"px"),r.translate(this.textarea,Math.min(s,this.$size.scrollerWidth-l),Math.min(o,c))}}}else r.translate(this.textarea,-100,0)}},this.getFirstVisibleRow=function(){return this.layerConfig.firstRow},this.getFirstFullyVisibleRow=function(){return this.layerConfig.firstRow+(0===this.layerConfig.offset?0:1)},this.getLastFullyVisibleRow=function(){var t=this.layerConfig,e=t.lastRow;return this.session.documentToScreenRow(e,0)*t.lineHeight-this.session.getScrollTop()>t.height-t.lineHeight?e-1:e},this.getLastVisibleRow=function(){return this.layerConfig.lastRow},this.$padding=null,this.setPadding=function(t){this.$padding=t,this.$textLayer.setPadding(t),this.$cursorLayer.setPadding(t),this.$markerFront.setPadding(t),this.$markerBack.setPadding(t),this.$loop.schedule(this.CHANGE_FULL),this.$updatePrintMargin()},this.setScrollMargin=function(t,e,n,i){var r=this.scrollMargin;r.top=0|t,r.bottom=0|e,r.right=0|i,r.left=0|n,r.v=r.top+r.bottom,r.h=r.left+r.right,r.top&&this.scrollTop<=0&&this.session&&this.session.setScrollTop(-r.top),this.updateFull()},this.setMargin=function(t,e,n,i){var r=this.margin;r.top=0|t,r.bottom=0|e,r.right=0|i,r.left=0|n,r.v=r.top+r.bottom,r.h=r.left+r.right,this.$updateCachedSize(!0,this.gutterWidth,this.$size.width,this.$size.height),this.updateFull()},this.getHScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},this.setHScrollBarAlwaysVisible=function(t){this.setOption("hScrollBarAlwaysVisible",t)},this.getVScrollBarAlwaysVisible=function(){return this.$vScrollBarAlwaysVisible},this.setVScrollBarAlwaysVisible=function(t){this.setOption("vScrollBarAlwaysVisible",t)},this.$updateScrollBarV=function(){var t=this.layerConfig.maxHeight,e=this.$size.scrollerHeight;!this.$maxLines&&this.$scrollPastEnd&&(t-=(e-this.lineHeight)*this.$scrollPastEnd,this.scrollTop>t-e&&(t=this.scrollTop+e,this.scrollBarV.scrollTop=null)),this.scrollBarV.setScrollHeight(t+this.scrollMargin.v),this.scrollBarV.setScrollTop(this.scrollTop+this.scrollMargin.top)},this.$updateScrollBarH=function(){this.scrollBarH.setScrollWidth(this.layerConfig.width+2*this.$padding+this.scrollMargin.h),this.scrollBarH.setScrollLeft(this.scrollLeft+this.scrollMargin.left)},this.$frozen=!1,this.freeze=function(){this.$frozen=!0},this.unfreeze=function(){this.$frozen=!1},this.$renderChanges=function(t,e){if(this.$changes&&(t|=this.$changes,this.$changes=0),this.session&&this.container.offsetWidth&&!this.$frozen&&(t||e)){if(this.$size.$dirty)return this.$changes|=t,this.onResize(!0);this.lineHeight||this.$textLayer.checkForSizeChanges(),this._signal("beforeRender",t),this.session&&this.session.$bidiHandler&&this.session.$bidiHandler.updateCharacterWidths(this.$fontMetrics);var n=this.layerConfig;if(t&this.CHANGE_FULL||t&this.CHANGE_SIZE||t&this.CHANGE_TEXT||t&this.CHANGE_LINES||t&this.CHANGE_SCROLL||t&this.CHANGE_H_SCROLL){if(t|=this.$computeLayerConfig()|this.$loop.clear(),n.firstRow!=this.layerConfig.firstRow&&n.firstRowScreen==this.layerConfig.firstRowScreen){var i=this.scrollTop+(n.firstRow-this.layerConfig.firstRow)*this.lineHeight;i>0&&(this.scrollTop=i,t|=this.CHANGE_SCROLL,t|=this.$computeLayerConfig()|this.$loop.clear())}n=this.layerConfig,this.$updateScrollBarV(),t&this.CHANGE_H_SCROLL&&this.$updateScrollBarH(),r.translate(this.content,-this.scrollLeft,-n.offset);var o=n.width+2*this.$padding+"px",s=n.minHeight+"px";r.setStyle(this.content.style,"width",o),r.setStyle(this.content.style,"height",s)}if(t&this.CHANGE_H_SCROLL&&(r.translate(this.content,-this.scrollLeft,-n.offset),this.scroller.className=this.scrollLeft<=0?"ace_scroller":"ace_scroller ace_scroll-left"),t&this.CHANGE_FULL)return this.$changedLines=null,this.$textLayer.update(n),this.$showGutter&&this.$gutterLayer.update(n),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(n),this.$markerBack.update(n),this.$markerFront.update(n),this.$cursorLayer.update(n),this.$moveTextAreaToCursor(),void this._signal("afterRender",t);if(t&this.CHANGE_SCROLL)return this.$changedLines=null,t&this.CHANGE_TEXT||t&this.CHANGE_LINES?this.$textLayer.update(n):this.$textLayer.scrollLines(n),this.$showGutter&&(t&this.CHANGE_GUTTER||t&this.CHANGE_LINES?this.$gutterLayer.update(n):this.$gutterLayer.scrollLines(n)),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(n),this.$markerBack.update(n),this.$markerFront.update(n),this.$cursorLayer.update(n),this.$moveTextAreaToCursor(),void this._signal("afterRender",t);t&this.CHANGE_TEXT?(this.$changedLines=null,this.$textLayer.update(n),this.$showGutter&&this.$gutterLayer.update(n),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(n)):t&this.CHANGE_LINES?((this.$updateLines()||t&this.CHANGE_GUTTER&&this.$showGutter)&&this.$gutterLayer.update(n),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(n)):t&this.CHANGE_TEXT||t&this.CHANGE_GUTTER?(this.$showGutter&&this.$gutterLayer.update(n),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(n)):t&this.CHANGE_CURSOR&&(this.$highlightGutterLine&&this.$gutterLayer.updateLineHighlight(n),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(n)),t&this.CHANGE_CURSOR&&(this.$cursorLayer.update(n),this.$moveTextAreaToCursor()),t&(this.CHANGE_MARKER|this.CHANGE_MARKER_FRONT)&&this.$markerFront.update(n),t&(this.CHANGE_MARKER|this.CHANGE_MARKER_BACK)&&this.$markerBack.update(n),this._signal("afterRender",t)}else this.$changes|=t},this.$autosize=function(){var t=this.session.getScreenLength()*this.lineHeight,e=this.$maxLines*this.lineHeight,n=Math.min(e,Math.max((this.$minLines||1)*this.lineHeight,t))+this.scrollMargin.v+(this.$extraHeight||0);this.$horizScroll&&(n+=this.scrollBarH.getHeight()),this.$maxPixelHeight&&n>this.$maxPixelHeight&&(n=this.$maxPixelHeight);var i=!(n<=2*this.lineHeight)&&t>e;if(n!=this.desiredHeight||this.$size.height!=this.desiredHeight||i!=this.$vScroll){i!=this.$vScroll&&(this.$vScroll=i,this.scrollBarV.setVisible(i));var r=this.container.clientWidth;this.container.style.height=n+"px",this.$updateCachedSize(!0,this.$gutterWidth,r,n),this.desiredHeight=n,this._signal("autosize")}},this.$computeLayerConfig=function(){var t=this.session,e=this.$size,n=e.height<=2*this.lineHeight,i=this.session.getScreenLength()*this.lineHeight,r=this.$getLongestLine(),o=!n&&(this.$hScrollBarAlwaysVisible||e.scrollerWidth-r-2*this.$padding<0),s=this.$horizScroll!==o;s&&(this.$horizScroll=o,this.scrollBarH.setVisible(o));var a=this.$vScroll;this.$maxLines&&this.lineHeight>1&&this.$autosize();var l=e.scrollerHeight+this.lineHeight,c=!this.$maxLines&&this.$scrollPastEnd?(e.scrollerHeight-this.lineHeight)*this.$scrollPastEnd:0;i+=c;var u=this.scrollMargin;this.session.setScrollTop(Math.max(-u.top,Math.min(this.scrollTop,i-e.scrollerHeight+u.bottom))),this.session.setScrollLeft(Math.max(-u.left,Math.min(this.scrollLeft,r+2*this.$padding-e.scrollerWidth+u.right)));var h=!n&&(this.$vScrollBarAlwaysVisible||e.scrollerHeight-i+c<0||this.scrollTop>u.top),d=a!==h;d&&(this.$vScroll=h,this.scrollBarV.setVisible(h));var f,p,g=this.scrollTop%this.lineHeight,m=Math.ceil(l/this.lineHeight)-1,v=Math.max(0,Math.round((this.scrollTop-g)/this.lineHeight)),b=v+m,y=this.lineHeight;v=t.screenToDocumentRow(v,0);var w=t.getFoldLine(v);w&&(v=w.start.row),f=t.documentToScreenRow(v,0),p=t.getRowLength(v)*y,b=Math.min(t.screenToDocumentRow(b,0),t.getLength()-1),l=e.scrollerHeight+t.getRowLength(b)*y+p,g=this.scrollTop-f*y;var x=0;return(this.layerConfig.width!=r||s)&&(x=this.CHANGE_H_SCROLL),(s||d)&&(x|=this.$updateCachedSize(!0,this.gutterWidth,e.width,e.height),this._signal("scrollbarVisibilityChanged"),d&&(r=this.$getLongestLine())),this.layerConfig={width:r,padding:this.$padding,firstRow:v,firstRowScreen:f,lastRow:b,lineHeight:y,characterWidth:this.characterWidth,minHeight:l,maxHeight:i,offset:g,gutterOffset:y?Math.max(0,Math.ceil((g+e.height-e.scrollerHeight)/y)):0,height:this.$size.scrollerHeight},this.session.$bidiHandler&&this.session.$bidiHandler.setContentWidth(r-this.$padding),x},this.$updateLines=function(){if(this.$changedLines){var t=this.$changedLines.firstRow,e=this.$changedLines.lastRow;this.$changedLines=null;var n=this.layerConfig;if(!(t>n.lastRow+1||ethis.$textLayer.MAX_LINE_LENGTH&&(t=this.$textLayer.MAX_LINE_LENGTH+30),Math.max(this.$size.scrollerWidth-2*this.$padding,Math.round(t*this.characterWidth))},this.updateFrontMarkers=function(){this.$markerFront.setMarkers(this.session.getMarkers(!0)),this.$loop.schedule(this.CHANGE_MARKER_FRONT)},this.updateBackMarkers=function(){this.$markerBack.setMarkers(this.session.getMarkers()),this.$loop.schedule(this.CHANGE_MARKER_BACK)},this.addGutterDecoration=function(t,e){this.$gutterLayer.addGutterDecoration(t,e)},this.removeGutterDecoration=function(t,e){this.$gutterLayer.removeGutterDecoration(t,e)},this.updateBreakpoints=function(t){this.$loop.schedule(this.CHANGE_GUTTER)},this.setAnnotations=function(t){this.$gutterLayer.setAnnotations(t),this.$loop.schedule(this.CHANGE_GUTTER)},this.updateCursor=function(){this.$loop.schedule(this.CHANGE_CURSOR)},this.hideCursor=function(){this.$cursorLayer.hideCursor()},this.showCursor=function(){this.$cursorLayer.showCursor()},this.scrollSelectionIntoView=function(t,e,n){this.scrollCursorIntoView(t,n),this.scrollCursorIntoView(e,n)},this.scrollCursorIntoView=function(t,e,n){if(0!==this.$size.scrollerHeight){var i=this.$cursorLayer.getPixelPosition(t),r=i.left,o=i.top,s=n&&n.top||0,a=n&&n.bottom||0;this.$scrollAnimation&&(this.$stopAnimation=!0);var l=this.$scrollAnimation?this.session.getScrollTop():this.scrollTop;l+s>o?(e&&l+s>o+this.lineHeight&&(o-=e*this.$size.scrollerHeight),0===o&&(o=-this.scrollMargin.top),this.session.setScrollTop(o)):l+this.$size.scrollerHeight-a=1-this.scrollMargin.top||(e>0&&this.session.getScrollTop()+this.$size.scrollerHeight-this.layerConfig.maxHeight<-1+this.scrollMargin.bottom||(t<0&&this.session.getScrollLeft()>=1-this.scrollMargin.left||(t>0&&this.session.getScrollLeft()+this.$size.scrollerWidth-this.layerConfig.width<-1+this.scrollMargin.right||void 0)))},this.pixelToScreenCoordinates=function(t,e){var n;if(this.$hasCssTransforms){n={top:0,left:0};var i=this.$fontMetrics.transformCoordinates([t,e]);t=i[1]-this.gutterWidth-this.margin.left,e=i[0]}else n=this.scroller.getBoundingClientRect();var r=t+this.scrollLeft-n.left-this.$padding,o=r/this.characterWidth,s=Math.floor((e+this.scrollTop-n.top)/this.lineHeight),a=this.$blockCursor?Math.floor(o):Math.round(o);return{row:s,column:a,side:o-a>0?1:-1,offsetX:r}},this.screenToTextCoordinates=function(t,e){var n;if(this.$hasCssTransforms){n={top:0,left:0};var i=this.$fontMetrics.transformCoordinates([t,e]);t=i[1]-this.gutterWidth-this.margin.left,e=i[0]}else n=this.scroller.getBoundingClientRect();var r=t+this.scrollLeft-n.left-this.$padding,o=r/this.characterWidth,s=this.$blockCursor?Math.floor(o):Math.round(o),a=Math.floor((e+this.scrollTop-n.top)/this.lineHeight);return this.session.screenToDocumentPosition(a,Math.max(s,0),r)},this.textToScreenCoordinates=function(t,e){var n=this.scroller.getBoundingClientRect(),i=this.session.documentToScreenPosition(t,e),r=this.$padding+(this.session.$bidiHandler.isBidiRow(i.row,t)?this.session.$bidiHandler.getPosLeft(i.column):Math.round(i.column*this.characterWidth)),o=i.row*this.lineHeight;return{pageX:n.left+r-this.scrollLeft,pageY:n.top+o-this.scrollTop}},this.visualizeFocus=function(){r.addCssClass(this.container,"ace_focus")},this.visualizeBlur=function(){r.removeCssClass(this.container,"ace_focus")},this.showComposition=function(t){this.$composition=t,t.cssText||(t.cssText=this.textarea.style.cssText),null==t.useTextareaForIME&&(t.useTextareaForIME=this.$useTextareaForIME),this.$useTextareaForIME?(r.addCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText="",this.$moveTextAreaToCursor(),this.$cursorLayer.element.style.display="none"):t.markerId=this.session.addMarker(t.markerRange,"ace_composition_marker","text")},this.setCompositionText=function(t){var e=this.session.selection.cursor;this.addToken(t,"composition_placeholder",e.row,e.column),this.$moveTextAreaToCursor()},this.hideComposition=function(){if(this.$composition){this.$composition.markerId&&this.session.removeMarker(this.$composition.markerId),r.removeCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText=this.$composition.cssText;var t=this.session.selection.cursor;this.removeExtraToken(t.row,t.column),this.$composition=null,this.$cursorLayer.element.style.display=""}},this.setGhostText=function(t,e){var n=this.session.selection.cursor,i=e||{row:n.row,column:n.column};this.removeGhostText();var r=t.split("\n");this.addToken(r[0],"ghost_text",i.row,i.column),this.$ghostText={text:t,position:{row:i.row,column:i.column}},r.length>1&&(this.$ghostTextWidget={text:r.slice(1).join("\n"),row:i.row,column:i.column,className:"ace_ghost_text"},this.session.widgetManager.addLineWidget(this.$ghostTextWidget))},this.removeGhostText=function(){if(this.$ghostText){var t=this.$ghostText.position;this.removeExtraToken(t.row,t.column),this.$ghostTextWidget&&(this.session.widgetManager.removeLineWidget(this.$ghostTextWidget),this.$ghostTextWidget=null),this.$ghostText=null}},this.addToken=function(t,e,n,i){var r=this.session;r.bgTokenizer.lines[n]=null;var o={type:e,value:t},s=r.getTokens(n);if(null==i)s.push(o);else for(var a=0,l=0;l50&&t.length>this.$doc.getLength()>>1?this.call("setValue",[this.$doc.getValue()]):this.emit("change",{data:t}))}}).call(l.prototype);e.UIWorkerClient=function(t,e,n){var i=null,r=!1,a=Object.create(o),c=[],u=new l({messageBuffer:c,terminate:function(){},postMessage:function(t){c.push(t),i&&(r?setTimeout(h):h())}});u.setEmitSync=function(t){r=t};var h=function(){var t=c.shift();t.command?i[t.command].apply(i,t.args):t.event&&a._signal(t.event,t.data)};return a.postMessage=function(t){u.onMessage({data:t})},a.callback=function(t,e){this.postMessage({type:"call",id:e,data:t})},a.emit=function(t,e){this.postMessage({type:"event",name:t,data:e})},s.loadModule(["worker",e],(function(t){for(i=new t[n](a);c.length;)h()})),u},e.WorkerClient=l,e.createWorker=a})),ace.define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"],(function(t,e,n){"use strict";var i=t("./range").Range,r=t("./lib/event_emitter").EventEmitter,o=t("./lib/oop"),s=function(t,e,n,i,r,o){var s=this;this.length=e,this.session=t,this.doc=t.getDocument(),this.mainClass=r,this.othersClass=o,this.$onUpdate=this.onUpdate.bind(this),this.doc.on("change",this.$onUpdate,!0),this.$others=i,this.$onCursorChange=function(){setTimeout((function(){s.onCursorChange()}))},this.$pos=n;var a=t.getUndoManager().$undoStack||t.getUndoManager().$undostack||{length:-1};this.$undoStackDepth=a.length,this.setup(),t.selection.on("changeCursor",this.$onCursorChange)};(function(){o.implement(this,r),this.setup=function(){var t=this,e=this.doc,n=this.session;this.selectionBefore=n.selection.toJSON(),n.selection.inMultiSelectMode&&n.selection.toSingleRange(),this.pos=e.createAnchor(this.$pos.row,this.$pos.column);var r=this.pos;r.$insertRight=!0,r.detach(),r.markerId=n.addMarker(new i(r.row,r.column,r.row,r.column+this.length),this.mainClass,null,!1),this.others=[],this.$others.forEach((function(n){var i=e.createAnchor(n.row,n.column);i.$insertRight=!0,i.detach(),t.others.push(i)})),n.setUndoSelect(!1)},this.showOtherMarkers=function(){if(!this.othersActive){var t=this.session,e=this;this.othersActive=!0,this.others.forEach((function(n){n.markerId=t.addMarker(new i(n.row,n.column,n.row,n.column+e.length),e.othersClass,null,!1)}))}},this.hideOtherMarkers=function(){if(this.othersActive){this.othersActive=!1;for(var t=0;t=this.pos.column&&e.start.column<=this.pos.column+this.length+1,o=e.start.column-this.pos.column;if(this.updateAnchors(t),r&&(this.length+=n),r&&!this.session.$fromUndo)if("insert"===t.action)for(var s=this.others.length-1;s>=0;s--){var a={row:(l=this.others[s]).row,column:l.column+o};this.doc.insertMergedLines(a,t.lines)}else if("remove"===t.action)for(s=this.others.length-1;s>=0;s--){var l;a={row:(l=this.others[s]).row,column:l.column+o};this.doc.remove(new i(a.row,a.column,a.row,a.column-n))}this.$updating=!1,this.updateMarkers()}},this.updateAnchors=function(t){this.pos.onChange(t);for(var e=this.others.length;e--;)this.others[e].onChange(t);this.updateMarkers()},this.updateMarkers=function(){if(!this.$updating){var t=this,e=this.session,n=function(n,r){e.removeMarker(n.markerId),n.markerId=e.addMarker(new i(n.row,n.column,n.row,n.column+t.length),r,null,!1)};n(this.pos,this.mainClass);for(var r=this.others.length;r--;)n(this.others[r],this.othersClass)}},this.onCursorChange=function(t){if(!this.$updating&&this.session){var e=this.session.selection.getCursor();e.row===this.pos.row&&e.column>=this.pos.column&&e.column<=this.pos.column+this.length?(this.showOtherMarkers(),this._emit("cursorEnter",t)):(this.hideOtherMarkers(),this._emit("cursorLeave",t))}},this.detach=function(){this.session.removeMarker(this.pos&&this.pos.markerId),this.hideOtherMarkers(),this.doc.off("change",this.$onUpdate),this.session.selection.off("changeCursor",this.$onCursorChange),this.session.setUndoSelect(!0),this.session=null},this.cancel=function(){if(-1!==this.$undoStackDepth){for(var t=this.session.getUndoManager(),e=(t.$undoStack||t.$undostack).length-this.$undoStackDepth,n=0;n1?t.multiSelect.joinSelections():t.multiSelect.splitIntoLines()},bindKey:{win:"Ctrl-Alt-L",mac:"Ctrl-Alt-L"},readOnly:!0},{name:"splitSelectionIntoLines",description:"Split into lines",exec:function(t){t.multiSelect.splitIntoLines()},readOnly:!0},{name:"alignCursors",description:"Align cursors",exec:function(t){t.alignCursors()},bindKey:{win:"Ctrl-Alt-A",mac:"Ctrl-Alt-A"},scrollIntoView:"cursor"},{name:"findAll",description:"Find all",exec:function(t){t.findAll()},bindKey:{win:"Ctrl-Alt-K",mac:"Ctrl-Alt-G"},scrollIntoView:"cursor",readOnly:!0}],e.multiSelectCommands=[{name:"singleSelection",description:"Single selection",bindKey:"esc",exec:function(t){t.exitMultiSelectMode()},scrollIntoView:"cursor",readOnly:!0,isAvailable:function(t){return t&&t.inMultiSelectMode}}];var i=t("../keyboard/hash_handler").HashHandler;e.keyboardHandler=new i(e.multiSelectCommands)})),ace.define("ace/multi_select",["require","exports","module","ace/range_list","ace/range","ace/selection","ace/mouse/multi_select_handler","ace/lib/event","ace/lib/lang","ace/commands/multi_select_commands","ace/search","ace/edit_session","ace/editor","ace/config"],(function(t,e,n){var i=t("./range_list").RangeList,r=t("./range").Range,o=t("./selection").Selection,s=t("./mouse/multi_select_handler").onMouseDown,a=t("./lib/event"),l=t("./lib/lang"),c=t("./commands/multi_select_commands");e.commands=c.defaultCommands.concat(c.multiSelectCommands);var u=new(0,t("./search").Search);var h=t("./edit_session").EditSession;(function(){this.getSelectionMarkers=function(){return this.$selectionMarkers}}).call(h.prototype),function(){this.ranges=null,this.rangeList=null,this.addRange=function(t,e){if(t){if(!this.inMultiSelectMode&&0===this.rangeCount){var n=this.toOrientedRange();if(this.rangeList.add(n),this.rangeList.add(t),2!=this.rangeList.ranges.length)return this.rangeList.removeAll(),e||this.fromOrientedRange(t);this.rangeList.removeAll(),this.rangeList.add(n),this.$onAddRange(n)}t.cursor||(t.cursor=t.end);var i=this.rangeList.add(t);return this.$onAddRange(t),i.length&&this.$onRemoveRange(i),this.rangeCount>1&&!this.inMultiSelectMode&&(this._signal("multiSelect"),this.inMultiSelectMode=!0,this.session.$undoSelect=!1,this.rangeList.attach(this.session)),e||this.fromOrientedRange(t)}},this.toSingleRange=function(t){t=t||this.ranges[0];var e=this.rangeList.removeAll();e.length&&this.$onRemoveRange(e),t&&this.fromOrientedRange(t)},this.substractPoint=function(t){var e=this.rangeList.substractPoint(t);if(e)return this.$onRemoveRange(e),e[0]},this.mergeOverlappingRanges=function(){var t=this.rangeList.merge();t.length&&this.$onRemoveRange(t)},this.$onAddRange=function(t){this.rangeCount=this.rangeList.ranges.length,this.ranges.unshift(t),this._signal("addRange",{range:t})},this.$onRemoveRange=function(t){if(this.rangeCount=this.rangeList.ranges.length,1==this.rangeCount&&this.inMultiSelectMode){var e=this.rangeList.ranges.pop();t.push(e),this.rangeCount=0}for(var n=t.length;n--;){var i=this.ranges.indexOf(t[n]);this.ranges.splice(i,1)}this._signal("removeRange",{ranges:t}),0===this.rangeCount&&this.inMultiSelectMode&&(this.inMultiSelectMode=!1,this._signal("singleSelect"),this.session.$undoSelect=!0,this.rangeList.detach(this.session)),(e=e||this.ranges[0])&&!e.isEqual(this.getRange())&&this.fromOrientedRange(e)},this.$initRangeList=function(){this.rangeList||(this.rangeList=new i,this.ranges=[],this.rangeCount=0)},this.getAllRanges=function(){return this.rangeCount?this.rangeList.ranges.concat():[this.getRange()]},this.splitIntoLines=function(){for(var t=this.ranges.length?this.ranges:[this.getRange()],e=[],n=0;n1){var t=this.rangeList.ranges,e=t[t.length-1],n=r.fromPoints(t[0].start,e.end);this.toSingleRange(),this.setSelectionRange(n,e.cursor==e.start)}else{var i=this.session.documentToScreenPosition(this.cursor),o=this.session.documentToScreenPosition(this.anchor);this.rectangularRangeBlock(i,o).forEach(this.addRange,this)}},this.rectangularRangeBlock=function(t,e,n){var i=[],o=t.column0;)b--;if(b>0)for(var y=0;i[y].isEmpty();)y++;for(var w=b;w>=y;w--)i[w].isEmpty()&&i.splice(w,1)}return i}}.call(o.prototype);var d=t("./editor").Editor;function f(t){t.$multiselectOnSessionChange||(t.$onAddRange=t.$onAddRange.bind(t),t.$onRemoveRange=t.$onRemoveRange.bind(t),t.$onMultiSelect=t.$onMultiSelect.bind(t),t.$onSingleSelect=t.$onSingleSelect.bind(t),t.$multiselectOnSessionChange=e.onSessionChange.bind(t),t.$checkMultiselectChange=t.$checkMultiselectChange.bind(t),t.$multiselectOnSessionChange(t),t.on("changeSession",t.$multiselectOnSessionChange),t.on("mousedown",s),t.commands.addCommands(c.defaultCommands),function(t){if(!t.textInput)return;var e=t.textInput.getElement(),n=!1;function i(e){n&&(t.renderer.setMouseCursor(""),n=!1)}a.addListener(e,"keydown",(function(e){var r=18==e.keyCode&&!(e.ctrlKey||e.shiftKey||e.metaKey);t.$blockSelectEnabled&&r?n||(t.renderer.setMouseCursor("crosshair"),n=!0):n&&i()}),t),a.addListener(e,"keyup",i,t),a.addListener(e,"blur",i,t)}(t))}(function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.addSelectionMarker=function(t){t.cursor||(t.cursor=t.end);var e=this.getSelectionStyle();return t.marker=this.session.addMarker(t,"ace_selection",e),this.session.$selectionMarkers.push(t),this.session.selectionMarkerCount=this.session.$selectionMarkers.length,t},this.removeSelectionMarker=function(t){if(t.marker){this.session.removeMarker(t.marker);var e=this.session.$selectionMarkers.indexOf(t);-1!=e&&this.session.$selectionMarkers.splice(e,1),this.session.selectionMarkerCount=this.session.$selectionMarkers.length}},this.removeSelectionMarkers=function(t){for(var e=this.session.$selectionMarkers,n=t.length;n--;){var i=t[n];if(i.marker){this.session.removeMarker(i.marker);var r=e.indexOf(i);-1!=r&&e.splice(r,1)}}this.session.selectionMarkerCount=e.length},this.$onAddRange=function(t){this.addSelectionMarker(t.range),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onRemoveRange=function(t){this.removeSelectionMarkers(t.ranges),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onMultiSelect=function(t){this.inMultiSelectMode||(this.inMultiSelectMode=!0,this.setStyle("ace_multiselect"),this.keyBinding.addKeyboardHandler(c.keyboardHandler),this.commands.setDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers())},this.$onSingleSelect=function(t){this.session.multiSelect.inVirtualMode||(this.inMultiSelectMode=!1,this.unsetStyle("ace_multiselect"),this.keyBinding.removeKeyboardHandler(c.keyboardHandler),this.commands.removeDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers(),this._emit("changeSelection"))},this.$onMultiSelectExec=function(t){var e=t.command,n=t.editor;if(n.multiSelect){if(e.multiSelectAction)"forEach"==e.multiSelectAction?i=n.forEachSelection(e,t.args):"forEachLine"==e.multiSelectAction?i=n.forEachSelection(e,t.args,!0):"single"==e.multiSelectAction?(n.exitMultiSelectMode(),i=e.exec(n,t.args||{})):i=e.multiSelectAction(n,t.args||{});else{var i=e.exec(n,t.args||{});n.multiSelect.addRange(n.multiSelect.toOrientedRange()),n.multiSelect.mergeOverlappingRanges()}return i}},this.forEachSelection=function(t,e,n){if(!this.inVirtualSelectionMode){var i,r=n&&n.keepOrder,s=1==n||n&&n.$byLines,a=this.session,l=this.selection,c=l.rangeList,u=(r?l:c).ranges;if(!u.length)return t.exec?t.exec(this,e||{}):t(this,e||{});var h=l._eventRegistry;l._eventRegistry={};var d=new o(a);this.inVirtualSelectionMode=!0;for(var f=u.length;f--;){if(s)for(;f>0&&u[f].start.row==u[f-1].end.row;)f--;d.fromOrientedRange(u[f]),d.index=f,this.selection=a.selection=d;var p=t.exec?t.exec(this,e||{}):t(this,e||{});i||void 0===p||(i=p),d.toOrientedRange(u[f])}d.detach(),this.selection=a.selection=l,this.inVirtualSelectionMode=!1,l._eventRegistry=h,l.mergeOverlappingRanges(),l.ranges[0]&&l.fromOrientedRange(l.ranges[0]);var g=this.renderer.$scrollAnimation;return this.onCursorChange(),this.onSelectionChange(),g&&g.from==g.to&&this.renderer.animateScrolling(g.from),i}},this.exitMultiSelectMode=function(){this.inMultiSelectMode&&!this.inVirtualSelectionMode&&this.multiSelect.toSingleRange()},this.getSelectedText=function(){var t="";if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){for(var e=this.multiSelect.rangeList.ranges,n=[],i=0;is&&(s=n.column),iu?t.insert(i,l.stringRepeat(" ",o-u)):t.remove(new r(i.row,i.column,i.row,i.column-o+u)),e.start.column=e.end.column=s,e.start.row=e.end.row=i.row,e.cursor=e.end})),e.fromOrientedRange(n[0]),this.renderer.updateCursor(),this.renderer.updateBackMarkers()}else{var u=this.selection.getRange(),h=u.start.row,d=u.end.row,f=h==d;if(f){var p,g=this.session.getLength();do{p=this.session.getLine(d)}while(/[=:]/.test(p)&&++d0);h<0&&(h=0),d>=g&&(d=g-1)}var m=this.session.removeFullLines(h,d);m=this.$reAlignText(m,f),this.session.insert({row:h,column:0},m.join("\n")+"\n"),f||(u.start.column=0,u.end.column=m[m.length-1].length),this.selection.setRange(u)}},this.$reAlignText=function(t,e){var n,i,r,o=!0,s=!0;return t.map((function(t){var e=t.match(/(\s*)(.*?)(\s*)([=:].*)/);return e?null==n?(n=e[1].length,i=e[2].length,r=e[3].length,e):(n+i+r!=e[1].length+e[2].length+e[3].length&&(s=!1),n!=e[1].length&&(o=!1),n>e[1].length&&(n=e[1].length),ie[3].length&&(r=e[3].length),e):[t]})).map(e?c:o?s?function(t){return t[2]?a(n+i-t[2].length)+t[2]+a(r)+t[4].replace(/^([=:])\s+/,"$1 "):t[0]}:c:function(t){return t[2]?a(n)+t[2]+a(r)+t[4].replace(/^([=:])\s+/,"$1 "):t[0]});function a(t){return l.stringRepeat(" ",t)}function c(t){return t[2]?a(n)+t[2]+a(i-t[2].length+r)+t[4].replace(/^([=:])\s+/,"$1 "):t[0]}}}).call(d.prototype),e.onSessionChange=function(t){var e=t.session;e&&!e.multiSelect&&(e.$selectionMarkers=[],e.selection.$initRangeList(),e.multiSelect=e.selection),this.multiSelect=e&&e.multiSelect;var n=t.oldSession;n&&(n.multiSelect.off("addRange",this.$onAddRange),n.multiSelect.off("removeRange",this.$onRemoveRange),n.multiSelect.off("multiSelect",this.$onMultiSelect),n.multiSelect.off("singleSelect",this.$onSingleSelect),n.multiSelect.lead.off("change",this.$checkMultiselectChange),n.multiSelect.anchor.off("change",this.$checkMultiselectChange)),e&&(e.multiSelect.on("addRange",this.$onAddRange),e.multiSelect.on("removeRange",this.$onRemoveRange),e.multiSelect.on("multiSelect",this.$onMultiSelect),e.multiSelect.on("singleSelect",this.$onSingleSelect),e.multiSelect.lead.on("change",this.$checkMultiselectChange),e.multiSelect.anchor.on("change",this.$checkMultiselectChange)),e&&this.inMultiSelectMode!=e.selection.inMultiSelectMode&&(e.selection.inMultiSelectMode?this.$onMultiSelect():this.$onSingleSelect())},e.MultiSelect=f,t("./config").defineOptions(d.prototype,"editor",{enableMultiselect:{set:function(t){f(this),t?(this.on("changeSession",this.$multiselectOnSessionChange),this.on("mousedown",s)):(this.off("changeSession",this.$multiselectOnSessionChange),this.off("mousedown",s))},value:!0},enableBlockSelect:{set:function(t){this.$blockSelectEnabled=t},value:!0}})})),ace.define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"],(function(t,e,n){"use strict";var i=t("../../range").Range,r=e.FoldMode=function(){};(function(){this.foldingStartMarker=null,this.foldingStopMarker=null,this.getFoldWidget=function(t,e,n){var i=t.getLine(n);return this.foldingStartMarker.test(i)?"start":"markbeginend"==e&&this.foldingStopMarker&&this.foldingStopMarker.test(i)?"end":""},this.getFoldWidgetRange=function(t,e,n){return null},this.indentationBlock=function(t,e,n){var r=/\S/,o=t.getLine(e),s=o.search(r);if(-1!=s){for(var a=n||o.length,l=t.getLength(),c=e,u=e;++ec){var f=t.getLine(u).length;return new i(c,a,u,f)}}},this.openingBracketBlock=function(t,e,n,r,o){var s={row:n,column:r+1},a=t.$findClosingBracket(e,s,o);if(a){var l=t.foldWidgets[a.row];return null==l&&(l=t.getFoldWidget(a.row)),"start"==l&&a.row>s.row&&(a.row--,a.column=t.getLine(a.row).length),i.fromPoints(s,a)}},this.closingBracketBlock=function(t,e,n,r,o){var s={row:n,column:r},a=t.$findOpeningBracket(e,s);if(a)return a.column++,s.column--,i.fromPoints(a,s)}}).call(r.prototype)})),ace.define("ace/ext/error_marker",["require","exports","module","ace/line_widgets","ace/lib/dom","ace/range"],(function(t,e,n){"use strict";var i=t("../line_widgets").LineWidgets,r=t("../lib/dom"),o=t("../range").Range;e.showErrorMarker=function(t,e){var n=t.session;n.widgetManager||(n.widgetManager=new i(n),n.widgetManager.attach(t));var s=t.getCursorPosition(),a=s.row,l=n.widgetManager.getWidgetsAtRow(a).filter((function(t){return"errorMarker"==t.type}))[0];l?l.destroy():a-=e;var c,u=function(t,e,n){var i=t.getAnnotations().sort(o.comparePoints);if(i.length){var r=function(t,e,n){for(var i=0,r=t.length-1;i<=r;){var o=i+r>>1,s=n(e,t[o]);if(s>0)i=o+1;else{if(!(s<0))return o;r=o-1}}return-(i+1)}(i,{row:e,column:-1},o.comparePoints);r<0&&(r=-r-1),r>=i.length?r=n>0?0:i.length-1:0===r&&n<0&&(r=i.length-1);var s=i[r];if(s&&n){if(s.row===e){do{s=i[r+=n]}while(s&&s.row===e);if(!s)return i.slice()}var a=[];e=s.row;do{a[n<0?"unshift":"push"](s),s=i[r+=n]}while(s&&s.row==e);return a.length&&a}}}(n,a,e);if(u){var h=u[0];s.column=(h.pos&&"number"!=typeof h.column?h.pos.sc:h.column)||0,s.row=h.row,c=t.renderer.$gutterLayer.$annotations[s.row]}else{if(l)return;c={text:["Looks good!"],className:"ace_ok"}}t.session.unfold(s.row),t.selection.moveToPosition(s);var d={row:s.row,fixedWidth:!0,coverGutter:!0,el:r.createElement("div"),type:"errorMarker"},f=d.el.appendChild(r.createElement("div")),p=d.el.appendChild(r.createElement("div"));p.className="error_widget_arrow "+c.className;var g=t.renderer.$cursorLayer.getPixelPosition(s).left;p.style.left=g+t.renderer.gutterWidth-5+"px",d.el.className="error_widget_wrapper",f.className="error_widget "+c.className,f.innerHTML=c.text.join("
      "),f.appendChild(r.createElement("div"));var m=function(t,e,n){if(0===e&&("esc"===n||"return"===n))return d.destroy(),{command:"null"}};d.destroy=function(){t.$mouseHandler.isMousePressed||(t.keyBinding.removeKeyboardHandler(m),n.widgetManager.removeLineWidget(d),t.off("changeSelection",d.destroy),t.off("changeSession",d.destroy),t.off("mouseup",d.destroy),t.off("change",d.destroy))},t.keyBinding.addKeyboardHandler(m),t.on("changeSelection",d.destroy),t.on("changeSession",d.destroy),t.on("mouseup",d.destroy),t.on("change",d.destroy),t.session.widgetManager.addLineWidget(d),d.el.onmousedown=t.focus.bind(t),t.renderer.scrollCursorIntoView(null,.5,{bottom:d.el.offsetHeight})},r.importCssString("\n .error_widget_wrapper {\n background: inherit;\n color: inherit;\n border:none\n }\n .error_widget {\n border-top: solid 2px;\n border-bottom: solid 2px;\n margin: 5px 0;\n padding: 10px 40px;\n white-space: pre-wrap;\n }\n .error_widget.ace_error, .error_widget_arrow.ace_error{\n border-color: #ff5a5a\n }\n .error_widget.ace_warning, .error_widget_arrow.ace_warning{\n border-color: #F1D817\n }\n .error_widget.ace_info, .error_widget_arrow.ace_info{\n border-color: #5a5a5a\n }\n .error_widget.ace_ok, .error_widget_arrow.ace_ok{\n border-color: #5aaa5a\n }\n .error_widget_arrow {\n position: absolute;\n border: solid 5px;\n border-top-color: transparent!important;\n border-right-color: transparent!important;\n border-left-color: transparent!important;\n top: -5px;\n }\n","error_marker.css",!1)})),ace.define("ace/ace",["require","exports","module","ace/lib/dom","ace/lib/event","ace/range","ace/editor","ace/edit_session","ace/undomanager","ace/virtual_renderer","ace/worker/worker_client","ace/keyboard/hash_handler","ace/placeholder","ace/multi_select","ace/mode/folding/fold_mode","ace/theme/textmate","ace/ext/error_marker","ace/config","ace/loader_build"],(function(t,e,n){"use strict";t("./loader_build")(e);var i=t("./lib/dom"),r=t("./lib/event"),o=t("./range").Range,s=t("./editor").Editor,a=t("./edit_session").EditSession,l=t("./undomanager").UndoManager,c=t("./virtual_renderer").VirtualRenderer;t("./worker/worker_client"),t("./keyboard/hash_handler"),t("./placeholder"),t("./multi_select"),t("./mode/folding/fold_mode"),t("./theme/textmate"),t("./ext/error_marker"),e.config=t("./config"),e.edit=function(t,n){if("string"==typeof t){var o=t;if(!(t=document.getElementById(o)))throw new Error("ace.edit can't find div #"+o)}if(t&&t.env&&t.env.editor instanceof s)return t.env.editor;var a="";if(t&&/input|textarea/i.test(t.tagName)){var l=t;a=l.value,t=i.createElement("pre"),l.parentNode.replaceChild(t,l)}else t&&(a=t.textContent,t.innerHTML="");var u=e.createEditSession(a),h=new s(new c(t),u,n),d={document:u,editor:h,onResize:h.resize.bind(h,null)};return l&&(d.textarea=l),r.addListener(window,"resize",d.onResize),h.on("destroy",(function(){r.removeListener(window,"resize",d.onResize),d.editor.container.env=null})),h.container.env=h.env=d,h},e.createEditSession=function(t,e){var n=new a(t,e);return n.setUndoManager(new l),n},e.Range=o,e.Editor=s,e.EditSession=a,e.UndoManager=l,e.VirtualRenderer=c,e.version=e.config.version})),ace.require(["ace/ace"],(function(e){for(var n in e&&(e.config.init(!0),e.define=ace.define),window.ace||(window.ace=e),e)e.hasOwnProperty(n)&&(window.ace[n]=e[n]);window.ace.default=window.ace,t&&(t.exports=window.ace)}))}).call(this,n("YuTi")(t))},bYtY:function(t,e){var n={"[object Function]":1,"[object RegExp]":1,"[object Date]":1,"[object Error]":1,"[object CanvasGradient]":1,"[object CanvasPattern]":1,"[object Image]":1,"[object Canvas]":1},i={"[object Int8Array]":1,"[object Uint8Array]":1,"[object Uint8ClampedArray]":1,"[object Int16Array]":1,"[object Uint16Array]":1,"[object Int32Array]":1,"[object Uint32Array]":1,"[object Float32Array]":1,"[object Float64Array]":1},r=Object.prototype.toString,o=Array.prototype,s=o.forEach,a=o.filter,l=o.slice,c=o.map,u=o.reduce,h={};function d(t){if(null==t||"object"!=typeof t)return t;var e=t,o=r.call(t);if("[object Array]"===o){if(!M(t)){e=[];for(var s=0,a=t.length;s0?("string"==typeof e||s.objectMode||Object.getPrototypeOf(e)===c.prototype||(e=function(t){return c.from(t)}(e)),i?s.endEmitted?t.emit("error",new Error("stream.unshift() after end event")):x(t,s,e,!0):s.ended?t.emit("error",new Error("stream.push() after EOF")):(s.reading=!1,s.decoder&&!n?(e=s.decoder.write(e),s.objectMode||0!==e.length?x(t,s,e,!1):A(t,s)):x(t,s,e,!1))):i||(s.reading=!1));return function(t){return!t.ended&&(t.needReadable||t.lengthe.highWaterMark&&(e.highWaterMark=function(t){return t>=8388608?t=8388608:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}function M(t){var e=t._readableState;e.needReadable=!1,e.emittedReadable||(f("emitReadable",e.flowing),e.emittedReadable=!0,e.sync?r.nextTick(S,t):S(t))}function S(t){f("emit readable"),t.emit("readable"),E(t)}function A(t,e){e.readingMore||(e.readingMore=!0,r.nextTick(k,t,e))}function k(t,e){for(var n=e.length;!e.reading&&!e.flowing&&!e.ended&&e.length=e.length?(n=e.decoder?e.buffer.join(""):1===e.buffer.length?e.buffer.head.data:e.buffer.concat(e.length),e.buffer.clear()):n=function(t,e,n){var i;to.length?o.length:t;if(s===o.length?r+=o:r+=o.slice(0,t),0===(t-=s)){s===o.length?(++i,n.next?e.head=n.next:e.head=e.tail=null):(e.head=n,n.data=o.slice(s));break}++i}return e.length-=i,r}(t,e):function(t,e){var n=c.allocUnsafe(t),i=e.head,r=1;i.data.copy(n),t-=i.data.length;for(;i=i.next;){var o=i.data,s=t>o.length?o.length:t;if(o.copy(n,n.length-t,0,s),0===(t-=s)){s===o.length?(++r,i.next?e.head=i.next:e.head=e.tail=null):(e.head=i,i.data=o.slice(s));break}++r}return e.length-=r,n}(t,e);return i}(t,e.buffer,e.decoder),n);var n}function L(t){var e=t._readableState;if(e.length>0)throw new Error('"endReadable()" called on non-empty stream');e.endEmitted||(e.ended=!0,r.nextTick(I,e,t))}function I(t,e){t.endEmitted||0!==t.length||(t.endEmitted=!0,e.readable=!1,e.emit("end"))}function O(t,e){for(var n=0,i=t.length;n=e.highWaterMark||e.ended))return f("read: emitReadable",e.length,e.ended),0===e.length&&e.ended?L(this):M(this),null;if(0===(t=_(t,e))&&e.ended)return 0===e.length&&L(this),null;var i,r=e.needReadable;return f("need readable",r),(0===e.length||e.length-t0?R(t,e):null)?(e.needReadable=!0,t=0):e.length-=t,0===e.length&&(e.ended||(e.needReadable=!0),n!==t&&e.ended&&L(this)),null!==i&&this.emit("data",i),i},y.prototype._read=function(t){this.emit("error",new Error("_read() is not implemented"))},y.prototype.pipe=function(t,e){var n=this,o=this._readableState;switch(o.pipesCount){case 0:o.pipes=t;break;case 1:o.pipes=[o.pipes,t];break;default:o.pipes.push(t)}o.pipesCount+=1,f("pipe count=%d opts=%j",o.pipesCount,e);var l=(!e||!1!==e.end)&&t!==i.stdout&&t!==i.stderr?u:y;function c(e,i){f("onunpipe"),e===n&&i&&!1===i.hasUnpiped&&(i.hasUnpiped=!0,f("cleanup"),t.removeListener("close",v),t.removeListener("finish",b),t.removeListener("drain",h),t.removeListener("error",m),t.removeListener("unpipe",c),n.removeListener("end",u),n.removeListener("end",y),n.removeListener("data",g),d=!0,!o.awaitDrain||t._writableState&&!t._writableState.needDrain||h())}function u(){f("onend"),t.end()}o.endEmitted?r.nextTick(l):n.once("end",l),t.on("unpipe",c);var h=function(t){return function(){var e=t._readableState;f("pipeOnDrain",e.awaitDrain),e.awaitDrain&&e.awaitDrain--,0===e.awaitDrain&&a(t,"data")&&(e.flowing=!0,E(t))}}(n);t.on("drain",h);var d=!1;var p=!1;function g(e){f("ondata"),p=!1,!1!==t.write(e)||p||((1===o.pipesCount&&o.pipes===t||o.pipesCount>1&&-1!==O(o.pipes,t))&&!d&&(f("false write response, pause",o.awaitDrain),o.awaitDrain++,p=!0),n.pause())}function m(e){f("onerror",e),y(),t.removeListener("error",m),0===a(t,"error")&&t.emit("error",e)}function v(){t.removeListener("finish",b),y()}function b(){f("onfinish"),t.removeListener("close",v),y()}function y(){f("unpipe"),n.unpipe(t)}return n.on("data",g),function(t,e,n){if("function"==typeof t.prependListener)return t.prependListener(e,n);t._events&&t._events[e]?s(t._events[e])?t._events[e].unshift(n):t._events[e]=[n,t._events[e]]:t.on(e,n)}(t,"error",m),t.once("close",v),t.once("finish",b),t.emit("pipe",n),o.flowing||(f("pipe resume"),n.resume()),t},y.prototype.unpipe=function(t){var e=this._readableState,n={hasUnpiped:!1};if(0===e.pipesCount)return this;if(1===e.pipesCount)return t&&t!==e.pipes||(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this,n)),this;if(!t){var i=e.pipes,r=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var o=0;o2)throw new Error("[ethjs-unit] while converting number "+t+" to wei, too many decimal points");var d=h[0],f=h[1];if(d||(d="0"),f||(f="0"),f.length>o)throw new Error("[ethjs-unit] while converting number "+t+" to wei, too many decimal places");for(;f.length>8,s=255&r;o?n.push(o,s):n.push(s)}return n},i.zero2=r,i.toHex=o,i.encode=function(t,e){return"hex"===e?o(t):t}},dmRs:function(t,e,n){t.exports=n.p+"adbb57fa182dce548204311d3be6dffa.js"},dnwI:function(t,e,n){var i=n("ProS"),r=n("bYtY"),o=n("YH21"),s=n("Kagy"),a=n("IUWy"),l=s.toolbox.dataView,c=new Array(60).join("-");function u(t){return r.map(t,(function(t){var e=t.getRawData(),n=[t.name],i=[];return e.each(e.dimensions,(function(){for(var t=arguments.length,r=arguments[t-1],o=e.getName(r),s=0;s=0)return!0}(t)){var o=function(t){for(var e=t.split(/\n+/g),n=h(e.shift()).split(d),i=[],o=r.map(n,(function(t){return{name:t,data:[]}})),s=0;s1?"emphasis":"normal")}(t,e)},p.onclick=function(t,e,n){g[n].call(this)},p.remove=function(t,e){this._brushController.unmount()},p.dispose=function(t,e){this._brushController.dispose()};var g={zoom:function(){var t=!this._isZoomActive;this.api.dispatchAction({type:"takeGlobalCursor",key:"dataZoomSelect",dataZoomSelectActive:t})},back:function(){this._dispatchZoomAction(a.pop(this.ecModel))}};function m(t){var e={};return r.each(["xAxisIndex","yAxisIndex"],(function(n){e[n]=t[n],null==e[n]&&(e[n]="all"),(!1===e[n]||"none"===e[n])&&(e[n]=[])})),e}p._onBrush=function(t,e){if(e.isEnd&&t.length){var n={},i=this.ecModel;this._brushController.updateCovers([]),new s(m(this.model.option),i,{include:["grid"]}).matchOutputRanges(t,i,(function(t,e,n){if("cartesian2d"===n.type){var i=t.brushType;"rect"===i?(r("x",n,e[0]),r("y",n,e[1])):r({lineX:"x",lineY:"y"}[i],n,e)}})),a.push(i,n),this._dispatchZoomAction(n)}function r(t,e,r){var o=e.getAxis(t),s=o.model,a=function(t,e,n){var i;return n.eachComponent({mainType:"dataZoom",subType:"select"},(function(n){n.getAxisModel(t,e.componentIndex)&&(i=n)})),i}(t,s,i),c=a.findRepresentativeAxisProxy(s).getMinMaxSpan();null==c.minValueSpan&&null==c.maxValueSpan||(r=l(0,r.slice(),o.scale.getExtent(),0,c.minValueSpan,c.maxValueSpan)),a&&(n[a.id]={dataZoomId:a.id,startValue:r[0],endValue:r[1]})}},p._dispatchZoomAction=function(t){var e=[];d(t,(function(t,n){e.push(r.clone(t))})),e.length&&this.api.dispatchAction({type:"dataZoom",from:this.uid,batch:e})},u.register("dataZoom",f),i.registerPreprocessor((function(t){if(t){var e=t.dataZoom||(t.dataZoom=[]);r.isArray(e)||(t.dataZoom=e=[e]);var n=t.toolbox;if(n&&(r.isArray(n)&&(n=n[0]),n&&n.feature)){var i=n.feature.dataZoom;o("xAxis",i),o("yAxis",i)}}function o(n,i){if(i){var o=n+"Index",s=i[o];null==s||"all"===s||r.isArray(s)||(s=!1===s||"none"===s?[]:[s]),function(e,n){var i=t[e];r.isArray(i)||(i=i?[i]:[]);d(i,n)}(n,(function(t,a){if(null==s||"all"===s||-1!==r.indexOf(s,a)){var l={type:"select",$fromToolbox:!0,filterMode:i.filterMode||"filter",id:"\0_ec_\0toolbox-dataZoom_"+n+a};l[o]=a,e.push(l)}}))}}}));var v=f;t.exports=v},fJBS:function(t,e,n){t.exports=n.p+"40505d6c2f34fc08502d3e596573c7f8.js"},fNyB:function(t,e,n){t.exports=n.p+"a26463d029a2515171748a1ebcca53c3.js"},fRJY:function(t,e,n){t.exports=n.p+"86d777efd4d05137e05019407412503a.js"},fW2E:function(t,e){var n={shadowBlur:1,shadowOffsetX:1,shadowOffsetY:1,textShadowBlur:1,textShadowOffsetX:1,textShadowOffsetY:1,textBoxShadowBlur:1,textBoxShadowOffsetX:1,textBoxShadowOffsetY:1};t.exports=function(t,e,i){return n.hasOwnProperty(e)?i*t.dpr:i}},fZJM:function(t,e,n){var i=e;i.utils=n("w8CP"),i.common=n("7ckf"),i.sha=n("WRkp"),i.ripemd=n("u0Sq"),i.hmac=n("ITfd"),i.sha1=i.sha.sha1,i.sha256=i.sha.sha256,i.sha224=i.sha.sha224,i.sha384=i.sha.sha384,i.sha512=i.sha.sha512,i.ripemd160=i.ripemd.ripemd160},fZOU:function(t,e,n){t.exports=n.p+"20f8061729d26f9786679bbf7af0b87a.js"},"fc+c":function(t,e,n){var i=n("sS/r").extend({type:"dataZoom",render:function(t,e,n,i){this.dataZoomModel=t,this.ecModel=e,this.api=n},getTargetCoordInfo:function(){var t=this.dataZoomModel,e=this.ecModel,n={};return t.eachTargetAxis((function(t,i){var r=e.getComponent(t.axis,i);if(r){var o=r.getCoordSysModel();o&&function(t,e,n,i){for(var r,o=0;o=0;i--)v.isIdInner(e[i])&&e.splice(i,1);t[n]=e}})),delete t["\0_ec_inner"],t},getTheme:function(){return this._theme},getComponent:function(t,e){var n=this._componentsMap.get(t);if(n)return n[e||0]},queryComponents:function(t){var e=t.mainType;if(!e)return[];var n,i=t.index,r=t.id,c=t.name,u=this._componentsMap.get(e);if(!u||!u.length)return[];if(null!=i)a(i)||(i=[i]),n=o(s(i,(function(t){return u[t]})),(function(t){return!!t}));else if(null!=r){var h=a(r);n=o(u,(function(t){return h&&l(r,t.id)>=0||!h&&t.id===r}))}else if(null!=c){var d=a(c);n=o(u,(function(t){return d&&l(c,t.name)>=0||!d&&t.name===c}))}else n=u.slice();return k(n,t)},findComponents:function(t){var e,n,i,r,s,a=t.query,l=t.mainType,c=(n=l+"Index",i=l+"Id",r=l+"Name",!(e=a)||null==e[n]&&null==e[i]&&null==e[r]?null:{mainType:l,index:e[n],id:e[i],name:e[r]}),u=c?this.queryComponents(c):this._componentsMap.get(l);return s=k(u,t),t.filter?o(s,t.filter):s},eachComponent:function(t,e,n){var i=this._componentsMap;if("function"==typeof t)n=e,e=t,i.each((function(t,i){r(t,(function(t,r){e.call(n,i,t,r)}))}));else if(u(t))r(i.get(t),e,n);else if(c(t)){var o=this.findComponents(t);r(o,e,n)}},getSeriesByName:function(t){var e=this._componentsMap.get("series");return o(e,(function(e){return e.name===t}))},getSeriesByIndex:function(t){return this._componentsMap.get("series")[t]},getSeriesByType:function(t){var e=this._componentsMap.get("series");return o(e,(function(e){return e.subType===t}))},getSeries:function(){return this._componentsMap.get("series").slice()},getSeriesCount:function(){return this._componentsMap.get("series").length},eachSeries:function(t,e){r(this._seriesIndices,(function(n){var i=this._componentsMap.get("series")[n];t.call(e,i,n)}),this)},eachRawSeries:function(t,e){r(this._componentsMap.get("series"),t,e)},eachSeriesByType:function(t,e,n){r(this._seriesIndices,(function(i){var r=this._componentsMap.get("series")[i];r.subType===t&&e.call(n,r,i)}),this)},eachRawSeriesByType:function(t,e,n){return r(this.getSeriesByType(t),e,n)},isSeriesFiltered:function(t){return null==this._seriesIndicesMap.get(t.componentIndex)},getCurrentSeriesIndices:function(){return(this._seriesIndices||[]).slice()},filterSeries:function(t,e){A(this,o(this._componentsMap.get("series"),t,e))},restoreData:function(t){var e=this._componentsMap;A(this,e.get("series"));var n=[];e.each((function(t,e){n.push(e)})),y.topologicalTravel(n,y.getAllClassMainTypes(),(function(n,i){r(e.get(n),(function(e){("series"!==n||!function(t,e){if(e){var n=e.seiresIndex,i=e.seriesId,r=e.seriesName;return null!=n&&t.componentIndex!==n||null!=i&&t.id!==i||null!=r&&t.name!==r}}(e,t))&&e.restoreData()}))}))}});function S(t){var e,n,i;t=t,this.option={},this.option["\0_ec_inner"]=1,this._componentsMap=h({series:[]}),this._seriesIndices,this._seriesIndicesMap,e=t,n=this._theme.option,i=e.color&&!e.colorLayer,r(n,(function(t,n){"colorLayer"===n&&i||y.hasClass(n)||("object"==typeof t?e[n]=e[n]?p(e[n],t,!1):f(t):null==e[n]&&(e[n]=t))})),p(t,w,!1),this.mergeOption(t)}function A(t,e){t._seriesIndicesMap=h(t._seriesIndices=s(e,(function(t){return t.componentIndex}))||[])}function k(t,e){return e.hasOwnProperty("subType")?o(t,(function(t){return t.subType===e.subType})):t}m(M,x);var C=M;t.exports=C},fnjI:function(t,e,n){var i=n("P7XM"),r=n("tnIz"),o=n("hwdV").Buffer,s=[1518500249,1859775393,-1894007588,-899497514],a=new Array(80);function l(){this.init(),this._w=a,r.call(this,64,56)}function c(t){return t<<5|t>>>27}function u(t){return t<<30|t>>>2}function h(t,e,n,i){return 0===t?e&n|~e&i:2===t?e&n|e&i|n&i:e^n^i}i(l,r),l.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},l.prototype._update=function(t){for(var e,n=this._w,i=0|this._a,r=0|this._b,o=0|this._c,a=0|this._d,l=0|this._e,d=0;d<16;++d)n[d]=t.readInt32BE(4*d);for(;d<80;++d)n[d]=(e=n[d-3]^n[d-8]^n[d-14]^n[d-16])<<1|e>>>31;for(var f=0;f<80;++f){var p=~~(f/20),g=c(i)+h(p,r,o,a)+l+n[f]+s[p]|0;l=a,a=o,o=u(r),r=i,i=g}this._a=i+this._a|0,this._b=r+this._b|0,this._c=o+this._c|0,this._d=a+this._d|0,this._e=l+this._e|0},l.prototype._hash=function(){var t=o.allocUnsafe(20);return t.writeInt32BE(0|this._a,0),t.writeInt32BE(0|this._b,4),t.writeInt32BE(0|this._c,8),t.writeInt32BE(0|this._d,12),t.writeInt32BE(0|this._e,16),t},t.exports=l},"g+4O":function(t,e,n){t.exports=n.p+"c38a3226f3858a47ba9fb788dc7b44fc.js"},g3bW:function(t,e,n){t.exports=n.p+"dfcf55f148a1c3a275c32ba307579b9b.js"},gFSE:function(t,e,n){t.exports=n.p+"de8dee841ffdaaede3a2254deef30376.js"},gGYU:function(t,e,n){t.exports=n.p+"f61f1aaed3f32a7dabd977a6f47ecd5f.js"},"gK+I":function(t,e,n){(function(t){!function(t,e){"use strict";function i(t,e){if(!t)throw new Error(e||"Assertion failed")}function r(t,e){t.super_=e;var n=function(){};n.prototype=e.prototype,t.prototype=new n,t.prototype.constructor=t}function o(t,e,n){if(o.isBN(t))return t;this.negative=0,this.words=null,this.length=0,this.red=null,null!==t&&("le"!==e&&"be"!==e||(n=e,e=10),this._init(t||0,e||10,n||"be"))}var s;"object"==typeof t?t.exports=o:e.BN=o,o.BN=o,o.wordSize=26;try{s="undefined"!=typeof window&&void 0!==window.Buffer?window.Buffer:n(1).Buffer}catch(t){}function a(t,e){var n=t.charCodeAt(e);return n>=65&&n<=70?n-55:n>=97&&n<=102?n-87:n-48&15}function l(t,e,n){var i=a(t,n);return n-1>=e&&(i|=a(t,n-1)<<4),i}function c(t,e,n,i){for(var r=0,o=Math.min(t.length,n),s=e;s=49?a-49+10:a>=17?a-17+10:a}return r}o.isBN=function(t){return t instanceof o||null!==t&&"object"==typeof t&&t.constructor.wordSize===o.wordSize&&Array.isArray(t.words)},o.max=function(t,e){return t.cmp(e)>0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,n){if("number"==typeof t)return this._initNumber(t,e,n);if("object"==typeof t)return this._initArray(t,e,n);"hex"===e&&(e=16),i(e===(0|e)&&e>=2&&e<=36);var r=0;"-"===(t=t.toString().replace(/\s+/g,""))[0]&&(r++,this.negative=1),r=0;r-=3)s=t[r]|t[r-1]<<8|t[r-2]<<16,this.words[o]|=s<>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);else if("le"===n)for(r=0,o=0;r>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);return this.strip()},o.prototype._parseHex=function(t,e,n){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var i=0;i=e;i-=2)r=l(t,e,i)<=18?(o-=18,s+=1,this.words[s]|=r>>>26):o+=8;else for(i=(t.length-e)%2==0?e+1:e;i=18?(o-=18,s+=1,this.words[s]|=r>>>26):o+=8;this.strip()},o.prototype._parseBase=function(t,e,n){this.words=[0],this.length=1;for(var i=0,r=1;r<=67108863;r*=e)i++;i--,r=r/e|0;for(var o=t.length-n,s=o%i,a=Math.min(o,o-s)+n,l=0,u=n;u1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?""};var u=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],h=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],d=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function f(t,e,n){n.negative=e.negative^t.negative;var i=t.length+e.length|0;n.length=i,i=i-1|0;var r=0|t.words[0],o=0|e.words[0],s=r*o,a=67108863&s,l=s/67108864|0;n.words[0]=a;for(var c=1;c>>26,h=67108863&l,d=Math.min(c,e.length-1),f=Math.max(0,c-t.length+1);f<=d;f++){var p=c-f|0;u+=(s=(r=0|t.words[p])*(o=0|e.words[f])+h)/67108864|0,h=67108863&s}n.words[c]=0|h,l=0|u}return 0!==l?n.words[c]=0|l:n.length--,n.strip()}o.prototype.toString=function(t,e){var n;if(e=0|e||1,16===(t=t||10)||"hex"===t){n="";for(var r=0,o=0,s=0;s>>24-r&16777215)||s!==this.length-1?u[6-l.length]+l+n:l+n,(r+=2)>=26&&(r-=26,s--)}for(0!==o&&(n=o.toString(16)+n);n.length%e!=0;)n="0"+n;return 0!==this.negative&&(n="-"+n),n}if(t===(0|t)&&t>=2&&t<=36){var c=h[t],f=d[t];n="";var p=this.clone();for(p.negative=0;!p.isZero();){var g=p.modn(f).toString(t);n=(p=p.idivn(f)).isZero()?g+n:u[c-g.length]+g+n}for(this.isZero()&&(n="0"+n);n.length%e!=0;)n="0"+n;return 0!==this.negative&&(n="-"+n),n}i(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(t,e){return i(void 0!==s),this.toArrayLike(s,t,e)},o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},o.prototype.toArrayLike=function(t,e,n){var r=this.byteLength(),o=n||Math.max(1,r);i(r<=o,"byte array longer than desired length"),i(o>0,"Requested array length <= 0"),this.strip();var s,a,l="le"===e,c=new t(o),u=this.clone();if(l){for(a=0;!u.isZero();a++)s=u.andln(255),u.iushrn(8),c[a]=s;for(;a=4096&&(n+=13,e>>>=13),e>=64&&(n+=7,e>>>=7),e>=8&&(n+=4,e>>>=4),e>=2&&(n+=2,e>>>=2),n+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,n=0;return 0==(8191&e)&&(n+=13,e>>>=13),0==(127&e)&&(n+=7,e>>>=7),0==(15&e)&&(n+=4,e>>>=4),0==(3&e)&&(n+=2,e>>>=2),0==(1&e)&&n++,n},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var n=0;nt.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,n;this.length>t.length?(e=this,n=t):(e=t,n=this);for(var i=0;it.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){i("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),n=t%26;this._expand(e),n>0&&e--;for(var r=0;r0&&(this.words[r]=~this.words[r]&67108863>>26-n),this.strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){i("number"==typeof t&&t>=0);var n=t/26|0,r=t%26;return this._expand(n+1),this.words[n]=e?this.words[n]|1<t.length?(n=this,i=t):(n=t,i=this);for(var r=0,o=0;o>>26;for(;0!==r&&o>>26;if(this.length=n.length,0!==r)this.words[this.length]=r,this.length++;else if(n!==this)for(;ot.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var n,i,r=this.cmp(t);if(0===r)return this.negative=0,this.length=1,this.words[0]=0,this;r>0?(n=this,i=t):(n=t,i=this);for(var o=0,s=0;s>26,this.words[s]=67108863&e;for(;0!==o&&s>26,this.words[s]=67108863&e;if(0===o&&s>>13,f=0|s[1],p=8191&f,g=f>>>13,m=0|s[2],v=8191&m,b=m>>>13,y=0|s[3],w=8191&y,x=y>>>13,_=0|s[4],M=8191&_,S=_>>>13,A=0|s[5],k=8191&A,C=A>>>13,T=0|s[6],E=8191&T,R=T>>>13,L=0|s[7],I=8191&L,O=L>>>13,$=0|s[8],P=8191&$,D=$>>>13,B=0|s[9],N=8191&B,F=B>>>13,j=0|a[0],U=8191&j,z=j>>>13,H=0|a[1],W=8191&H,V=H>>>13,q=0|a[2],G=8191&q,Y=q>>>13,K=0|a[3],Z=8191&K,X=K>>>13,J=0|a[4],Q=8191&J,tt=J>>>13,et=0|a[5],nt=8191&et,it=et>>>13,rt=0|a[6],ot=8191&rt,st=rt>>>13,at=0|a[7],lt=8191&at,ct=at>>>13,ut=0|a[8],ht=8191&ut,dt=ut>>>13,ft=0|a[9],pt=8191&ft,gt=ft>>>13;n.negative=t.negative^e.negative,n.length=19;var mt=(c+(i=Math.imul(h,U))|0)+((8191&(r=(r=Math.imul(h,z))+Math.imul(d,U)|0))<<13)|0;c=((o=Math.imul(d,z))+(r>>>13)|0)+(mt>>>26)|0,mt&=67108863,i=Math.imul(p,U),r=(r=Math.imul(p,z))+Math.imul(g,U)|0,o=Math.imul(g,z);var vt=(c+(i=i+Math.imul(h,W)|0)|0)+((8191&(r=(r=r+Math.imul(h,V)|0)+Math.imul(d,W)|0))<<13)|0;c=((o=o+Math.imul(d,V)|0)+(r>>>13)|0)+(vt>>>26)|0,vt&=67108863,i=Math.imul(v,U),r=(r=Math.imul(v,z))+Math.imul(b,U)|0,o=Math.imul(b,z),i=i+Math.imul(p,W)|0,r=(r=r+Math.imul(p,V)|0)+Math.imul(g,W)|0,o=o+Math.imul(g,V)|0;var bt=(c+(i=i+Math.imul(h,G)|0)|0)+((8191&(r=(r=r+Math.imul(h,Y)|0)+Math.imul(d,G)|0))<<13)|0;c=((o=o+Math.imul(d,Y)|0)+(r>>>13)|0)+(bt>>>26)|0,bt&=67108863,i=Math.imul(w,U),r=(r=Math.imul(w,z))+Math.imul(x,U)|0,o=Math.imul(x,z),i=i+Math.imul(v,W)|0,r=(r=r+Math.imul(v,V)|0)+Math.imul(b,W)|0,o=o+Math.imul(b,V)|0,i=i+Math.imul(p,G)|0,r=(r=r+Math.imul(p,Y)|0)+Math.imul(g,G)|0,o=o+Math.imul(g,Y)|0;var yt=(c+(i=i+Math.imul(h,Z)|0)|0)+((8191&(r=(r=r+Math.imul(h,X)|0)+Math.imul(d,Z)|0))<<13)|0;c=((o=o+Math.imul(d,X)|0)+(r>>>13)|0)+(yt>>>26)|0,yt&=67108863,i=Math.imul(M,U),r=(r=Math.imul(M,z))+Math.imul(S,U)|0,o=Math.imul(S,z),i=i+Math.imul(w,W)|0,r=(r=r+Math.imul(w,V)|0)+Math.imul(x,W)|0,o=o+Math.imul(x,V)|0,i=i+Math.imul(v,G)|0,r=(r=r+Math.imul(v,Y)|0)+Math.imul(b,G)|0,o=o+Math.imul(b,Y)|0,i=i+Math.imul(p,Z)|0,r=(r=r+Math.imul(p,X)|0)+Math.imul(g,Z)|0,o=o+Math.imul(g,X)|0;var wt=(c+(i=i+Math.imul(h,Q)|0)|0)+((8191&(r=(r=r+Math.imul(h,tt)|0)+Math.imul(d,Q)|0))<<13)|0;c=((o=o+Math.imul(d,tt)|0)+(r>>>13)|0)+(wt>>>26)|0,wt&=67108863,i=Math.imul(k,U),r=(r=Math.imul(k,z))+Math.imul(C,U)|0,o=Math.imul(C,z),i=i+Math.imul(M,W)|0,r=(r=r+Math.imul(M,V)|0)+Math.imul(S,W)|0,o=o+Math.imul(S,V)|0,i=i+Math.imul(w,G)|0,r=(r=r+Math.imul(w,Y)|0)+Math.imul(x,G)|0,o=o+Math.imul(x,Y)|0,i=i+Math.imul(v,Z)|0,r=(r=r+Math.imul(v,X)|0)+Math.imul(b,Z)|0,o=o+Math.imul(b,X)|0,i=i+Math.imul(p,Q)|0,r=(r=r+Math.imul(p,tt)|0)+Math.imul(g,Q)|0,o=o+Math.imul(g,tt)|0;var xt=(c+(i=i+Math.imul(h,nt)|0)|0)+((8191&(r=(r=r+Math.imul(h,it)|0)+Math.imul(d,nt)|0))<<13)|0;c=((o=o+Math.imul(d,it)|0)+(r>>>13)|0)+(xt>>>26)|0,xt&=67108863,i=Math.imul(E,U),r=(r=Math.imul(E,z))+Math.imul(R,U)|0,o=Math.imul(R,z),i=i+Math.imul(k,W)|0,r=(r=r+Math.imul(k,V)|0)+Math.imul(C,W)|0,o=o+Math.imul(C,V)|0,i=i+Math.imul(M,G)|0,r=(r=r+Math.imul(M,Y)|0)+Math.imul(S,G)|0,o=o+Math.imul(S,Y)|0,i=i+Math.imul(w,Z)|0,r=(r=r+Math.imul(w,X)|0)+Math.imul(x,Z)|0,o=o+Math.imul(x,X)|0,i=i+Math.imul(v,Q)|0,r=(r=r+Math.imul(v,tt)|0)+Math.imul(b,Q)|0,o=o+Math.imul(b,tt)|0,i=i+Math.imul(p,nt)|0,r=(r=r+Math.imul(p,it)|0)+Math.imul(g,nt)|0,o=o+Math.imul(g,it)|0;var _t=(c+(i=i+Math.imul(h,ot)|0)|0)+((8191&(r=(r=r+Math.imul(h,st)|0)+Math.imul(d,ot)|0))<<13)|0;c=((o=o+Math.imul(d,st)|0)+(r>>>13)|0)+(_t>>>26)|0,_t&=67108863,i=Math.imul(I,U),r=(r=Math.imul(I,z))+Math.imul(O,U)|0,o=Math.imul(O,z),i=i+Math.imul(E,W)|0,r=(r=r+Math.imul(E,V)|0)+Math.imul(R,W)|0,o=o+Math.imul(R,V)|0,i=i+Math.imul(k,G)|0,r=(r=r+Math.imul(k,Y)|0)+Math.imul(C,G)|0,o=o+Math.imul(C,Y)|0,i=i+Math.imul(M,Z)|0,r=(r=r+Math.imul(M,X)|0)+Math.imul(S,Z)|0,o=o+Math.imul(S,X)|0,i=i+Math.imul(w,Q)|0,r=(r=r+Math.imul(w,tt)|0)+Math.imul(x,Q)|0,o=o+Math.imul(x,tt)|0,i=i+Math.imul(v,nt)|0,r=(r=r+Math.imul(v,it)|0)+Math.imul(b,nt)|0,o=o+Math.imul(b,it)|0,i=i+Math.imul(p,ot)|0,r=(r=r+Math.imul(p,st)|0)+Math.imul(g,ot)|0,o=o+Math.imul(g,st)|0;var Mt=(c+(i=i+Math.imul(h,lt)|0)|0)+((8191&(r=(r=r+Math.imul(h,ct)|0)+Math.imul(d,lt)|0))<<13)|0;c=((o=o+Math.imul(d,ct)|0)+(r>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,i=Math.imul(P,U),r=(r=Math.imul(P,z))+Math.imul(D,U)|0,o=Math.imul(D,z),i=i+Math.imul(I,W)|0,r=(r=r+Math.imul(I,V)|0)+Math.imul(O,W)|0,o=o+Math.imul(O,V)|0,i=i+Math.imul(E,G)|0,r=(r=r+Math.imul(E,Y)|0)+Math.imul(R,G)|0,o=o+Math.imul(R,Y)|0,i=i+Math.imul(k,Z)|0,r=(r=r+Math.imul(k,X)|0)+Math.imul(C,Z)|0,o=o+Math.imul(C,X)|0,i=i+Math.imul(M,Q)|0,r=(r=r+Math.imul(M,tt)|0)+Math.imul(S,Q)|0,o=o+Math.imul(S,tt)|0,i=i+Math.imul(w,nt)|0,r=(r=r+Math.imul(w,it)|0)+Math.imul(x,nt)|0,o=o+Math.imul(x,it)|0,i=i+Math.imul(v,ot)|0,r=(r=r+Math.imul(v,st)|0)+Math.imul(b,ot)|0,o=o+Math.imul(b,st)|0,i=i+Math.imul(p,lt)|0,r=(r=r+Math.imul(p,ct)|0)+Math.imul(g,lt)|0,o=o+Math.imul(g,ct)|0;var St=(c+(i=i+Math.imul(h,ht)|0)|0)+((8191&(r=(r=r+Math.imul(h,dt)|0)+Math.imul(d,ht)|0))<<13)|0;c=((o=o+Math.imul(d,dt)|0)+(r>>>13)|0)+(St>>>26)|0,St&=67108863,i=Math.imul(N,U),r=(r=Math.imul(N,z))+Math.imul(F,U)|0,o=Math.imul(F,z),i=i+Math.imul(P,W)|0,r=(r=r+Math.imul(P,V)|0)+Math.imul(D,W)|0,o=o+Math.imul(D,V)|0,i=i+Math.imul(I,G)|0,r=(r=r+Math.imul(I,Y)|0)+Math.imul(O,G)|0,o=o+Math.imul(O,Y)|0,i=i+Math.imul(E,Z)|0,r=(r=r+Math.imul(E,X)|0)+Math.imul(R,Z)|0,o=o+Math.imul(R,X)|0,i=i+Math.imul(k,Q)|0,r=(r=r+Math.imul(k,tt)|0)+Math.imul(C,Q)|0,o=o+Math.imul(C,tt)|0,i=i+Math.imul(M,nt)|0,r=(r=r+Math.imul(M,it)|0)+Math.imul(S,nt)|0,o=o+Math.imul(S,it)|0,i=i+Math.imul(w,ot)|0,r=(r=r+Math.imul(w,st)|0)+Math.imul(x,ot)|0,o=o+Math.imul(x,st)|0,i=i+Math.imul(v,lt)|0,r=(r=r+Math.imul(v,ct)|0)+Math.imul(b,lt)|0,o=o+Math.imul(b,ct)|0,i=i+Math.imul(p,ht)|0,r=(r=r+Math.imul(p,dt)|0)+Math.imul(g,ht)|0,o=o+Math.imul(g,dt)|0;var At=(c+(i=i+Math.imul(h,pt)|0)|0)+((8191&(r=(r=r+Math.imul(h,gt)|0)+Math.imul(d,pt)|0))<<13)|0;c=((o=o+Math.imul(d,gt)|0)+(r>>>13)|0)+(At>>>26)|0,At&=67108863,i=Math.imul(N,W),r=(r=Math.imul(N,V))+Math.imul(F,W)|0,o=Math.imul(F,V),i=i+Math.imul(P,G)|0,r=(r=r+Math.imul(P,Y)|0)+Math.imul(D,G)|0,o=o+Math.imul(D,Y)|0,i=i+Math.imul(I,Z)|0,r=(r=r+Math.imul(I,X)|0)+Math.imul(O,Z)|0,o=o+Math.imul(O,X)|0,i=i+Math.imul(E,Q)|0,r=(r=r+Math.imul(E,tt)|0)+Math.imul(R,Q)|0,o=o+Math.imul(R,tt)|0,i=i+Math.imul(k,nt)|0,r=(r=r+Math.imul(k,it)|0)+Math.imul(C,nt)|0,o=o+Math.imul(C,it)|0,i=i+Math.imul(M,ot)|0,r=(r=r+Math.imul(M,st)|0)+Math.imul(S,ot)|0,o=o+Math.imul(S,st)|0,i=i+Math.imul(w,lt)|0,r=(r=r+Math.imul(w,ct)|0)+Math.imul(x,lt)|0,o=o+Math.imul(x,ct)|0,i=i+Math.imul(v,ht)|0,r=(r=r+Math.imul(v,dt)|0)+Math.imul(b,ht)|0,o=o+Math.imul(b,dt)|0;var kt=(c+(i=i+Math.imul(p,pt)|0)|0)+((8191&(r=(r=r+Math.imul(p,gt)|0)+Math.imul(g,pt)|0))<<13)|0;c=((o=o+Math.imul(g,gt)|0)+(r>>>13)|0)+(kt>>>26)|0,kt&=67108863,i=Math.imul(N,G),r=(r=Math.imul(N,Y))+Math.imul(F,G)|0,o=Math.imul(F,Y),i=i+Math.imul(P,Z)|0,r=(r=r+Math.imul(P,X)|0)+Math.imul(D,Z)|0,o=o+Math.imul(D,X)|0,i=i+Math.imul(I,Q)|0,r=(r=r+Math.imul(I,tt)|0)+Math.imul(O,Q)|0,o=o+Math.imul(O,tt)|0,i=i+Math.imul(E,nt)|0,r=(r=r+Math.imul(E,it)|0)+Math.imul(R,nt)|0,o=o+Math.imul(R,it)|0,i=i+Math.imul(k,ot)|0,r=(r=r+Math.imul(k,st)|0)+Math.imul(C,ot)|0,o=o+Math.imul(C,st)|0,i=i+Math.imul(M,lt)|0,r=(r=r+Math.imul(M,ct)|0)+Math.imul(S,lt)|0,o=o+Math.imul(S,ct)|0,i=i+Math.imul(w,ht)|0,r=(r=r+Math.imul(w,dt)|0)+Math.imul(x,ht)|0,o=o+Math.imul(x,dt)|0;var Ct=(c+(i=i+Math.imul(v,pt)|0)|0)+((8191&(r=(r=r+Math.imul(v,gt)|0)+Math.imul(b,pt)|0))<<13)|0;c=((o=o+Math.imul(b,gt)|0)+(r>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,i=Math.imul(N,Z),r=(r=Math.imul(N,X))+Math.imul(F,Z)|0,o=Math.imul(F,X),i=i+Math.imul(P,Q)|0,r=(r=r+Math.imul(P,tt)|0)+Math.imul(D,Q)|0,o=o+Math.imul(D,tt)|0,i=i+Math.imul(I,nt)|0,r=(r=r+Math.imul(I,it)|0)+Math.imul(O,nt)|0,o=o+Math.imul(O,it)|0,i=i+Math.imul(E,ot)|0,r=(r=r+Math.imul(E,st)|0)+Math.imul(R,ot)|0,o=o+Math.imul(R,st)|0,i=i+Math.imul(k,lt)|0,r=(r=r+Math.imul(k,ct)|0)+Math.imul(C,lt)|0,o=o+Math.imul(C,ct)|0,i=i+Math.imul(M,ht)|0,r=(r=r+Math.imul(M,dt)|0)+Math.imul(S,ht)|0,o=o+Math.imul(S,dt)|0;var Tt=(c+(i=i+Math.imul(w,pt)|0)|0)+((8191&(r=(r=r+Math.imul(w,gt)|0)+Math.imul(x,pt)|0))<<13)|0;c=((o=o+Math.imul(x,gt)|0)+(r>>>13)|0)+(Tt>>>26)|0,Tt&=67108863,i=Math.imul(N,Q),r=(r=Math.imul(N,tt))+Math.imul(F,Q)|0,o=Math.imul(F,tt),i=i+Math.imul(P,nt)|0,r=(r=r+Math.imul(P,it)|0)+Math.imul(D,nt)|0,o=o+Math.imul(D,it)|0,i=i+Math.imul(I,ot)|0,r=(r=r+Math.imul(I,st)|0)+Math.imul(O,ot)|0,o=o+Math.imul(O,st)|0,i=i+Math.imul(E,lt)|0,r=(r=r+Math.imul(E,ct)|0)+Math.imul(R,lt)|0,o=o+Math.imul(R,ct)|0,i=i+Math.imul(k,ht)|0,r=(r=r+Math.imul(k,dt)|0)+Math.imul(C,ht)|0,o=o+Math.imul(C,dt)|0;var Et=(c+(i=i+Math.imul(M,pt)|0)|0)+((8191&(r=(r=r+Math.imul(M,gt)|0)+Math.imul(S,pt)|0))<<13)|0;c=((o=o+Math.imul(S,gt)|0)+(r>>>13)|0)+(Et>>>26)|0,Et&=67108863,i=Math.imul(N,nt),r=(r=Math.imul(N,it))+Math.imul(F,nt)|0,o=Math.imul(F,it),i=i+Math.imul(P,ot)|0,r=(r=r+Math.imul(P,st)|0)+Math.imul(D,ot)|0,o=o+Math.imul(D,st)|0,i=i+Math.imul(I,lt)|0,r=(r=r+Math.imul(I,ct)|0)+Math.imul(O,lt)|0,o=o+Math.imul(O,ct)|0,i=i+Math.imul(E,ht)|0,r=(r=r+Math.imul(E,dt)|0)+Math.imul(R,ht)|0,o=o+Math.imul(R,dt)|0;var Rt=(c+(i=i+Math.imul(k,pt)|0)|0)+((8191&(r=(r=r+Math.imul(k,gt)|0)+Math.imul(C,pt)|0))<<13)|0;c=((o=o+Math.imul(C,gt)|0)+(r>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,i=Math.imul(N,ot),r=(r=Math.imul(N,st))+Math.imul(F,ot)|0,o=Math.imul(F,st),i=i+Math.imul(P,lt)|0,r=(r=r+Math.imul(P,ct)|0)+Math.imul(D,lt)|0,o=o+Math.imul(D,ct)|0,i=i+Math.imul(I,ht)|0,r=(r=r+Math.imul(I,dt)|0)+Math.imul(O,ht)|0,o=o+Math.imul(O,dt)|0;var Lt=(c+(i=i+Math.imul(E,pt)|0)|0)+((8191&(r=(r=r+Math.imul(E,gt)|0)+Math.imul(R,pt)|0))<<13)|0;c=((o=o+Math.imul(R,gt)|0)+(r>>>13)|0)+(Lt>>>26)|0,Lt&=67108863,i=Math.imul(N,lt),r=(r=Math.imul(N,ct))+Math.imul(F,lt)|0,o=Math.imul(F,ct),i=i+Math.imul(P,ht)|0,r=(r=r+Math.imul(P,dt)|0)+Math.imul(D,ht)|0,o=o+Math.imul(D,dt)|0;var It=(c+(i=i+Math.imul(I,pt)|0)|0)+((8191&(r=(r=r+Math.imul(I,gt)|0)+Math.imul(O,pt)|0))<<13)|0;c=((o=o+Math.imul(O,gt)|0)+(r>>>13)|0)+(It>>>26)|0,It&=67108863,i=Math.imul(N,ht),r=(r=Math.imul(N,dt))+Math.imul(F,ht)|0,o=Math.imul(F,dt);var Ot=(c+(i=i+Math.imul(P,pt)|0)|0)+((8191&(r=(r=r+Math.imul(P,gt)|0)+Math.imul(D,pt)|0))<<13)|0;c=((o=o+Math.imul(D,gt)|0)+(r>>>13)|0)+(Ot>>>26)|0,Ot&=67108863;var $t=(c+(i=Math.imul(N,pt))|0)+((8191&(r=(r=Math.imul(N,gt))+Math.imul(F,pt)|0))<<13)|0;return c=((o=Math.imul(F,gt))+(r>>>13)|0)+($t>>>26)|0,$t&=67108863,l[0]=mt,l[1]=vt,l[2]=bt,l[3]=yt,l[4]=wt,l[5]=xt,l[6]=_t,l[7]=Mt,l[8]=St,l[9]=At,l[10]=kt,l[11]=Ct,l[12]=Tt,l[13]=Et,l[14]=Rt,l[15]=Lt,l[16]=It,l[17]=Ot,l[18]=$t,0!==c&&(l[19]=c,n.length++),n};function g(t,e,n){return(new m).mulp(t,e,n)}function m(t,e){this.x=t,this.y=e}Math.imul||(p=f),o.prototype.mulTo=function(t,e){var n=this.length+t.length;return 10===this.length&&10===t.length?p(this,t,e):n<63?f(this,t,e):n<1024?function(t,e,n){n.negative=e.negative^t.negative,n.length=t.length+e.length;for(var i=0,r=0,o=0;o>>26)|0)>>>26,s&=67108863}n.words[o]=a,i=s,s=r}return 0!==i?n.words[o]=i:n.length--,n.strip()}(this,t,e):g(this,t,e)},m.prototype.makeRBT=function(t){for(var e=new Array(t),n=o.prototype._countBits(t)-1,i=0;i>=1;return i},m.prototype.permute=function(t,e,n,i,r,o){for(var s=0;s>>=1)r++;return 1<>>=13,n[2*s+1]=8191&o,o>>>=13;for(s=2*e;s>=26,e+=r/67108864|0,e+=o>>>26,this.words[n]=67108863&o}return 0!==e&&(this.words[n]=e,this.length++),this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=function(t){for(var e=new Array(t.bitLength()),n=0;n>>r}return e}(t);if(0===e.length)return new o(1);for(var n=this,i=0;i=0);var e,n=t%26,r=(t-n)/26,o=67108863>>>26-n<<26-n;if(0!==n){var s=0;for(e=0;e>>26-n}s&&(this.words[e]=s,this.length++)}if(0!==r){for(e=this.length-1;e>=0;e--)this.words[e+r]=this.words[e];for(e=0;e=0),r=e?(e-e%26)/26:0;var o=t%26,s=Math.min((t-o)/26,this.length),a=67108863^67108863>>>o<s)for(this.length-=s,c=0;c=0&&(0!==u||c>=r);c--){var h=0|this.words[c];this.words[c]=u<<26-o|h>>>o,u=h&a}return l&&0!==u&&(l.words[l.length++]=u),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(t,e,n){return i(0===this.negative),this.iushrn(t,e,n)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){i("number"==typeof t&&t>=0);var e=t%26,n=(t-e)/26,r=1<=0);var e=t%26,n=(t-e)/26;if(i(0===this.negative,"imaskn works only with positive numbers"),this.length<=n)return this;if(0!==e&&n++,this.length=Math.min(n,this.length),0!==e){var r=67108863^67108863>>>e<=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(i("number"==typeof t),i(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e>26)-(l/67108864|0),this.words[r+n]=67108863&o}for(;r>26,this.words[r+n]=67108863&o;if(0===a)return this.strip();for(i(-1===a),a=0,r=0;r>26,this.words[r]=67108863&o;return this.negative=1,this.strip()},o.prototype._wordDiv=function(t,e){var n=(this.length,t.length),i=this.clone(),r=t,s=0|r.words[r.length-1];0!==(n=26-this._countBits(s))&&(r=r.ushln(n),i.iushln(n),s=0|r.words[r.length-1]);var a,l=i.length-r.length;if("mod"!==e){(a=new o(null)).length=l+1,a.words=new Array(a.length);for(var c=0;c=0;h--){var d=67108864*(0|i.words[r.length+h])+(0|i.words[r.length+h-1]);for(d=Math.min(d/s|0,67108863),i._ishlnsubmul(r,d,h);0!==i.negative;)d--,i.negative=0,i._ishlnsubmul(r,1,h),i.isZero()||(i.negative^=1);a&&(a.words[h]=d)}return a&&a.strip(),i.strip(),"div"!==e&&0!==n&&i.iushrn(n),{div:a||null,mod:i}},o.prototype.divmod=function(t,e,n){return i(!t.isZero()),this.isZero()?{div:new o(0),mod:new o(0)}:0!==this.negative&&0===t.negative?(a=this.neg().divmod(t,e),"mod"!==e&&(r=a.div.neg()),"div"!==e&&(s=a.mod.neg(),n&&0!==s.negative&&s.iadd(t)),{div:r,mod:s}):0===this.negative&&0!==t.negative?(a=this.divmod(t.neg(),e),"mod"!==e&&(r=a.div.neg()),{div:r,mod:a.mod}):0!=(this.negative&t.negative)?(a=this.neg().divmod(t.neg(),e),"div"!==e&&(s=a.mod.neg(),n&&0!==s.negative&&s.isub(t)),{div:a.div,mod:s}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new o(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modn(t.words[0]))}:this._wordDiv(t,e);var r,s,a},o.prototype.div=function(t){return this.divmod(t,"div",!1).div},o.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},o.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var n=0!==e.div.negative?e.mod.isub(t):e.mod,i=t.ushrn(1),r=t.andln(1),o=n.cmp(i);return o<0||1===r&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modn=function(t){i(t<=67108863);for(var e=(1<<26)%t,n=0,r=this.length-1;r>=0;r--)n=(e*n+(0|this.words[r]))%t;return n},o.prototype.idivn=function(t){i(t<=67108863);for(var e=0,n=this.length-1;n>=0;n--){var r=(0|this.words[n])+67108864*e;this.words[n]=r/t|0,e=r%t}return this.strip()},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){i(0===t.negative),i(!t.isZero());var e=this,n=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var r=new o(1),s=new o(0),a=new o(0),l=new o(1),c=0;e.isEven()&&n.isEven();)e.iushrn(1),n.iushrn(1),++c;for(var u=n.clone(),h=e.clone();!e.isZero();){for(var d=0,f=1;0==(e.words[0]&f)&&d<26;++d,f<<=1);if(d>0)for(e.iushrn(d);d-- >0;)(r.isOdd()||s.isOdd())&&(r.iadd(u),s.isub(h)),r.iushrn(1),s.iushrn(1);for(var p=0,g=1;0==(n.words[0]&g)&&p<26;++p,g<<=1);if(p>0)for(n.iushrn(p);p-- >0;)(a.isOdd()||l.isOdd())&&(a.iadd(u),l.isub(h)),a.iushrn(1),l.iushrn(1);e.cmp(n)>=0?(e.isub(n),r.isub(a),s.isub(l)):(n.isub(e),a.isub(r),l.isub(s))}return{a:a,b:l,gcd:n.iushln(c)}},o.prototype._invmp=function(t){i(0===t.negative),i(!t.isZero());var e=this,n=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var r,s=new o(1),a=new o(0),l=n.clone();e.cmpn(1)>0&&n.cmpn(1)>0;){for(var c=0,u=1;0==(e.words[0]&u)&&c<26;++c,u<<=1);if(c>0)for(e.iushrn(c);c-- >0;)s.isOdd()&&s.iadd(l),s.iushrn(1);for(var h=0,d=1;0==(n.words[0]&d)&&h<26;++h,d<<=1);if(h>0)for(n.iushrn(h);h-- >0;)a.isOdd()&&a.iadd(l),a.iushrn(1);e.cmp(n)>=0?(e.isub(n),s.isub(a)):(n.isub(e),a.isub(s))}return(r=0===e.cmpn(1)?s:a).cmpn(0)<0&&r.iadd(t),r},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),n=t.clone();e.negative=0,n.negative=0;for(var i=0;e.isEven()&&n.isEven();i++)e.iushrn(1),n.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;n.isEven();)n.iushrn(1);var r=e.cmp(n);if(r<0){var o=e;e=n,n=o}else if(0===r||0===n.cmpn(1))break;e.isub(n)}return n.iushln(i)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0==(1&this.words[0])},o.prototype.isOdd=function(){return 1==(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){i("number"==typeof t);var e=t%26,n=(t-e)/26,r=1<>>26,a&=67108863,this.words[s]=a}return 0!==o&&(this.words[s]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e,n=t<0;if(0!==this.negative&&!n)return-1;if(0===this.negative&&n)return 1;if(this.strip(),this.length>1)e=1;else{n&&(t=-t),i(t<=67108863,"Number is too big");var r=0|this.words[0];e=r===t?0:rt.length)return 1;if(this.length=0;n--){var i=0|this.words[n],r=0|t.words[n];if(i!==r){ir&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return-1===this.cmpn(t)},o.prototype.lt=function(t){return-1===this.cmp(t)},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new M(t)},o.prototype.toRed=function(t){return i(!this.red,"Already a number in reduction context"),i(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return i(!this.red,"Already a number in reduction context"),this._forceRed(t)},o.prototype.redAdd=function(t){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},o.prototype.redISub=function(t){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},o.prototype.redShl=function(t){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},o.prototype.redMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return i(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var v={k256:null,p224:null,p192:null,p25519:null};function b(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function y(){b.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function w(){b.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function x(){b.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function _(){b.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function M(t){if("string"==typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else i(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function S(t){M.call(this,t),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}b.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},b.prototype.ireduce=function(t){var e,n=t;do{this.split(n,this.tmp),e=(n=(n=this.imulK(n)).iadd(this.tmp)).bitLength()}while(e>this.n);var i=e0?n.isub(this.p):void 0!==n.strip?n.strip():n._strip(),n},b.prototype.split=function(t,e){t.iushrn(this.n,0,e)},b.prototype.imulK=function(t){return t.imul(this.k)},r(y,b),y.prototype.split=function(t,e){for(var n=Math.min(t.length,9),i=0;i>>22,r=o}r>>>=22,t.words[i-10]=r,0===r&&t.length>10?t.length-=10:t.length-=9},y.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,n=0;n>>=26,t.words[n]=r,e=i}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function(t){if(v[t])return v[t];var e;if("k256"===t)e=new y;else if("p224"===t)e=new w;else if("p192"===t)e=new x;else{if("p25519"!==t)throw new Error("Unknown prime "+t);e=new _}return v[t]=e,e},M.prototype._verify1=function(t){i(0===t.negative,"red works only with positives"),i(t.red,"red works only with red numbers")},M.prototype._verify2=function(t,e){i(0==(t.negative|e.negative),"red works only with positives"),i(t.red&&t.red===e.red,"red works only with red numbers")},M.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},M.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},M.prototype.add=function(t,e){this._verify2(t,e);var n=t.add(e);return n.cmp(this.m)>=0&&n.isub(this.m),n._forceRed(this)},M.prototype.iadd=function(t,e){this._verify2(t,e);var n=t.iadd(e);return n.cmp(this.m)>=0&&n.isub(this.m),n},M.prototype.sub=function(t,e){this._verify2(t,e);var n=t.sub(e);return n.cmpn(0)<0&&n.iadd(this.m),n._forceRed(this)},M.prototype.isub=function(t,e){this._verify2(t,e);var n=t.isub(e);return n.cmpn(0)<0&&n.iadd(this.m),n},M.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},M.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},M.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},M.prototype.isqr=function(t){return this.imul(t,t.clone())},M.prototype.sqr=function(t){return this.mul(t,t)},M.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(i(e%2==1),3===e){var n=this.m.add(new o(1)).iushrn(2);return this.pow(t,n)}for(var r=this.m.subn(1),s=0;!r.isZero()&&0===r.andln(1);)s++,r.iushrn(1);i(!r.isZero());var a=new o(1).toRed(this),l=a.redNeg(),c=this.m.subn(1).iushrn(1),u=this.m.bitLength();for(u=new o(2*u*u).toRed(this);0!==this.pow(u,c).cmp(l);)u.redIAdd(l);for(var h=this.pow(u,r),d=this.pow(t,r.addn(1).iushrn(1)),f=this.pow(t,r),p=s;0!==f.cmp(a);){for(var g=f,m=0;0!==g.cmp(a);m++)g=g.redSqr();i(m=0;i--){for(var c=e.words[i],u=l-1;u>=0;u--){var h=c>>u&1;r!==n[0]&&(r=this.sqr(r)),0!==h||0!==s?(s<<=1,s|=h,(4===++a||0===i&&0===u)&&(r=this.mul(r,n[s]),a=0,s=0)):a=0}l=26}return r},M.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},M.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new S(t)},r(S,M),S.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},S.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},S.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var n=t.imul(e),i=n.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),r=n.isub(i).iushrn(this.shift),o=r;return r.cmp(this.m)>=0?o=r.isub(this.m):r.cmpn(0)<0&&(o=r.iadd(this.m)),o._forceRed(this)},S.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var n=t.mul(e),i=n.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),r=n.isub(i).iushrn(this.shift),s=r;return r.cmp(this.m)>=0?s=r.isub(this.m):r.cmpn(0)<0&&(s=r.iadd(this.m)),s._forceRed(this)},S.prototype.invm=function(t){return this.imod(t._invmp(this.m).mul(this.r2))._forceRed(this)}}(t,this)}).call(this,n("YuTi")(t))},gPAo:function(t,e){function n(t){return t}function i(t,e,i,r,o){this._old=t,this._new=e,this._oldKeyGetter=i||n,this._newKeyGetter=r||n,this.context=o}function r(t,e,n,i,r){for(var o=0;o=0;){var l=s.indexOf("|}"),c=s.substr(a+"{marker".length,l-a-"{marker".length);c.indexOf("sub")>-1?i["marker"+c]={textWidth:4,textHeight:4,textBorderRadius:2,textBackgroundColor:e[c],textOffset:[3,0]}:i["marker"+c]={textWidth:10,textHeight:10,textBorderRadius:5,textBackgroundColor:e[c]},a=(s=s.substr(l+1)).indexOf("{marker")}var u=n.getModel("textStyle"),h=u.get("fontSize"),d=n.get("textLineHeight");null==d&&(d=Math.round(3*h/2)),this.el=new r({style:o.setTextStyle({},u,{rich:i,text:t,textBackgroundColor:n.get("backgroundColor"),textBorderRadius:n.get("borderRadius"),textFill:n.get("textStyle.color"),textPadding:n.get("padding"),textLineHeight:d}),z:n.get("z")}),this._zr.add(this.el);var f=this;this.el.on("mouseover",(function(){f._enterable&&(clearTimeout(f._hideTimeout),f._show=!0),f._inContent=!0})),this.el.on("mouseout",(function(){f._enterable&&f._show&&f.hideLater(f._hideDelay),f._inContent=!1}))},setEnterable:function(t){this._enterable=t},getSize:function(){var t=this.el.getBoundingRect();return[t.width,t.height]},moveTo:function(t,e){if(this.el){var n=this._styleCoord;s(n,this._zr,t,e),this.el.attr("position",[n[0],n[1]])}},hide:function(){this.el&&this.el.hide(),this._show=!1},hideLater:function(t){!this._show||this._inContent&&this._enterable||(t?(this._hideDelay=t,this._show=!1,this._hideTimeout=setTimeout(i.bind(this.hide,this),t)):this.hide())},isShow:function(){return this._show},dispose:function(){clearTimeout(this._hideTimeout),this.el&&this._zr.remove(this.el)},getOuterSize:function(){var t=this.getSize();return{width:t[0],height:t[1]}}};var l=a;t.exports=l},h5AQ:function(t,e,n){n("hRZT"),t.exports=n("WEpk").Number.isInteger},h7HQ:function(t,e,n){var i=n("y+Vt"),r=n("T6xi"),o=i.extend({type:"polygon",shape:{points:null,smooth:!1,smoothConstraint:null},buildPath:function(t,e){r.buildPath(t,e,!0)}});t.exports=o},h8O9:function(t,e,n){var i=n("bYtY").map,r=n("zM3Q"),o=n("7hqr").isDimensionStacked;t.exports=function(t){return{seriesType:t,plan:r(),reset:function(t){var e=t.getData(),n=t.coordinateSystem,r=t.pipelineContext.large;if(n){var s=i(n.dimensions,(function(t){return e.mapDimension(t)})).slice(0,2),a=s.length,l=e.getCalculationInfo("stackResultDimension");return o(e,s[0])&&(s[0]=l),o(e,s[1])&&(s[1]=l),a&&{progress:function(t,e){for(var i=t.end-t.start,o=r&&new Float32Array(i*a),l=t.start,c=0,u=[],h=[];l=n&&t<=i},containData:function(t){return this.scale.contain(t)},getExtent:function(){return this._extent.slice()},getPixelPrecision:function(t){return l(t||this.scale.getExtent(),this._extent)},setExtent:function(t,e){var n=this._extent;n[0]=t,n[1]=e},dataToCoord:function(t,e){var n=this._extent,i=this.scale;return t=i.normalize(t),this.onBand&&"ordinal"===i.type&&m(n=n.slice(),i.count()),a(t,p,n,e)},coordToData:function(t,e){var n=this._extent,i=this.scale;this.onBand&&"ordinal"===i.type&&m(n=n.slice(),i.count());var r=a(t,n,p,e);return this.scale.scale(r)},pointToData:function(t,e){},getTicksCoords:function(t){var e=(t=t||{}).tickModel||this.getTickModel(),n=h(this,e).ticks,i=o(n,(function(t){return{coord:this.dataToCoord(t),tickValue:t}}),this);return function(t,e,n,i){var o=e.length;if(!t.onBand||n||!o)return;var s,a,l=t.getExtent();if(1===o)e[0].coord=l[0],s=e[1]={coord:l[0]};else{var u=e[o-1].tickValue-e[0].tickValue,h=(e[o-1].coord-e[0].coord)/u;r(e,(function(t){t.coord-=h/2}));var d=t.scale.getExtent();a=1+d[1]-e[o-1].tickValue,s={coord:e[o-1].coord+h*a},e.push(s)}var f=l[0]>l[1];p(e[0].coord,l[0])&&(i?e[0].coord=l[0]:e.shift());i&&p(l[0],e[0].coord)&&e.unshift({coord:l[0]});p(l[1],s.coord)&&(i?s.coord=l[1]:e.pop());i&&p(s.coord,l[1])&&e.push({coord:l[1]});function p(t,e){return t=c(t),e=c(e),f?t>e:t0&&t<100||(t=5);var e=this.scale.getMinorTicks(t);return o(e,(function(t){return o(t,(function(t){return{coord:this.dataToCoord(t),tickValue:t}}),this)}),this)},getViewLabels:function(){return d(this).labels},getLabelModel:function(){return this.model.getModel("axisLabel")},getTickModel:function(){return this.model.getModel("axisTick")},getBandWidth:function(){var t=this._extent,e=this.scale.getExtent(),n=e[1]-e[0]+(this.onBand?1:0);0===n&&(n=1);var i=Math.abs(t[1]-t[0]);return Math.abs(i)/n},isHorizontal:null,getRotate:null,calculateCategoryInterval:function(){return f(this)}};var v=g;t.exports=v},hNWo:function(t,e,n){var i=n("ProS"),r=n("bYtY"),o=n("Qxkt"),s=n("4NO4").isNameSpecified,a=n("Kagy").legend.selector,l={all:{type:"all",title:r.clone(a.all)},inverse:{type:"inverse",title:r.clone(a.inverse)}},c=i.extendComponentModel({type:"legend.plain",dependencies:["series"],layoutMode:{type:"box",ignoreSize:!0},init:function(t,e,n){this.mergeDefaultAndTheme(t,n),t.selected=t.selected||{},this._updateSelector(t)},mergeOption:function(t){c.superCall(this,"mergeOption",t),this._updateSelector(t)},_updateSelector:function(t){var e=t.selector;!0===e&&(e=t.selector=["all","inverse"]),r.isArray(e)&&r.each(e,(function(t,n){r.isString(t)&&(t={type:t}),e[n]=r.merge(t,l[t.type])}))},optionUpdated:function(){this._updateData(this.ecModel);var t=this._data;if(t[0]&&"single"===this.get("selectedMode")){for(var e=!1,n=0;n=0},getOrient:function(){return"vertical"===this.get("orient")?{index:1,name:"vertical"}:{index:0,name:"horizontal"}},defaultOption:{zlevel:0,z:4,show:!0,orient:"horizontal",left:"center",top:0,align:"auto",backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderRadius:0,borderWidth:0,padding:5,itemGap:10,itemWidth:25,itemHeight:14,inactiveColor:"#ccc",inactiveBorderColor:"#ccc",itemStyle:{borderWidth:0},textStyle:{color:"#333"},selectedMode:!0,selector:!1,selectorLabel:{show:!0,borderRadius:10,padding:[3,5,3,5],fontSize:12,fontFamily:" sans-serif",color:"#666",borderWidth:1,borderColor:"#666"},emphasis:{selectorLabel:{show:!0,color:"#eee",backgroundColor:"#666"}},selectorPosition:"auto",selectorItemGap:7,selectorButtonGap:10,tooltip:{show:!1}}}),u=c;t.exports=u},hOwI:function(t,e){var n=Math.log(2);function i(t,e,r,o,s,a){var l=o+"-"+s,c=t.length;if(a.hasOwnProperty(l))return a[l];if(1===e){var u=Math.round(Math.log((1< */ +var i=n("tjlA"),r=i.Buffer;function o(t,e){for(var n in t)e[n]=t[n]}function s(t,e,n){return r(t,e,n)}r.from&&r.alloc&&r.allocUnsafe&&r.allocUnsafeSlow?t.exports=i:(o(i,e),e.Buffer=s),s.prototype=Object.create(r.prototype),o(r,s),s.from=function(t,e,n){if("number"==typeof t)throw new TypeError("Argument must not be a number");return r(t,e,n)},s.alloc=function(t,e,n){if("number"!=typeof t)throw new TypeError("Argument must be a number");var i=r(t);return void 0!==e?"string"==typeof n?i.fill(e,n):i.fill(e):i.fill(0),i},s.allocUnsafe=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return r(t)},s.allocUnsafeSlow=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return i.SlowBuffer(t)}},hyiK:function(t,e){t.exports=function(t,e,n,i,r,o){if(o>e&&o>i||or?s:0}},i0SQ:function(t,e,n){t.exports=n.p+"73ca62c494dfdfee1f16213f88d5b3bc.js"},i38C:function(t,e,n){n("Tghj").__DEV__;var i=n("bYtY"),r=i.createHashMap,o=(i.retrieve,i.each);function s(t){this.coordSysName=t,this.coordSysDims=[],this.axisMap=r(),this.categoryAxisMap=r(),this.firstCategoryDimIndex=null}var a={cartesian2d:function(t,e,n,i){var r=t.getReferringComponents("xAxis")[0],o=t.getReferringComponents("yAxis")[0];e.coordSysDims=["x","y"],n.set("x",r),n.set("y",o),l(r)&&(i.set("x",r),e.firstCategoryDimIndex=0),l(o)&&(i.set("y",o),e.firstCategoryDimIndex,e.firstCategoryDimIndex=1)},singleAxis:function(t,e,n,i){var r=t.getReferringComponents("singleAxis")[0];e.coordSysDims=["single"],n.set("single",r),l(r)&&(i.set("single",r),e.firstCategoryDimIndex=0)},polar:function(t,e,n,i){var r=t.getReferringComponents("polar")[0],o=r.findAxisModel("radiusAxis"),s=r.findAxisModel("angleAxis");e.coordSysDims=["radius","angle"],n.set("radius",o),n.set("angle",s),l(o)&&(i.set("radius",o),e.firstCategoryDimIndex=0),l(s)&&(i.set("angle",s),null==e.firstCategoryDimIndex&&(e.firstCategoryDimIndex=1))},geo:function(t,e,n,i){e.coordSysDims=["lng","lat"]},parallel:function(t,e,n,i){var r=t.ecModel,s=r.getComponent("parallel",t.get("parallelIndex")),a=e.coordSysDims=s.dimensions.slice();o(s.parallelAxisIndex,(function(t,o){var s=r.getComponent("parallelAxis",t),c=a[o];n.set(c,s),l(s)&&null==e.firstCategoryDimIndex&&(i.set(c,s),e.firstCategoryDimIndex=o)}))}};function l(t){return"category"===t.get("type")}e.getCoordSysInfoBySeries=function(t){var e=t.get("coordinateSystem"),n=new s(e),i=a[e];if(i)return i(t,n,n.axisMap,n.categoryAxisMap),n}},i3TD:function(t,e,n){t.exports=n.p+"4939c180f8a44b5986493cfbb9b9d787.js"},i5UE:function(t,e,n){"use strict";var i=n("w8CP"),r=n("tSWc");function o(){if(!(this instanceof o))return new o;r.call(this),this.h=[3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428]}i.inherits(o,r),t.exports=o,o.blockSize=1024,o.outSize=384,o.hmacStrength=192,o.padLength=128,o.prototype._digest=function(t){return"hex"===t?i.toHex32(this.h.slice(0,12),"big"):i.split32(this.h.slice(0,12),"big")}},iDd2:function(t,e,n){t.exports=n.p+"6e9ca56e0fa3e784eab3da45f8d0d8ac.js"},iEkD:function(t,e,n){t.exports=n.p+"41251dac588b04bea51a664d331ff40a.js"},"iIk/":function(t,e,n){t.exports=n.p+"2f985fd2d1b0603c0cd825f7e9b4218d.js"},iKJY:function(t,e,n){"use strict";(function(e){var i=Object.keys||function(t){var e=[];for(var n in t)e.push(n);return e};t.exports=a;const r=n("aKBX"),o=n("m9xF");n("P7XM")(a,r);{const t=i(o.prototype);for(var s=0;s=0?h():u=setTimeout(h,-r),l=i};return d.clear=function(){u&&(clearTimeout(u),u=null)},d.debounceNextCall=function(t){a=t},d}e.throttle=r,e.createOrUpdate=function(t,e,o,s){var a=t[e];if(a){var l=a[n]||a,c=a["\0__throttleType"];if(a[i]!==o||c!==s){if(null==o||!s)return t[e]=l;(a=t[e]=r(l,o,"debounce"===s))[n]=l,a["\0__throttleType"]=s,a[i]=o}return a}},e.clear=function(t,e){var i=t[e];i&&i[n]&&(t[e]=i[n])}},iMG9:function(t,e,n){t.exports=n.p+"c23cf8ce8d6d5a73803c971390656875.js"},iQjd:function(t,e,n){t.exports=n.p+"ab16c1237e6e04bbf0024ee2bae42130.js"},iRjW:function(t,e,n){var i=n("bYtY"),r=n("Yl7c").parseClassType,o=0;e.getUID=function(t){return[t||"",o++,Math.random().toFixed(5)].join("_")},e.enableSubTypeDefaulter=function(t){var e={};return t.registerSubTypeDefaulter=function(t,n){t=r(t),e[t.main]=n},t.determineSubType=function(n,i){var o=i.type;if(!o){var s=r(n).main;t.hasSubTypes(n)&&e[s]&&(o=e[s](i))}return o},t},e.enableTopologicalTravel=function(t,e){function n(t,e){return t[e]||(t[e]={predecessor:[],successor:[]}),t[e]}t.topologicalTravel=function(t,r,o,s){if(t.length){var a=function(t){var r={},o=[];return i.each(t,(function(s){var a=n(r,s),l=function(t,e){var n=[];return i.each(t,(function(t){i.indexOf(e,t)>=0&&n.push(t)})),n}(a.originalDeps=e(s),t);a.entryCount=l.length,0===a.entryCount&&o.push(s),i.each(l,(function(t){i.indexOf(a.predecessor,t)<0&&a.predecessor.push(t);var e=n(r,t);i.indexOf(e.successor,t)<0&&e.successor.push(s)}))})),{graph:r,noEntryList:o}}(r),l=a.graph,c=a.noEntryList,u={};for(i.each(t,(function(t){u[t]=!0}));c.length;){var h=c.pop(),d=l[h],f=!!u[h];f&&(o.call(s,h,d.originalDeps.slice()),delete u[h]),i.each(d.successor,f?g:p)}i.each(u,(function(){throw new Error("Circle dependency may exists")}))}function p(t){l[t].entryCount--,0===l[t].entryCount&&c.push(t)}function g(t){u[t]=!0,p(t)}}}},iScd:function(t,e,n){t.exports=n.p+"dabc32896dd99d88e7b0f27f99d9f3d1.js"},iXHM:function(t,e){var n="";"undefined"!=typeof navigator&&(n=navigator.platform||"");var i={color:["#c23531","#2f4554","#61a0a8","#d48265","#91c7ae","#749f83","#ca8622","#bda29a","#6e7074","#546570","#c4ccd3"],gradientColor:["#f6efa6","#d88273","#bf444c"],textStyle:{fontFamily:n.match(/^Win/)?"Microsoft YaHei":"sans-serif",fontSize:12,fontStyle:"normal",fontWeight:"normal"},blendMode:null,animation:"auto",animationDuration:1e3,animationDurationUpdate:300,animationEasing:"exponentialOut",animationEasingUpdate:"cubicOut",animationThreshold:2e3,progressiveThreshold:3e3,progressive:400,hoverLayerThreshold:3e3,useUTC:!1};t.exports=i},iXp4:function(t,e,n){var i=n("ItGF"),r=[["shadowBlur",0],["shadowColor","#000"],["shadowOffsetX",0],["shadowOffsetY",0]];t.exports=function(t){return i.browser.ie&&i.browser.version>=11?function(){var e,n=this.__clipPaths,i=this.style;if(n)for(var o=0;oe[1]&&(e[1]=t[1]),l.prototype.setExtent.call(this,e[0],e[1])},getInterval:function(){return this._interval},setInterval:function(t){this._interval=t,this._niceExtent=this._extent.slice(),this._intervalPrecision=s.getIntervalPrecision(t)},getTicks:function(t){var e=this._interval,n=this._extent,i=this._niceExtent,r=this._intervalPrecision,o=[];if(!e)return o;n[0]1e4)return[];var l=o.length?o[o.length-1]:i[1];return n[1]>l&&(t?o.push(a(l+e,r)):o.push(n[1])),o},getMinorTicks:function(t){for(var e=this.getTicks(!0),n=[],r=this.getExtent(),o=1;or[0]&&h0;)i*=10;var r=[o.round(d(e[0]/i)*i),o.round(h(e[1]/i)*i)];this._interval=i,this._niceExtent=r}},niceExtent:function(t){l.niceExtent.call(this,t);var e=this._originalScale;e.__fixMin=t.fixMin,e.__fixMax=t.fixMax}});function m(t,e){return u(t,c(e))}i.each(["contain","normalize"],(function(t){g.prototype[t]=function(e){return e=p(e)/p(this.base),a[t].call(this,e)}})),g.create=function(){return new g};var v=g;t.exports=v},jR9x:function(t,e,n){t.exports=n.p+"dbfe76a5b35e105c53ee5e24e7aecea9.js"},jTL6:function(t,e,n){var i=n("y+Vt").extend({type:"arc",shape:{cx:0,cy:0,r:0,startAngle:0,endAngle:2*Math.PI,clockwise:!0},style:{stroke:"#000",fill:null},buildPath:function(t,e){var n=e.cx,i=e.cy,r=Math.max(e.r,0),o=e.startAngle,s=e.endAngle,a=e.clockwise,l=Math.cos(o),c=Math.sin(o);t.moveTo(l*r+n,c*r+i),t.arc(n,i,r,o,s,!a)}});t.exports=i},jWH0:function(t,e,n){t.exports=n.p+"c137d4af8541a1abf4598a9760ef6a74.js"},jZtN:function(t,e,n){t.exports=n.p+"3e6a7169aea2691d9a23761b355fddc1.js"},"jba/":function(t,e,n){t.exports=n.p+"255c622fc1034b901b1b59510c5fee4a.js"},jebd:function(t,e,n){t.exports=n.p+"318f90759f2ff0d2a437350e87578172.js"},jhAW:function(t,e,n){t.exports=n.p+"9142b3f5bf59ae79b69c505c6964f395.js"},jkPA:function(t,e,n){var i=n("bYtY"),r=i.createHashMap,o=i.isObject,s=i.map;function a(t){this.categories=t.categories||[],this._needCollect=t.needCollect,this._deduplication=t.deduplication,this._map}a.createByAxisModel=function(t){var e=t.option,n=e.data,i=n&&s(n,u);return new a({categories:i,needCollect:!i,deduplication:!1!==e.dedplication})};var l=a.prototype;function c(t){return t._map||(t._map=r(t.categories))}function u(t){return o(t)&&null!=t.value?t.value:t+""}l.getOrdinal=function(t){return c(this).get(t)},l.parseAndCollect=function(t){var e,n=this._needCollect;if("string"!=typeof t&&!n)return t;if(n&&!this._deduplication)return e=this.categories.length,this.categories[e]=t,e;var i=c(this);return null==(e=i.get(t))&&(n?(e=this.categories.length,this.categories[e]=t,i.set(t,e)):e=NaN),e};var h=a;t.exports=h},"jsU+":function(t,e,n){var i=n("ProS"),r=n("bYtY"),o=n("IUWy"),s=i.extendComponentModel({type:"toolbox",layoutMode:{type:"box",ignoreSize:!0},optionUpdated:function(){s.superApply(this,"optionUpdated",arguments),r.each(this.option.feature,(function(t,e){var n=o.get(e);n&&r.merge(t,n.defaultOption)}))},defaultOption:{show:!0,z:6,zlevel:0,orient:"horizontal",left:"right",top:"top",backgroundColor:"transparent",borderColor:"#ccc",borderRadius:0,borderWidth:0,padding:5,itemSize:15,itemGap:8,showTitle:!0,iconStyle:{borderColor:"#666",color:"none"},emphasis:{iconStyle:{borderColor:"#3E98C5"}},tooltip:{show:!1}}}),a=s;t.exports=a},jtI2:function(t,e,n){n("SMc4");var i=n("bLfw").extend({type:"grid",dependencies:["xAxis","yAxis"],layoutMode:"box",coordinateSystem:null,defaultOption:{show:!1,zlevel:0,z:0,left:"10%",top:60,right:"10%",bottom:60,containLabel:!1,backgroundColor:"rgba(0,0,0,0)",borderWidth:1,borderColor:"#ccc"}});t.exports=i},"k+aG":function(t,e,n){"use strict";var i=n("hwdV").Buffer,r=n("M0o5").Transform;function o(t){r.call(this),this._block=i.allocUnsafe(t),this._blockSize=t,this._blockOffset=0,this._length=[0,0,0,0],this._finalized=!1}n("P7XM")(o,r),o.prototype._transform=function(t,e,n){var i=null;try{this.update(t,e)}catch(t){i=t}n(i)},o.prototype._flush=function(t){var e=null;try{this.push(this.digest())}catch(t){e=t}t(e)},o.prototype.update=function(t,e){if(function(t,e){if(!i.isBuffer(t)&&"string"!=typeof t)throw new TypeError(e+" must be a string or a buffer")}(t,"Data"),this._finalized)throw new Error("Digest already called");i.isBuffer(t)||(t=i.from(t,e));for(var n=this._block,r=0;this._blockOffset+t.length-r>=this._blockSize;){for(var o=this._blockOffset;o0;++s)this._length[s]+=a,(a=this._length[s]/4294967296|0)>0&&(this._length[s]-=4294967296*a);return this},o.prototype._update=function(){throw new Error("_update is not implemented")},o.prototype.digest=function(t){if(this._finalized)throw new Error("Digest already called");this._finalized=!0;var e=this._digest();void 0!==t&&(e=e.toString(t)),this._block.fill(0),this._blockOffset=0;for(var n=0;n<4;++n)this._length[n]=0;return e},o.prototype._digest=function(){throw new Error("_digest is not implemented")},t.exports=o},k9D9:function(t,e){e.SOURCE_FORMAT_ORIGINAL="original",e.SOURCE_FORMAT_ARRAY_ROWS="arrayRows",e.SOURCE_FORMAT_OBJECT_ROWS="objectRows",e.SOURCE_FORMAT_KEYED_COLUMNS="keyedColumns",e.SOURCE_FORMAT_UNKNOWN="unknown",e.SOURCE_FORMAT_TYPED_ARRAY="typedArray",e.SERIES_LAYOUT_BY_COLUMN="column",e.SERIES_LAYOUT_BY_ROW="row"},kDyi:function(t,e){t.exports=function(t){var e=t.findComponents({mainType:"legend"});e&&e.length&&t.filterSeries((function(t){for(var n=0;n2?"one of ".concat(e," ").concat(t.slice(0,n-1).join(", "),", or ")+t[n-1]:2===n?"one of ".concat(e," ").concat(t[0]," or ").concat(t[1]):"of ".concat(e," ").concat(t[0])}return"of ".concat(e," ").concat(String(t))}r("ERR_INVALID_OPT_VALUE",(function(t,e){return'The value "'+e+'" is invalid for option "'+t+'"'}),TypeError),r("ERR_INVALID_ARG_TYPE",(function(t,e,n){var i,r,s,a;if("string"==typeof e&&(r="not ",e.substr(!s||s<0?0:+s,r.length)===r)?(i="must not be",e=e.replace(/^not /,"")):i="must be",function(t,e,n){return(void 0===n||n>t.length)&&(n=t.length),t.substring(n-e.length,n)===e}(t," argument"))a="The ".concat(t," ").concat(i," ").concat(o(e,"type"));else{var l=function(t,e,n){return"number"!=typeof n&&(n=0),!(n+e.length>t.length)&&-1!==t.indexOf(e,n)}(t,".")?"property":"argument";a='The "'.concat(t,'" ').concat(l," ").concat(i," ").concat(o(e,"type"))}return a+=". Received type ".concat(typeof n)}),TypeError),r("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),r("ERR_METHOD_NOT_IMPLEMENTED",(function(t){return"The "+t+" method is not implemented"})),r("ERR_STREAM_PREMATURE_CLOSE","Premature close"),r("ERR_STREAM_DESTROYED",(function(t){return"Cannot call "+t+" after a stream was destroyed"})),r("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),r("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),r("ERR_STREAM_WRITE_AFTER_END","write after end"),r("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),r("ERR_UNKNOWN_ENCODING",(function(t){return"Unknown encoding: "+t}),TypeError),r("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),t.exports.codes=i},kIKG:function(t,e,n){t.exports=n.p+"2322c0d73cf4169df003976804566079.js"},"kVK+":function(t,e){ +/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */ +e.read=function(t,e,n,i,r){var o,s,a=8*r-i-1,l=(1<>1,u=-7,h=n?r-1:0,d=n?-1:1,f=t[e+h];for(h+=d,o=f&(1<<-u)-1,f>>=-u,u+=a;u>0;o=256*o+t[e+h],h+=d,u-=8);for(s=o&(1<<-u)-1,o>>=-u,u+=i;u>0;s=256*s+t[e+h],h+=d,u-=8);if(0===o)o=1-c;else{if(o===l)return s?NaN:1/0*(f?-1:1);s+=Math.pow(2,i),o-=c}return(f?-1:1)*s*Math.pow(2,o-i)},e.write=function(t,e,n,i,r,o){var s,a,l,c=8*o-r-1,u=(1<>1,d=23===r?Math.pow(2,-24)-Math.pow(2,-77):0,f=i?0:o-1,p=i?1:-1,g=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(a=isNaN(e)?1:0,s=u):(s=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-s))<1&&(s--,l*=2),(e+=s+h>=1?d/l:d*Math.pow(2,1-h))*l>=2&&(s++,l/=2),s+h>=u?(a=0,s=u):s+h>=1?(a=(e*l-1)*Math.pow(2,r),s+=h):(a=e*Math.pow(2,h-1)*Math.pow(2,r),s=0));r>=8;t[n+f]=255&a,f+=p,a/=256,r-=8);for(s=s<0;t[n+f]=255&s,f+=p,s/=256,c-=8);t[n+f-p]|=128*g}},"kWk+":function(t,e,n){"use strict";n.r(e);var i=n("oCYn");const r=i.default.prototype.$isServer,o=(r||Number(document.documentMode),!r&&document.addEventListener?function(t,e,n){t&&e&&n&&t.addEventListener(e,n,!1)}:function(t,e,n){t&&e&&n&&t.attachEvent("on"+e,n)});!r&&document.removeEventListener;const s=[],a="@@clickoutsideContext";let l,c=0;function u(t,e,n){return function(i={},r={}){!(n&&n.context&&i.target&&r.target)||t.contains(i.target)||t.contains(r.target)||t===i.target||n.context.popperElm&&(n.context.popperElm.contains(i.target)||n.context.popperElm.contains(r.target))||(e.expression&&t[a].methodName&&n.context[t[a].methodName]?n.context[t[a].methodName]():t[a].bindingFn&&t[a].bindingFn())}}!i.default.prototype.$isServer&&o(document,"mousedown",t=>l=t),!i.default.prototype.$isServer&&o(document,"mouseup",t=>{s.forEach(e=>e[a].documentHandler(t,l))});e.default={bind(t,e,n){s.push(t);const i=c++;t[a]={id:i,documentHandler:u(t,e,n),methodName:e.expression,bindingFn:e.value}},update(t,e,n){t[a].documentHandler=u(t,e,n),t[a].methodName=e.expression,t[a].bindingFn=e.value},unbind(t){let e=s.length;for(let n=0;n/,next:"start"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+s+")(\\.)("+s+")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:s},{regex:"",token:"empty",next:"no_regex"}],start:[r.getStartRule("doc-start"),c("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],default_parameter:[{token:"string",regex:"'(?=.)",push:[{token:"string",regex:"'|$",next:"pop"},{include:"qstring"}]},{token:"string",regex:'"(?=.)',push:[{token:"string",regex:'"|$',next:"pop"},{include:"qqstring"}]},{token:"constant.language",regex:"null|Infinity|NaN|undefined"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:"punctuation.operator",regex:",",next:"function_arguments"},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],function_arguments:[c("function_arguments"),{token:"variable.parameter",regex:s},{token:"punctuation.operator",regex:","},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:n},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:n},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]},t&&t.noES6||(this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(t,e,n){if(this.next="{"==t?this.nextState:"","{"==t&&n.length)n.unshift("start",e);else if("}"==t&&n.length&&(n.shift(),this.next=n.shift(),-1!=this.next.indexOf("string")||-1!=this.next.indexOf("jsx")))return"paren.quasi.end";return"{"==t?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:n},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]},{token:["variable.parameter","text"],regex:"("+s+")(\\s*)(?=\\=>)"},{token:"paren.lparen",regex:"(\\()(?=.+\\s*=>)",next:"function_arguments"},{token:"variable.language",regex:"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b"}),this.$rules.function_arguments.unshift({token:"keyword.operator",regex:"=",next:"default_parameter"},{token:"keyword.operator",regex:"\\.{3}"}),this.$rules.property.unshift({token:"support.function",regex:"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()"},{token:"constant.language",regex:"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b"}),t&&0==t.jsx||l.call(this)),this.embedRules(r,"doc-",[r.getEndRule("no_regex")]),this.normalizeRules()};function l(){var t=s.replace("\\d","\\d\\-"),e={onMatch:function(t,e,n){var i="/"==t.charAt(1)?2:1;return 1==i?(e!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++):2==i&&e==this.nextState&&(n[1]--,(!n[1]||n[1]<0)&&(n.shift(),n.shift())),[{type:"meta.tag.punctuation."+(1==i?"":"end-")+"tag-open.xml",value:t.slice(0,i)},{type:"meta.tag.tag-name.xml",value:t.substr(i)}]},regex:"",onMatch:function(t,e,n){return e==n[0]&&n.shift(),2==t.length&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:t}]},nextState:"jsx"},n,c("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:t},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},e],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function c(t){return[{token:"comment",regex:/\/\*/,next:[r.getTagRule(),{token:"comment",regex:"\\*\\/",next:t||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[r.getTagRule(),{token:"comment",regex:"$|^",next:t||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}i.inherits(a,o),e.JavaScriptHighlightRules=a})),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],(function(t,e,n){"use strict";var i=t("../range").Range,r=function(){};(function(){this.checkOutdent=function(t,e){return!!/^\s+$/.test(t)&&/^\s*\}/.test(e)},this.autoOutdent=function(t,e){var n=t.getLine(e).match(/^(\s*\})/);if(!n)return 0;var r=n[1].length,o=t.findMatchingBracket({row:e,column:r});if(!o||o.row==e)return 0;var s=this.$getIndent(t.getLine(o.row));t.replace(new i(e,0,e,r-1),s)},this.$getIndent=function(t){return t.match(/^\s*/)[0]}}).call(r.prototype),e.MatchingBraceOutdent=r})),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],(function(t,e,n){"use strict";var i=t("../../lib/oop"),r=t("../../range").Range,o=t("./fold_mode").FoldMode,s=e.FoldMode=function(t){t&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+t.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+t.end)))};i.inherits(s,o),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(t,e,n){var i=t.getLine(n);if(this.singleLineBlockCommentRe.test(i)&&!this.startRegionRe.test(i)&&!this.tripleStarBlockCommentRe.test(i))return"";var r=this._getFoldWidgetBase(t,e,n);return!r&&this.startRegionRe.test(i)?"start":r},this.getFoldWidgetRange=function(t,e,n,i){var r,o=t.getLine(n);if(this.startRegionRe.test(o))return this.getCommentRegionBlock(t,o,n);if(r=o.match(this.foldingStartMarker)){var s=r.index;if(r[1])return this.openingBracketBlock(t,r[1],n,s);var a=t.getCommentFoldRange(n,s+r[0].length,1);return a&&!a.isMultiLine()&&(i?a=this.getSectionRange(t,n):"all"!=e&&(a=null)),a}if("markbegin"!==e&&(r=o.match(this.foldingStopMarker))){s=r.index+r[0].length;return r[1]?this.closingBracketBlock(t,r[1],n,s):t.getCommentFoldRange(n,s,-1)}},this.getSectionRange=function(t,e){for(var n=t.getLine(e),i=n.search(/\S/),o=e,s=n.length,a=e+=1,l=t.getLength();++ec)break;var u=this.getFoldWidgetRange(t,"all",e);if(u){if(u.start.row<=o)break;if(u.isMultiLine())e=u.end.row;else if(i==c)break}a=e}}return new r(o,s,a,t.getLine(a).length)},this.getCommentRegionBlock=function(t,e,n){for(var i=e.search(/\s*$/),o=t.getLength(),s=n,a=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,l=1;++ns)return new r(s,i,n,e.length)}}.call(s.prototype)})),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],(function(t,e,n){"use strict";var i=t("../lib/oop"),r=t("./text").Mode,o=t("./javascript_highlight_rules").JavaScriptHighlightRules,s=t("./matching_brace_outdent").MatchingBraceOutdent,a=t("../worker/worker_client").WorkerClient,l=t("./behaviour/cstyle").CstyleBehaviour,c=t("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=o,this.$outdent=new s,this.$behaviour=new l,this.foldingRules=new c};i.inherits(u,r),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$quotes={'"':'"',"'":"'","`":"`"},this.getNextLineIndent=function(t,e,n){var i=this.$getIndent(e),r=this.getTokenizer().getLineTokens(e,t),o=r.tokens,s=r.state;if(o.length&&"comment"==o[o.length-1].type)return i;if("start"==t||"no_regex"==t)(a=e.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/))&&(i+=n);else if("doc-start"==t){if("start"==s||"no_regex"==s)return"";var a;(a=e.match(/^\s*(\/?)\*/))&&(a[1]&&(i+=" "),i+="* ")}return i},this.checkOutdent=function(t,e,n){return this.$outdent.checkOutdent(e,n)},this.autoOutdent=function(t,e,n){this.$outdent.autoOutdent(e,n)},this.createWorker=function(t){var e=new a(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return e.attachToDocument(t.getDocument()),e.on("annotate",(function(e){t.setAnnotations(e.data)})),e.on("terminate",(function(){t.clearAnnotations()})),e},this.$id="ace/mode/javascript",this.snippetFileId="ace/snippets/javascript"}.call(u.prototype),e.Mode=u})),ace.require(["ace/mode/javascript"],(function(e){t&&(t.exports=e)}))}).call(this,n("YuTi")(t))},kkJg:function(t,e,n){t.exports=n.p+"c856709d8ff07b9e3a72f0fd736437a5.js"},kqlA:function(t,e,n){(function(e){const{Transform:i}=n("45ke");t.exports=t=>class n extends i{constructor(e,n,i,r){super(r),this._rate=e,this._capacity=n,this._delimitedSuffix=i,this._options=r,this._state=new t,this._state.initialize(e,n),this._finalized=!1}_transform(t,e,n){let i=null;try{this.update(t,e)}catch(t){i=t}n(i)}_flush(){}_read(t){this.push(this.squeeze(t))}update(t,n){if(!e.isBuffer(t)&&"string"!=typeof t)throw new TypeError("Data must be a string or a buffer");if(this._finalized)throw new Error("Squeeze already called");return e.isBuffer(t)||(t=e.from(t,n)),this._state.absorb(t),this}squeeze(t,e){this._finalized||(this._finalized=!0,this._state.absorbLastFewBits(this._delimitedSuffix));let n=this._state.squeeze(t);return void 0!==e&&(n=n.toString(e)),n}_resetState(){return this._state.initialize(this._rate,this._capacity),this}_clone(){const t=new n(this._rate,this._capacity,this._delimitedSuffix,this._options);return this._state.copy(t._state),t._finalized=this._finalized,t}}}).call(this,n("tjlA").Buffer)},kt2d:function(t,e,n){t.exports=n.p+"3792c6a2af140883f2b4a70d783d442f.js"},ktA1:function(t,e,n){t.exports=n.p+"acc7448b80728a73c9a4046b3ec4407f.js"},kwTB:function(t,e,n){t.exports=n.p+"1ebb1ecbb9887608ca7cddd19a57a8d2.js"},kx82:function(t,e,n){t.exports=n.p+"5094b30d2471cc7312746173d8a4bb25.js"},lE7J:function(t,e,n){var i=n("OELB"),r=i.round;function o(t){return i.getPrecisionSafe(t)+2}function s(t,e,n){t[e]=Math.max(Math.min(t[e],n[1]),n[0])}function a(t,e){!isFinite(t[0])&&(t[0]=e[0]),!isFinite(t[1])&&(t[1]=e[1]),s(t,0,e),s(t,1,e),t[0]>t[1]&&(t[0]=t[1])}e.intervalScaleNiceTicks=function(t,e,n,s){var l={},c=t[1]-t[0],u=l.interval=i.nice(c/e,!0);null!=n&&us&&(u=l.interval=s);var h=l.intervalPrecision=o(u);return a(l.niceTickExtent=[r(Math.ceil(t[0]/u)*u,h),r(Math.floor(t[1]/u)*u,h)],t),l},e.getIntervalPrecision=o,e.fixExtent=a},lF1L:function(t,e,n){"use strict";var i=n("fZJM"),r=n("DLvh"),o=n("86MQ"),s=o.assert,a=o.parseBytes,l=n("OA+I"),c=n("RKMU");function u(t){if(s("ed25519"===t,"only tested with ed25519 so far"),!(this instanceof u))return new u(t);t=r[t].curve,this.curve=t,this.g=t.g,this.g.precompute(t.n.bitLength()+1),this.pointClass=t.point().constructor,this.encodingLength=Math.ceil(t.n.bitLength()/8),this.hash=i.sha512}t.exports=u,u.prototype.sign=function(t,e){t=a(t);var n=this.keyFromSecret(e),i=this.hashInt(n.messagePrefix(),t),r=this.g.mul(i),o=this.encodePoint(r),s=this.hashInt(o,n.pubBytes(),t).mul(n.priv()),l=i.add(s).umod(this.curve.n);return this.makeSignature({R:r,S:l,Rencoded:o})},u.prototype.verify=function(t,e,n){t=a(t),e=this.makeSignature(e);var i=this.keyFromPublic(n),r=this.hashInt(e.Rencoded(),i.pubBytes(),t),o=this.g.mul(e.S());return e.R().add(i.pub().mul(r)).eq(o)},u.prototype.hashInt=function(){for(var t=this.hash(),e=0;ee+a&&s>i+a||st+a&&o>n+a||o0?this.tail.next=e:this.head=e,this.tail=e,++this.length}unshift(t){const e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length}shift(){if(0===this.length)return;const t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}clear(){this.head=this.tail=null,this.length=0}join(t){if(0===this.length)return"";for(var e=this.head,n=""+e.data;e=e.next;)n+=t+e.data;return n}concat(t){if(0===this.length)return s.alloc(0);const e=s.allocUnsafe(t>>>0);for(var n,i,r,o=this.head,a=0;o;)n=o.data,i=e,r=a,s.prototype.copy.call(n,i,r),a+=o.data.length,o=o.next;return e}consume(t,e){var n;return tr.length?r.length:t;if(o===r.length?i+=r:i+=r.slice(0,t),0===(t-=o)){o===r.length?(++n,e.next?this.head=e.next:this.head=this.tail=null):(this.head=e,e.data=r.slice(o));break}++n}return this.length-=n,i}_getBuffer(t){const e=s.allocUnsafe(t);var n=this.head,i=1;for(n.data.copy(e),t-=n.data.length;n=n.next;){const r=n.data,o=t>r.length?r.length:t;if(r.copy(e,e.length-t,0,o),0===(t-=o)){o===r.length?(++i,n.next?this.head=n.next:this.head=this.tail=null):(this.head=n,n.data=r.slice(o));break}++i}return this.length-=i,e}[l](t,e){return a(this,r(r({},e),{},{depth:0,customInspect:!1}))}}},lv7e:function(t,e,n){t.exports=n.p+"baf9051837c09b438b0e7d1e09b231e3.js"},lxWr:function(t,e,n){t.exports=n.p+"bae95bdb1bbcc0969e0e40fb72539df3.js"},lygG:function(t,e,n){t.exports=n.p+"fd7d0e7d961590c139ed4e02aa7ca536.js"},m1Sz:function(t,e,n){"use strict";var i=n("9gtR").Buffer,r=n(8);t.exports=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.head=null,this.tail=null,this.length=0}return t.prototype.push=function(t){var e={data:t,next:null};this.length>0?this.tail.next=e:this.head=e,this.tail=e,++this.length},t.prototype.unshift=function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length},t.prototype.shift=function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}},t.prototype.clear=function(){this.head=this.tail=null,this.length=0},t.prototype.join=function(t){if(0===this.length)return"";for(var e=this.head,n=""+e.data;e=e.next;)n+=t+e.data;return n},t.prototype.concat=function(t){if(0===this.length)return i.alloc(0);for(var e,n,r,o=i.allocUnsafe(t>>>0),s=this.head,a=0;s;)e=s.data,n=o,r=a,e.copy(n,r),a+=s.data.length,s=s.next;return o},t}(),r&&r.inspect&&r.inspect.custom&&(t.exports.prototype[r.inspect.custom]=function(){var t=r.inspect({length:this.length});return this.constructor.name+" "+t})},m8jU:function(t,e){var n={}.toString;t.exports=Array.isArray||function(t){return"[object Array]"==n.call(t)}},m9t5:function(t,e,n){var i=n("KCsZ")([["fill","color"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["opacity"],["shadowColor"]]),r={getAreaStyle:function(t,e){return i(this,t,e)}};t.exports=r},m9xF:function(t,e,n){"use strict";(function(e,i){function r(t){this.next=null,this.entry=null,this.finish=()=>{!function(t,e,n){var i=t.entry;t.entry=null;for(;i;){var r=i.callback;e.pendingcb--,r(n),i=i.next}e.corkedRequestsFree.next=t}(this,t)}}var o;t.exports=A,A.WritableState=M;const s={deprecate:n("t9FE")};var a=n("An3H");const l=n("tjlA").Buffer,c=(void 0!==e?e:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{}).Uint8Array||function(){};const u=n("rAwC"),h=n("TSgA").getHighWaterMark,d=n("kFRM").codes,f=d.ERR_INVALID_ARG_TYPE,p=d.ERR_METHOD_NOT_IMPLEMENTED,g=d.ERR_MULTIPLE_CALLBACK,m=d.ERR_STREAM_CANNOT_PIPE,v=d.ERR_STREAM_DESTROYED,b=d.ERR_STREAM_NULL_VALUES,y=d.ERR_STREAM_WRITE_AFTER_END,w=d.ERR_UNKNOWN_ENCODING,x=u.errorOrDestroy;function _(){}function M(t,e,s){o=o||n("iKJY"),t=t||{},"boolean"!=typeof s&&(s=e instanceof o),this.objectMode=!!t.objectMode,s&&(this.objectMode=this.objectMode||!!t.writableObjectMode),this.highWaterMark=h(this,t,"writableHighWaterMark",s),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var a=!1===t.decodeStrings;this.decodeStrings=!a,this.defaultEncoding=t.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(t){!function(t,e){var n=t._writableState,r=n.sync,o=n.writecb;if("function"!=typeof o)throw new g;if(function(t){t.writing=!1,t.writecb=null,t.length-=t.writelen,t.writelen=0}(n),e)!function(t,e,n,r,o){--e.pendingcb,n?(i.nextTick(o,r),i.nextTick(L,t,e),t._writableState.errorEmitted=!0,x(t,r)):(o(r),t._writableState.errorEmitted=!0,x(t,r),L(t,e))}(t,n,r,e,o);else{var s=E(n)||t.destroyed;s||n.corked||n.bufferProcessing||!n.bufferedRequest||T(t,n),r?i.nextTick(C,t,n,s,o):C(t,n,s,o)}}(e,t)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!1!==t.emitClose,this.autoDestroy=!!t.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new r(this)}var S;function A(t){const e=this instanceof(o=o||n("iKJY"));if(!e&&!S.call(A,this))return new A(t);this._writableState=new M(t,this,e),this.writable=!0,t&&("function"==typeof t.write&&(this._write=t.write),"function"==typeof t.writev&&(this._writev=t.writev),"function"==typeof t.destroy&&(this._destroy=t.destroy),"function"==typeof t.final&&(this._final=t.final)),a.call(this)}function k(t,e,n,i,r,o,s){e.writelen=i,e.writecb=s,e.writing=!0,e.sync=!0,e.destroyed?e.onwrite(new v("write")):n?t._writev(r,e.onwrite):t._write(r,o,e.onwrite),e.sync=!1}function C(t,e,n,i){n||function(t,e){0===e.length&&e.needDrain&&(e.needDrain=!1,t.emit("drain"))}(t,e),e.pendingcb--,i(),L(t,e)}function T(t,e){e.bufferProcessing=!0;var n=e.bufferedRequest;if(t._writev&&n&&n.next){var i=e.bufferedRequestCount,o=new Array(i),s=e.corkedRequestsFree;s.entry=n;for(var a=0,l=!0;n;)o[a]=n,n.isBuf||(l=!1),n=n.next,a+=1;o.allBuffers=l,k(t,e,!0,e.length,o,"",s.finish),e.pendingcb++,e.lastBufferedRequest=null,s.next?(e.corkedRequestsFree=s.next,s.next=null):e.corkedRequestsFree=new r(e),e.bufferedRequestCount=0}else{for(;n;){var c=n.chunk,u=n.encoding,h=n.callback;if(k(t,e,!1,e.objectMode?1:c.length,c,u,h),n=n.next,e.bufferedRequestCount--,e.writing)break}null===n&&(e.lastBufferedRequest=null)}e.bufferedRequest=n,e.bufferProcessing=!1}function E(t){return t.ending&&0===t.length&&null===t.bufferedRequest&&!t.finished&&!t.writing}function R(t,e){t._final(n=>{e.pendingcb--,n&&x(t,n),e.prefinished=!0,t.emit("prefinish"),L(t,e)})}function L(t,e){var n=E(e);if(n&&(function(t,e){e.prefinished||e.finalCalled||("function"!=typeof t._final||e.destroyed?(e.prefinished=!0,t.emit("prefinish")):(e.pendingcb++,e.finalCalled=!0,i.nextTick(R,t,e)))}(t,e),0===e.pendingcb&&(e.finished=!0,t.emit("finish"),e.autoDestroy))){const e=t._readableState;(!e||e.autoDestroy&&e.endEmitted)&&t.destroy()}return n}n("P7XM")(A,a),M.prototype.getBuffer=function(){for(var t=this.bufferedRequest,e=[];t;)e.push(t),t=t.next;return e},function(){try{Object.defineProperty(M.prototype,"buffer",{get:s.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(t){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(S=Function.prototype[Symbol.hasInstance],Object.defineProperty(A,Symbol.hasInstance,{value:function(t){return!!S.call(this,t)||this===A&&(t&&t._writableState instanceof M)}})):S=function(t){return t instanceof this},A.prototype.pipe=function(){x(this,new m)},A.prototype.write=function(t,e,n){var r,o=this._writableState,s=!1,a=!o.objectMode&&(r=t,l.isBuffer(r)||r instanceof c);return a&&!l.isBuffer(t)&&(t=function(t){return l.from(t)}(t)),"function"==typeof e&&(n=e,e=null),a?e="buffer":e||(e=o.defaultEncoding),"function"!=typeof n&&(n=_),o.ending?function(t,e){var n=new y;x(t,n),i.nextTick(e,n)}(this,n):(a||function(t,e,n,r){var o;return null===n?o=new b:"string"==typeof n||e.objectMode||(o=new f("chunk",["string","Buffer"],n)),!o||(x(t,o),i.nextTick(r,o),!1)}(this,o,t,n))&&(o.pendingcb++,s=function(t,e,n,i,r,o){if(!n){var s=function(t,e,n){t.objectMode||!1===t.decodeStrings||"string"!=typeof e||(e=l.from(e,n));return e}(e,i,r);i!==s&&(n=!0,r="buffer",i=s)}var a=e.objectMode?1:i.length;e.length+=a;var c=e.length-1))throw new w(t);return this._writableState.defaultEncoding=t,this},Object.defineProperty(A.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(A.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),A.prototype._write=function(t,e,n){n(new p("_write()"))},A.prototype._writev=null,A.prototype.end=function(t,e,n){var r=this._writableState;return"function"==typeof t?(n=t,t=null,e=null):"function"==typeof e&&(n=e,e=null),null!=t&&this.write(t,e),r.corked&&(r.corked=1,this.uncork()),r.ending||function(t,e,n){e.ending=!0,L(t,e),n&&(e.finished?i.nextTick(n):t.once("finish",n));e.ended=!0,t.writable=!1}(this,r,n),this},Object.defineProperty(A.prototype,"writableLength",{enumerable:!1,get(){return this._writableState.length}}),Object.defineProperty(A.prototype,"destroyed",{enumerable:!1,get(){return void 0!==this._writableState&&this._writableState.destroyed},set(t){this._writableState&&(this._writableState.destroyed=t)}}),A.prototype.destroy=u.destroy,A.prototype._undestroy=u.undestroy,A.prototype._destroy=function(t,e){e(t)}}).call(this,n("yLpj"),n("8oxB"))},mCBF:function(t,e,n){t.exports=n.p+"33443ec129774bb1add5795cc8895137.js"},mDWS:function(t,e,n){t.exports=n.p+"49152f07a653743e724f599386af2d7c.js"},mFDi:function(t,e,n){var i,r,o,s,a=n("QBsz"),l=n("Fofx"),c=a.applyTransform,u=Math.min,h=Math.max;function d(t,e,n,i){n<0&&(t+=n,n=-n),i<0&&(e+=i,i=-i),this.x=t,this.y=e,this.width=n,this.height=i}d.prototype={constructor:d,union:function(t){var e=u(t.x,this.x),n=u(t.y,this.y);this.width=h(t.x+t.width,this.x+this.width)-e,this.height=h(t.y+t.height,this.y+this.height)-n,this.x=e,this.y=n},applyTransform:(i=[],r=[],o=[],s=[],function(t){if(t){i[0]=o[0]=this.x,i[1]=s[1]=this.y,r[0]=s[0]=this.x+this.width,r[1]=o[1]=this.y+this.height,c(i,i,t),c(r,r,t),c(o,o,t),c(s,s,t),this.x=u(i[0],r[0],o[0],s[0]),this.y=u(i[1],r[1],o[1],s[1]);var e=h(i[0],r[0],o[0],s[0]),n=h(i[1],r[1],o[1],s[1]);this.width=e-this.x,this.height=n-this.y}}),calculateTransform:function(t){var e=this,n=t.width/e.width,i=t.height/e.height,r=l.create();return l.translate(r,r,[-e.x,-e.y]),l.scale(r,r,[n,i]),l.translate(r,r,[t.x,t.y]),r},intersect:function(t){if(!t)return!1;t instanceof d||(t=d.create(t));var e=this,n=e.x,i=e.x+e.width,r=e.y,o=e.y+e.height,s=t.x,a=t.x+t.width,l=t.y,c=t.y+t.height;return!(i=this.x&&t<=this.x+this.width&&e>=this.y&&e<=this.y+this.height},clone:function(){return new d(this.x,this.y,this.width,this.height)},copy:function(t){this.x=t.x,this.y=t.y,this.width=t.width,this.height=t.height},plain:function(){return{x:this.x,y:this.y,width:this.width,height:this.height}}},d.create=function(t){return new d(t.x,t.y,t.width,t.height)};var f=d;t.exports=f},mLcG:function(t,e){var n="undefined"!=typeof window&&(window.requestAnimationFrame&&window.requestAnimationFrame.bind(window)||window.msRequestAnimationFrame&&window.msRequestAnimationFrame.bind(window)||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame)||function(t){setTimeout(t,16)};t.exports=n},mObS:function(t,e,n){"use strict";var i=n("P7XM"),r=n("9XZ3"),o=n("tcrS"),s=n("afKu"),a=n("ZDAU");function l(t){a.call(this,"digest"),this._hash=t}i(l,a),l.prototype._update=function(t){this._hash.update(t)},l.prototype._final=function(){return this._hash.digest()},t.exports=function(t){return"md5"===(t=t.toLowerCase())?new r:"rmd160"===t||"ripemd160"===t?new o:new l(s(t))}},mPl1:function(t,e,n){t.exports=n.p+"7e0ca61ea0cda0a8e6874d4ab5661277.js"},mQ7Z:function(t,e,n){"use strict";(function(t){Object.defineProperty(e,"__esModule",{value:!0}),e.createHashFunction=function(e){return function(n){var i=e();return i.update(n),t.from(i.digest())}}}).call(this,n("tjlA").Buffer)},mSyi:function(t,e,n){t.exports=n.p+"ad806674b28b94be3406af2d34899870.js"},mYl2:function(t,e,n){t.exports=n.p+"f88127ad8950e3c94c3af6c65a7120fa.js"},mYwL:function(t,e,n){var i=n("bYtY"),r=n("IwbS"),o=n("6GrX"),s=Math.PI;t.exports=function(t,e){e=e||{},i.defaults(e,{text:"loading",textColor:"#000",fontSize:"12px",maskColor:"rgba(255, 255, 255, 0.8)",showSpinner:!0,color:"#c23531",spinnerRadius:10,lineWidth:5,zlevel:0});var n=new r.Group,a=new r.Rect({style:{fill:e.maskColor},zlevel:e.zlevel,z:1e4});n.add(a);var l=e.fontSize+" sans-serif",c=new r.Rect({style:{fill:"none",text:e.text,font:l,textPosition:"right",textDistance:10,textFill:e.textColor},zlevel:e.zlevel,z:10001});if(n.add(c),e.showSpinner){var u=new r.Arc({shape:{startAngle:-s/2,endAngle:-s/2+.1,r:e.spinnerRadius},style:{stroke:e.color,lineCap:"round",lineWidth:e.lineWidth},zlevel:e.zlevel,z:10001});u.animateShape(!0).when(1e3,{endAngle:3*s/2}).start("circularInOut"),u.animateShape(!0).when(1e3,{startAngle:3*s/2}).delay(300).start("circularInOut"),n.add(u)}return n.resize=function(){var n=o.getWidth(e.text,l),i=e.showSpinner?e.spinnerRadius:0,r=(t.getWidth()-2*i-(e.showSpinner&&n?10:0)-n)/2-(e.showSpinner?0:n/2),s=t.getHeight()/2;e.showSpinner&&u.setShape({cx:r,cy:s}),c.setShape({x:r-i,y:s-i,width:2*i,height:2*i}),a.setShape({x:0,y:0,width:t.getWidth(),height:t.getHeight()})},n.resize(),n}},mYza:function(t,e,n){t.exports=n.p+"5343fc74a2893a130daa6ff1bff15621.js"},miO8:function(t,e,n){t.exports=n.p+"b036b967d8279eb68e21b6624846b420.js"},mjkl:function(t,e,n){t.exports=n.p+"e6a3aa085b6b9711e9726d59a50c461b.js"},"ml+/":function(t,e,n){t.exports=n.p+"31bcb02e59d84ce2e38b85616a0b44db.js"},mqnL:function(t,e,n){t.exports=n.p+"068ea80336df97af69fea2778de69f2f.js"},"n/0W":function(t,e,n){t.exports=n.p+"7cef38946c33fa981d6d2c86c62428e0.js"},n1HI:function(t,e,n){var i=n("hX1E").normalizeRadian,r=2*Math.PI;e.containStroke=function(t,e,n,o,s,a,l,c,u){if(0===l)return!1;var h=l;c-=t,u-=e;var d=Math.sqrt(c*c+u*u);if(d-h>n||d+hs&&(s+=r);var p=Math.atan2(u,c);return p<0&&(p+=r),p>=o&&p<=s||p+r>=o&&p+r<=s}},n4Lv:function(t,e,n){var i=n("7hqr").isDimensionStacked,r=n("bYtY").map;e.prepareDataCoordInfo=function(t,e,n){var o,s=t.getBaseAxis(),a=t.getOtherAxis(s),l=function(t,e){var n=0,i=t.scale.getExtent();"start"===e?n=i[0]:"end"===e?n=i[1]:i[0]>0?n=i[0]:i[1]<0&&(n=i[1]);return n}(a,n),c=s.dim,u=a.dim,h=e.mapDimension(u),d=e.mapDimension(c),f="x"===u||"radius"===u?1:0,p=r(t.dimensions,(function(t){return e.mapDimension(t)})),g=e.getCalculationInfo("stackResultDimension");return(o|=i(e,p[0]))&&(p[0]=g),(o|=i(e,p[1]))&&(p[1]=g),{dataDimsForPoint:p,valueStart:l,valueAxisDim:u,baseAxisDim:c,stacked:!!o,valueDim:h,baseDim:d,baseDataOffset:f,stackedOverDimension:e.getCalculationInfo("stackedOverDimension")}},e.getStackedOnPoint=function(t,e,n,i){var r=NaN;t.stacked&&(r=n.get(n.getCalculationInfo("stackedOverDimension"),i)),isNaN(r)&&(r=t.valueStart);var o=t.baseDataOffset,s=[];return s[o]=n.get(t.baseDim,i),s[1-o]=r,e.dataToPoint(s)}},nAaz:function(t,e,n){t.exports=n.p+"e2792218bae78a6aef6764de4e61fd82.js"},nCxF:function(t,e,n){var i=n("QBsz"),r=i.min,o=i.max,s=i.scale,a=i.distance,l=i.add,c=i.clone,u=i.sub;t.exports=function(t,e,n,i){var h,d,f,p,g=[],m=[],v=[],b=[];if(i){f=[1/0,1/0],p=[-1/0,-1/0];for(var y=0,w=t.length;y0&&(s=null===s?l:Math.min(s,l))}n[r]=s}}return n}(t),n=[];return i.each(t,(function(t){var i,o=t.coordinateSystem.getBaseAxis(),s=o.getExtent();if("category"===o.type)i=o.getBandWidth();else if("value"===o.type||"time"===o.type){var a=o.dim+"_"+o.index,u=e[a],h=Math.abs(s[1]-s[0]),d=o.scale.getExtent(),f=Math.abs(d[1]-d[0]);i=u?h/f*u:h}else{var p=t.getData();i=Math.abs(s[1]-s[0])/p.count()}var g=r(t.get("barWidth"),i),m=r(t.get("barMaxWidth"),i),v=r(t.get("barMinWidth")||1,i),b=t.get("barGap"),y=t.get("barCategoryGap");n.push({bandWidth:i,barWidth:g,barMaxWidth:m,barMinWidth:v,barGap:b,barCategoryGap:y,axisKey:c(o),stackId:l(t)})})),d(n)}function d(t){var e={};i.each(t,(function(t,n){var i=t.axisKey,r=t.bandWidth,o=e[i]||{bandWidth:r,remainedWidth:r,autoWidthCount:0,categoryGap:"20%",gap:"30%",stacks:{}},s=o.stacks;e[i]=o;var a=t.stackId;s[a]||o.autoWidthCount++,s[a]=s[a]||{width:0,maxWidth:0};var l=t.barWidth;l&&!s[a].width&&(s[a].width=l,l=Math.min(o.remainedWidth,l),o.remainedWidth-=l);var c=t.barMaxWidth;c&&(s[a].maxWidth=c);var u=t.barMinWidth;u&&(s[a].minWidth=u);var h=t.barGap;null!=h&&(o.gap=h);var d=t.barCategoryGap;null!=d&&(o.categoryGap=d)}));var n={};return i.each(e,(function(t,e){n[e]={};var o=t.stacks,s=t.bandWidth,a=r(t.categoryGap,s),l=r(t.gap,1),c=t.remainedWidth,u=t.autoWidthCount,h=(c-a)/(u+(u-1)*l);h=Math.max(h,0),i.each(o,(function(t){var e=t.maxWidth,n=t.minWidth;if(t.width){i=t.width;e&&(i=Math.min(i,e)),n&&(i=Math.max(i,n)),t.width=i,c-=i+l*i,u--}else{var i=h;e&&ei&&(i=n),i!==h&&(t.width=i,c-=i+l*i,u--)}})),h=(c-a)/(u+(u-1)*l),h=Math.max(h,0);var d,f=0;i.each(o,(function(t,e){t.width||(t.width=h),d=t,f+=t.width*(1+l)})),d&&(f-=d.width*l);var p=-f/2;i.each(o,(function(t,i){n[e][i]=n[e][i]||{bandWidth:s,offset:p,width:t.width},p+=t.width*(1+l)}))})),n}function f(t,e,n){if(t&&e){var i=t[c(e)];return null!=i&&null!=n&&(i=i[l(n)]),i}}var p={seriesType:"bar",plan:s(),reset:function(t){if(g(t)&&m(t)){var e=t.getData(),n=t.coordinateSystem,i=n.grid.getRect(),r=n.getBaseAxis(),o=n.getOtherAxis(r),s=e.mapDimension(o.dim),l=e.mapDimension(r.dim),c=o.isHorizontal(),u=c?0:1,d=f(h([t]),r,t).width;return d>.5||(d=.5),{progress:function(t,e){var h,f=t.count,p=new a(2*f),g=new a(2*f),m=new a(f),b=[],y=[],w=0,x=0;for(;null!=(h=t.next());)y[u]=e.get(s,h),y[1-u]=e.get(l,h),b=n.dataToPoint(y,null,b),g[w]=c?i.x+i.width:b[0],p[w++]=b[0],g[w]=c?b[1]:i.y+i.height,p[w++]=b[1],m[x++]=h;e.setLayout({largePoints:p,largeDataIndices:m,largeBackgroundPoints:g,barWidth:d,valueAxisStart:v(r,o,!1),backgroundStart:c?i.x:i.y,valueAxisHorizontal:c})}}}}};function g(t){return t.coordinateSystem&&"cartesian2d"===t.coordinateSystem.type}function m(t){return t.pipelineContext&&t.pipelineContext.large}function v(t,e,n){return e.toGlobalCoord(e.dataToCoord("log"===e.type?1:0))}e.getLayoutOnAxis=function(t){var e=[],n=t.axis;if("category"===n.type){for(var r=n.getBandWidth(),o=0;o=0?"p":"n",I=x;if(y&&(s[u][R]||(s[u][R]={p:x,n:x}),I=s[u][R][L]),w)S=I,A=(T=n.dataToPoint([E,R]))[1]+d,k=T[0]-x,C=f,Math.abs(k)2?"one of ".concat(e," ").concat(t.slice(0,n-1).join(", "),", or ")+t[n-1]:2===n?"one of ".concat(e," ").concat(t[0]," or ").concat(t[1]):"of ".concat(e," ").concat(t[0])}return"of ".concat(e," ").concat(String(t))}r("ERR_INVALID_OPT_VALUE",(function(t,e){return'The value "'+e+'" is invalid for option "'+t+'"'}),TypeError),r("ERR_INVALID_ARG_TYPE",(function(t,e,n){var i,r,s,a;if("string"==typeof e&&(r="not ",e.substr(!s||s<0?0:+s,r.length)===r)?(i="must not be",e=e.replace(/^not /,"")):i="must be",function(t,e,n){return(void 0===n||n>t.length)&&(n=t.length),t.substring(n-e.length,n)===e}(t," argument"))a="The ".concat(t," ").concat(i," ").concat(o(e,"type"));else{var l=function(t,e,n){return"number"!=typeof n&&(n=0),!(n+e.length>t.length)&&-1!==t.indexOf(e,n)}(t,".")?"property":"argument";a='The "'.concat(t,'" ').concat(l," ").concat(i," ").concat(o(e,"type"))}return a+=". Received type ".concat(typeof n)}),TypeError),r("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),r("ERR_METHOD_NOT_IMPLEMENTED",(function(t){return"The "+t+" method is not implemented"})),r("ERR_STREAM_PREMATURE_CLOSE","Premature close"),r("ERR_STREAM_DESTROYED",(function(t){return"Cannot call "+t+" after a stream was destroyed"})),r("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),r("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),r("ERR_STREAM_WRITE_AFTER_END","write after end"),r("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),r("ERR_UNKNOWN_ENCODING",(function(t){return"Unknown encoding: "+t}),TypeError),r("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),t.exports.codes=i},ni6a:function(t,e,n){var i=n("pzxd"),r=n("mFDi"),o=n("gut8").WILL_BE_RESTORED,s=new r,a=function(){};a.prototype={constructor:a,drawRectText:function(t,e){var n=this.style;e=n.textRect||e,this.__dirty&&i.normalizeTextStyle(n,!0);var r=n.text;if(null!=r&&(r+=""),i.needDrawText(r,n)){t.save();var a=this.transform;n.transformText?this.setTransform(t):a&&(s.copy(e),s.applyTransform(a),e=s),i.renderText(this,t,r,n,e,o),t.restore()}}};var l=a;t.exports=l},nkfE:function(t,e,n){var i=n("bYtY"),r=n("ca2m"),o=n("bLfw"),s=n("+TT/"),a=s.getLayoutParams,l=s.mergeLayoutParam,c=n("jkPA"),u=["value","category","time","log"];t.exports=function(t,e,n,s){i.each(u,(function(o){e.extend({type:t+"Axis."+o,mergeDefaultAndTheme:function(e,r){var s=this.layoutMode,c=s?a(e):{},u=r.getTheme();i.merge(e,u.get(o+"Axis")),i.merge(e,this.getDefaultOption()),e.type=n(t,e),s&&l(e,c,s)},optionUpdated:function(){"category"===this.option.type&&(this.__ordinalMeta=c.createByAxisModel(this))},getCategories:function(t){var e=this.option;if("category"===e.type)return t?e.data:this.__ordinalMeta.categories},getOrdinalMeta:function(){return this.__ordinalMeta},defaultOption:i.mergeAll([{},r[o+"Axis"],s],!0)})})),o.registerSubTypeDefaulter(t+"Axis",i.curry(n,t))}},noeP:function(t,e,n){var i=n("ProS"),r=n("bYtY"),o=n("UOVi");i.registerAction("dataZoom",(function(t,e){var n=o.createLinkedNodesFinder(r.bind(e.eachComponent,e,"dataZoom"),o.eachAxisDim,(function(t,e){return t.get(e.axisIndex)})),i=[];e.eachComponent({mainType:"dataZoom",query:t},(function(t,e){i.push.apply(i,n(t).nodes)})),r.each(i,(function(e,n){e.setRawRange({start:t.start,end:t.end,startValue:t.startValue,endValue:t.endValue})}))}))},npKC:function(t,e,n){t.exports=n.p+"9e7dd08cf78e118b417094343686cda8.js"},nsVk:function(t,e,n){t.exports=n.p+"1840080076c4078d157a5b05d0d95551.js"},nxyd:function(t,e,n){t.exports=n.p+"4b99ec9b42e080ec2d769ea4971ea76c.js"},o5wD:function(t,e,n){t.exports=n.p+"d1d9fa9ed3cbeee7c37f01294459d630.js"},o7Op:function(t,e,n){t.exports=n.p+"57c2d2eb6a844a8c9ecd932c6d4067b0.js"},oBGn:function(t,e,n){t.exports=n.p+"fffbc895129cdb3efeafa5b234743aa0.js"},oGc3:function(t,e,n){t.exports=n.p+"1bd8ec07cab7c3b9e5e00671ed6ddcd5.js"},oRyD:function(t,e,n){t.exports=n.p+"f2cfc0e604350e23bfcd7c78165b1411.js"},oVpE:function(t,e,n){var i=n("bYtY"),r=n("IwbS"),o=n("mFDi"),s=n("6GrX").calculateTextPosition,a=r.extendShape({type:"triangle",shape:{cx:0,cy:0,width:0,height:0},buildPath:function(t,e){var n=e.cx,i=e.cy,r=e.width/2,o=e.height/2;t.moveTo(n,i-o),t.lineTo(n+r,i+o),t.lineTo(n-r,i+o),t.closePath()}}),l=r.extendShape({type:"diamond",shape:{cx:0,cy:0,width:0,height:0},buildPath:function(t,e){var n=e.cx,i=e.cy,r=e.width/2,o=e.height/2;t.moveTo(n,i-o),t.lineTo(n+r,i),t.lineTo(n,i+o),t.lineTo(n-r,i),t.closePath()}}),c=r.extendShape({type:"pin",shape:{x:0,y:0,width:0,height:0},buildPath:function(t,e){var n=e.x,i=e.y,r=e.width/5*3,o=Math.max(r,e.height),s=r/2,a=s*s/(o-s),l=i-o+s+a,c=Math.asin(a/s),u=Math.cos(c)*s,h=Math.sin(c),d=Math.cos(c),f=.6*s,p=.7*s;t.moveTo(n-u,l+a),t.arc(n,l,s,Math.PI-c,2*Math.PI+c),t.bezierCurveTo(n+u-h*f,l+a+d*f,n,i-p,n,i),t.bezierCurveTo(n,i-p,n-u+h*f,l+a+d*f,n-u,l+a),t.closePath()}}),u=r.extendShape({type:"arrow",shape:{x:0,y:0,width:0,height:0},buildPath:function(t,e){var n=e.height,i=e.width,r=e.x,o=e.y,s=i/3*2;t.moveTo(r,o),t.lineTo(r+s,o+n),t.lineTo(r,o+n/4*3),t.lineTo(r-s,o+n),t.lineTo(r,o),t.closePath()}}),h={line:r.Line,rect:r.Rect,roundRect:r.Rect,square:r.Rect,circle:r.Circle,diamond:l,pin:c,arrow:u,triangle:a},d={line:function(t,e,n,i,r){r.x1=t,r.y1=e+i/2,r.x2=t+n,r.y2=e+i/2},rect:function(t,e,n,i,r){r.x=t,r.y=e,r.width=n,r.height=i},roundRect:function(t,e,n,i,r){r.x=t,r.y=e,r.width=n,r.height=i,r.r=Math.min(n,i)/4},square:function(t,e,n,i,r){var o=Math.min(n,i);r.x=t,r.y=e,r.width=o,r.height=o},circle:function(t,e,n,i,r){r.cx=t+n/2,r.cy=e+i/2,r.r=Math.min(n,i)/2},diamond:function(t,e,n,i,r){r.cx=t+n/2,r.cy=e+i/2,r.width=n,r.height=i},pin:function(t,e,n,i,r){r.x=t+n/2,r.y=e+i/2,r.width=n,r.height=i},arrow:function(t,e,n,i,r){r.x=t+n/2,r.y=e+i/2,r.width=n,r.height=i},triangle:function(t,e,n,i,r){r.cx=t+n/2,r.cy=e+i/2,r.width=n,r.height=i}},f={};i.each(h,(function(t,e){f[e]=new t}));var p=r.extendShape({type:"symbol",shape:{symbolType:"",x:0,y:0,width:0,height:0},calculateTextPosition:function(t,e,n){var i=s(t,e,n),r=this.shape;return r&&"pin"===r.symbolType&&"inside"===e.textPosition&&(i.y=n.y+.4*n.height),i},buildPath:function(t,e,n){var i=e.symbolType;if("none"!==i){var r=f[i];r||(r=f[i="rect"]),d[i](e.x,e.y,e.width,e.height,r.shape),r.buildPath(t,r.shape,n)}}});function g(t,e){if("image"!==this.type){var n=this.style,i=this.shape;i&&"line"===i.symbolType?n.stroke=t:this.__isEmptyBrush?(n.stroke=t,n.fill=e||"#fff"):(n.fill&&(n.fill=t),n.stroke&&(n.stroke=t)),this.dirty(!1)}}e.createSymbol=function(t,e,n,i,s,a,l){var c,u=0===t.indexOf("empty");return u&&(t=t.substr(5,1).toLowerCase()+t.substr(6)),(c=0===t.indexOf("image://")?r.makeImage(t.slice(8),new o(e,n,i,s),l?"center":"cover"):0===t.indexOf("path://")?r.makePath(t.slice(7),{},new o(e,n,i,s),l?"center":"cover"):new p({shape:{symbolType:t,x:e,y:n,width:i,height:s}})).__isEmptyBrush=u,c.setColor=g,c.setColor(a),c}},oY9F:function(t,e,n){var i=n("OlYY").extend({type:"dataZoom.inside",defaultOption:{disabled:!1,zoomLock:!1,zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!1,preventDefaultMouseMove:!0}});t.exports=i},oeCZ:function(t,e,n){t.exports=n.p+"a17e59619a3d17661de6cad7d6808a1f.js"},olUY:function(t,e,n){var i=n("P7XM"),r=n("tnIz"),o=n("hwdV").Buffer,s=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],a=new Array(64);function l(){this.init(),this._w=a,r.call(this,64,56)}function c(t,e,n){return n^t&(e^n)}function u(t,e,n){return t&e|n&(t|e)}function h(t){return(t>>>2|t<<30)^(t>>>13|t<<19)^(t>>>22|t<<10)}function d(t){return(t>>>6|t<<26)^(t>>>11|t<<21)^(t>>>25|t<<7)}function f(t){return(t>>>7|t<<25)^(t>>>18|t<<14)^t>>>3}i(l,r),l.prototype.init=function(){return this._a=1779033703,this._b=3144134277,this._c=1013904242,this._d=2773480762,this._e=1359893119,this._f=2600822924,this._g=528734635,this._h=1541459225,this},l.prototype._update=function(t){for(var e,n=this._w,i=0|this._a,r=0|this._b,o=0|this._c,a=0|this._d,l=0|this._e,p=0|this._f,g=0|this._g,m=0|this._h,v=0;v<16;++v)n[v]=t.readInt32BE(4*v);for(;v<64;++v)n[v]=0|(((e=n[v-2])>>>17|e<<15)^(e>>>19|e<<13)^e>>>10)+n[v-7]+f(n[v-15])+n[v-16];for(var b=0;b<64;++b){var y=m+d(l)+c(l,p,g)+s[b]+n[b]|0,w=h(i)+u(i,r,o)|0;m=g,g=p,p=l,l=a+y|0,a=o,o=r,r=i,i=y+w|0}this._a=i+this._a|0,this._b=r+this._b|0,this._c=o+this._c|0,this._d=a+this._d|0,this._e=l+this._e|0,this._f=p+this._f|0,this._g=g+this._g|0,this._h=m+this._h|0},l.prototype._hash=function(){var t=o.allocUnsafe(32);return t.writeInt32BE(this._a,0),t.writeInt32BE(this._b,4),t.writeInt32BE(this._c,8),t.writeInt32BE(this._d,12),t.writeInt32BE(this._e,16),t.writeInt32BE(this._f,20),t.writeInt32BE(this._g,24),t.writeInt32BE(this._h,28),t},t.exports=l},olkj:function(t,e,n){t.exports=n.p+"07cd7a34f1a3637d07c8e69746490d8f.js"},olnV:function(t,e,n){t.exports=n.p+"4d753779fcb3505da953d0d75759e255.js"},opzT:function(t,e,n){t.exports=n.p+"9aafe4a55ece5a23a8c7658cc25325fc.js"},pCwn:function(t,e,n){t.exports=n.p+"d58a44852ccf290e290f798d594ceaf1.js"},pP6R:function(t,e,n){var i=n("ProS"),r="\0_ec_interaction_mutex";function o(t){return t[r]||(t[r]={})}i.registerAction({type:"takeGlobalCursor",event:"globalCursorTaken",update:"update"},(function(){})),e.take=function(t,e,n){o(t)[e]=n},e.release=function(t,e,n){var i=o(t);i[e]===n&&(i[e]=null)},e.isTaken=function(t,e){return!!o(t)[e]}},pSUY:function(t,e,n){t.exports=n.p+"6f0543453c605ea6d673a3bd31dd1090.js"},pZ5h:function(t,e,n){t.exports=n.p+"d754905fe54aac6f3c350df34f51a0b6.js"},pbuy:function(t,e,n){t.exports=n.p+"5306139b5cbaa48713136cf1a15af359.js"},pc4Z:function(t,e,n){t.exports=n.p+"b9963f909afff9cb4e6dd95bf5bc20c4.js"},piRb:function(t,e,n){t.exports=n.p+"cc8577464e70c97c43ca0992593d5e93.js"},pjxt:function(t,e,n){t.exports=n.p+"6ff5826d3c93e2bd37bc511affebc78b.js"},prZD:function(t,e,n){var i=n("6UMM"),r=n("hbHZ");t.exports=function(t){if("string"==typeof t||"number"==typeof t){var e=new i(1),n=String(t).toLowerCase().trim(),o="0x"===n.substr(0,2)||"-0x"===n.substr(0,3),s=r(n);if("-"===s.substr(0,1)&&(s=r(s.slice(1)),e=new i(-1,10)),!(s=""===s?"0":s).match(/^-?[0-9]+$/)&&s.match(/^[0-9A-Fa-f]+$/)||s.match(/^[a-fA-F]+$/)||!0===o&&s.match(/^[0-9A-Fa-f]+$/))return new i(s,16).mul(e);if((s.match(/^-?[0-9]+$/)||""===s)&&!1===o)return new i(s,10).mul(e)}else if("object"==typeof t&&t.toString&&!t.pop&&!t.push&&t.toString(10).match(/^-?[0-9]+$/)&&(t.mul||t.dividedToIntegerBy))return new i(t.toString(10),10);throw new Error("[number-to-bn] while converting number "+JSON.stringify(t)+" to BN.js instance, error: invalid number value. Value must be an integer, hex string, BN or BigNumber instance. Note, decimals are not supported.")}},pybX:function(t,e,n){t.exports=n.p+"7d25df3855c05c6d49484240a5f4cc72.js"},pzxd:function(t,e,n){var i=n("bYtY"),r=i.retrieve2,o=i.retrieve3,s=i.each,a=i.normalizeCssArray,l=i.isString,c=i.isObject,u=n("6GrX"),h=n("VpOo"),d=n("Xnb7"),f=n("fW2E"),p=n("gut8"),g=p.ContextCachedBy,m=p.WILL_BE_RESTORED,v=u.DEFAULT_FONT,b={left:1,right:1,center:1},y={top:1,bottom:1,middle:1},w=[["textShadowBlur","shadowBlur",0],["textShadowOffsetX","shadowOffsetX",0],["textShadowOffsetY","shadowOffsetY",0],["textShadowColor","shadowColor","transparent"]],x={},_={};function M(t){if(t){t.font=u.makeFont(t);var e=t.textAlign;"middle"===e&&(e="center"),t.textAlign=null==e||b[e]?e:"left";var n=t.textVerticalAlign||t.textBaseline;"center"===n&&(n="middle"),t.textVerticalAlign=null==n||y[n]?n:"top",t.textPadding&&(t.textPadding=a(t.textPadding))}}function S(t,e,n,i,r){if(n&&e.textRotation){var o=e.textOrigin;"center"===o?(i=n.width/2+n.x,r=n.height/2+n.y):o&&(i=o[0]+n.x,r=o[1]+n.y),t.translate(i,r),t.rotate(-e.textRotation),t.translate(-i,-r)}}function A(t,e,n,i,s,a,l,c){var u=i.rich[n.styleName]||{};u.text=n.text;var h=n.textVerticalAlign,d=a+s/2;"top"===h?d=a+n.height/2:"bottom"===h&&(d=a+s-n.height/2),!n.isLineHolder&&k(u)&&C(t,e,u,"right"===c?l-n.width:"center"===c?l-n.width/2:l,d-n.height/2,n.width,n.height);var f=n.textPadding;f&&(l=$(l,c,f),d-=n.height/2-f[2]-n.textHeight/2),R(e,"shadowBlur",o(u.textShadowBlur,i.textShadowBlur,0)),R(e,"shadowColor",u.textShadowColor||i.textShadowColor||"transparent"),R(e,"shadowOffsetX",o(u.textShadowOffsetX,i.textShadowOffsetX,0)),R(e,"shadowOffsetY",o(u.textShadowOffsetY,i.textShadowOffsetY,0)),R(e,"textAlign",c),R(e,"textBaseline","middle"),R(e,"font",n.font||v);var p=L(u.textStroke||i.textStroke,m),g=I(u.textFill||i.textFill),m=r(u.textStrokeWidth,i.textStrokeWidth);p&&(R(e,"lineWidth",m),R(e,"strokeStyle",p),e.strokeText(n.text,l,d)),g&&(R(e,"fillStyle",g),e.fillText(n.text,l,d))}function k(t){return!!(t.textBackgroundColor||t.textBorderWidth&&t.textBorderColor)}function C(t,e,n,i,r,o,s){var a=n.textBackgroundColor,u=n.textBorderWidth,f=n.textBorderColor,p=l(a);if(R(e,"shadowBlur",n.textBoxShadowBlur||0),R(e,"shadowColor",n.textBoxShadowColor||"transparent"),R(e,"shadowOffsetX",n.textBoxShadowOffsetX||0),R(e,"shadowOffsetY",n.textBoxShadowOffsetY||0),p||u&&f){e.beginPath();var g=n.textBorderRadius;g?h.buildPath(e,{x:i,y:r,width:o,height:s,r:g}):e.rect(i,r,o,s),e.closePath()}if(p)if(R(e,"fillStyle",a),null!=n.fillOpacity){var m=e.globalAlpha;e.globalAlpha=n.fillOpacity*n.opacity,e.fill(),e.globalAlpha=m}else e.fill();else if(c(a)){var v=a.image;(v=d.createOrUpdateImage(v,null,t,T,a))&&d.isImageReady(v)&&e.drawImage(v,i,r,o,s)}if(u&&f)if(R(e,"lineWidth",u),R(e,"strokeStyle",f),null!=n.strokeOpacity){m=e.globalAlpha;e.globalAlpha=n.strokeOpacity*n.opacity,e.stroke(),e.globalAlpha=m}else e.stroke()}function T(t,e){e.image=t}function E(t,e,n,i){var r=n.x||0,o=n.y||0,s=n.textAlign,a=n.textVerticalAlign;if(i){var l=n.textPosition;if(l instanceof Array)r=i.x+O(l[0],i.width),o=i.y+O(l[1],i.height);else{var c=e&&e.calculateTextPosition?e.calculateTextPosition(x,n,i):u.calculateTextPosition(x,n,i);r=c.x,o=c.y,s=s||c.textAlign,a=a||c.textVerticalAlign}var h=n.textOffset;h&&(r+=h[0],o+=h[1])}return(t=t||{}).baseX=r,t.baseY=o,t.textAlign=s,t.textVerticalAlign=a,t}function R(t,e,n){return t[e]=f(t,e,n),t[e]}function L(t,e){return null==t||e<=0||"transparent"===t||"none"===t?null:t.image||t.colorStops?"#000":t}function I(t){return null==t||"none"===t?null:t.image||t.colorStops?"#000":t}function O(t,e){return"string"==typeof t?t.lastIndexOf("%")>=0?parseFloat(t)/100*e:parseFloat(t):t}function $(t,e,n){return"right"===e?t-n[1]:"center"===e?t+n[3]/2-n[1]/2:t+n[3]}e.normalizeTextStyle=function(t){return M(t),s(t.rich,M),t},e.renderText=function(t,e,n,i,r,o){i.rich?function(t,e,n,i,r,o){o!==m&&(e.__attrCachedBy=g.NONE);var s=t.__textCotentBlock;s&&!t.__dirtyText||(s=t.__textCotentBlock=u.parseRichText(n,i));!function(t,e,n,i,r){var o=n.width,s=n.outerWidth,a=n.outerHeight,l=i.textPadding,c=E(_,t,i,r),h=c.baseX,d=c.baseY,f=c.textAlign,p=c.textVerticalAlign;S(e,i,r,h,d);var g=u.adjustTextX(h,s,f),m=u.adjustTextY(d,a,p),v=g,b=m;l&&(v+=l[3],b+=l[0]);var y=v+o;k(i)&&C(t,e,i,g,m,s,a);for(var w=0;w=0&&"right"===(x=T[D]).textAlign;)A(t,e,x,i,L,b,P,"right"),I-=x.width,P-=x.width,D--;for($+=(o-($-v)-(y-P)-I)/2;O<=D;)x=T[O],A(t,e,x,i,L,b,$+x.width/2,"center"),$+=x.width,O++;b+=L}}(t,e,s,i,r)}(t,e,n,i,r,o):function(t,e,n,i,r,o){"use strict";var s,a=k(i),l=!1,c=e.__attrCachedBy===g.PLAIN_TEXT;o!==m?(o&&(s=o.style,l=!a&&c&&s),e.__attrCachedBy=a?g.NONE:g.PLAIN_TEXT):c&&(e.__attrCachedBy=g.NONE);var h=i.font||v;l&&h===(s.font||v)||(e.font=h);var d=t.__computedFont;t.__styleFont!==h&&(t.__styleFont=h,d=t.__computedFont=e.font);var p=i.textPadding,b=i.textLineHeight,y=t.__textCotentBlock;y&&!t.__dirtyText||(y=t.__textCotentBlock=u.parsePlainText(n,d,p,b,i.truncate));var x=y.outerHeight,M=y.lines,A=y.lineHeight,T=E(_,t,i,r),R=T.baseX,O=T.baseY,P=T.textAlign||"left",D=T.textVerticalAlign;S(e,i,r,R,O);var B=u.adjustTextY(O,x,D),N=R,F=B;if(a||p){var j=u.getWidth(n,d);p&&(j+=p[1]+p[3]);var U=u.adjustTextX(R,j,P);a&&C(t,e,i,U,B,j,x),p&&(N=$(R,P,p),F+=p[0])}e.textAlign=P,e.textBaseline="middle",e.globalAlpha=i.opacity||1;for(var z=0;z>5==6?2:t>>4==14?3:t>>3==30?4:t>>6==2?-1:-2}function a(t){var e=this.lastTotal-this.lastNeed,n=function(t,e,n){if(128!=(192&e[0]))return t.lastNeed=0,"�";if(t.lastNeed>1&&e.length>1){if(128!=(192&e[1]))return t.lastNeed=1,"�";if(t.lastNeed>2&&e.length>2&&128!=(192&e[2]))return t.lastNeed=2,"�"}}(this,t);return void 0!==n?n:this.lastNeed<=t.length?(t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(t.copy(this.lastChar,e,0,t.length),void(this.lastNeed-=t.length))}function l(t,e){if((t.length-e)%2==0){var n=t.toString("utf16le",e);if(n){var i=n.charCodeAt(n.length-1);if(i>=55296&&i<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],n.slice(0,-1)}return n}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString("utf16le",e,t.length-1)}function c(t){var e=t&&t.length?this.write(t):"";if(this.lastNeed){var n=this.lastTotal-this.lastNeed;return e+this.lastChar.toString("utf16le",0,n)}return e}function u(t,e){var n=(t.length-e)%3;return 0===n?t.toString("base64",e):(this.lastNeed=3-n,this.lastTotal=3,1===n?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString("base64",e,t.length-n))}function h(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+this.lastChar.toString("base64",0,3-this.lastNeed):e}function d(t){return t.toString(this.encoding)}function f(t){return t&&t.length?this.write(t):""}e.StringDecoder=o,o.prototype.write=function(t){if(0===t.length)return"";var e,n;if(this.lastNeed){if(void 0===(e=this.fillLast(t)))return"";n=this.lastNeed,this.lastNeed=0}else n=0;return n=0)return r>0&&(t.lastNeed=r-1),r;if(--i=0)return r>0&&(t.lastNeed=r-2),r;if(--i=0)return r>0&&(2===r?r=0:t.lastNeed=r-3),r;return 0}(this,t,e);if(!this.lastNeed)return t.toString("utf8",e);this.lastTotal=n;var i=t.length-(n-this.lastNeed);return t.copy(this.lastChar,0,i),t.toString("utf8",e,i)},o.prototype.fillLast=function(t){if(this.lastNeed<=t.length)return t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,t.length),this.lastNeed-=t.length}},ql3t:function(t,e,n){t.exports={default:n("h5AQ"),__esModule:!0}},qlaj:function(t,e,n){"use strict";var i=n("w8CP").rotr32;function r(t,e,n){return t&e^~t&n}function o(t,e,n){return t&e^t&n^e&n}function s(t,e,n){return t^e^n}e.ft_1=function(t,e,n,i){return 0===t?r(e,n,i):1===t||3===t?s(e,n,i):2===t?o(e,n,i):void 0},e.ch32=r,e.maj32=o,e.p32=s,e.s0_256=function(t){return i(t,2)^i(t,13)^i(t,22)},e.s1_256=function(t){return i(t,6)^i(t,11)^i(t,25)},e.g0_256=function(t){return i(t,7)^i(t,18)^t>>>3},e.g1_256=function(t){return i(t,17)^i(t,19)^t>>>10}},qm99:function(t,e,n){t.exports=n.p+"08ead5ce2617fb6ce642b5ba343bd62c.js"},qml0:function(t,e,n){"use strict";t.exports=o;var i=n("3NCs"),r=Object.create(n("Onz0"));function o(t){if(!(this instanceof o))return new o(t);i.call(this,t)}r.inherits=n("P7XM"),r.inherits(o,i),o.prototype._transform=function(t,e,n){n(null,t)}},qrFr:function(t,e,n){var i=n("tjlA").Buffer,r=n("W6Pm"),o=n("SoSZ").AbiCoder,s=n("SoSZ").ParamType,a=new o((function(t,e){return!t.match(/^u?int/)||Array.isArray(e)||e&&"object"==typeof e&&"BN"===e.constructor.name?e:e.toString()}));function l(){}var c=function(){};c.prototype.encodeFunctionSignature=function(t){return("function"==typeof t||"object"==typeof t&&t)&&(t=r._jsonInterfaceMethodToString(t)),r.sha3(t).slice(0,10)},c.prototype.encodeEventSignature=function(t){return("function"==typeof t||"object"==typeof t&&t)&&(t=r._jsonInterfaceMethodToString(t)),r.sha3(t)},c.prototype.encodeParameter=function(t,e){return this.encodeParameters([t],[e])},c.prototype.encodeParameters=function(t,e){var n=this;return t=n.mapTypes(t),e=e.map((function(e,i){let r=t[i];if("object"==typeof r&&r.type&&(r=r.type),e=n.formatParam(r,e),"string"==typeof r&&r.includes("tuple")){const t=a._getCoder(s.from(r)),i=(t,e)=>{if("array"===t.name){if(!t.type.match(/\[(\d+)\]/))return e.map(e=>i(a._getCoder(s.from(t.type.replace("[]",""))),e));const n=parseInt(t.type.match(/\[(\d+)\]/)[1]);if(e.length!==n)throw new Error("Array length does not matches with the given input");return e.map(e=>i(a._getCoder(s.from(t.type.replace(/\[\d+\]/,""))),e))}t.coders.forEach((t,r)=>{"tuple"===t.name?i(t,e[r]):e[r]=n.formatParam(t.name,e[r])})};i(t,e)}return e})),a.encode(t,e)},c.prototype.mapTypes=function(t){var e=this,n=[];return t.forEach((function(t){if("object"==typeof t&&"function"===t.type&&(t=Object.assign({},t,{type:"bytes24"})),e.isSimplifiedStructFormat(t)){var i=Object.keys(t)[0];n.push(Object.assign(e.mapStructNameAndType(i),{components:e.mapStructToCoderFormat(t[i])}))}else n.push(t)})),n},c.prototype.isSimplifiedStructFormat=function(t){return"object"==typeof t&&void 0===t.components&&void 0===t.name},c.prototype.mapStructNameAndType=function(t){var e="tuple";return t.indexOf("[]")>-1&&(e="tuple[]",t=t.slice(0,-2)),{type:e,name:t}},c.prototype.mapStructToCoderFormat=function(t){var e=this,n=[];return Object.keys(t).forEach((function(i){"object"!=typeof t[i]?n.push({name:i,type:t[i]}):n.push(Object.assign(e.mapStructNameAndType(i),{components:e.mapStructToCoderFormat(t[i])}))})),n},c.prototype.formatParam=function(t,e){const n=new RegExp(/^bytes([0-9]*)$/),o=new RegExp(/^bytes([0-9]*)\[\]$/),s=new RegExp(/^(u?int)([0-9]*)$/),a=new RegExp(/^(u?int)([0-9]*)\[\]$/);if(r.isBN(e)||r.isBigNumber(e))return e.toString(10);if(t.match(o)||t.match(a))return e.map(e=>this.formatParam(t.replace("[]",""),e));let l=t.match(s);if(l){let t=parseInt(l[2]||"256");t/80&&(!e||"0x"===e||"0X"===e))throw new Error("Returned values aren't valid, did it run Out of Gas? You might also see this error if you are not using the correct ABI for the contract you are retrieving data from, requesting data from a block number that does not exist, or querying a node which is not fully synced.");var i=a.decode(this.mapTypes(t),"0x"+e.replace(/0x/i,""),n),r=new l;return r.__length__=0,t.forEach((function(t,e){var n=i[r.__length__];const o="object"==typeof t&&t.type&&"string"===t.type;n="0x"!==n||o||"string"==typeof t&&"string"===t?n:null,r[e]=n,("function"==typeof t||t&&"object"==typeof t)&&t.name&&(r[t.name]=n),r.__length__++})),r},c.prototype.decodeLog=function(t,e,n){var i=this;n=Array.isArray(n)?n:[n],e=e||"";var r=[],o=[],s=0;t.forEach((function(t,e){t.indexed?(o[e]=["bool","int","uint","address","fixed","ufixed"].find((function(e){return-1!==t.type.indexOf(e)}))?i.decodeParameter(t.type,n[s]):n[s],s++):r[e]=t}));var a=e,c=a?this.decodeParametersWith(r,a,!0):[],u=new l;return u.__length__=0,t.forEach((function(t,e){u[e]="string"===t.type?"":null,void 0!==c[e]&&(u[e]=c[e]),void 0!==o[e]&&(u[e]=o[e]),t.name&&(u[t.name]=u[e]),u.__length__++})),u};var u=new c;t.exports=u},qsE9:function(t,e,n){t.exports=n.p+"c2b4975093d5885f2e8ff09c4fabe8f7.js"},qwAG:function(t,e,n){t.exports=n.p+"9c202aefac35a5ff49d3d3795e9932bc.js"},qxIs:function(t,e,n){t.exports=n.p+"4be9603e95e8ca53663cb73594f371b1.js"},qywP:function(t,e,n){t.exports=n.p+"0645227e6c2479f7aefed1fdd23ac733.js"},r0ss:function(t,e,n){t.exports=n.p+"82d8d30793273702926136095cec929c.js"},r1LO:function(t,e,n){t.exports=n.p+"bfc402925b28862b622c68f515be1b98.js"},r36U:function(t,e,n){t.exports=n("b/oV")},r6Bn:function(t,e,n){var i=n("bYtY"),r=n("ItGF"),o=n("4fz+"),s=n("BPZU");function a(t,e){return t.zlevel===e.zlevel?t.z===e.z?t.z2-e.z2:t.z-e.z:t.zlevel-e.zlevel}var l=function(){this._roots=[],this._displayList=[],this._displayListLen=0};l.prototype={constructor:l,traverse:function(t,e){for(var n=0;n=0&&(this.delFromStorage(t),this._roots.splice(s,1),t instanceof o&&t.delChildrenFromStorage(this))}},addToStorage:function(t){return t&&(t.__storage=this,t.dirty(!1)),this},delFromStorage:function(t){return t&&(t.__storage=null),this},dispose:function(){this._renderList=this._roots=null},displayableSortFunc:a};var c=l;t.exports=c},rA99:function(t,e,n){var i=n("y+Vt"),r=n("QBsz"),o=n("Sj9i"),s=o.quadraticSubdivide,a=o.cubicSubdivide,l=o.quadraticAt,c=o.cubicAt,u=o.quadraticDerivativeAt,h=o.cubicDerivativeAt,d=[];function f(t,e,n){var i=t.cpx2,r=t.cpy2;return null===i||null===r?[(n?h:c)(t.x1,t.cpx1,t.cpx2,t.x2,e),(n?h:c)(t.y1,t.cpy1,t.cpy2,t.y2,e)]:[(n?u:l)(t.x1,t.cpx1,t.x2,e),(n?u:l)(t.y1,t.cpy1,t.y2,e)]}var p=i.extend({type:"bezier-curve",shape:{x1:0,y1:0,x2:0,y2:0,cpx1:0,cpy1:0,percent:1},style:{stroke:"#000",fill:null},buildPath:function(t,e){var n=e.x1,i=e.y1,r=e.x2,o=e.y2,l=e.cpx1,c=e.cpy1,u=e.cpx2,h=e.cpy2,f=e.percent;0!==f&&(t.moveTo(n,i),null==u||null==h?(f<1&&(s(n,l,r,f,d),l=d[1],r=d[2],s(i,c,o,f,d),c=d[1],o=d[2]),t.quadraticCurveTo(l,c,r,o)):(f<1&&(a(n,l,u,r,f,d),l=d[1],u=d[2],r=d[3],a(i,c,h,o,f,d),c=d[1],h=d[2],o=d[3]),t.bezierCurveTo(l,c,u,h,r,o)))},pointAt:function(t){return f(this.shape,t,!1)},tangentAt:function(t){var e=f(this.shape,t,!0);return r.normalize(e,e)}});t.exports=p},rAwC:function(t,e,n){"use strict";(function(e){function n(t,e){r(t,e),i(t)}function i(t){t._writableState&&!t._writableState.emitClose||t._readableState&&!t._readableState.emitClose||t.emit("close")}function r(t,e){t.emit("error",e)}t.exports={destroy:function(t,o){const s=this._readableState&&this._readableState.destroyed,a=this._writableState&&this._writableState.destroyed;return s||a?(o?o(t):t&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,e.nextTick(r,this,t)):e.nextTick(r,this,t)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,t=>{!o&&t?this._writableState?this._writableState.errorEmitted?e.nextTick(i,this):(this._writableState.errorEmitted=!0,e.nextTick(n,this,t)):e.nextTick(n,this,t):o?(e.nextTick(i,this),o(t)):e.nextTick(i,this)}),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)},errorOrDestroy:function(t,e){const n=t._readableState,i=t._writableState;n&&n.autoDestroy||i&&i.autoDestroy?t.destroy(e):t.emit("error",e)}}}).call(this,n("8oxB"))},rKKa:function(t,e,n){t.exports=n.p+"9405408bc4c1c18469c1eefd766f06b9.js"},rMPs:function(t,e,n){"use strict";(function(t){var i=this&&this.__read||function(t,e){var n="function"==typeof Symbol&&t[Symbol.iterator];if(!n)return t;var i,r,o=n.call(t),s=[];try{for(;(void 0===e||e-- >0)&&!(i=o.next()).done;)s.push(i.value)}catch(t){r={error:t}}finally{try{i&&!i.done&&(n=o.return)&&n.call(o)}finally{if(r)throw r.error}}return s},r=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0}),e.isZeroAddress=e.zeroAddress=e.importPublic=e.privateToAddress=e.privateToPublic=e.publicToAddress=e.pubToAddress=e.isValidPublic=e.isValidPrivate=e.generateAddress2=e.generateAddress=e.isValidChecksumAddress=e.toChecksumAddress=e.isValidAddress=e.Account=void 0;var o=r(n("9lTW")),s=n("zkNI"),a=n("IhPl"),l=n("szLb"),c=n("UQuM"),u=n("DDDe"),h=n("hGN9"),d=n("KbHX"),f=n("ap2e"),p=function(){function t(t,e,n,i){void 0===t&&(t=new s.BN(0)),void 0===e&&(e=new s.BN(0)),void 0===n&&(n=c.KECCAK256_RLP),void 0===i&&(i=c.KECCAK256_NULL),this.nonce=t,this.balance=e,this.stateRoot=n,this.codeHash=i,this._validate()}return t.fromAccountData=function(e){var n=e.nonce,i=e.balance,r=e.stateRoot,o=e.codeHash;return new t(n?new s.BN((0,u.toBuffer)(n)):void 0,i?new s.BN((0,u.toBuffer)(i)):void 0,r?(0,u.toBuffer)(r):void 0,o?(0,u.toBuffer)(o):void 0)},t.fromRlpSerializedAccount=function(t){var e=s.rlp.decode(t);if(!Array.isArray(e))throw new Error("Invalid serialized account input. Must be array");return this.fromValuesArray(e)},t.fromValuesArray=function(e){var n=i(e,4),r=n[0],o=n[1],a=n[2],l=n[3];return new t(new s.BN(r),new s.BN(o),a,l)},t.prototype._validate=function(){if(this.nonce.lt(new s.BN(0)))throw new Error("nonce must be greater than zero");if(this.balance.lt(new s.BN(0)))throw new Error("balance must be greater than zero");if(32!==this.stateRoot.length)throw new Error("stateRoot must have a length of 32");if(32!==this.codeHash.length)throw new Error("codeHash must have a length of 32")},t.prototype.raw=function(){return[(0,f.bnToUnpaddedBuffer)(this.nonce),(0,f.bnToUnpaddedBuffer)(this.balance),this.stateRoot,this.codeHash]},t.prototype.serialize=function(){return s.rlp.encode(this.raw())},t.prototype.isContract=function(){return!this.codeHash.equals(c.KECCAK256_NULL)},t.prototype.isEmpty=function(){return this.balance.isZero()&&this.nonce.isZero()&&this.codeHash.equals(c.KECCAK256_NULL)},t}();e.Account=p;e.isValidAddress=function(t){try{(0,d.assertIsString)(t)}catch(t){return!1}return/^0x[0-9a-fA-F]{40}$/.test(t)};e.toChecksumAddress=function(t,e){(0,d.assertIsHexString)(t);var n=(0,l.stripHexPrefix)(t).toLowerCase(),i="";e&&(i=(0,f.toType)(e,f.TypeOutput.BN).toString()+"0x");for(var r=(0,h.keccakFromString)(i+n).toString("hex"),o="0x",s=0;s=8?o+=n[s].toUpperCase():o+=n[s];return o};e.isValidChecksumAddress=function(t,n){return(0,e.isValidAddress)(t)&&(0,e.toChecksumAddress)(t,n)===t};e.generateAddress=function(e,n){(0,d.assertIsBuffer)(e),(0,d.assertIsBuffer)(n);var i=new s.BN(n);return i.isZero()?(0,h.rlphash)([e,null]).slice(-20):(0,h.rlphash)([e,t.from(i.toArray())]).slice(-20)};e.generateAddress2=function(e,n,i){return(0,d.assertIsBuffer)(e),(0,d.assertIsBuffer)(n),(0,d.assertIsBuffer)(i),(0,o.default)(20===e.length),(0,o.default)(32===n.length),(0,h.keccak256)(t.concat([t.from("ff","hex"),e,n,(0,h.keccak256)(i)])).slice(-20)};e.isValidPrivate=function(t){return(0,a.privateKeyVerify)(t)};e.isValidPublic=function(e,n){return void 0===n&&(n=!1),(0,d.assertIsBuffer)(e),64===e.length?(0,a.publicKeyVerify)(t.concat([t.from([4]),e])):!!n&&(0,a.publicKeyVerify)(e)};e.pubToAddress=function(e,n){return void 0===n&&(n=!1),(0,d.assertIsBuffer)(e),n&&64!==e.length&&(e=t.from((0,a.publicKeyConvert)(e,!1).slice(1))),(0,o.default)(64===e.length),(0,h.keccak)(e).slice(-20)},e.publicToAddress=e.pubToAddress;e.privateToPublic=function(e){return(0,d.assertIsBuffer)(e),t.from((0,a.publicKeyCreate)(e,!1)).slice(1)};e.privateToAddress=function(t){return(0,e.publicToAddress)((0,e.privateToPublic)(t))};e.importPublic=function(e){return(0,d.assertIsBuffer)(e),64!==e.length&&(e=t.from((0,a.publicKeyConvert)(e,!1).slice(1))),e};e.zeroAddress=function(){var t=(0,u.zeros)(20);return(0,u.bufferToHex)(t)};e.isZeroAddress=function(t){try{(0,d.assertIsString)(t)}catch(t){return!1}return(0,e.zeroAddress)()===t}}).call(this,n("tjlA").Buffer)},rmlV:function(t,e,n){var i=n("y+Vt").extend({type:"ellipse",shape:{cx:0,cy:0,rx:0,ry:0},buildPath:function(t,e){var n=.5522848,i=e.cx,r=e.cy,o=e.rx,s=e.ry,a=o*n,l=s*n;t.moveTo(i-o,r),t.bezierCurveTo(i-o,r-l,i-a,r-s,i,r-s),t.bezierCurveTo(i+a,r-s,i+o,r-l,i+o,r),t.bezierCurveTo(i+o,r+l,i+a,r+s,i,r+s),t.bezierCurveTo(i-a,r+s,i-o,r+l,i-o,r),t.closePath()}});t.exports=i},rrIz:function(t,e,n){t.exports=n.p+"26fa04eabe6ca96832d5652350a2fb46.js"},rySg:function(t,e,n){n("SMc4"),n("8nMs")},sEpj:function(t,e,n){t.exports=n.p+"af7b012955996316a14afcf804c441e7.js"},"sK/D":function(t,e,n){var i=n("IwbS"),r=n("OELB").round;function o(t,e,n){var r=t.getArea(),o=t.getBaseAxis().isHorizontal(),s=r.x,a=r.y,l=r.width,c=r.height,u=n.get("lineStyle.width")||2;s-=u/2,a-=u/2,l+=u,c+=u,s=Math.floor(s),l=Math.round(l);var h=new i.Rect({shape:{x:s,y:a,width:l,height:c}});return e&&(h.shape[o?"width":"height"]=0,i.initProps(h,{shape:{width:l,height:c}},n)),h}function s(t,e,n){var o=t.getArea(),s=new i.Sector({shape:{cx:r(t.cx,1),cy:r(t.cy,1),r0:r(o.r0,1),r:r(o.r,1),startAngle:o.startAngle,endAngle:o.endAngle,clockwise:o.clockwise}});return e&&(s.shape.endAngle=o.startAngle,i.initProps(s,{shape:{endAngle:o.endAngle}},n)),s}e.createGridClipPath=o,e.createPolarClipPath=s,e.createClipPath=function(t,e,n){return t?"polar"===t.type?s(t,e,n):"cartesian2d"===t.type?o(t,e,n):null:null}},sRwP:function(t,e,n){n("jsU+"),n("2548"),n("Tp9H"),n("06DH"),n("dnwI"),n("fE02"),n("33Ds")},"sS/r":function(t,e,n){var i=n("4fz+"),r=n("iRjW"),o=n("Yl7c"),s=function(){this.group=new i,this.uid=r.getUID("viewComponent")},a=s.prototype={constructor:s,init:function(t,e){},render:function(t,e,n,i){},dispose:function(){},filterForExposedEvent:null};a.updateView=a.updateLayout=a.updateVisual=function(t,e,n,i){},o.enableClassExtend(s),o.enableClassManagement(s,{registerWhenExtend:!0});var l=s;t.exports=l},sS4s:function(t,e,n){t.exports=n.p+"7a7a92fc77193f8a3ecef04968c8de2c.js"},sX3c:function(t,e,n){(function(t){ace.define("ace/theme/tomorrow.css",["require","exports","module"],(function(t,e,n){n.exports='.ace-tomorrow .ace_gutter {\n background: #f6f6f6;\n color: #4D4D4C\n}\n\n.ace-tomorrow .ace_print-margin {\n width: 1px;\n background: #f6f6f6\n}\n\n.ace-tomorrow {\n background-color: #FFFFFF;\n color: #4D4D4C\n}\n\n.ace-tomorrow .ace_cursor {\n color: #AEAFAD\n}\n\n.ace-tomorrow .ace_marker-layer .ace_selection {\n background: #D6D6D6\n}\n\n.ace-tomorrow.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #FFFFFF;\n}\n\n.ace-tomorrow .ace_marker-layer .ace_step {\n background: rgb(255, 255, 0)\n}\n\n.ace-tomorrow .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid #D1D1D1\n}\n\n.ace-tomorrow .ace_marker-layer .ace_active-line {\n background: #EFEFEF\n}\n\n.ace-tomorrow .ace_gutter-active-line {\n background-color : #dcdcdc\n}\n\n.ace-tomorrow .ace_marker-layer .ace_selected-word {\n border: 1px solid #D6D6D6\n}\n\n.ace-tomorrow .ace_invisible {\n color: #D1D1D1\n}\n\n.ace-tomorrow .ace_keyword,\n.ace-tomorrow .ace_meta,\n.ace-tomorrow .ace_storage,\n.ace-tomorrow .ace_storage.ace_type,\n.ace-tomorrow .ace_support.ace_type {\n color: #8959A8\n}\n\n.ace-tomorrow .ace_keyword.ace_operator {\n color: #3E999F\n}\n\n.ace-tomorrow .ace_constant.ace_character,\n.ace-tomorrow .ace_constant.ace_language,\n.ace-tomorrow .ace_constant.ace_numeric,\n.ace-tomorrow .ace_keyword.ace_other.ace_unit,\n.ace-tomorrow .ace_support.ace_constant,\n.ace-tomorrow .ace_variable.ace_parameter {\n color: #F5871F\n}\n\n.ace-tomorrow .ace_constant.ace_other {\n color: #666969\n}\n\n.ace-tomorrow .ace_invalid {\n color: #FFFFFF;\n background-color: #C82829\n}\n\n.ace-tomorrow .ace_invalid.ace_deprecated {\n color: #FFFFFF;\n background-color: #8959A8\n}\n\n.ace-tomorrow .ace_fold {\n background-color: #4271AE;\n border-color: #4D4D4C\n}\n\n.ace-tomorrow .ace_entity.ace_name.ace_function,\n.ace-tomorrow .ace_support.ace_function,\n.ace-tomorrow .ace_variable {\n color: #4271AE\n}\n\n.ace-tomorrow .ace_support.ace_class,\n.ace-tomorrow .ace_support.ace_type {\n color: #C99E00\n}\n\n.ace-tomorrow .ace_heading,\n.ace-tomorrow .ace_markup.ace_heading,\n.ace-tomorrow .ace_string {\n color: #718C00\n}\n\n.ace-tomorrow .ace_entity.ace_name.ace_tag,\n.ace-tomorrow .ace_entity.ace_other.ace_attribute-name,\n.ace-tomorrow .ace_meta.ace_tag,\n.ace-tomorrow .ace_string.ace_regexp,\n.ace-tomorrow .ace_variable {\n color: #C82829\n}\n\n.ace-tomorrow .ace_comment {\n color: #8E908C\n}\n\n.ace-tomorrow .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bdu3f/BwAlfgctduB85QAAAABJRU5ErkJggg==) right repeat-y\n}\n\n.ace-tomorrow .ace_indent-guide-active {\n background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC") right repeat-y;\n} \n'})),ace.define("ace/theme/tomorrow",["require","exports","module","ace/theme/tomorrow.css","ace/lib/dom"],(function(t,e,n){e.isDark=!1,e.cssClass="ace-tomorrow",e.cssText=t("./tomorrow.css"),t("../lib/dom").importCssString(e.cssText,e.cssClass,!1)})),ace.require(["ace/theme/tomorrow"],(function(e){t&&(t.exports=e)}))}).call(this,n("YuTi")(t))},sdST:function(t,e,n){var i=n("hi0g");t.exports=function(t,e){return i((e=e||{}).coordDimensions||[],t,{dimsDef:e.dimensionsDefine||t.dimensionsDefine,encodeDef:e.encodeDefine||t.encodeDefine,dimCount:e.dimensionsCount,encodeDefaulter:e.encodeDefaulter,generateCoord:e.generateCoord,generateCoordCount:e.generateCoordCount})}},siMY:function(t,e,n){t.exports=n.p+"182fa653555b8340835b3bf4f7192ae2.js"},sjQ6:function(t,e,n){t.exports=n.p+"ef8f636d121f5d3e5047e1399c78ee2b.js"},slio:function(t,e,n){"use strict";(function(t){Object.defineProperty(e,"__esModule",{value:!0}),e.hashPersonalMessage=e.isValidSignature=e.fromRpcSig=e.toCompactSig=e.toRpcSig=e.ecrecover=e.ecsign=void 0;var i=n("IhPl"),r=n("zkNI"),o=n("DDDe"),s=n("hGN9"),a=n("KbHX"),l=n("ap2e");function c(t,e){var n=(0,l.toType)(t,l.TypeOutput.BN);if(n.eqn(0)||n.eqn(1))return(0,l.toType)(t,l.TypeOutput.BN);if(!e)return n.subn(27);var i=(0,l.toType)(e,l.TypeOutput.BN);return n.sub(i.muln(2).addn(35))}function u(t){var e=new r.BN(t);return e.eqn(0)||e.eqn(1)}e.ecsign=function(e,n,r){var o=(0,i.ecdsaSign)(e,n),s=o.signature,a=o.recid,c=t.from(s.slice(0,32)),u=t.from(s.slice(32,64));if(!r||"number"==typeof r){if(r&&!Number.isSafeInteger(r))throw new Error("The provided number is greater than MAX_SAFE_INTEGER (please use an alternative input type)");return{r:c,s:u,v:r?a+(2*r+35):a+27}}return{r:c,s:u,v:(0,l.toType)(r,l.TypeOutput.BN).muln(2).addn(35).addn(a).toArrayLike(t)}};e.ecrecover=function(e,n,r,s,a){var l=t.concat([(0,o.setLengthLeft)(r,32),(0,o.setLengthLeft)(s,32)],64),h=c(n,a);if(!u(h))throw new Error("Invalid signature v value");var d=(0,i.ecdsaRecover)(l,h.toNumber(),e);return t.from((0,i.publicKeyConvert)(d,!1).slice(1))};e.toRpcSig=function(e,n,i,r){if(!u(c(e,r)))throw new Error("Invalid signature v value");return(0,o.bufferToHex)(t.concat([(0,o.setLengthLeft)(n,32),(0,o.setLengthLeft)(i,32),(0,o.toBuffer)(e)]))};e.toCompactSig=function(e,n,i,r){if(!u(c(e,r)))throw new Error("Invalid signature v value");var s=(0,l.toType)(e,l.TypeOutput.Number),a=i;return(s>28&&s%2==1||1===s||28===s)&&((a=t.from(i))[0]|=128),(0,o.bufferToHex)(t.concat([(0,o.setLengthLeft)(n,32),(0,o.setLengthLeft)(a,32)]))};e.fromRpcSig=function(t){var e,n,i,r=(0,o.toBuffer)(t);if(r.length>=65)e=r.slice(0,32),n=r.slice(32,64),i=(0,o.bufferToInt)(r.slice(64));else{if(64!==r.length)throw new Error("Invalid signature length");e=r.slice(0,32),n=r.slice(32,64),i=(0,o.bufferToInt)(r.slice(32,33))>>7,n[0]&=127}return i<27&&(i+=27),{v:i,r:e,s:n}};e.isValidSignature=function(t,e,n,i,o){void 0===i&&(i=!0);var s=new r.BN("7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0",16),a=new r.BN("fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141",16);if(32!==e.length||32!==n.length)return!1;if(!u(c(t,o)))return!1;var l=new r.BN(e),h=new r.BN(n);return!(l.isZero()||l.gt(a)||h.isZero()||h.gt(a))&&(!i||1!==h.cmp(s))};e.hashPersonalMessage=function(e){(0,a.assertIsBuffer)(e);var n=t.from("Ethereum Signed Message:\n".concat(e.length),"utf-8");return(0,s.keccak)(t.concat([n,e]))}}).call(this,n("tjlA").Buffer)},sqB8:function(t,e,n){t.exports=n.p+"1afe87852eca4b28294075c659ff8c45.js"},szLb:function(t,e,n){"use strict";(function(t){function n(t){if("string"!=typeof t)throw new Error("[isHexPrefixed] input must be type 'string', received type ".concat(typeof t));return"0"===t[0]&&"x"===t[1]}Object.defineProperty(e,"__esModule",{value:!0}),e.isHexString=e.getKeys=e.fromAscii=e.fromUtf8=e.toAscii=e.arrayContainsArray=e.getBinarySize=e.padToEven=e.stripHexPrefix=e.isHexPrefixed=void 0,e.isHexPrefixed=n;function i(t){var e=t;if("string"!=typeof e)throw new Error("[padToEven] value must be type 'string', received ".concat(typeof e));return e.length%2&&(e="0".concat(e)),e}e.stripHexPrefix=function(t){if("string"!=typeof t)throw new Error("[stripHexPrefix] input must be type 'string', received ".concat(typeof t));return n(t)?t.slice(2):t},e.padToEven=i,e.getBinarySize=function(e){if("string"!=typeof e)throw new Error("[getBinarySize] method requires input type 'string', recieved ".concat(typeof e));return t.byteLength(e,"utf8")},e.arrayContainsArray=function(t,e,n){if(!0!==Array.isArray(t))throw new Error("[arrayContainsArray] method requires input 'superset' to be an array, got type '".concat(typeof t,"'"));if(!0!==Array.isArray(e))throw new Error("[arrayContainsArray] method requires input 'subset' to be an array, got type '".concat(typeof e,"'"));return e[n?"some":"every"]((function(e){return t.indexOf(e)>=0}))},e.toAscii=function(t){var e="",n=0,i=t.length;for("0x"===t.substring(0,2)&&(n=2);n>>32-e}function g(t,e,n,i,r,o,s,a){return p(t+(e^n^i)+o+s|0,a)+r|0}function m(t,e,n,i,r,o,s,a){return p(t+(e&n|~e&i)+o+s|0,a)+r|0}function v(t,e,n,i,r,o,s,a){return p(t+((e|~n)^i)+o+s|0,a)+r|0}function b(t,e,n,i,r,o,s,a){return p(t+(e&i|n&~i)+o+s|0,a)+r|0}function y(t,e,n,i,r,o,s,a){return p(t+(e^(n|~i))+o+s|0,a)+r|0}r(f,o),f.prototype._update=function(){for(var t=s,e=0;e<16;++e)t[e]=this._block.readInt32LE(4*e);for(var n=0|this._a,i=0|this._b,r=0|this._c,o=0|this._d,f=0|this._e,w=0|this._a,x=0|this._b,_=0|this._c,M=0|this._d,S=0|this._e,A=0;A<80;A+=1){var k,C;A<16?(k=g(n,i,r,o,f,t[a[A]],h[0],c[A]),C=y(w,x,_,M,S,t[l[A]],d[0],u[A])):A<32?(k=m(n,i,r,o,f,t[a[A]],h[1],c[A]),C=b(w,x,_,M,S,t[l[A]],d[1],u[A])):A<48?(k=v(n,i,r,o,f,t[a[A]],h[2],c[A]),C=v(w,x,_,M,S,t[l[A]],d[2],u[A])):A<64?(k=b(n,i,r,o,f,t[a[A]],h[3],c[A]),C=m(w,x,_,M,S,t[l[A]],d[3],u[A])):(k=y(n,i,r,o,f,t[a[A]],h[4],c[A]),C=g(w,x,_,M,S,t[l[A]],d[4],u[A])),n=f,f=o,o=p(r,10),r=i,i=k,w=S,S=M,M=p(_,10),_=x,x=C}var T=this._b+r+M|0;this._b=this._c+o+S|0,this._c=this._d+f+w|0,this._d=this._e+n+x|0,this._e=this._a+i+_|0,this._a=T},f.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var t=i.alloc?i.alloc(20):new i(20);return t.writeInt32LE(this._a,0),t.writeInt32LE(this._b,4),t.writeInt32LE(this._c,8),t.writeInt32LE(this._d,12),t.writeInt32LE(this._e,16),t},t.exports=f},tjlA:function(t,e,n){"use strict";(function(t){ +/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + */ +var i=n("H7XF"),r=n("kVK+"),o=n("IzUq");function s(){return l.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function a(t,e){if(s()=s())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+s().toString(16)+" bytes");return 0|t}function p(t,e){if(l.isBuffer(t))return t.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;"string"!=typeof t&&(t=""+t);var n=t.length;if(0===n)return 0;for(var i=!1;;)switch(e){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return j(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return U(t).length;default:if(i)return j(t).length;e=(""+e).toLowerCase(),i=!0}}function g(t,e,n){var i=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return E(this,e,n);case"utf8":case"utf-8":return k(this,e,n);case"ascii":return C(this,e,n);case"latin1":case"binary":return T(this,e,n);case"base64":return A(this,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return R(this,e,n);default:if(i)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),i=!0}}function m(t,e,n){var i=t[e];t[e]=t[n],t[n]=i}function v(t,e,n,i,r){if(0===t.length)return-1;if("string"==typeof n?(i=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=r?0:t.length-1),n<0&&(n=t.length+n),n>=t.length){if(r)return-1;n=t.length-1}else if(n<0){if(!r)return-1;n=0}if("string"==typeof e&&(e=l.from(e,i)),l.isBuffer(e))return 0===e.length?-1:b(t,e,n,i,r);if("number"==typeof e)return e&=255,l.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?r?Uint8Array.prototype.indexOf.call(t,e,n):Uint8Array.prototype.lastIndexOf.call(t,e,n):b(t,[e],n,i,r);throw new TypeError("val must be string, number or Buffer")}function b(t,e,n,i,r){var o,s=1,a=t.length,l=e.length;if(void 0!==i&&("ucs2"===(i=String(i).toLowerCase())||"ucs-2"===i||"utf16le"===i||"utf-16le"===i)){if(t.length<2||e.length<2)return-1;s=2,a/=2,l/=2,n/=2}function c(t,e){return 1===s?t[e]:t.readUInt16BE(e*s)}if(r){var u=-1;for(o=n;oa&&(n=a-l),o=n;o>=0;o--){for(var h=!0,d=0;dr&&(i=r):i=r;var o=e.length;if(o%2!=0)throw new TypeError("Invalid hex string");i>o/2&&(i=o/2);for(var s=0;s>8,r=n%256,o.push(r),o.push(i);return o}(e,t.length-n),t,n,i)}function A(t,e,n){return 0===e&&n===t.length?i.fromByteArray(t):i.fromByteArray(t.slice(e,n))}function k(t,e,n){n=Math.min(t.length,n);for(var i=[],r=e;r239?4:c>223?3:c>191?2:1;if(r+h<=n)switch(h){case 1:c<128&&(u=c);break;case 2:128==(192&(o=t[r+1]))&&(l=(31&c)<<6|63&o)>127&&(u=l);break;case 3:o=t[r+1],s=t[r+2],128==(192&o)&&128==(192&s)&&(l=(15&c)<<12|(63&o)<<6|63&s)>2047&&(l<55296||l>57343)&&(u=l);break;case 4:o=t[r+1],s=t[r+2],a=t[r+3],128==(192&o)&&128==(192&s)&&128==(192&a)&&(l=(15&c)<<18|(63&o)<<12|(63&s)<<6|63&a)>65535&&l<1114112&&(u=l)}null===u?(u=65533,h=1):u>65535&&(u-=65536,i.push(u>>>10&1023|55296),u=56320|1023&u),i.push(u),r+=h}return function(t){var e=t.length;if(e<=4096)return String.fromCharCode.apply(String,t);var n="",i=0;for(;i0&&(t=this.toString("hex",0,n).match(/.{2}/g).join(" "),this.length>n&&(t+=" ... ")),""},l.prototype.compare=function(t,e,n,i,r){if(!l.isBuffer(t))throw new TypeError("Argument must be a Buffer");if(void 0===e&&(e=0),void 0===n&&(n=t?t.length:0),void 0===i&&(i=0),void 0===r&&(r=this.length),e<0||n>t.length||i<0||r>this.length)throw new RangeError("out of range index");if(i>=r&&e>=n)return 0;if(i>=r)return-1;if(e>=n)return 1;if(this===t)return 0;for(var o=(r>>>=0)-(i>>>=0),s=(n>>>=0)-(e>>>=0),a=Math.min(o,s),c=this.slice(i,r),u=t.slice(e,n),h=0;hr)&&(n=r),t.length>0&&(n<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");i||(i="utf8");for(var o=!1;;)switch(i){case"hex":return y(this,t,e,n);case"utf8":case"utf-8":return w(this,t,e,n);case"ascii":return x(this,t,e,n);case"latin1":case"binary":return _(this,t,e,n);case"base64":return M(this,t,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return S(this,t,e,n);default:if(o)throw new TypeError("Unknown encoding: "+i);i=(""+i).toLowerCase(),o=!0}},l.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function C(t,e,n){var i="";n=Math.min(t.length,n);for(var r=e;ri)&&(n=i);for(var r="",o=e;on)throw new RangeError("Trying to access beyond buffer length")}function I(t,e,n,i,r,o){if(!l.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>r||et.length)throw new RangeError("Index out of range")}function O(t,e,n,i){e<0&&(e=65535+e+1);for(var r=0,o=Math.min(t.length-n,2);r>>8*(i?r:1-r)}function $(t,e,n,i){e<0&&(e=4294967295+e+1);for(var r=0,o=Math.min(t.length-n,4);r>>8*(i?r:3-r)&255}function P(t,e,n,i,r,o){if(n+i>t.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function D(t,e,n,i,o){return o||P(t,0,n,4),r.write(t,e,n,i,23,4),n+4}function B(t,e,n,i,o){return o||P(t,0,n,8),r.write(t,e,n,i,52,8),n+8}l.prototype.slice=function(t,e){var n,i=this.length;if((t=~~t)<0?(t+=i)<0&&(t=0):t>i&&(t=i),(e=void 0===e?i:~~e)<0?(e+=i)<0&&(e=0):e>i&&(e=i),e0&&(r*=256);)i+=this[t+--e]*r;return i},l.prototype.readUInt8=function(t,e){return e||L(t,1,this.length),this[t]},l.prototype.readUInt16LE=function(t,e){return e||L(t,2,this.length),this[t]|this[t+1]<<8},l.prototype.readUInt16BE=function(t,e){return e||L(t,2,this.length),this[t]<<8|this[t+1]},l.prototype.readUInt32LE=function(t,e){return e||L(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},l.prototype.readUInt32BE=function(t,e){return e||L(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},l.prototype.readIntLE=function(t,e,n){t|=0,e|=0,n||L(t,e,this.length);for(var i=this[t],r=1,o=0;++o=(r*=128)&&(i-=Math.pow(2,8*e)),i},l.prototype.readIntBE=function(t,e,n){t|=0,e|=0,n||L(t,e,this.length);for(var i=e,r=1,o=this[t+--i];i>0&&(r*=256);)o+=this[t+--i]*r;return o>=(r*=128)&&(o-=Math.pow(2,8*e)),o},l.prototype.readInt8=function(t,e){return e||L(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},l.prototype.readInt16LE=function(t,e){e||L(t,2,this.length);var n=this[t]|this[t+1]<<8;return 32768&n?4294901760|n:n},l.prototype.readInt16BE=function(t,e){e||L(t,2,this.length);var n=this[t+1]|this[t]<<8;return 32768&n?4294901760|n:n},l.prototype.readInt32LE=function(t,e){return e||L(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},l.prototype.readInt32BE=function(t,e){return e||L(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},l.prototype.readFloatLE=function(t,e){return e||L(t,4,this.length),r.read(this,t,!0,23,4)},l.prototype.readFloatBE=function(t,e){return e||L(t,4,this.length),r.read(this,t,!1,23,4)},l.prototype.readDoubleLE=function(t,e){return e||L(t,8,this.length),r.read(this,t,!0,52,8)},l.prototype.readDoubleBE=function(t,e){return e||L(t,8,this.length),r.read(this,t,!1,52,8)},l.prototype.writeUIntLE=function(t,e,n,i){(t=+t,e|=0,n|=0,i)||I(this,t,e,n,Math.pow(2,8*n)-1,0);var r=1,o=0;for(this[e]=255&t;++o=0&&(o*=256);)this[e+r]=t/o&255;return e+n},l.prototype.writeUInt8=function(t,e,n){return t=+t,e|=0,n||I(this,t,e,1,255,0),l.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[e]=255&t,e+1},l.prototype.writeUInt16LE=function(t,e,n){return t=+t,e|=0,n||I(this,t,e,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):O(this,t,e,!0),e+2},l.prototype.writeUInt16BE=function(t,e,n){return t=+t,e|=0,n||I(this,t,e,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):O(this,t,e,!1),e+2},l.prototype.writeUInt32LE=function(t,e,n){return t=+t,e|=0,n||I(this,t,e,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t):$(this,t,e,!0),e+4},l.prototype.writeUInt32BE=function(t,e,n){return t=+t,e|=0,n||I(this,t,e,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):$(this,t,e,!1),e+4},l.prototype.writeIntLE=function(t,e,n,i){if(t=+t,e|=0,!i){var r=Math.pow(2,8*n-1);I(this,t,e,n,r-1,-r)}var o=0,s=1,a=0;for(this[e]=255&t;++o>0)-a&255;return e+n},l.prototype.writeIntBE=function(t,e,n,i){if(t=+t,e|=0,!i){var r=Math.pow(2,8*n-1);I(this,t,e,n,r-1,-r)}var o=n-1,s=1,a=0;for(this[e+o]=255&t;--o>=0&&(s*=256);)t<0&&0===a&&0!==this[e+o+1]&&(a=1),this[e+o]=(t/s>>0)-a&255;return e+n},l.prototype.writeInt8=function(t,e,n){return t=+t,e|=0,n||I(this,t,e,1,127,-128),l.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[e]=255&t,e+1},l.prototype.writeInt16LE=function(t,e,n){return t=+t,e|=0,n||I(this,t,e,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):O(this,t,e,!0),e+2},l.prototype.writeInt16BE=function(t,e,n){return t=+t,e|=0,n||I(this,t,e,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):O(this,t,e,!1),e+2},l.prototype.writeInt32LE=function(t,e,n){return t=+t,e|=0,n||I(this,t,e,4,2147483647,-2147483648),l.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24):$(this,t,e,!0),e+4},l.prototype.writeInt32BE=function(t,e,n){return t=+t,e|=0,n||I(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),l.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):$(this,t,e,!1),e+4},l.prototype.writeFloatLE=function(t,e,n){return D(this,t,e,!0,n)},l.prototype.writeFloatBE=function(t,e,n){return D(this,t,e,!1,n)},l.prototype.writeDoubleLE=function(t,e,n){return B(this,t,e,!0,n)},l.prototype.writeDoubleBE=function(t,e,n){return B(this,t,e,!1,n)},l.prototype.copy=function(t,e,n,i){if(n||(n=0),i||0===i||(i=this.length),e>=t.length&&(e=t.length),e||(e=0),i>0&&i=this.length)throw new RangeError("sourceStart out of bounds");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),t.length-e=0;--r)t[r+e]=this[r+n];else if(o<1e3||!l.TYPED_ARRAY_SUPPORT)for(r=0;r>>=0,n=void 0===n?this.length:n>>>0,t||(t=0),"number"==typeof t)for(o=e;o55295&&n<57344){if(!r){if(n>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(s+1===i){(e-=3)>-1&&o.push(239,191,189);continue}r=n;continue}if(n<56320){(e-=3)>-1&&o.push(239,191,189),r=n;continue}n=65536+(r-55296<<10|n-56320)}else r&&(e-=3)>-1&&o.push(239,191,189);if(r=null,n<128){if((e-=1)<0)break;o.push(n)}else if(n<2048){if((e-=2)<0)break;o.push(n>>6|192,63&n|128)}else if(n<65536){if((e-=3)<0)break;o.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;o.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return o}function U(t){return i.toByteArray(function(t){if((t=function(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}(t).replace(N,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function z(t,e,n,i){for(var r=0;r=e.length||r>=t.length);++r)e[r+n]=t[r];return r}}).call(this,n("yLpj"))},tlln:function(t,e,n){t.exports=n.p+"af1de9b532b5108926ebe8f8dbe98c9d.js"},tm52:function(t,e,n){t.exports=n.p+"ca66e3089e6c4a01fceaa4c4675d4da1.js"},tnIz:function(t,e,n){var i=n("hwdV").Buffer;function r(t,e){this._block=i.alloc(t),this._finalSize=e,this._blockSize=t,this._len=0}r.prototype.update=function(t,e){"string"==typeof t&&(e=e||"utf8",t=i.from(t,e));for(var n=this._block,r=this._blockSize,o=t.length,s=this._len,a=0;a=this._finalSize&&(this._update(this._block),this._block.fill(0));var n=8*this._len;if(n<=4294967295)this._block.writeUInt32BE(n,this._blockSize-4);else{var i=(4294967295&n)>>>0,r=(n-i)/4294967296;this._block.writeUInt32BE(r,this._blockSize-8),this._block.writeUInt32BE(i,this._blockSize-4)}this._update(this._block);var o=this._hash();return t?o.toString(t):o},r.prototype._update=function(){throw new Error("_update must be implemented by subclass")},t.exports=r},ttaG:function(t,e,n){t.exports=n.p+"efc508c36f4e417ec6bd5ec72989443b.js"},twpp:function(t,e,n){t.exports=n.p+"9987746e670b35420f50b6ebd2e0d67a.js"},txkQ:function(t,e,n){var i=n("aX58");e.zrender=i;var r=n("Fofx");e.matrix=r;var o=n("QBsz");e.vector=o;var s=n("bYtY"),a=n("Qe9p");e.color=a;var l=n("IwbS"),c=n("OELB");e.number=c;var u=n("7aKB");e.format=u;var h=n("iLNv");h.throttle;e.throttle=h.throttle;var d=n("FUi9");e.helper=d;var f=n("vafp");e.parseGeoJSON=f;var p=n("YXkt");e.List=p;var g=n("Qxkt");e.Model=g;var m=n("hM6l");e.Axis=m;var v=n("ItGF");e.env=v;var b=f,y={};s.each(["map","each","filter","indexOf","inherits","reduce","filter","bind","curry","isArray","isString","isObject","isFunction","extend","defaults","clone","merge"],(function(t){y[t]=s[t]}));var w={};s.each(["extendShape","extendPath","makePath","makeImage","mergePath","resizePath","createIcon","setHoverStyle","setLabelStyle","setTextStyle","setText","getFont","updateProps","initProps","getTransform","clipPointsByRect","clipRectByRect","registerShape","getShapeClass","Group","Image","Text","Circle","Sector","Ring","Polygon","Polyline","Rect","Line","BezierCurve","Arc","IncrementalDisplayable","CompoundPath","LinearGradient","RadialGradient","BoundingRect"],(function(t){w[t]=l[t]})),e.parseGeoJson=b,e.util=y,e.graphic=w},txxU:function(t,e,n){"use strict";function i(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,i)}return n}function r(t){for(var e=1;e0?this.tail.next=e:this.head=e,this.tail=e,++this.length}unshift(t){const e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length}shift(){if(0===this.length)return;const t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}clear(){this.head=this.tail=null,this.length=0}join(t){if(0===this.length)return"";for(var e=this.head,n=""+e.data;e=e.next;)n+=t+e.data;return n}concat(t){if(0===this.length)return s.alloc(0);const e=s.allocUnsafe(t>>>0);for(var n,i,r,o=this.head,a=0;o;)n=o.data,i=e,r=a,s.prototype.copy.call(n,i,r),a+=o.data.length,o=o.next;return e}consume(t,e){var n;return tr.length?r.length:t;if(o===r.length?i+=r:i+=r.slice(0,t),0===(t-=o)){o===r.length?(++n,e.next?this.head=e.next:this.head=this.tail=null):(this.head=e,e.data=r.slice(o));break}++n}return this.length-=n,i}_getBuffer(t){const e=s.allocUnsafe(t);var n=this.head,i=1;for(n.data.copy(e),t-=n.data.length;n=n.next;){const r=n.data,o=t>r.length?r.length:t;if(r.copy(e,e.length-t,0,o),0===(t-=o)){o===r.length?(++i,n.next?this.head=n.next:this.head=this.tail=null):(this.head=n,n.data=r.slice(o));break}++i}return this.length-=i,e}[l](t,e){return a(this,r(r({},e),{},{depth:0,customInspect:!1}))}}},"tz+M":function(t,e,n){"use strict";var i=n("gK+I"),r=n("86MQ"),o=r.assert;function s(t,e){if(t instanceof s)return t;this._importDER(t,e)||(o(t.r&&t.s,"Signature without r or s"),this.r=new i(t.r,16),this.s=new i(t.s,16),void 0===t.recoveryParam?this.recoveryParam=null:this.recoveryParam=t.recoveryParam)}function a(){this.place=0}function l(t,e){var n=t[e.place++];if(!(128&n))return n;var i=15&n;if(0===i||i>4)return!1;for(var r=0,o=0,s=e.place;o>>=0;return!(r<=127)&&(e.place=s,r)}function c(t){for(var e=0,n=t.length-1;!t[e]&&!(128&t[e+1])&&e>>3);for(t.push(128|n);--n;)t.push(e>>>(n<<3)&255);t.push(e)}}t.exports=s,s.prototype._importDER=function(t,e){t=r.toArray(t,e);var n=new a;if(48!==t[n.place++])return!1;var o=l(t,n);if(!1===o)return!1;if(o+n.place!==t.length)return!1;if(2!==t[n.place++])return!1;var s=l(t,n);if(!1===s)return!1;var c=t.slice(n.place,s+n.place);if(n.place+=s,2!==t[n.place++])return!1;var u=l(t,n);if(!1===u)return!1;if(t.length!==u+n.place)return!1;var h=t.slice(n.place,u+n.place);if(0===c[0]){if(!(128&c[1]))return!1;c=c.slice(1)}if(0===h[0]){if(!(128&h[1]))return!1;h=h.slice(1)}return this.r=new i(c),this.s=new i(h),this.recoveryParam=null,!0},s.prototype.toDER=function(t){var e=this.r.toArray(),n=this.s.toArray();for(128&e[0]&&(e=[0].concat(e)),128&n[0]&&(n=[0].concat(n)),e=c(e),n=c(n);!(n[0]||128&n[1]);)n=n.slice(1);var i=[2];u(i,e.length),(i=i.concat(e)).push(2),u(i,n.length);var o=i.concat(n),s=[48];return u(s,o.length),s=s.concat(o),r.encode(s,t)}},u0Sq:function(t,e,n){"use strict";var i=n("w8CP"),r=n("7ckf"),o=i.rotl32,s=i.sum32,a=i.sum32_3,l=i.sum32_4,c=r.BlockHash;function u(){if(!(this instanceof u))return new u;c.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.endian="little"}function h(t,e,n,i){return t<=15?e^n^i:t<=31?e&n|~e&i:t<=47?(e|~n)^i:t<=63?e&i|n&~i:e^(n|~i)}function d(t){return t<=15?0:t<=31?1518500249:t<=47?1859775393:t<=63?2400959708:2840853838}function f(t){return t<=15?1352829926:t<=31?1548603684:t<=47?1836072691:t<=63?2053994217:0}i.inherits(u,c),e.ripemd160=u,u.blockSize=512,u.outSize=160,u.hmacStrength=192,u.padLength=64,u.prototype._update=function(t,e){for(var n=this.h[0],i=this.h[1],r=this.h[2],c=this.h[3],u=this.h[4],b=n,y=i,w=r,x=c,_=u,M=0;M<80;M++){var S=s(o(l(n,h(M,i,r,c),t[p[M]+e],d(M)),m[M]),u);n=u,u=c,c=o(r,10),r=i,i=S,S=s(o(l(b,h(79-M,y,w,x),t[g[M]+e],f(M)),v[M]),_),b=_,_=x,x=o(w,10),w=y,y=S}S=a(this.h[1],r,x),this.h[1]=a(this.h[2],c,_),this.h[2]=a(this.h[3],u,b),this.h[3]=a(this.h[4],n,y),this.h[4]=a(this.h[0],i,w),this.h[0]=S},u.prototype._digest=function(t){return"hex"===t?i.toHex32(this.h,"little"):i.split32(this.h,"little")};var p=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],g=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],m=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],v=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]},u3kY:function(t,e,n){t.exports=n.p+"1cb8df3a3416707163473b1ee9268faf.js"},uAnK:function(t,e,n){var i=n("bYtY"),r=n("Kagy"),o=n("KxfA").retrieveRawValue;t.exports=function(t,e){var n=e.getModel("aria");if(n.get("show"))if(n.get("description"))t.setAttribute("aria-label",n.get("description"));else{var s=0;e.eachSeries((function(t,e){++s}),this);var a,l=n.get("data.maxCount")||10,c=n.get("series.maxCount")||10,u=Math.min(s,c);if(!(s<1)){var h=function(){var t=e.getModel("title").option;t&&t.length&&(t=t[0]);return t&&t.text}();a=h?f(p("general.withTitle"),{title:h}):p("general.withoutTitle");var d=[];a+=f(p(s>1?"series.multiple.prefix":"series.single.prefix"),{seriesCount:s}),e.eachSeries((function(t,e){if(e1?"multiple":"single")+".";n=f(n=p(i?a+"withName":a+"withoutName"),{seriesId:t.seriesIndex,seriesName:t.get("name"),seriesType:(b=t.subType,r.series.typeNames[b]||"自定义图")});var c=t.getData();window.data=c,c.count()>l?n+=f(p("data.partialData"),{displayCnt:l}):n+=p("data.allData");for(var h=[],g=0;g0))return s.iaddn(1),this.keyFromPrivate(s)}},h.prototype._truncateToN=function(t,e){var n=8*t.byteLength()-this.n.bitLength();return n>0&&(t=t.ushrn(n)),!e&&t.cmp(this.n)>=0?t.sub(this.n):t},h.prototype.sign=function(t,e,n,o){"object"==typeof n&&(o=n,n=null),o||(o={}),e=this.keyFromPrivate(e,n),t=this._truncateToN(new i(t,16));for(var s=this.n.byteLength(),a=e.getPrivate().toArray("be",s),l=t.toArray("be",s),c=new r({hash:this.hash,entropy:a,nonce:l,pers:o.pers,persEnc:o.persEnc||"utf8"}),h=this.n.sub(new i(1)),d=0;;d++){var f=o.k?o.k(d):new i(c.generate(this.n.byteLength()));if(!((f=this._truncateToN(f,!0)).cmpn(1)<=0||f.cmp(h)>=0)){var p=this.g.mul(f);if(!p.isInfinity()){var g=p.getX(),m=g.umod(this.n);if(0!==m.cmpn(0)){var v=f.invm(this.n).mul(m.mul(e.getPrivate()).iadd(t));if(0!==(v=v.umod(this.n)).cmpn(0)){var b=(p.getY().isOdd()?1:0)|(0!==g.cmp(m)?2:0);return o.canonical&&v.cmp(this.nh)>0&&(v=this.n.sub(v),b^=1),new u({r:m,s:v,recoveryParam:b})}}}}}},h.prototype.verify=function(t,e,n,r){t=this._truncateToN(new i(t,16)),n=this.keyFromPublic(n,r);var o=(e=new u(e,"hex")).r,s=e.s;if(o.cmpn(1)<0||o.cmp(this.n)>=0)return!1;if(s.cmpn(1)<0||s.cmp(this.n)>=0)return!1;var a,l=s.invm(this.n),c=l.mul(t).umod(this.n),h=l.mul(o).umod(this.n);return this.curve._maxwellTrick?!(a=this.g.jmulAdd(c,n.getPublic(),h)).isInfinity()&&a.eqXToP(o):!(a=this.g.mulAdd(c,n.getPublic(),h)).isInfinity()&&0===a.getX().umod(this.n).cmp(o)},h.prototype.recoverPubKey=function(t,e,n,r){l((3&n)===n,"The recovery param is more than two bits"),e=new u(e,r);var o=this.n,s=new i(t),a=e.r,c=e.s,h=1&n,d=n>>1;if(a.cmp(this.curve.p.umod(this.curve.n))>=0&&d)throw new Error("Unable to find sencond key candinate");a=d?this.curve.pointFromX(a.add(this.curve.n),h):this.curve.pointFromX(a,h);var f=e.r.invm(o),p=o.sub(s).mul(f).umod(o),g=c.mul(f).umod(o);return this.g.mulAdd(p,a,g)},h.prototype.getKeyRecoveryParam=function(t,e,n,i){if(null!==(e=new u(e,i)).recoveryParam)return e.recoveryParam;for(var r=0;r<4;r++){var o;try{o=this.recoverPubKey(t,e,r)}catch(t){continue}if(o.eq(n))return r}throw new Error("Unable to find valid recovery factor")}},"ub/A":function(t,e,n){t.exports=n.p+"62f1660714df9d262535c413ec4535ef.js"},"ubW+":function(t,e,n){"use strict";const i=n("nYpo").codes.ERR_INVALID_OPT_VALUE;t.exports={getHighWaterMark:function(t,e,n,r){const o=function(t,e,n){return null!=t.highWaterMark?t.highWaterMark:e?t[n]:null}(e,r,n);if(null!=o){if(!isFinite(o)||Math.floor(o)!==o||o<0){throw new i(r?n:"highWaterMark",o)}return Math.floor(o)}return t.objectMode?16:16384}}},ud1w:function(t,e,n){t.exports=n.p+"bd67544cb7690db5a573f0212ef4b767.js"},uzSA:function(t,e,n){"use strict";var i=n("gK+I"),r=n("86MQ").assert;function o(t,e){this.ec=t,this.priv=null,this.pub=null,e.priv&&this._importPrivate(e.priv,e.privEnc),e.pub&&this._importPublic(e.pub,e.pubEnc)}t.exports=o,o.fromPublic=function(t,e,n){return e instanceof o?e:new o(t,{pub:e,pubEnc:n})},o.fromPrivate=function(t,e,n){return e instanceof o?e:new o(t,{priv:e,privEnc:n})},o.prototype.validate=function(){var t=this.getPublic();return t.isInfinity()?{result:!1,reason:"Invalid public key"}:t.validate()?t.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:"Public key * N != O"}:{result:!1,reason:"Public key is not a point"}},o.prototype.getPublic=function(t,e){return"string"==typeof t&&(e=t,t=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),e?this.pub.encode(e,t):this.pub},o.prototype.getPrivate=function(t){return"hex"===t?this.priv.toString(16,2):this.priv},o.prototype._importPrivate=function(t,e){this.priv=new i(t,e||16),this.priv=this.priv.umod(this.ec.curve.n)},o.prototype._importPublic=function(t,e){if(t.x||t.y)return"mont"===this.ec.curve.type?r(t.x,"Need x coordinate"):"short"!==this.ec.curve.type&&"edwards"!==this.ec.curve.type||r(t.x&&t.y,"Need both x and y coordinate"),void(this.pub=this.ec.curve.point(t.x,t.y));this.pub=this.ec.curve.decodePoint(t,e)},o.prototype.derive=function(t){return t.validate()||r(t.validate(),"public point not validated"),t.mul(this.priv).getX()},o.prototype.sign=function(t,e,n){return this.ec.sign(t,this,e,n)},o.prototype.verify=function(t,e){return this.ec.verify(t,e,this)},o.prototype.inspect=function(){return""}},v0oB:function(t,e,n){t.exports=n.p+"5f6f5026d13b2a9b884a8144a119cf9e.js"},v9Uf:function(t,e,n){t.exports=n.p+"d8d4867d7fff5b67bbbdd47e637b3a6c.js"},vAKk:function(t,e,n){t.exports=n.p+"ab30fd1481481ea1a281fe8b19b2bee0.js"},vKrq:function(t,e,n){t.exports=n.p+"c23b1f80ab9746b425f3848bdaacc144.js"},vPKu:function(t,e,n){t.exports=n.p+"5f708f5469b05de5bae06c0e8eaa2ce7.js"},vWvF:function(t,e,n){var i=n("Bq2U"),r=n("SUKs"),o=n("bYtY"),s=o.isString,a=o.isFunction,l=o.isObject,c=o.isArrayLike,u=o.indexOf,h=function(){this.animators=[]};function d(t,e,n,i,r,o,u,h){s(i)?(o=r,r=i,i=0):a(r)?(o=r,r="linear",i=0):a(i)?(o=i,i=0):a(n)?(o=n,n=500):n||(n=500),t.stopAnimation(),function t(e,n,i,r,o,s,a){var u={},h=0;for(var d in r)r.hasOwnProperty(d)&&(null!=i[d]?l(r[d])&&!c(r[d])?t(e,n?n+"."+d:d,i[d],r[d],o,s,a):(a?(u[d]=i[d],f(e,n,d,r[d])):u[d]=r[d],h++):null==r[d]||a||f(e,n,d,r[d]));h>0&&e.animate(n,!1).when(null==o?500:o,u).delay(s||0)}(t,"",t,e,n,i,h);var d=t.animators.slice(),p=d.length;function g(){--p||o&&o()}p||o&&o();for(var m=0;m=0)&&t(o,i,r)}))}var f=d.prototype;function p(t){return t[0]>t[1]&&t.reverse(),t}function g(t,e){return o.parseFinder(t,e,{includeMainTypes:h})}f.setOutputRanges=function(t,e){this.matchOutputRanges(t,e,(function(t,e,n){if((t.coordRanges||(t.coordRanges=[])).push(e),!t.coordRange){t.coordRange=e;var i=y[t.brushType](0,n,e);t.__rangeOffset={offset:x[t.brushType](i.values,t.range,[1,1]),xyMinMax:i.xyMinMax}}}))},f.matchOutputRanges=function(t,e,n){a(t,(function(t){var r=this.findTargetInfo(t,e);r&&!0!==r&&i.each(r.coordSyses,(function(i){var r=y[t.brushType](1,i,t.range);n(t,r.values,i,e)}))}),this)},f.setInputRanges=function(t,e){a(t,(function(t){var n,i,r,o,s,a=this.findTargetInfo(t,e);if(t.range=t.range||[],a&&!0!==a){t.panelId=a.panelId;var l=y[t.brushType](0,a.coordSys,t.coordRange),c=t.__rangeOffset;t.range=c?x[t.brushType](l.values,c.offset,(n=l.xyMinMax,i=c.xyMinMax,r=M(n),o=M(i),s=[r[0]/o[0],r[1]/o[1]],isNaN(s[0])&&(s[0]=1),isNaN(s[1])&&(s[1]=1),s)):l.values}}),this)},f.makePanelOpts=function(t,e){return i.map(this._targetInfoList,(function(n){var i=n.getPanelRect();return{panelId:n.panelId,defaultBrushType:e&&e(n),clipPath:s.makeRectPanelClipPath(i),isTargetByCursor:s.makeRectIsTargetByCursor(i,t,n.coordSysModel),getLinearBrushOtherExtent:s.makeLinearBrushOtherExtent(i)}}))},f.controlSeries=function(t,e,n){var i=this.findTargetInfo(t,n);return!0===i||i&&l(i.coordSyses,e.coordinateSystem)>=0},f.findTargetInfo=function(t,e){for(var n=this._targetInfoList,i=g(e,t),r=0;r=0||l(r,t.getAxis("y").model)>=0)&&o.push(t)})),e.push({panelId:"grid--"+t.id,gridModel:t,coordSysModel:t,coordSys:o[0],coordSyses:o,getPanelRect:b.grid,xAxisDeclared:c[t.id],yAxisDeclared:u[t.id]})})))},geo:function(t,e){a(t.geoModels,(function(t){var n=t.coordinateSystem;e.push({panelId:"geo--"+t.id,geoModel:t,coordSysModel:t,coordSys:n,coordSyses:[n],getPanelRect:b.geo})}))}},v=[function(t,e){var n=t.xAxisModel,i=t.yAxisModel,r=t.gridModel;return!r&&n&&(r=n.axis.grid.model),!r&&i&&(r=i.axis.grid.model),r&&r===e.gridModel},function(t,e){var n=t.geoModel;return n&&n===e.geoModel}],b={grid:function(){return this.coordSys.grid.getRect().clone()},geo:function(){var t=this.coordSys,e=t.getBoundingRect().clone();return e.applyTransform(r.getTransform(t)),e}},y={lineX:c(w,0),lineY:c(w,1),rect:function(t,e,n){var i=e[u[t]]([n[0][0],n[1][0]]),r=e[u[t]]([n[0][1],n[1][1]]),o=[p([i[0],r[0]]),p([i[1],r[1]])];return{values:o,xyMinMax:o}},polygon:function(t,e,n){var r=[[1/0,-1/0],[1/0,-1/0]];return{values:i.map(n,(function(n){var i=e[u[t]](n);return r[0][0]=Math.min(r[0][0],i[0]),r[1][0]=Math.min(r[1][0],i[1]),r[0][1]=Math.max(r[0][1],i[0]),r[1][1]=Math.max(r[1][1],i[1]),i})),xyMinMax:r}}};function w(t,e,n,r){var o=n.getAxis(["x","y"][t]),s=p(i.map([0,1],(function(t){return e?o.coordToData(o.toLocalCoord(r[t])):o.toGlobalCoord(o.dataToCoord(r[t]))}))),a=[];return a[t]=s,a[1-t]=[NaN,NaN],{values:s,xyMinMax:a}}var x={lineX:c(_,0),lineY:c(_,1),rect:function(t,e,n){return[[t[0][0]-n[0]*e[0][0],t[0][1]-n[0]*e[0][1]],[t[1][0]-n[1]*e[1][0],t[1][1]-n[1]*e[1][1]]]},polygon:function(t,e,n){return i.map(t,(function(t,i){return[t[0]-n[0]*e[i][0],t[1]-n[1]*e[i][1]]}))}};function _(t,e,n,i){return[e[0]-i[t]*n[0],e[1]-i[t]*n[1]]}function M(t){return t?[t[0][1]-t[0][0],t[1][1]-t[1][0]]:[NaN,NaN]}var S=d;t.exports=S},vafp:function(t,e,n){var i=n("bYtY"),r=n("8nly");function o(t,e,n){for(var i=[],r=e[0],o=e[1],s=0;s>1^-(1&a),l=l>>1^-(1&l),r=a+=r,o=l+=o,i.push([a/n,l/n])}return i}t.exports=function(t,e){return function(t){if(!t.UTF8Encoding)return t;var e=t.UTF8Scale;null==e&&(e=1024);for(var n=t.features,i=0;i0})),(function(t){var n=t.properties,o=t.geometry,s=o.coordinates,a=[];"Polygon"===o.type&&a.push({type:"polygon",exterior:s[0],interiors:s.slice(1)}),"MultiPolygon"===o.type&&i.each(s,(function(t){t[0]&&a.push({type:"polygon",exterior:t[0],interiors:t.slice(1)})}));var l=new r(n[e||"name"],a,n.cp);return l.properties=n,l}))}},vgQK:function(t,e,n){t.exports=n.p+"b82b206b6d7ead500802f08c7f1bcf56.js"},vgaW:function(t,e,n){t.exports=n.p+"2bba99eb717e1aa22e45284a964ca73f.js"},vrKq:function(t,e,n){t.exports=n.p+"22ddca0f2cac653ae8eebd716e965aa7.js"},"vu/Q":function(t,e,n){t.exports=n.p+"81c815664e53f84459fe8c5d6d1023a6.js"},w8CP:function(t,e,n){"use strict";var i=n("2j6C"),r=n("P7XM");function o(t,e){return 55296==(64512&t.charCodeAt(e))&&(!(e<0||e+1>=t.length)&&56320==(64512&t.charCodeAt(e+1)))}function s(t){return(t>>>24|t>>>8&65280|t<<8&16711680|(255&t)<<24)>>>0}function a(t){return 1===t.length?"0"+t:t}function l(t){return 7===t.length?"0"+t:6===t.length?"00"+t:5===t.length?"000"+t:4===t.length?"0000"+t:3===t.length?"00000"+t:2===t.length?"000000"+t:1===t.length?"0000000"+t:t}e.inherits=r,e.toArray=function(t,e){if(Array.isArray(t))return t.slice();if(!t)return[];var n=[];if("string"==typeof t)if(e){if("hex"===e)for((t=t.replace(/[^a-z0-9]+/gi,"")).length%2!=0&&(t="0"+t),r=0;r>6|192,n[i++]=63&s|128):o(t,r)?(s=65536+((1023&s)<<10)+(1023&t.charCodeAt(++r)),n[i++]=s>>18|240,n[i++]=s>>12&63|128,n[i++]=s>>6&63|128,n[i++]=63&s|128):(n[i++]=s>>12|224,n[i++]=s>>6&63|128,n[i++]=63&s|128)}else for(r=0;r>>0}return s},e.split32=function(t,e){for(var n=new Array(4*t.length),i=0,r=0;i>>24,n[r+1]=o>>>16&255,n[r+2]=o>>>8&255,n[r+3]=255&o):(n[r+3]=o>>>24,n[r+2]=o>>>16&255,n[r+1]=o>>>8&255,n[r]=255&o)}return n},e.rotr32=function(t,e){return t>>>e|t<<32-e},e.rotl32=function(t,e){return t<>>32-e},e.sum32=function(t,e){return t+e>>>0},e.sum32_3=function(t,e,n){return t+e+n>>>0},e.sum32_4=function(t,e,n,i){return t+e+n+i>>>0},e.sum32_5=function(t,e,n,i,r){return t+e+n+i+r>>>0},e.sum64=function(t,e,n,i){var r=t[e],o=i+t[e+1]>>>0,s=(o>>0,t[e+1]=o},e.sum64_hi=function(t,e,n,i){return(e+i>>>0>>0},e.sum64_lo=function(t,e,n,i){return e+i>>>0},e.sum64_4_hi=function(t,e,n,i,r,o,s,a){var l=0,c=e;return l+=(c=c+i>>>0)>>0)>>0)>>0},e.sum64_4_lo=function(t,e,n,i,r,o,s,a){return e+i+o+a>>>0},e.sum64_5_hi=function(t,e,n,i,r,o,s,a,l,c){var u=0,h=e;return u+=(h=h+i>>>0)>>0)>>0)>>0)>>0},e.sum64_5_lo=function(t,e,n,i,r,o,s,a,l,c){return e+i+o+a+c>>>0},e.rotr64_hi=function(t,e,n){return(e<<32-n|t>>>n)>>>0},e.rotr64_lo=function(t,e,n){return(t<<32-n|e>>>n)>>>0},e.shr64_hi=function(t,e,n){return t>>>n},e.shr64_lo=function(t,e,n){return(t<<32-n|e>>>n)>>>0}},wMYD:function(t,e,n){t.exports=n.p+"c8fa7b978e3d1a3d8871518e9cb83968.js"},wMjp:function(t,e,n){t.exports=n.p+"dde83af0489170bfa8323236b2eb8206.js"},wlUN:function(t,e,n){t.exports=n.p+"e970a8b8e51d2b1fe9d44e1b2c741ff1.js"},wnlL:function(t,e,n){t.exports=n.p+"0410ca02b96655ac3c08452105cdad32.js"},wxfR:function(t,e,n){t.exports=n.p+"c6c186b45f36f18d9ce1fb2bc07fa5e3.js"},wzGL:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n("mQ7Z"),r=n("aYMp");e.keccak224=i.createHashFunction((function(){return r("keccak224")})),e.keccak256=i.createHashFunction((function(){return r("keccak256")})),e.keccak384=i.createHashFunction((function(){return r("keccak384")})),e.keccak512=i.createHashFunction((function(){return r("keccak512")}))},x1e2:function(t,e,n){t.exports=n.p+"909037dfc8091283e4134bc6e5448e2b.js"},x3X8:function(t,e,n){var i=n("KxfA").retrieveRawValue;e.getDefaultLabel=function(t,e){var n=t.mapDimension("defaultedLabel",!0),r=n.length;if(1===r)return i(t,e,n[0]);if(r){for(var o=[],s=0;s=0&&n<=r.b}}function P(t){return function(e){return null==e?void 0:e[t]}}var D=P("byteLength"),B=$(D),N=/\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/;var F=r.r?function(t){return r.l?Object(r.l)(t)&&!k(t):B(t)&&N.test(r.t.call(t))}:O(!1),j=P("length");function U(t,e){e=function(t){for(var e={},n=t.length,i=0;i":">",'"':""","'":"'","`":"`"},Ft=Bt(Nt),jt=Bt(ct(Nt)),Ut=V.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g},zt=/(.)^/,Ht={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},Wt=/\\|'|\r|\n|\u2028|\u2029/g;function Vt(t){return"\\"+Ht[t]}var qt=/^\s*(\w|\$)+\s*$/;function Gt(t,e,n){!e&&n&&(e=n),e=pt({},e,V.templateSettings);var i=RegExp([(e.escape||zt).source,(e.interpolate||zt).source,(e.evaluate||zt).source].join("|")+"|$","g"),r=0,o="__p+='";t.replace(i,(function(e,n,i,s,a){return o+=t.slice(r,a).replace(Wt,Vt),r=a+e.length,n?o+="'+\n((__t=("+n+"))==null?'':_.escape(__t))+\n'":i?o+="'+\n((__t=("+i+"))==null?'':__t)+\n'":s&&(o+="';\n"+s+"\n__p+='"),e})),o+="';\n";var s,a=e.variable;if(a){if(!qt.test(a))throw new Error("variable is not a bare identifier: "+a)}else o="with(obj||{}){\n"+o+"}\n",a="obj";o="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+o+"return __p;\n";try{s=new Function(a,"_",o)}catch(t){throw t.source=o,t}var l=function(t){return s.call(this,t,V)};return l.source="function("+a+"){\n"+o+"}",l}function Yt(t,e,n){var i=(e=wt(e)).length;if(!i)return x(n)?n.call(t):n;for(var r=0;r1)ie(a,e-1,n,i),r=i.length;else for(var l=0,c=a.length;le?(i&&(clearTimeout(i),i=null),a=c,s=t.apply(r,o),i||(r=o=null)):i||!1===n.trailing||(i=setTimeout(l,u)),s};return c.cancel=function(){clearTimeout(i),a=0,i=r=o=null},c}function ce(t,e,n){var i,r,s,a,l,c=function(){var o=Dt()-r;e>o?i=setTimeout(c,e-o):(i=null,n||(a=t.apply(l,s)),i||(s=l=null))},u=o((function(o){return l=this,s=o,r=Dt(),i||(i=setTimeout(c,e),n&&(a=t.apply(l,s))),a}));return u.cancel=function(){clearTimeout(i),i=s=l=null},u}function ue(t,e){return te(e,t)}function he(t){return function(){return!t.apply(this,arguments)}}function de(){var t=arguments,e=t.length-1;return function(){for(var n=e,i=t[e].apply(this,arguments);n--;)i=t[n].call(this,i);return i}}function fe(t,e){return function(){if(--t<1)return e.apply(this,arguments)}}function pe(t,e){var n;return function(){return--t>0&&(n=e.apply(this,arguments)),t<=1&&(e=null),n}}var ge=te(pe,2);function me(t,e,n){e=Rt(e,n);for(var i,r=z(t),o=0,s=r.length;o0?0:r-1;o>=0&&o0?a=s>=0?s:Math.max(s+l,a):l=s>=0?Math.min(s+1,l):s+l+1;else if(n&&s&&l)return i[s=n(i,o)]===o?s:-1;if(o!=o)return(s=e(r.q.call(i,a,l),I))>=0?s+a:-1;for(s=t>0?a:l-1;s>=0&&s0?0:s-1;for(r||(i=e[o?o[a]:a],a+=t);a>=0&&a=3;return e(t,Ct(n,r,4),i,o)}}var Ee=Te(1),Re=Te(-1);function Le(t,e,n){var i=[];return e=Rt(e,n),ke(t,(function(t,n,r){e(t,n,r)&&i.push(t)})),i}function Ie(t,e,n){return Le(t,he(Rt(e)),n)}function Oe(t,e,n){e=Rt(e,n);for(var i=!ne(t)&&z(t),r=(i||t).length,o=0;o=0}var De=o((function(t,e,n){var i,r;return x(e)?r=e:(e=wt(e),i=e.slice(0,-1),e=e[e.length-1]),Ce(t,(function(t){var o=r;if(!o){if(i&&i.length&&(t=xt(t,i)),null==t)return;o=t[e]}return null==o?o:o.apply(t,n)}))}));function Be(t,e){return Ce(t,kt(e))}function Ne(t,e){return Le(t,At(e))}function Fe(t,e,n){var i,r,o=-1/0,s=-1/0;if(null==e||"number"==typeof e&&"object"!=typeof t[0]&&null!=t)for(var a=0,l=(t=ne(t)?t:at(t)).length;ao&&(o=i);else e=Rt(e,n),ke(t,(function(t,n,i){((r=e(t,n,i))>s||r===-1/0&&o===-1/0)&&(o=t,s=r)}));return o}function je(t,e,n){var i,r,o=1/0,s=1/0;if(null==e||"number"==typeof e&&"object"!=typeof t[0]&&null!=t)for(var a=0,l=(t=ne(t)?t:at(t)).length;ai||void 0===n)return 1;if(n1&&(i=Ct(i,e[1])),e=K(t)):(i=Je,e=ie(e,!1,!1),t=Object(t));for(var r=0,o=e.length;r1&&(n=e[1])):(e=Ce(ie(e,!1,!1),String),i=function(t,n){return!Pe(e,n)}),Qe(t,i,n)}));function en(t,e,n){return r.q.call(t,0,Math.max(0,t.length-(null==e||n?1:e)))}function nn(t,e,n){return null==t||t.length<1?null==e||n?void 0:[]:null==e||n?t[0]:en(t,t.length-e)}function rn(t,e,n){return r.q.call(t,null==e||n?1:e)}function on(t,e,n){return null==t||t.length<1?null==e||n?void 0:[]:null==e||n?t[t.length-1]:rn(t,Math.max(0,t.length-e))}function sn(t){return Le(t,Boolean)}function an(t,e){return ie(t,e,!1)}var ln=o((function(t,e){return e=ie(e,!0,!0),Le(t,(function(t){return!Pe(e,t)}))})),cn=o((function(t,e){return ln(t,e)}));function un(t,e,n,i){c(e)||(i=n,n=e,e=!1),null!=n&&(n=Rt(n,i));for(var r=[],o=[],s=0,a=j(t);s1e-10&&(r.width+=s/a,r.height+=s/a,r.x-=s/a/2,r.y-=s/a/2)}return r}return t},contain:function(t,e){var n=this.transformCoordToLocal(t,e),i=this.getBoundingRect(),r=this.style;if(t=n[0],e=n[1],i.contain(t,e)){var o=this.path.data;if(r.hasStroke()){var a=r.lineWidth,l=r.strokeNoScale?this.getLineScale():1;if(l>1e-10&&(r.hasFill()||(a=Math.max(a,this.strokeContainThreshold)),s.containStroke(o,a/l,t,e)))return!0}if(r.hasFill())return s.contain(o,t,e)}return!1},dirty:function(t){null==t&&(t=!0),t&&(this.__dirtyPath=t,this._rect=null),this.__dirty=this.__dirtyText=!0,this.__zr&&this.__zr.refresh(),this.__clipTarget&&this.__clipTarget.dirty()},animateShape:function(t){return this.animate("shape",t)},attrKV:function(t,e){"shape"===t?(this.setShape(e),this.__dirtyPath=!0,this._rect=null):i.prototype.attrKV.call(this,t,e)},setShape:function(t,e){var n=this.shape;if(n){if(r.isObject(t))for(var i in t)t.hasOwnProperty(i)&&(n[i]=t[i]);else n[t]=e;this.dirty(!0)}return this},getLineScale:function(){var t=this.transform;return t&&l(t[0]-1)>1e-10&&l(t[3]-1)>1e-10?Math.sqrt(l(t[0]*t[3]-t[2]*t[1])):1}},u.extend=function(t){var e=function(e){u.call(this,e),t.style&&this.style.extendFrom(t.style,!1);var n=t.shape;if(n){this.shape=this.shape||{};var i=this.shape;for(var r in n)!i.hasOwnProperty(r)&&n.hasOwnProperty(r)&&(i[r]=n[r])}t.init&&t.init.call(this,e)};for(var n in r.inherits(e,u),t)"style"!==n&&"shape"!==n&&(e.prototype[n]=t[n]);return e},r.inherits(u,i);var h=u;t.exports=h},"y+lR":function(t,e,n){var i=n("bYtY"),r=n("mFDi"),o=n("z35g");function s(t){o.call(this,t)}s.prototype={constructor:s,type:"cartesian2d",dimensions:["x","y"],getBaseAxis:function(){return this.getAxesByScale("ordinal")[0]||this.getAxesByScale("time")[0]||this.getAxis("x")},containPoint:function(t){var e=this.getAxis("x"),n=this.getAxis("y");return e.contain(e.toLocalCoord(t[0]))&&n.contain(n.toLocalCoord(t[1]))},containData:function(t){return this.getAxis("x").containData(t[0])&&this.getAxis("y").containData(t[1])},dataToPoint:function(t,e,n){var i=this.getAxis("x"),r=this.getAxis("y");return(n=n||[])[0]=i.toGlobalCoord(i.dataToCoord(t[0])),n[1]=r.toGlobalCoord(r.dataToCoord(t[1])),n},clampData:function(t,e){var n=this.getAxis("x").scale,i=this.getAxis("y").scale,r=n.getExtent(),o=i.getExtent(),s=n.parse(t[0]),a=i.parse(t[1]);return(e=e||[])[0]=Math.min(Math.max(Math.min(r[0],r[1]),s),Math.max(r[0],r[1])),e[1]=Math.min(Math.max(Math.min(o[0],o[1]),a),Math.max(o[0],o[1])),e},pointToData:function(t,e){var n=this.getAxis("x"),i=this.getAxis("y");return(e=e||[])[0]=n.coordToData(n.toLocalCoord(t[0])),e[1]=i.coordToData(i.toLocalCoord(t[1])),e},getOtherAxis:function(t){return this.getAxis("x"===t.dim?"y":"x")},getArea:function(){var t=this.getAxis("x").getGlobalExtent(),e=this.getAxis("y").getGlobalExtent(),n=Math.min(t[0],t[1]),i=Math.min(e[0],e[1]),o=Math.max(t[0],t[1])-n,s=Math.max(e[0],e[1])-i;return new r(n,i,o,s)}},i.inherits(s,o);var a=s;t.exports=a},y23F:function(t,e){function n(){this.on("mousedown",this._dragStart,this),this.on("mousemove",this._drag,this),this.on("mouseup",this._dragEnd,this)}function i(t,e){return{target:t,topTarget:e&&e.topTarget}}n.prototype={constructor:n,_dragStart:function(t){for(var e=t.target;e&&!e.draggable;)e=e.parent;e&&(this._draggingTarget=e,e.dragging=!0,this._x=t.offsetX,this._y=t.offsetY,this.dispatchToElement(i(e,t),"dragstart",t.event))},_drag:function(t){var e=this._draggingTarget;if(e){var n=t.offsetX,r=t.offsetY,o=n-this._x,s=r-this._y;this._x=n,this._y=r,e.drift(o,s,t),this.dispatchToElement(i(e,t),"drag",t.event);var a=this.findHover(n,r,e).target,l=this._dropTarget;this._dropTarget=a,e!==a&&(l&&a!==l&&this.dispatchToElement(i(l,t),"dragleave",t.event),a&&a!==l&&this.dispatchToElement(i(a,t),"dragenter",t.event))}},_dragEnd:function(t){var e=this._draggingTarget;e&&(e.dragging=!1),this.dispatchToElement(i(e,t),"dragend",t.event),this._dropTarget&&this.dispatchToElement(i(this._dropTarget,t),"drop",t.event),this._draggingTarget=null,this._dropTarget=null}};var r=n;t.exports=r},"y4/Y":function(t,e,n){var i=n("ProS"),r=n("bYtY"),o=n("zTMp"),s=n("62sa");n("SKx+"),n("1LEl"),n("Sp2Z"),i.registerPreprocessor((function(t){if(t){(!t.axisPointer||0===t.axisPointer.length)&&(t.axisPointer={});var e=t.axisPointer.link;e&&!r.isArray(e)&&(t.axisPointer.link=[e])}})),i.registerProcessor(i.PRIORITY.PROCESSOR.STATISTIC,(function(t,e){t.getComponent("axisPointer").coordSysAxesInfo=o.collect(t,e)})),i.registerAction({type:"updateAxisPointer",event:"updateAxisPointer",update:":updateAxisPointer"},s)},yC4Y:function(t,e,n){t.exports=n.p+"49a6772f0e4c0ad12d9475bef3ec1dd4.js"},yPIf:function(t,e,n){t.exports=n.p+"c3b0cd15adcc12a549e7ac5d165ac1f4.js"},yYxu:function(t,e,n){const i=n("4HPa"),r=n("kqlA");t.exports=function(t){const e=i(t),n=r(t);return function(t,i){switch("string"==typeof t?t.toLowerCase():t){case"keccak224":return new e(1152,448,null,224,i);case"keccak256":return new e(1088,512,null,256,i);case"keccak384":return new e(832,768,null,384,i);case"keccak512":return new e(576,1024,null,512,i);case"sha3-224":return new e(1152,448,6,224,i);case"sha3-256":return new e(1088,512,6,256,i);case"sha3-384":return new e(832,768,6,384,i);case"sha3-512":return new e(576,1024,6,512,i);case"shake128":return new n(1344,256,31,i);case"shake256":return new n(1088,512,31,i);default:throw new Error("Invald algorithm: "+t)}}}},ykAu:function(t,e,n){t.exports=n.p+"730a06424debf3bfdaf03370df2177bd.js"},ylWm:function(t,e,n){t.exports=n.p+"8a8a1644af027b4abdb3d6083c9955d8.js"},ypgQ:function(t,e,n){var i=n("bYtY"),r=n("4NO4"),o=n("bLfw"),s=i.each,a=i.clone,l=i.map,c=i.merge,u=/^(min|max)?(.+)$/;function h(t){this._api=t,this._timelineOptions=[],this._mediaList=[],this._mediaDefault,this._currentMediaIndices=[],this._optionBackup,this._newBaseOption}function d(t,e,n){var r,o,a=[],l=[],c=t.timeline;if(t.baseOption&&(o=t.baseOption),(c||t.options)&&(o=o||{},a=(t.options||[]).slice()),t.media){o=o||{};var u=t.media;s(u,(function(t){t&&t.option&&(t.query?l.push(t):r||(r=t))}))}return o||(o=t),o.timeline||(o.timeline=c),s([o].concat(a).concat(i.map(l,(function(t){return t.option}))),(function(t){s(e,(function(e){e(t,n)}))})),{baseOption:o,timelineOptions:a,mediaDefault:r,mediaList:l}}function f(t,e,n){var r={width:e,height:n,aspectratio:e/n},o=!0;return i.each(t,(function(t,e){var n=e.match(u);if(n&&n[1]&&n[2]){var i=n[1],s=n[2].toLowerCase();(function(t,e,n){return"min"===n?t>=e:"max"===n?t<=e:t===e})(r[s],t,i)||(o=!1)}})),o}h.prototype={constructor:h,setOption:function(t,e){t&&i.each(r.normalizeToArray(t.series),(function(t){t&&t.data&&i.isTypedArray(t.data)&&i.setAsPrimitive(t.data)})),t=a(t);var n,u,h=this._optionBackup,f=d.call(this,t,e,!h);this._newBaseOption=f.baseOption,h?(n=h.baseOption,u=f.baseOption,s(u=u||{},(function(t,e){if(null!=t){var i=n[e];if(o.hasClass(e)){t=r.normalizeToArray(t),i=r.normalizeToArray(i);var s=r.mappingToExists(i,t);n[e]=l(s,(function(t){return t.option&&t.exist?c(t.exist,t.option,!0):t.exist||t.option}))}else n[e]=c(i,t,!0)}})),f.timelineOptions.length&&(h.timelineOptions=f.timelineOptions),f.mediaList.length&&(h.mediaList=f.mediaList),f.mediaDefault&&(h.mediaDefault=f.mediaDefault)):this._optionBackup=f},mountOption:function(t){var e=this._optionBackup;return this._timelineOptions=l(e.timelineOptions,a),this._mediaList=l(e.mediaList,a),this._mediaDefault=a(e.mediaDefault),this._currentMediaIndices=[],a(t?e.baseOption:this._newBaseOption)},getTimelineOption:function(t){var e,n=this._timelineOptions;if(n.length){var i=t.getComponent("timeline");i&&(e=a(n[i.getCurrentIndex()],!0))}return e},getMediaOption:function(t){var e,n,i=this._api.getWidth(),r=this._api.getHeight(),o=this._mediaList,s=this._mediaDefault,c=[],u=[];if(!o.length&&!s)return u;for(var h=0,d=o.length;hi[1]&&(i[1]=e[1])}))})),i[1]0?0:NaN);var s=n.getMax(!0);null!=s&&"dataMax"!==s&&"function"!=typeof s?e[1]=s:r&&(e[1]=o>0?o-1:NaN);n.get("scale",!0)||(e[0]>0&&(e[0]=0),e[1]<0&&(e[1]=0))}(t,i),i}(this,this._dimName,e),function(t){var e=t._minMaxSpan={},n=t._dataZoomModel,i=t._dataExtent;a(["min","max"],(function(o){var s=n.get(o+"Span"),a=n.get(o+"ValueSpan");null!=a&&(a=t.getAxisModel().axis.scale.parse(a)),null!=a?s=r.linearMap(i[0]+a,i,[0,100],!0):null!=s&&(a=r.linearMap(s,[0,100],i,!0)-i[0]),e[o+"Span"]=s,e[o+"ValueSpan"]=a}))}(this);var n=this.calculateDataWindow(t.settledOption);this._valueWindow=n.valueWindow,this._percentWindow=n.percentWindow,u(this)}},restore:function(t){t===this._dataZoomModel&&(this._valueWindow=this._percentWindow=null,u(this,!0))},filterData:function(t,e){if(t===this._dataZoomModel){var n=this._dimName,i=this.getTargetSeriesModels(),r=t.get("filterMode"),o=this._valueWindow;"none"!==r&&a(i,(function(t){var e=t.getData(),i=e.mapDimension(n,!0);i.length&&("weakFilter"===r?e.filterSelf((function(t){for(var n,r,s,a=0;ao[1];if(c&&!u&&!h)return!0;c&&(s=!0),u&&(n=!0),h&&(r=!0)}return s&&n&&r})):a(i,(function(n){if("empty"===r)t.setData(e=e.map(n,(function(t){return function(t){return t>=o[0]&&t<=o[1]}(t)?t:NaN})));else{var i={};i[n]=o,e.selectRange(i)}})),a(i,(function(t){e.setApproximateExtent(o,t)})))}))}}};var h=c;t.exports=h},zDzy:function(t,e,n){t.exports=n.p+"3078a3b7f66272ada3e5d065827dfceb.js"},zLZW:function(t,e,n){t.exports=n.p+"023f0a6de254bc2caa975f56d4b61243.js"},zM3Q:function(t,e,n){var i=n("4NO4").makeInner;t.exports=function(){var t=i();return function(e){var n=t(e),i=e.pipelineContext,r=n.large,o=n.progressiveRender,s=n.large=i&&i.large,a=n.progressiveRender=i&&i.progressiveRender;return!!(r^s||o^a)&&"reset"}}},"zP+g":function(t,e,n){t.exports=n.p+"9b24c141c4ab1fb899b2b0f1b8ee33ac.js"},zRKj:function(t,e,n){n("Ae16"),n("Sp2Z"),n("y4/Y")},zTMp:function(t,e,n){var i=n("bYtY"),r=n("Qxkt"),o=i.each,s=i.curry;function a(t,e){return"all"===t||i.isArray(t)&&i.indexOf(t,e)>=0||t===e}function l(t){var e=(t.ecModel.getComponent("axisPointer")||{}).coordSysAxesInfo;return e&&e.axesInfo[u(t)]}function c(t){return!!t.get("handle.show")}function u(t){return t.type+"||"+t.id}e.collect=function(t,e){var n={axesInfo:{},seriesInvolved:!1,coordSysAxesInfo:{},coordSysMap:{}};return function(t,e,n){var l=e.getComponent("tooltip"),h=e.getComponent("axisPointer"),d=h.get("link",!0)||[],f=[];o(n.getCoordinateSystems(),(function(n){if(n.axisPointerEnabled){var p=u(n.model),g=t.coordSysAxesInfo[p]={};t.coordSysMap[p]=n;var m=n.model.getModel("tooltip",l);if(o(n.getAxes(),s(w,!1,null)),n.getTooltipAxes&&l&&m.get("show")){var v="axis"===m.get("trigger"),b="cross"===m.get("axisPointer.type"),y=n.getTooltipAxes(m.get("axisPointer.axis"));(v||b)&&o(y.baseAxes,s(w,!b||"cross",v)),b&&o(y.otherAxes,s(w,"cross",!1))}}function w(s,l,p){var v=p.model.getModel("axisPointer",h),b=v.get("show");if(b&&("auto"!==b||s||c(v))){null==l&&(l=v.get("triggerTooltip"));var y=(v=s?function(t,e,n,s,a,l){var c=e.getModel("axisPointer"),u={};o(["type","snap","lineStyle","shadowStyle","label","animation","animationDurationUpdate","animationEasingUpdate","z"],(function(t){u[t]=i.clone(c.get(t))})),u.snap="category"!==t.type&&!!l,"cross"===c.get("type")&&(u.type="line");var h=u.label||(u.label={});if(null==h.show&&(h.show=!1),"cross"===a){var d=c.get("label.show");if(h.show=null==d||d,!l){var f=u.lineStyle=c.get("crossStyle");f&&i.defaults(h,f.textStyle)}}return t.model.getModel("axisPointer",new r(u,n,s))}(p,m,h,e,s,l):v).get("snap"),w=u(p.model),x=l||y||"category"===p.type,_=t.axesInfo[w]={key:w,axis:p,coordSys:n,axisPointerModel:v,triggerTooltip:l,involveSeries:x,snap:y,useHandle:c(v),seriesModels:[]};g[w]=_,t.seriesInvolved|=x;var M=function(t,e){for(var n=e.model,i=e.dim,r=0;ru[1]&&u.reverse(),(null==s||s>u[1])&&(s=u[1]),s}Bef?(|M+>JR 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 LTt1ckHGv8M+;q^u literal 0 HcmV?d00001 diff --git a/web/dist/static/js/1.2599b1cb0d1eada20807.js b/web/dist/static/js/1.2599b1cb0d1eada20807.js new file mode 100644 index 00000000..a0def496 --- /dev/null +++ b/web/dist/static/js/1.2599b1cb0d1eada20807.js @@ -0,0 +1,70 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[1],{"++r/":function(t,e,n){t.exports=n.p+"e57143ce0fcc3e3a435d5ef13d0353a1.js"},"+077":function(t,e,n){t.exports=n.p+"70cd3f74c024a8e7d573bb425cbcba49.js"},"+3KH":function(t,e,n){t.exports=n.p+"036680d9c1d332cf478c5823cd2a47db.js"},"+9Uq":function(t,e,n){"use strict";let i;const r=n("nYpo").codes,o=r.ERR_MISSING_ARGS,s=r.ERR_STREAM_DESTROYED;function a(t){if(t)throw t}function l(t,e,r,o){o=function(t){let e=!1;return function(){e||(e=!0,t(...arguments))}}(o);let a=!1;t.on("close",()=>{a=!0}),void 0===i&&(i=n("7pNB")),i(t,{readable:e,writable:r},t=>{if(t)return o(t);a=!0,o()});let l=!1;return e=>{if(!a&&!l)return l=!0,function(t){return t.setHeader&&"function"==typeof t.abort}(t)?t.abort():"function"==typeof t.destroy?t.destroy():void o(e||new s("pipe"))}}function c(t){t()}function u(t,e){return t.pipe(e)}function h(t){return t.length?"function"!=typeof t[t.length-1]?a:t.pop():a}t.exports=function(){for(var t=arguments.length,e=new Array(t),n=0;n0,(function(t){r||(r=t),t&&s.forEach(c),o||(s.forEach(c),i(r))}))}));return e.reduce(u)}},"+R99":function(t,e,n){t.exports=n.p+"867fb2b26eef123915aff8634c0bbf4a.js"},"+RVn":function(t,e,n){t.exports=n.p+"ffa203dcaae3e64846fe72a12c66f52a.js"},"+T+H":function(t,e,n){t.exports=n.p+"1881f705828a30b0030e143a2297eb06.js"},"+TT/":function(t,e,n){var i=n("bYtY"),r=n("mFDi"),o=n("OELB").parsePercent,s=n("7aKB"),a=i.each,l=["left","right","top","bottom","width","height"],c=[["width","left","right"],["height","top","bottom"]];function u(t,e,n,i,r){var o=0,s=0;null==i&&(i=1/0),null==r&&(r=1/0);var a=0;e.eachChild((function(l,c){var u,h,d=l.position,f=l.getBoundingRect(),p=e.childAt(c+1),g=p&&p.getBoundingRect();if("horizontal"===t){var m=f.width+(g?-g.x+f.x:0);(u=o+m)>i||l.newline?(o=0,u=m,s+=a+n,a=f.height):a=Math.max(a,f.height)}else{var v=f.height+(g?-g.y+f.y:0);(h=s+v)>r||l.newline?(o+=a+n,s=0,h=v,a=f.width):a=Math.max(a,f.width)}l.newline||(d[0]=o,d[1]=s,"horizontal"===t?o=u+n:s=h+n)}))}var h=u,d=i.curry(u,"vertical"),f=i.curry(u,"horizontal");function p(t,e,n){n=s.normalizeCssArray(n||0);var i=e.width,a=e.height,l=o(t.left,i),c=o(t.top,a),u=o(t.right,i),h=o(t.bottom,a),d=o(t.width,i),f=o(t.height,a),p=n[2]+n[0],g=n[1]+n[3],m=t.aspect;switch(isNaN(d)&&(d=i-u-g-l),isNaN(f)&&(f=a-h-p-c),null!=m&&(isNaN(d)&&isNaN(f)&&(m>i/a?d=.8*i:f=.8*a),isNaN(d)&&(d=m*f),isNaN(f)&&(f=d/m)),isNaN(l)&&(l=i-u-d-g),isNaN(c)&&(c=a-h-f-p),t.left||t.right){case"center":l=i/2-d/2-n[3];break;case"right":l=i-d-g}switch(t.top||t.bottom){case"middle":case"center":c=a/2-f/2-n[0];break;case"bottom":c=a-f-p}l=l||0,c=c||0,isNaN(d)&&(d=i-g-l-(u||0)),isNaN(f)&&(f=a-p-c-(h||0));var v=new r(l+n[3],c+n[0],d,f);return v.margin=n,v}function g(t,e){return e&&t&&a(l,(function(n){e.hasOwnProperty(n)&&(t[n]=e[n])})),t}e.LOCATION_PARAMS=l,e.HV_NAMES=c,e.box=h,e.vbox=d,e.hbox=f,e.getAvailableSize=function(t,e,n){var i=e.width,r=e.height,a=o(t.x,i),l=o(t.y,r),c=o(t.x2,i),u=o(t.y2,r);return(isNaN(a)||isNaN(parseFloat(t.x)))&&(a=0),(isNaN(c)||isNaN(parseFloat(t.x2)))&&(c=i),(isNaN(l)||isNaN(parseFloat(t.y)))&&(l=0),(isNaN(u)||isNaN(parseFloat(t.y2)))&&(u=r),n=s.normalizeCssArray(n||0),{width:Math.max(c-a-n[1]-n[3],0),height:Math.max(u-l-n[0]-n[2],0)}},e.getLayoutRect=p,e.positionElement=function(t,e,n,o,s){var a=!s||!s.hv||s.hv[0],l=!s||!s.hv||s.hv[1],c=s&&s.boundingMode||"all";if(a||l){var u;if("raw"===c)u="group"===t.type?new r(0,0,+e.width||0,+e.height||0):t.getBoundingRect();else if(u=t.getBoundingRect(),t.needLocalTransform()){var h=t.getLocalTransform();(u=u.clone()).applyTransform(h)}e=p(i.defaults({width:u.width,height:u.height},e),n,o);var d=t.position,f=a?e.x-u.x:0,g=l?e.y-u.y:0;t.attr("position","raw"===c?[f,g]:[d[0]+f,d[1]+g])}},e.sizeCalculable=function(t,e){return null!=t[c[e][0]]||null!=t[c[e][1]]&&null!=t[c[e][2]]},e.mergeLayoutParam=function(t,e,n){!i.isObject(n)&&(n={});var r=n.ignoreSize;!i.isArray(r)&&(r=[r,r]);var o=l(c[0],0),s=l(c[1],1);function l(n,i){var o={},s=0,l={},c=0;if(a(n,(function(e){l[e]=t[e]})),a(n,(function(t){u(e,t)&&(o[t]=l[t]=e[t]),h(o,t)&&s++,h(l,t)&&c++})),r[i])return h(e,n[1])?l[n[2]]=null:h(e,n[2])&&(l[n[1]]=null),l;if(2!==c&&s){if(s>=2)return o;for(var d=0;d0&&s.length>r&&!s.warned){s.warned=!0;var l=new Error("Possible EventEmitter memory leak detected. "+s.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");l.name="MaxListenersExceededWarning",l.emitter=t,l.type=e,l.count=s.length,a=l,console&&console.warn&&console.warn(a)}return t}function d(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function f(t,e,n){var i={fired:!1,wrapFn:void 0,target:t,type:e,listener:n},r=d.bind(i);return r.listener=n,i.wrapFn=r,r}function p(t,e,n){var i=t._events;if(void 0===i)return[];var r=i[e];return void 0===r?[]:"function"==typeof r?n?[r.listener||r]:[r]:n?function(t){for(var e=new Array(t.length),n=0;n0&&(s=e[0]),s instanceof Error)throw s;var a=new Error("Unhandled error."+(s?" ("+s.message+")":""));throw a.context=s,a}var l=r[t];if(void 0===l)return!1;if("function"==typeof l)o(l,this,e);else{var c=l.length,u=m(l,c);for(n=0;n=0;o--)if(n[o]===e||n[o].listener===e){s=n[o].listener,r=o;break}if(r<0)return this;0===r?n.shift():function(t,e){for(;e+1=0;i--)this.removeListener(t,e[i]);return this},a.prototype.listeners=function(t){return p(this,t,!0)},a.prototype.rawListeners=function(t){return p(this,t,!1)},a.listenerCount=function(t,e){return"function"==typeof t.listenerCount?t.listenerCount(e):g.call(t,e)},a.prototype.listenerCount=g,a.prototype.eventNames=function(){return this._eventsCount>0?i(this._events):[]}},"+rIm":function(t,e,n){var i=n("bYtY"),r=i.retrieve,o=i.defaults,s=i.extend,a=i.each,l=n("7aKB"),c=n("IwbS"),u=n("Qxkt"),h=n("OELB"),d=h.isRadianAroundZero,f=h.remRadian,p=n("oVpE").createSymbol,g=n("Fofx"),m=n("QBsz").applyTransform,v=n("aX7z").shouldShowAllLabels,b=Math.PI,y=function(t,e){this.opt=e,this.axisModel=t,o(e,{labelOffset:0,nameDirection:1,tickDirection:1,labelDirection:1,silent:!0}),this.group=new c.Group;var n=new c.Group({position:e.position.slice(),rotation:e.rotation});n.updateTransform(),this._transform=n.transform,this._dumbGroup=n};y.prototype={constructor:y,hasBuilder:function(t){return!!w[t]},add:function(t){w[t].call(this)},getGroup:function(){return this.group}};var w={axisLine:function(){var t=this.opt,e=this.axisModel;if(e.get("axisLine.show")){var n=this.axisModel.axis.getExtent(),i=this._transform,r=[n[0],0],o=[n[1],0];i&&(m(r,r,i),m(o,o,i));var l=s({lineCap:"round"},e.getModel("axisLine.lineStyle").getLineStyle());this.group.add(new c.Line({anid:"line",subPixelOptimize:!0,shape:{x1:r[0],y1:r[1],x2:o[0],y2:o[1]},style:l,strokeContainThreshold:t.strokeContainThreshold||5,silent:!0,z2:1}));var u=e.get("axisLine.symbol"),h=e.get("axisLine.symbolSize"),d=e.get("axisLine.symbolOffset")||0;if("number"==typeof d&&(d=[d,d]),null!=u){"string"==typeof u&&(u=[u,u]),"string"!=typeof h&&"number"!=typeof h||(h=[h,h]);var f=h[0],g=h[1];a([{rotate:t.rotation+Math.PI/2,offset:d[0],r:0},{rotate:t.rotation-Math.PI/2,offset:d[1],r:Math.sqrt((r[0]-o[0])*(r[0]-o[0])+(r[1]-o[1])*(r[1]-o[1]))}],(function(e,n){if("none"!==u[n]&&null!=u[n]){var i=p(u[n],-f/2,-g/2,f,g,l.stroke,!0),o=e.r+e.offset,s=[r[0]+o*Math.cos(t.rotation),r[1]-o*Math.sin(t.rotation)];i.attr({rotation:e.rotate,position:s,silent:!0,z2:11}),this.group.add(i)}}),this)}}},axisTickLabel:function(){var t=this.axisModel,e=this.opt,n=function(t,e,n){var i=e.axis,r=e.getModel("axisTick");if(!r.get("show")||i.scale.isBlank())return;for(var s=r.getModel("lineStyle"),a=n.tickDirection*r.get("length"),l=C(i.getTicksCoords(),t._transform,a,o(s.getLineStyle(),{stroke:e.get("axisLine.lineStyle.color")}),"ticks"),c=0;cg[1]?-1:1,v=["start"===a?g[0]-m*p:"end"===a?g[1]+m*p:(g[0]+g[1])/2,k(a)?t.labelOffset+u*p:0],y=e.get("nameRotate");null!=y&&(y=y*b/180),k(a)?i=_(t.rotation,null!=y?y:t.rotation,u):(i=function(t,e,n,i){var r,o,s=f(n-t.rotation),a=i[0]>i[1],l="start"===e&&!a||"start"!==e&&a;d(s-b/2)?(o=l?"bottom":"top",r="center"):d(s-1.5*b)?(o=l?"top":"bottom",r="center"):(o="middle",r=s<1.5*b&&s>b/2?l?"left":"right":l?"right":"left");return{rotation:s,textAlign:r,textVerticalAlign:o}}(t,a,y||0,g),null!=(o=t.axisNameAvailableWidth)&&(o=Math.abs(o/Math.sin(i.rotation)),!isFinite(o)&&(o=null)));var w=h.getFont(),S=e.get("nameTruncate",!0)||{},A=S.ellipsis,C=r(t.nameTruncateMaxWidth,S.maxWidth,o),T=null!=A&&null!=C?l.truncateText(n,C,w,A,{minChar:2,placeholder:S.placeholder}):n,E=e.get("tooltip",!0),R=e.mainType,L={componentType:R,name:n,$vars:["name"]};L[R+"Index"]=e.componentIndex;var I=new c.Text({anid:"name",__fullText:n,__truncatedText:T,position:v,rotation:i.rotation,silent:M(e),z2:1,tooltip:E&&E.show?s({content:n,formatter:function(){return n},formatterParams:L},E):null});c.setTextStyle(I.style,h,{text:T,textFont:w,textFill:h.getTextColor()||e.get("axisLine.lineStyle.color"),textAlign:h.get("align")||i.textAlign,textVerticalAlign:h.get("verticalAlign")||i.textVerticalAlign}),e.get("triggerEvent")&&(I.eventData=x(e),I.eventData.targetType="axisName",I.eventData.name=n),this._dumbGroup.add(I),I.updateTransform(),this.group.add(I),I.decomposeTransform()}}},x=y.makeAxisEventDataBase=function(t){var e={componentType:t.mainType,componentIndex:t.componentIndex};return e[t.mainType+"Index"]=t.componentIndex,e},_=y.innerTextLayout=function(t,e,n){var i,r,o=f(e-t);return d(o)?(r=n>0?"top":"bottom",i="center"):d(o-b)?(r=n>0?"bottom":"top",i="center"):(r="middle",i=o>0&&o0?"right":"left":n>0?"left":"right"),{rotation:o,textAlign:i,textVerticalAlign:r}};var M=y.isLabelSilent=function(t){var e=t.get("tooltip");return t.get("silent")||!(t.get("triggerEvent")||e&&e.show)};function S(t){t&&(t.ignore=!0)}function A(t,e,n){var i=t&&t.getBoundingRect().clone(),r=e&&e.getBoundingRect().clone();if(i&&r){var o=g.identity([]);return g.rotate(o,o,-t.rotation),i.applyTransform(g.mul([],o,t.getLocalTransform())),r.applyTransform(g.mul([],o,e.getLocalTransform())),i.intersect(r)}}function k(t){return"middle"===t||"center"===t}function C(t,e,n,i,r){for(var o=[],s=[],a=[],l=0;l1)return n=n.split(""),("e"===(i=[t(e,n[0]),t(e,n[1])])[0]||"w"===i[0])&&i.reverse(),i.join("");var i;return{left:"w",right:"e",top:"n",bottom:"s"}[i=o.transformDirection({w:"left",e:"right",n:"top",s:"bottom"}[n],function(t){return o.getTransform(t.group)}(e))]}(t,n);r&&r.attr({silent:!i,invisible:!i,cursor:i?g[s]+"-resize":null})}))}function O(t,e,n,i,r,o,s){var a,l,c,u,f,p=e.childOfName(n);p&&p.setShape((a=F(t,e,[[i,r],[i+o,r+s]]),l=h(a[0][0],a[1][0]),c=h(a[0][1],a[1][1]),u=d(a[0][0],a[1][0]),f=d(a[0][1],a[1][1]),{x:l,y:c,width:u-l,height:f-c}))}function $(t){return i.defaults({strokeNoScale:!0},t.brushStyle)}function P(t,e,n,i){var r=[h(t,n),h(e,i)],o=[d(t,n),d(e,i)];return[[r[0],o[0]],[r[1],o[1]]]}function D(t,e,n,i,r,o,s,a){var l=i.__brushOption,u=t(l.range),h=N(n,o,s);c(r.split(""),(function(t){var e=p[t];u[e[0]][e[1]]+=h[e[0]]})),l.range=e(P(u[0][0],u[1][0],u[0][1],u[1][1])),M(n,i),T(n,{isEnd:!1})}function B(t,e,n,i,r){var o=e.__brushOption.range,s=N(t,n,i);c(o,(function(t){t[0]+=s[0],t[1]+=s[1]})),M(t,e),T(t,{isEnd:!1})}function N(t,e,n){var i=t.group,r=i.transformCoordToLocal(e,n),o=i.transformCoordToLocal(0,0);return[r[0]-o[0],r[1]-o[1]]}function F(t,e,n){var r=k(t,e);return r&&!0!==r?r.clipPath(n,t._transform):i.clone(n)}function j(t){var e=t.event;e.preventDefault&&e.preventDefault()}function U(t,e,n){return t.childOfName("main").contain(e,n)}function z(t,e,n,r){var o,s=t._creatingCover,a=t._creatingPanel,l=t._brushOption;if(t._track.push(n.slice()),function(t){var e=t._track;if(!e.length)return!1;var n=e[e.length-1],i=e[0],r=n[0]-i[0],o=n[1]-i[1];return f(r*r+o*o,.5)>6}(t)||s){if(a&&!s){"single"===l.brushMode&&C(t);var c=i.clone(l);c.brushType=H(c.brushType,a),c.panelId=!0===a?null:a.panelId,s=t._creatingCover=y(t,c),t._covers.push(s)}if(s){var u=q[H(t._brushType,a)];s.__brushOption.range=u.getCreatingRange(F(t,s,t._track)),r&&(w(t,s),u.updateCommon(t,s)),x(t,s),o={isEnd:r}}}else r&&"single"===l.brushMode&&l.removeOnClick&&A(t,e,n)&&C(t)&&(o={isEnd:r,removeOnClick:!0});return o}function H(t,e){return"auto"===t?e.defaultBrushType:t}b.prototype={constructor:b,enableBrush:function(t){var e,n;return this._brushType&&(n=(e=this)._zr,s.release(n,"globalPan",e._uid),function(t,e){c(e,(function(e,n){t.off(n,e)}))}(n,e._handlers),e._brushType=e._brushOption=null),t.brushType&&function(t,e){var n=t._zr;t._enableGlobalPan||s.take(n,"globalPan",t._uid);(function(t,e){c(e,(function(e,n){t.on(n,e)}))})(n,t._handlers),t._brushType=e.brushType,t._brushOption=i.merge(i.clone(m),e,!0)}(this,t),this},setPanels:function(t){if(t&&t.length){var e=this._panels={};i.each(t,(function(t){e[t.panelId]=i.clone(t)}))}else this._panels=null;return this},mount:function(t){t=t||{},this._enableGlobalPan=t.enableGlobalPan;var e=this.group;return this._zr.add(e),e.attr({position:t.position||[0,0],rotation:t.rotation||0,scale:t.scale||[1,1]}),this._transform=e.getLocalTransform(),this},eachCover:function(t,e){c(this._covers,t,e)},updateCovers:function(t){t=i.map(t,(function(t){return i.merge(i.clone(m),t,!0)}));var e=this._covers,n=this._covers=[],r=this,o=this._creatingCover;return new a(e,t,(function(t,e){return s(t.__brushOption,e)}),s).add(l).update(l).remove((function(t){e[t]!==o&&r.group.remove(e[t])})).execute(),this;function s(t,e){return(null!=t.id?t.id:"\0-brush-index-"+e)+"-"+t.brushType}function l(i,s){var a=t[i];if(null!=s&&e[s]===o)n[i]=e[s];else{var l=n[i]=null!=s?(e[s].__brushOption=a,e[s]):w(r,y(r,a));M(r,l)}}},unmount:function(){return this.enableBrush(!1),C(this),this._zr.remove(this.group),this},dispose:function(){this.unmount(),this.off()}},i.mixin(b,r);var W={mousedown:function(t){if(this._dragging)V(this,t);else if(!t.target||!t.target.draggable){j(t);var e=this.group.transformCoordToLocal(t.offsetX,t.offsetY);this._creatingCover=null,(this._creatingPanel=A(this,t,e))&&(this._dragging=!0,this._track=[e.slice()])}},mousemove:function(t){var e=t.offsetX,n=t.offsetY,i=this.group.transformCoordToLocal(e,n);if(function(t,e,n){if(t._brushType&&!function(t,e,n){var i=t._zr;return e<0||e>i.getWidth()||n<0||n>i.getHeight()}(t,e)){var i=t._zr,r=t._covers,o=A(t,e,n);if(!t._dragging)for(var s=0;se&&(e=t[n]);return isFinite(e)?e:NaN},min:function(t){for(var e=1/0,n=0;n1)"string"==typeof s?l=n[s]:"function"==typeof s&&(l=s),l&&t.setData(o.downSample(o.mapDimension(u.dim),1/f,l,i))}}}}},"/iHx":function(t,e,n){var i=n("6GrX"),r=n("IwbS"),o=["textStyle","color"],s={getTextColor:function(t){var e=this.ecModel;return this.getShallow("color")||(!t&&e?e.get(o):null)},getFont:function(){return r.getFont({fontStyle:this.getShallow("fontStyle"),fontWeight:this.getShallow("fontWeight"),fontSize:this.getShallow("fontSize"),fontFamily:this.getShallow("fontFamily")},this.ecModel)},getTextRect:function(t){return i.getBoundingRect(t,this.getFont(),this.getShallow("align"),this.getShallow("verticalAlign")||this.getShallow("baseline"),this.getShallow("padding"),this.getShallow("lineHeight"),this.getShallow("rich"),this.getShallow("truncateText"))}};t.exports=s},"/ks/":function(t,e,n){t.exports=n.p+"540bba54b49ea7a6ec513270449132db.js"},"/vV6":function(t,e,n){t.exports=n.p+"564f112fdc65153caebf74208a70dcf0.js"},"/xBA":function(t,e,n){t.exports=n.p+"729151a662f8055d864efe142b48ba27.js"},"/y7N":function(t,e,n){var i=n("bYtY"),r=n("IwbS"),o=n("6GrX"),s=n("7aKB"),a=n("Fofx"),l=n("aX7z"),c=n("+rIm");function u(t,e,n,i,r){var a=h(n.get("value"),e.axis,e.ecModel,n.get("seriesDataIndices"),{precision:n.get("label.precision"),formatter:n.get("label.formatter")}),l=n.getModel("label"),c=s.normalizeCssArray(l.get("padding")||0),u=l.getFont(),d=o.getBoundingRect(a,u),f=r.position,p=d.width+c[1]+c[3],g=d.height+c[0]+c[2],m=r.align;"right"===m&&(f[0]-=p),"center"===m&&(f[0]-=p/2);var v=r.verticalAlign;"bottom"===v&&(f[1]-=g),"middle"===v&&(f[1]-=g/2),function(t,e,n,i){var r=i.getWidth(),o=i.getHeight();t[0]=Math.min(t[0]+e,r)-e,t[1]=Math.min(t[1]+n,o)-n,t[0]=Math.max(t[0],0),t[1]=Math.max(t[1],0)}(f,p,g,i);var b=l.get("backgroundColor");b&&"auto"!==b||(b=e.get("axisLine.lineStyle.color")),t.label={shape:{x:0,y:0,width:p,height:g,r:l.get("borderRadius")},position:f.slice(),style:{text:a,textFont:u,textFill:l.getTextColor(),textPosition:"inside",textPadding:c,fill:b,stroke:l.get("borderColor")||"transparent",lineWidth:l.get("borderWidth")||0,shadowBlur:l.get("shadowBlur"),shadowColor:l.get("shadowColor"),shadowOffsetX:l.get("shadowOffsetX"),shadowOffsetY:l.get("shadowOffsetY")},z2:10}}function h(t,e,n,r,o){t=e.scale.parse(t);var s=e.scale.getLabel(t,{precision:o.precision}),a=o.formatter;if(a){var c={value:l.getAxisRawValue(e,t),axisDimension:e.dim,axisIndex:e.index,seriesData:[]};i.each(r,(function(t){var e=n.getSeriesByIndex(t.seriesIndex),i=t.dataIndexInside,r=e&&e.getDataParams(i);r&&c.seriesData.push(r)})),i.isString(a)?s=a.replace("{value}",s):i.isFunction(a)&&(s=a(c))}return s}function d(t,e,n){var i=a.create();return a.rotate(i,i,n.rotation),a.translate(i,i,n.position),r.applyTransform([t.dataToCoord(e),(n.labelOffset||0)+(n.labelDirection||1)*(n.labelMargin||0)],i)}e.buildElStyle=function(t){var e,n=t.get("type"),i=t.getModel(n+"Style");return"line"===n?(e=i.getLineStyle()).fill=null:"shadow"===n&&((e=i.getAreaStyle()).stroke=null),e},e.buildLabelElOption=u,e.getValueLabel=h,e.getTransformedPosition=d,e.buildCartesianSingleLabelElOption=function(t,e,n,i,r,o){var s=c.innerTextLayout(n.rotation,0,n.labelDirection);n.labelMargin=r.get("label.margin"),u(e,i,r,o,{position:d(i.axis,t,n),align:s.textAlign,verticalAlign:s.textVerticalAlign})},e.makeLineShape=function(t,e,n){return{x1:t[n=n||0],y1:t[1-n],x2:e[n],y2:e[1-n]}},e.makeRectShape=function(t,e,n){return{x:t[n=n||0],y:t[1-n],width:e[n],height:e[1-n]}},e.makeSectorShape=function(t,e,n,i,r,o){return{cx:t,cy:e,r0:n,r:i,startAngle:r,endAngle:o,clockwise:!0}}},"/zLz":function(t,e,n){t.exports=n.p+"119d8ff08e82b0f391f59f1fe657130f.js"},"0/+3":function(t,e,n){t.exports=n.p+"293f0f487b15a72a6f8d8620c9630de6.js"},"06DH":function(t,e,n){var i=n("ProS"),r=n("bYtY"),o=n("Kagy"),s=n("IUWy"),a=o.toolbox.magicType;function l(t){this.model=t}l.defaultOption={show:!0,type:[],icon:{line:"M4.1,28.9h7.1l9.3-22l7.4,38l9.7-19.7l3,12.8h14.9M4.1,58h51.4",bar:"M6.7,22.9h10V48h-10V22.9zM24.9,13h10v35h-10V13zM43.2,2h10v46h-10V2zM3.1,58h53.7",stack:"M8.2,38.4l-8.4,4.1l30.6,15.3L60,42.5l-8.1-4.1l-21.5,11L8.2,38.4z M51.9,30l-8.1,4.2l-13.4,6.9l-13.9-6.9L8.2,30l-8.4,4.2l8.4,4.2l22.2,11l21.5-11l8.1-4.2L51.9,30z M51.9,21.7l-8.1,4.2L35.7,30l-5.3,2.8L24.9,30l-8.4-4.1l-8.3-4.2l-8.4,4.2L8.2,30l8.3,4.2l13.9,6.9l13.4-6.9l8.1-4.2l8.1-4.1L51.9,21.7zM30.4,2.2L-0.2,17.5l8.4,4.1l8.3,4.2l8.4,4.2l5.5,2.7l5.3-2.7l8.1-4.2l8.1-4.2l8.1-4.1L30.4,2.2z"},title:r.clone(a.title),option:{},seriesIndex:{}};var c=l.prototype;c.getIcons=function(){var t=this.model,e=t.get("icon"),n={};return r.each(t.get("type"),(function(t){e[t]&&(n[t]=e[t])})),n};var u={line:function(t,e,n,i){if("bar"===t)return r.merge({id:e,type:"line",data:n.get("data"),stack:n.get("stack"),markPoint:n.get("markPoint"),markLine:n.get("markLine")},i.get("option.line")||{},!0)},bar:function(t,e,n,i){if("line"===t)return r.merge({id:e,type:"bar",data:n.get("data"),stack:n.get("stack"),markPoint:n.get("markPoint"),markLine:n.get("markLine")},i.get("option.bar")||{},!0)},stack:function(t,e,n,i){var o="__ec_magicType_stack__"===n.get("stack");if("line"===t||"bar"===t)return i.setIconStatus("stack",o?"normal":"emphasis"),r.merge({id:e,stack:o?"":"__ec_magicType_stack__"},i.get("option.stack")||{},!0)}},h=[["line","bar"],["stack"]];c.onclick=function(t,e,n){var i=this.model,o=i.get("seriesIndex."+n);if(u[n]){var s,l={series:[]};if(r.each(h,(function(t){r.indexOf(t,n)>=0&&r.each(t,(function(t){i.setIconStatus(t,"normal")}))})),i.setIconStatus(n,"emphasis"),t.eachComponent({mainType:"series",query:null==o?null:{seriesIndex:o}},(function(e){var o=e.subType,s=e.id,a=u[n](o,s,e,i);a&&(r.defaults(a,e.option),l.series.push(a));var c=e.coordinateSystem;if(c&&"cartesian2d"===c.type&&("line"===n||"bar"===n)){var h=c.getAxesByScale("ordinal")[0];if(h){var d=h.dim+"Axis",f=t.queryComponents({mainType:d,index:e.get(name+"Index"),id:e.get(name+"Id")})[0].componentIndex;l[d]=l[d]||[];for(var p=0;p<=f;p++)l[d][f]=l[d][f]||{};l[d][f].boundaryGap="bar"===n}}})),"stack"===n)s=l.series&&l.series[0]&&"__ec_magicType_stack__"===l.series[0].stack?r.merge({stack:a.title.tiled},a.title):r.clone(a.title);e.dispatchAction({type:"changeMagicType",currentType:n,newOption:l,newTitle:s,featureName:"magicType"})}},i.registerAction({type:"changeMagicType",event:"magicTypeChanged",update:"prepareAndUpdate"},(function(t,e){e.mergeOption(t.newOption)})),s.register("magicType",l);var d=l;t.exports=d},"0TpK":function(t,e,n){"use strict";(function(t){var i=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0}),e.Address=void 0;var r=i(n("9lTW")),o=n("zkNI"),s=n("DDDe"),a=n("rMPs"),l=function(){function e(t){(0,r.default)(20===t.length,"Invalid address length"),this.buf=t}return e.zero=function(){return new e((0,s.zeros)(20))},e.fromString=function(t){return(0,r.default)((0,a.isValidAddress)(t),"Invalid address"),new e((0,s.toBuffer)(t))},e.fromPublicKey=function(n){return(0,r.default)(t.isBuffer(n),"Public key should be Buffer"),new e((0,a.pubToAddress)(n))},e.fromPrivateKey=function(n){return(0,r.default)(t.isBuffer(n),"Private key should be Buffer"),new e((0,a.privateToAddress)(n))},e.generate=function(n,i){return(0,r.default)(o.BN.isBN(i)),new e((0,a.generateAddress)(n.buf,i.toArrayLike(t)))},e.generate2=function(n,i,o){return(0,r.default)(t.isBuffer(i)),(0,r.default)(t.isBuffer(o)),new e((0,a.generateAddress2)(n.buf,i,o))},e.prototype.equals=function(t){return this.buf.equals(t.buf)},e.prototype.isZero=function(){return this.equals(e.zero())},e.prototype.isPrecompileOrSystemAddress=function(){var t=new o.BN(this.buf),e=new o.BN(0),n=new o.BN("ffff","hex");return t.gte(e)&&t.lte(n)},e.prototype.toString=function(){return"0x"+this.buf.toString("hex")},e.prototype.toBuffer=function(){return t.from(this.buf)},e}();e.Address=l}).call(this,n("tjlA").Buffer)},"0V0F":function(t,e,n){var i=n("bYtY"),r=i.createHashMap,o=i.each;function s(t){o(t,(function(e,n){var i=[],r=[NaN,NaN],o=[e.stackResultDimension,e.stackedOverDimension],s=e.data,a=e.isStackedByIndex,l=s.map(o,(function(o,l,c){var u,h,d=s.get(e.stackedDimension,c);if(isNaN(d))return r;a?h=s.getRawIndex(c):u=s.get(e.stackedByDimension,c);for(var f=NaN,p=n-1;p>=0;p--){var g=t[p];if(a||(h=g.data.rawIndexOf(g.stackedByDimension,u)),h>=0){var m=g.data.getByRawIndex(g.stackResultDimension,h);if(d>=0&&m>0||d<=0&&m<0){d+=m,f=m;break}}}return i[0]=d,i[1]=f,i}));s.hostModel.setData(l),e.data=l}))}t.exports=function(t){var e=r();t.eachSeries((function(t){var n=t.get("stack");if(n){var i=e.get(n)||e.set(n,[]),r=t.getData(),o={stackResultDimension:r.getCalculationInfo("stackResultDimension"),stackedOverDimension:r.getCalculationInfo("stackedOverDimension"),stackedDimension:r.getCalculationInfo("stackedDimension"),stackedByDimension:r.getCalculationInfo("stackedByDimension"),isStackedByIndex:r.getCalculationInfo("isStackedByIndex"),data:r,seriesModel:t};if(!o.stackedDimension||!o.isStackedByIndex&&!o.stackedByDimension)return;i.length&&r.setCalculationInfo("stackedOnSeries",i[i.length-1].seriesModel),i.push(o)}})),e.each(s)}},"0d1Z":function(t,e,n){t.exports=n.p+"cfbb8ac8b034c4ecdb1d74d5a0aa997e.js"},"0fTf":function(t,e,n){t.exports=n.p+"dd40dfc7840568927fdef65087a233ed.js"},"0kr4":function(t,e,n){t.exports=n.p+"65e9e719bfb286e3d617eccd6604bb5f.js"},"0o9m":function(t,e,n){var i=n("ProS");n("hNWo"),n("RlCK"),n("XpcN");var r=n("kDyi"),o=n("bLfw");i.registerProcessor(i.PRIORITY.PROCESSOR.SERIES_FILTER,r),o.registerSubTypeDefaulter("legend",(function(){return"plain"}))},"0rKm":function(t,e){t.exports=function(){throw new Error("Readable.from is not available in the browser")}},"0s+r":function(t,e,n){var i=n("bYtY"),r=n("QBsz"),o=n("y23F"),s=n("H6uX"),a=n("YH21"),l=n("C0SR");function c(){a.stop(this.event)}function u(){}u.prototype.dispose=function(){};var h=["click","dblclick","mousewheel","mouseout","mouseup","mousedown","mousemove","contextmenu"],d=function(t,e,n,i){s.call(this),this.storage=t,this.painter=e,this.painterRoot=i,n=n||new u,this.proxy=null,this._hovered={},this._lastTouchMoment,this._lastX,this._lastY,this._gestureMgr,o.call(this),this.setHandlerProxy(n)};function f(t,e,n){if(t[t.rectHover?"rectContain":"contain"](e,n)){for(var i,r=t;r;){if(r.clipPath&&!r.clipPath.contain(e,n))return!1;r.silent&&(i=!0),r=r.parent}return!i||"silent"}return!1}function p(t,e,n){var i=t.painter;return e<0||e>i.getWidth()||n<0||n>i.getHeight()}d.prototype={constructor:d,setHandlerProxy:function(t){this.proxy&&this.proxy.dispose(),t&&(i.each(h,(function(e){t.on&&t.on(e,this[e],this)}),this),t.handler=this),this.proxy=t},mousemove:function(t){var e=t.zrX,n=t.zrY,i=p(this,e,n),r=this._hovered,o=r.target;o&&!o.__zr&&(o=(r=this.findHover(r.x,r.y)).target);var s=this._hovered=i?{x:e,y:n}:this.findHover(e,n),a=s.target,l=this.proxy;l.setCursor&&l.setCursor(a?a.cursor:"default"),o&&a!==o&&this.dispatchToElement(r,"mouseout",t),this.dispatchToElement(s,"mousemove",t),a&&a!==o&&this.dispatchToElement(s,"mouseover",t)},mouseout:function(t){var e=t.zrEventControl,n=t.zrIsToLocalDOM;"only_globalout"!==e&&this.dispatchToElement(this._hovered,"mouseout",t),"no_globalout"!==e&&!n&&this.trigger("globalout",{type:"globalout",event:t})},resize:function(t){this._hovered={}},dispatch:function(t,e){var n=this[t];n&&n.call(this,e)},dispose:function(){this.proxy.dispose(),this.storage=this.proxy=this.painter=null},setCursorStyle:function(t){var e=this.proxy;e.setCursor&&e.setCursor(t)},dispatchToElement:function(t,e,n){var i=(t=t||{}).target;if(!i||!i.silent){for(var r="on"+e,o=function(t,e,n){return{type:t,event:n,target:e.target,topTarget:e.topTarget,cancelBubble:!1,offsetX:n.zrX,offsetY:n.zrY,gestureEvent:n.gestureEvent,pinchX:n.pinchX,pinchY:n.pinchY,pinchScale:n.pinchScale,wheelDelta:n.zrDelta,zrByTouch:n.zrByTouch,which:n.which,stop:c}}(e,t,n);i&&(i[r]&&(o.cancelBubble=i[r].call(i,o)),i.trigger(e,o),i=i.parent,!o.cancelBubble););o.cancelBubble||(this.trigger(e,o),this.painter&&this.painter.eachOtherLayer((function(t){"function"==typeof t[r]&&t[r].call(t,o),t.trigger&&t.trigger(e,o)})))}},findHover:function(t,e,n){for(var i=this.storage.getDisplayList(),r={x:t,y:e},o=i.length-1;o>=0;o--){var s;if(i[o]!==n&&!i[o].ignore&&(s=f(i[o],t,e))&&(!r.topTarget&&(r.topTarget=i[o]),"silent"!==s)){r.target=i[o];break}}return r},processGesture:function(t,e){this._gestureMgr||(this._gestureMgr=new l);var n=this._gestureMgr;"start"===e&&n.clear();var i=n.recognize(t,this.findHover(t.zrX,t.zrY,null).target,this.proxy.dom);if("end"===e&&n.clear(),i){var r=i.type;t.gestureEvent=r,this.dispatchToElement({target:i.target},r,i.event)}}},i.each(["click","mousedown","mouseup","mousewheel","dblclick","contextmenu"],(function(t){d.prototype[t]=function(e){var n,i,o=e.zrX,s=e.zrY,a=p(this,o,s);if("mouseup"===t&&a||(i=(n=this.findHover(o,s)).target),"mousedown"===t)this._downEl=i,this._downPoint=[e.zrX,e.zrY],this._upEl=i;else if("mouseup"===t)this._upEl=i;else if("click"===t){if(this._downEl!==this._upEl||!this._downPoint||r.dist(this._downPoint,[e.zrX,e.zrY])>4)return;this._downPoint=null}this.dispatchToElement(n,t,e)}})),i.mixin(d,s),i.mixin(d,o);var g=d;t.exports=g},"1IWx":function(t,e,n){t.exports=r;var i=n("+qE3").EventEmitter;function r(){i.call(this)}n("P7XM")(r,i),r.Readable=n("CsPn"),r.Writable=n("r36U"),r.Duplex=n("fBa/"),r.Transform=n("if1q"),r.PassThrough=n("UaIL"),r.Stream=r,r.prototype.pipe=function(t,e){var n=this;function r(e){t.writable&&!1===t.write(e)&&n.pause&&n.pause()}function o(){n.readable&&n.resume&&n.resume()}n.on("data",r),t.on("drain",o),t._isStdio||e&&!1===e.end||(n.on("end",a),n.on("close",l));var s=!1;function a(){s||(s=!0,t.end())}function l(){s||(s=!0,"function"==typeof t.destroy&&t.destroy())}function c(t){if(u(),0===i.listenerCount(this,"error"))throw t}function u(){n.removeListener("data",r),t.removeListener("drain",o),n.removeListener("end",a),n.removeListener("close",l),n.removeListener("error",c),t.removeListener("error",c),n.removeListener("end",u),n.removeListener("close",u),t.removeListener("close",u)}return n.on("error",c),t.on("error",c),n.on("end",u),n.on("close",u),t.on("close",u),t.emit("pipe",n),t}},"1Iqo":function(t,e,n){t.exports=n.p+"d19b415a0279064ddfa890d0a7b3f78c.js"},"1Jh7":function(t,e,n){var i=n("y+Vt"),r=n("T6xi"),o=i.extend({type:"polyline",shape:{points:null,smooth:!1,smoothConstraint:null},style:{stroke:"#000",fill:null},buildPath:function(t,e){r.buildPath(t,e,!1)}});t.exports=o},"1LEl":function(t,e,n){var i=n("ProS"),r=n("F9bG"),o=i.extendComponentView({type:"axisPointer",render:function(t,e,n){var i=e.getComponent("tooltip"),o=t.get("triggerOn")||i&&i.get("triggerOn")||"mousemove|click";r.register("axisPointer",n,(function(t,e,n){"none"!==o&&("leave"===t||o.indexOf(t)>=0)&&n({type:"updateAxisPointer",currTrigger:t,x:e&&e.offsetX,y:e&&e.offsetY})}))},remove:function(t,e){r.unregister(e.getZr(),"axisPointer"),o.superApply(this._model,"remove",arguments)},dispose:function(t,e){r.unregister("axisPointer",e),o.superApply(this._model,"dispose",arguments)}}),s=o;t.exports=s},"1MYJ":function(t,e,n){var i=n("y+Vt"),r=i.extend({type:"compound",shape:{paths:null},_updatePathDirty:function(){for(var t=this.__dirtyPath,e=this.shape.paths,n=0;n=r||m<0)break;if(f(b)){if(p){m+=o;continue}break}if(m===n)t[o>0?"moveTo":"lineTo"](b[0],b[1]);else if(l>0){var y=e[g],w="y"===u?1:0,x=(b[w]-y[w])*l;c(h,y),h[w]=y[w]+x,c(d,b),d[w]=b[w]-x,t.bezierCurveTo(h[0],h[1],d[0],d[1],b[0],b[1])}else t.lineTo(b[0],b[1]);g=m,m+=o}return v}function m(t,e,n,i,o,p,g,m,v,b,y){for(var w=0,x=n,_=0;_=o||x<0)break;if(f(M)){if(y){x+=p;continue}break}if(x===n)t[p>0?"moveTo":"lineTo"](M[0],M[1]),c(h,M);else if(v>0){var S=x+p,A=e[S];if(y)for(;A&&f(e[S]);)A=e[S+=p];var k=.5,C=e[w];if(!(A=e[S])||f(A))c(d,M);else{var T,E;if(f(A)&&!y&&(A=M),r.sub(u,A,C),"x"===b||"y"===b){var R="x"===b?0:1;T=Math.abs(M[R]-C[R]),E=Math.abs(M[R]-A[R])}else T=r.dist(M,C),E=r.dist(M,A);l(d,M,u,-v*(1-(k=E/(E+T))))}s(h,h,m),a(h,h,g),s(d,d,m),a(d,d,g),t.bezierCurveTo(h[0],h[1],d[0],d[1],M[0],M[1]),l(h,M,u,v*k)}else t.lineTo(M[0],M[1]);w=x,x+=p}return _}function v(t,e){var n=[1/0,1/0],i=[-1/0,-1/0];if(e)for(var r=0;ri[0]&&(i[0]=o[0]),o[1]>i[1]&&(i[1]=o[1])}return{min:e?n:i,max:e?i:n}}var b=i.extend({type:"ec-polyline",shape:{points:[],smooth:0,smoothConstraint:!0,smoothMonotone:null,connectNulls:!1},style:{fill:null,stroke:"#000"},brush:o(i.prototype.brush),buildPath:function(t,e){var n=e.points,i=0,r=n.length,o=v(n,e.smoothConstraint);if(e.connectNulls){for(;r>0&&f(n[r-1]);r--);for(;i0&&f(n[o-1]);o--);for(;r=this._maxSize&&s>0){var l=n.head;n.remove(l),delete i[l.key],o=l.value,this._lastRemovedEntry=l}a?a.value=e:a=new r(e),a.key=t,n.insertEntry(a),i[t]=a}return o},s.get=function(t){var e=this._map[t],n=this._list;if(null!=e)return e!==n.tail&&(n.remove(e),n.insertEntry(e)),e.value},s.clear=function(){this._list.clear(),this._map={}};var a=o;t.exports=a},"1SzN":function(t,e,n){t.exports=n.p+"7e98c4d98664d6f7bcc52a07f21a1f9f.js"},"1bdT":function(t,e,n){var i=n("3gBT"),r=n("H6uX"),o=n("DN4a"),s=n("vWvF"),a=n("bYtY"),l=function(t){o.call(this,t),r.call(this,t),s.call(this,t),this.id=t.id||i()};l.prototype={type:"element",name:"",__zr:null,ignore:!1,clipPath:null,isGroup:!1,drift:function(t,e){switch(this.draggable){case"horizontal":e=0;break;case"vertical":t=0}var n=this.transform;n||(n=this.transform=[1,0,0,1,0,0]),n[4]+=t,n[5]+=e,this.decomposeTransform(),this.dirty(!1)},beforeUpdate:function(){},afterUpdate:function(){},update:function(){this.updateTransform()},traverse:function(t,e){},attrKV:function(t,e){if("position"===t||"scale"===t||"origin"===t){if(e){var n=this[t];n||(n=this[t]=[]),n[0]=e[0],n[1]=e[1]}}else this[t]=e},hide:function(){this.ignore=!0,this.__zr&&this.__zr.refresh()},show:function(){this.ignore=!1,this.__zr&&this.__zr.refresh()},attr:function(t,e){if("string"==typeof t)this.attrKV(t,e);else if(a.isObject(t))for(var n in t)t.hasOwnProperty(n)&&this.attrKV(n,t[n]);return this.dirty(!1),this},setClipPath:function(t){var e=this.__zr;e&&t.addSelfToZr(e),this.clipPath&&this.clipPath!==t&&this.removeClipPath(),this.clipPath=t,t.__zr=e,t.__clipTarget=this,this.dirty(!1)},removeClipPath:function(){var t=this.clipPath;t&&(t.__zr&&t.removeSelfFromZr(t.__zr),t.__zr=null,t.__clipTarget=null,this.clipPath=null,this.dirty(!1))},addSelfToZr:function(t){this.__zr=t;var e=this.animators;if(e)for(var n=0;nn.getHeight()&&(i.textPosition="top",a=!0);var l=a?-5-r.height:d+8;s+r.width/2>n.getWidth()?(i.textPosition=["100%",l],i.textAlign="right"):s-r.width/2<0&&(i.textPosition=[0,l],i.textAlign="left")}}))}function m(o,c){var u,m=g[o],v=g[c],b=f[m],y=new l(b,t,t.ecModel);if(i&&null!=i.newTitle&&i.featureName===m&&(b.title=i.newTitle),m&&!v){if(function(t){return 0===t.indexOf("my")}(m))u={model:y,onclick:y.option.onclick,featureName:m};else{var w=s.get(m);if(!w)return;u=new w(y,e,n)}p[m]=u}else{if(!(u=p[v]))return;u.model=y,u.ecModel=e,u.api=n}m||!v?y.get("show")&&!u.unusable?(!function(i,o,s){var l=i.getModel("iconStyle"),c=i.getModel("emphasis.iconStyle"),u=o.getIcons?o.getIcons():i.get("icon"),f=i.get("title")||{};if("string"==typeof u){var p=u,g=f;f={},(u={})[s]=p,f[s]=g}var m=i.iconPaths={};r.each(u,(function(s,u){var p=a.createIcon(s,{},{x:-d/2,y:-d/2,width:d,height:d});p.setStyle(l.getItemStyle()),p.hoverStyle=c.getItemStyle(),p.setStyle({text:f[u],textAlign:c.get("textAlign"),textBorderRadius:c.get("textBorderRadius"),textPadding:c.get("textPadding"),textFill:null});var g=t.getModel("tooltip");g&&g.get("show")&&p.attr("tooltip",r.extend({content:f[u],formatter:g.get("formatter",!0)||function(){return f[u]},formatterParams:{componentType:"toolbox",name:u,title:f[u],$vars:["name","title"]},position:g.get("position",!0)||"bottom"},g.option)),a.setHoverStyle(p),t.get("showTitle")&&(p.__title=f[u],p.on("mouseover",(function(){var e=c.getItemStyle(),n="vertical"===t.get("orient")?null==t.get("right")?"right":"left":null==t.get("bottom")?"bottom":"top";p.setStyle({textFill:c.get("textFill")||e.fill||e.stroke||"#000",textBackgroundColor:c.get("textBackgroundColor"),textPosition:c.get("textPosition")||n})})).on("mouseout",(function(){p.setStyle({textFill:null,textBackgroundColor:null})}))),p.trigger(i.get("iconStatus."+u)||"normal"),h.add(p),p.on("click",r.bind(o.onclick,o,e,n,u)),m[u]=p}))}(y,u,m),y.setIconStatus=function(t,e){var n=this.option,i=this.iconPaths;n.iconStatus=n.iconStatus||{},n.iconStatus[t]=e,i[t]&&i[t].trigger(e)},u.render&&u.render(y,e,n,i)):u.remove&&u.remove(e,n):u.dispose&&u.dispose(e,n)}},updateView:function(t,e,n,i){r.each(this._features,(function(t){t.updateView&&t.updateView(t.model,e,n,i)}))},remove:function(t,e){r.each(this._features,(function(n){n.remove&&n.remove(t,e)})),this.group.removeAll()},dispose:function(t,e){r.each(this._features,(function(n){n.dispose&&n.dispose(t,e)}))}});t.exports=h},"29jt":function(t,e,n){t.exports=n.p+"3cbddc141c4d2eb71e54fe3037547812.js"},"2A/n":function(t,e,n){t.exports=n.p+"db6c0056cef31f6654438a92a8aca336.js"},"2Cji":function(t,e,n){t.exports=n.p+"f58ee8ca364e28090c10b602eef235b1.js"},"2DNl":function(t,e,n){var i=n("IMiH"),r=n("loD1"),o=n("59Ip"),s=n("aKvl"),a=n("n1HI"),l=n("hX1E").normalizeRadian,c=n("Sj9i"),u=n("hyiK"),h=i.CMD,d=2*Math.PI;var f=[-1,-1,-1],p=[-1,-1];function g(t,e,n,i,r,o,s,a,l,u){if(u>e&&u>i&&u>o&&u>a||u1&&(h=void 0,h=p[0],p[0]=p[1],p[1]=h),g=c.cubicAt(e,i,o,a,p[0]),b>1&&(m=c.cubicAt(e,i,o,a,p[1]))),2===b?we&&a>i&&a>o||a=0&&u<=1){for(var h=0,d=c.quadraticAt(e,i,o,u),p=0;pn||a<-n)return 0;var c=Math.sqrt(n*n-a*a);f[0]=-c,f[1]=c;var u=Math.abs(i-r);if(u<1e-4)return 0;if(u%d<1e-4){i=0,r=d;var h=o?1:-1;return s>=f[0]+t&&s<=f[1]+t?h:0}if(o){c=i;i=l(r),r=l(c)}else i=l(i),r=l(r);i>r&&(r+=d);for(var p=0,g=0;g<2;g++){var m=f[g];if(m+t>s){var v=Math.atan2(a,m);h=o?1:-1;v<0&&(v=d+v),(v>=i&&v<=r||v+d>=i&&v+d<=r)&&(v>Math.PI/2&&v<1.5*Math.PI&&(h=-h),p+=h)}}return p}function b(t,e,n,i,l){for(var c,d,f=0,p=0,b=0,y=0,w=0,x=0;x1&&(n||(f+=u(p,b,y,w,i,l))),1===x&&(y=p=t[x],w=b=t[x+1]),_){case h.M:p=y=t[x++],b=w=t[x++];break;case h.L:if(n){if(r.containStroke(p,b,t[x],t[x+1],e,i,l))return!0}else f+=u(p,b,t[x],t[x+1],i,l)||0;p=t[x++],b=t[x++];break;case h.C:if(n){if(o.containStroke(p,b,t[x++],t[x++],t[x++],t[x++],t[x],t[x+1],e,i,l))return!0}else f+=g(p,b,t[x++],t[x++],t[x++],t[x++],t[x],t[x+1],i,l)||0;p=t[x++],b=t[x++];break;case h.Q:if(n){if(s.containStroke(p,b,t[x++],t[x++],t[x],t[x+1],e,i,l))return!0}else f+=m(p,b,t[x++],t[x++],t[x],t[x+1],i,l)||0;p=t[x++],b=t[x++];break;case h.A:var M=t[x++],S=t[x++],A=t[x++],k=t[x++],C=t[x++],T=t[x++];x+=1;var E=1-t[x++],R=Math.cos(C)*A+M,L=Math.sin(C)*k+S;x>1?f+=u(p,b,R,L,i,l):(y=R,w=L);var I=(i-M)*k/A+M;if(n){if(a.containStroke(M,S,k,C,C+T,E,e,I,l))return!0}else f+=v(M,S,k,C,C+T,E,I,l);p=Math.cos(C+T)*A+M,b=Math.sin(C+T)*k+S;break;case h.R:y=p=t[x++],w=b=t[x++];R=y+t[x++],L=w+t[x++];if(n){if(r.containStroke(y,w,R,w,e,i,l)||r.containStroke(R,w,R,L,e,i,l)||r.containStroke(R,L,y,L,e,i,l)||r.containStroke(y,L,y,w,e,i,l))return!0}else f+=u(R,w,R,L,i,l),f+=u(y,L,y,w,i,l);break;case h.Z:if(n){if(r.containStroke(p,b,y,w,e,i,l))return!0}else f+=u(p,b,y,w,i,l);p=y,b=w}}return n||(c=b,d=w,Math.abs(c-d)<1e-4)||(f+=u(p,b,y,w,i,l)||0),0!==f}e.contain=function(t,e,n){return b(t,0,!1,e,n)},e.containStroke=function(t,e,n,i){return b(t,e,!0,n,i)}},"2GCP":function(t,e,n){t.exports=n.p+"41f85ea0c545f0539b6ae2753eb1f79c.js"},"2Syz":function(t,e,n){t.exports=n.p+"10bf27f2508137ec2a1cb087f80ae54d.js"},"2XiD":function(t,e,n){t.exports=n.p+"92cf63e9a949f08d97a74d9ed17392ed.js"},"2enc":function(t,e,n){t.exports=n.p+"1fd353d022bf5027ba193d0b0b9995ed.js"},"2fw6":function(t,e,n){var i=n("y+Vt").extend({type:"circle",shape:{cx:0,cy:0,r:0},buildPath:function(t,e,n){n&&t.moveTo(e.cx+e.r,e.cy),t.arc(e.cx,e.cy,e.r,0,2*Math.PI,!0)}});t.exports=i},"2j6C":function(t,e){function n(t,e){if(!t)throw new Error(e||"Assertion failed")}t.exports=n,n.equal=function(t,e,n){if(t!=e)throw new Error(n||"Assertion failed: "+t+" != "+e)}},"2nlJ":function(t,e,n){(function(t){ace.define("ace/snippets",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event_emitter","ace/lib/lang","ace/range","ace/range_list","ace/keyboard/hash_handler","ace/tokenizer","ace/clipboard","ace/editor"],(function(t,e,n){"use strict";var i=t("./lib/dom"),r=t("./lib/oop"),o=t("./lib/event_emitter").EventEmitter,s=t("./lib/lang"),a=t("./range").Range,l=t("./range_list").RangeList,c=t("./keyboard/hash_handler").HashHandler,u=t("./tokenizer").Tokenizer,h=t("./clipboard"),d={CURRENT_WORD:function(t){return t.session.getTextRange(t.session.getWordRange())},SELECTION:function(t,e,n){var i=t.session.getTextRange();return n?i.replace(/\n\r?([ \t]*\S)/g,"\n"+n+"$1"):i},CURRENT_LINE:function(t){return t.session.getLine(t.getCursorPosition().row)},PREV_LINE:function(t){return t.session.getLine(t.getCursorPosition().row-1)},LINE_INDEX:function(t){return t.getCursorPosition().row},LINE_NUMBER:function(t){return t.getCursorPosition().row+1},SOFT_TABS:function(t){return t.session.getUseSoftTabs()?"YES":"NO"},TAB_SIZE:function(t){return t.session.getTabSize()},CLIPBOARD:function(t){return h.getText&&h.getText()},FILENAME:function(t){return/[^/\\]*$/.exec(this.FILEPATH(t))[0]},FILENAME_BASE:function(t){return/[^/\\]*$/.exec(this.FILEPATH(t))[0].replace(/\.[^.]*$/,"")},DIRECTORY:function(t){return this.FILEPATH(t).replace(/[^/\\]*$/,"")},FILEPATH:function(t){return"/not implemented.txt"},WORKSPACE_NAME:function(){return"Unknown"},FULLNAME:function(){return"Unknown"},BLOCK_COMMENT_START:function(t){var e=t.session.$mode||{};return e.blockComment&&e.blockComment.start||""},BLOCK_COMMENT_END:function(t){var e=t.session.$mode||{};return e.blockComment&&e.blockComment.end||""},LINE_COMMENT:function(t){return(t.session.$mode||{}).lineCommentStart||""},CURRENT_YEAR:f.bind(null,{year:"numeric"}),CURRENT_YEAR_SHORT:f.bind(null,{year:"2-digit"}),CURRENT_MONTH:f.bind(null,{month:"numeric"}),CURRENT_MONTH_NAME:f.bind(null,{month:"long"}),CURRENT_MONTH_NAME_SHORT:f.bind(null,{month:"short"}),CURRENT_DATE:f.bind(null,{day:"2-digit"}),CURRENT_DAY_NAME:f.bind(null,{weekday:"long"}),CURRENT_DAY_NAME_SHORT:f.bind(null,{weekday:"short"}),CURRENT_HOUR:f.bind(null,{hour:"2-digit",hour12:!1}),CURRENT_MINUTE:f.bind(null,{minute:"2-digit"}),CURRENT_SECOND:f.bind(null,{second:"2-digit"})};function f(t){var e=(new Date).toLocaleString("en-us",t);return 1==e.length?"0"+e:e}d.SELECTED_TEXT=d.SELECTION;var p=function(){this.snippetMap={},this.snippetNameMap={}};(function(){r.implement(this,o),this.getTokenizer=function(){return p.$tokenizer||this.createTokenizer()},this.createTokenizer=function(){function t(t){return t=t.substr(1),/^\d+$/.test(t)?[{tabstopId:parseInt(t,10)}]:[{text:t}]}function e(t){return"(?:[^\\\\"+t+"]|\\\\.)"}var n={regex:"/("+e("/")+"+)/",onMatch:function(t,e,n){var i=n[0];return i.fmtString=!0,i.guard=t.slice(1,-1),i.flag="",""},next:"formatString"};return p.$tokenizer=new u({start:[{regex:/\\./,onMatch:function(t,e,n){var i=t[1];return("}"==i&&n.length||-1!="`$\\".indexOf(i))&&(t=i),[t]}},{regex:/}/,onMatch:function(t,e,n){return[n.length?n.shift():t]}},{regex:/\$(?:\d+|\w+)/,onMatch:t},{regex:/\$\{[\dA-Z_a-z]+/,onMatch:function(e,n,i){var r=t(e.substr(1));return i.unshift(r[0]),r},next:"snippetVar"},{regex:/\n/,token:"newline",merge:!1}],snippetVar:[{regex:"\\|"+e("\\|")+"*\\|",onMatch:function(t,e,n){var i=t.slice(1,-1).replace(/\\[,|\\]|,/g,(function(t){return 2==t.length?t[1]:"\0"})).split("\0").map((function(t){return{value:t}}));return n[0].choices=i,[i[0]]},next:"start"},n,{regex:"([^:}\\\\]|\\\\.)*:?",token:"",next:"start"}],formatString:[{regex:/:/,onMatch:function(t,e,n){return n.length&&n[0].expectElse?(n[0].expectElse=!1,n[0].ifEnd={elseEnd:n[0]},[n[0].ifEnd]):":"}},{regex:/\\./,onMatch:function(t,e,n){var i=t[1];return"}"==i&&n.length||-1!="`$\\".indexOf(i)?t=i:"n"==i?t="\n":"t"==i?t="\t":-1!="ulULE".indexOf(i)&&(t={changeCase:i,local:i>"a"}),[t]}},{regex:"/\\w*}",onMatch:function(t,e,n){var i=n.shift();return i&&(i.flag=t.slice(1,-1)),this.next=i&&i.tabstopId?"start":"",[i||t]},next:"start"},{regex:/\$(?:\d+|\w+)/,onMatch:function(t,e,n){return[{text:t.slice(1)}]}},{regex:/\${\w+/,onMatch:function(t,e,n){var i={text:t.slice(2)};return n.unshift(i),[i]},next:"formatStringVar"},{regex:/\n/,token:"newline",merge:!1},{regex:/}/,onMatch:function(t,e,n){var i=n.shift();return this.next=i&&i.tabstopId?"start":"",[i||t]},next:"start"}],formatStringVar:[{regex:/:\/\w+}/,onMatch:function(t,e,n){return n[0].formatFunction=t.slice(2,-1),[n.shift()]},next:"formatString"},n,{regex:/:[\?\-+]?/,onMatch:function(t,e,n){"+"==t[1]&&(n[0].ifEnd=n[0]),"?"==t[1]&&(n[0].expectElse=!0)},next:"formatString"},{regex:"([^:}\\\\]|\\\\.)*:?",token:"",next:"formatString"}]})},this.tokenizeTmSnippet=function(t,e){return this.getTokenizer().getLineTokens(t,e).tokens.map((function(t){return t.value||t}))},this.getVariableValue=function(t,e,n){if(/^\d+$/.test(e))return(this.variables.__||{})[e]||"";if(/^[A-Z]\d+$/.test(e))return(this.variables[e[0]+"__"]||{})[e.substr(1)]||"";if(e=e.replace(/^TM_/,""),!this.variables.hasOwnProperty(e))return"";var i=this.variables[e];return"function"==typeof i&&(i=this.variables[e](t,e,n)),null==i?"":i},this.variables=d,this.tmStrFormat=function(t,e,n){if(!e.fmt)return t;var i=e.flag||"",r=e.guard;r=new RegExp(r,i.replace(/[^gim]/g,""));var o="string"==typeof e.fmt?this.tokenizeTmSnippet(e.fmt,"formatString"):e.fmt,s=this;return t.replace(r,(function(){var t=s.variables.__;s.variables.__=[].slice.call(arguments);for(var e=s.resolveVariables(o,n),i="E",r=0;r1?(b=e[e.length-1].length,v+=e.length-1):b+=t.length,y+=t}else t&&(t.start?t.end={row:v,column:b}:t.start={row:v,column:b})}));var w=t.getSelectionRange(),x=t.session.replace(w,y),_=new g(t),M=t.inVirtualSelectionMode&&t.selection.index;_.addTabstops(a,w.start,x,M)},this.insertSnippet=function(t,e){var n=this;if(t.inVirtualSelectionMode)return n.insertSnippetForSelection(t,e);t.forEachSelection((function(){n.insertSnippetForSelection(t,e)}),null,{keepOrder:!0}),t.tabstopManager&&t.tabstopManager.tabNext()},this.$getScope=function(t){var e=t.session.$mode.$id||"";if("html"===(e=e.split("/").pop())||"php"===e){"php"!==e||t.session.$mode.inlinePhp||(e="html");var n=t.getCursorPosition(),i=t.session.getState(n.row);"object"==typeof i&&(i=i[0]),i.substring&&("js-"==i.substring(0,3)?e="javascript":"css-"==i.substring(0,4)?e="css":"php-"==i.substring(0,4)&&(e="php"))}return e},this.getActiveScopes=function(t){var e=this.$getScope(t),n=[e],i=this.snippetMap;return i[e]&&i[e].includeScopes&&n.push.apply(n,i[e].includeScopes),n.push("_"),n},this.expandWithTab=function(t,e){var n=this,i=t.forEachSelection((function(){return n.expandSnippetForSelection(t,e)}),null,{keepOrder:!0});return i&&t.tabstopManager&&t.tabstopManager.tabNext(),i},this.expandSnippetForSelection=function(t,e){var n,i=t.getCursorPosition(),r=t.session.getLine(i.row),o=r.substring(0,i.column),s=r.substr(i.column),a=this.snippetMap;return this.getActiveScopes(t).some((function(t){var e=a[t];return e&&(n=this.findMatchingSnippet(e,o,s)),!!n}),this),!!n&&(e&&e.dryRun||(t.session.doc.removeInLine(i.row,i.column-n.replaceBefore.length,i.column+n.replaceAfter.length),this.variables.M__=n.matchBefore,this.variables.T__=n.matchAfter,this.insertSnippetForSelection(t,n.content),this.variables.M__=this.variables.T__=null),!0)},this.findMatchingSnippet=function(t,e,n){for(var i=t.length;i--;){var r=t[i];if((!r.startRe||r.startRe.test(e))&&((!r.endRe||r.endRe.test(n))&&(r.startRe||r.endRe)))return r.matchBefore=r.startRe?r.startRe.exec(e):[""],r.matchAfter=r.endRe?r.endRe.exec(n):[""],r.replaceBefore=r.triggerRe?r.triggerRe.exec(e)[0]:"",r.replaceAfter=r.endTriggerRe?r.endTriggerRe.exec(n)[0]:"",r}},this.snippetMap={},this.snippetNameMap={},this.register=function(t,e){var n=this.snippetMap,i=this.snippetNameMap,r=this;function o(t){return t&&!/^\^?\(.*\)\$?$|^\\b$/.test(t)&&(t="(?:"+t+")"),t||""}function a(t,e,n){return t=o(t),e=o(e),n?(t=e+t)&&"$"!=t[t.length-1]&&(t+="$"):(t+=e)&&"^"!=t[0]&&(t="^"+t),new RegExp(t)}function l(t){t.scope||(t.scope=e||"_"),e=t.scope,n[e]||(n[e]=[],i[e]={});var o=i[e];if(t.name){var l=o[t.name];l&&r.unregister(l),o[t.name]=t}n[e].push(t),t.prefix&&(t.tabTrigger=t.prefix),!t.content&&t.body&&(t.content=Array.isArray(t.body)?t.body.join("\n"):t.body),t.tabTrigger&&!t.trigger&&(!t.guard&&/^\w/.test(t.tabTrigger)&&(t.guard="\\b"),t.trigger=s.escapeRegExp(t.tabTrigger)),(t.trigger||t.guard||t.endTrigger||t.endGuard)&&(t.startRe=a(t.trigger,t.guard,!0),t.triggerRe=new RegExp(t.trigger),t.endRe=a(t.endTrigger,t.endGuard,!0),t.endTriggerRe=new RegExp(t.endTrigger))}t||(t=[]),Array.isArray(t)?t.forEach(l):Object.keys(t).forEach((function(e){l(t[e])})),this._signal("registerSnippets",{scope:e})},this.unregister=function(t,e){var n=this.snippetMap,i=this.snippetNameMap;function r(t){var r=i[t.scope||e];if(r&&r[t.name]){delete r[t.name];var o=n[t.scope||e],s=o&&o.indexOf(t);s>=0&&o.splice(s,1)}}t.content?r(t):Array.isArray(t)&&t.forEach(r)},this.parseSnippetFile=function(t){t=t.replace(/\r/g,"");for(var e,n=[],i={},r=/^#.*|^({[\s\S]*})\s*$|^(\S+) (.*)$|^((?:\n*\t.*)+)/gm;e=r.exec(t);){if(e[1])try{i=JSON.parse(e[1]),n.push(i)}catch(t){}if(e[4])i.content=e[4].replace(/^\t/gm,""),n.push(i),i={};else{var o=e[2],s=e[3];if("regex"==o){var a=/\/((?:[^\/\\]|\\.)*)|$/g;i.guard=a.exec(s)[1],i.trigger=a.exec(s)[1],i.endTrigger=a.exec(s)[1],i.endGuard=a.exec(s)[1]}else"snippet"==o?(i.tabTrigger=s.match(/^\S*/)[0],i.name||(i.name=s)):o&&(i[o]=s)}}return n},this.getSnippetByName=function(t,e){var n,i=this.snippetNameMap;return this.getActiveScopes(e).some((function(e){var r=i[e];return r&&(n=r[t]),!!n}),this),n}}).call(p.prototype);var g=function(t){if(t.tabstopManager)return t.tabstopManager;t.tabstopManager=this,this.$onChange=this.onChange.bind(this),this.$onChangeSelection=s.delayedCall(this.onChangeSelection.bind(this)).schedule,this.$onChangeSession=this.onChangeSession.bind(this),this.$onAfterExec=this.onAfterExec.bind(this),this.attach(t)};(function(){this.attach=function(t){this.index=0,this.ranges=[],this.tabstops=[],this.$openTabstops=null,this.selectedTabstop=null,this.editor=t,this.editor.on("change",this.$onChange),this.editor.on("changeSelection",this.$onChangeSelection),this.editor.on("changeSession",this.$onChangeSession),this.editor.commands.on("afterExec",this.$onAfterExec),this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler)},this.detach=function(){this.tabstops.forEach(this.removeTabstopMarkers,this),this.ranges=null,this.tabstops=null,this.selectedTabstop=null,this.editor.removeListener("change",this.$onChange),this.editor.removeListener("changeSelection",this.$onChangeSelection),this.editor.removeListener("changeSession",this.$onChangeSession),this.editor.commands.removeListener("afterExec",this.$onAfterExec),this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler),this.editor.tabstopManager=null,this.editor=null},this.onChange=function(t){for(var e="r"==t.action[0],n=this.selectedTabstop||{},i=n.parents||{},r=(this.tabstops||[]).slice(),o=0;o2&&(this.tabstops.length&&o.push(o.splice(2,1)[0]),this.tabstops.splice.apply(this.tabstops,o))},this.addTabstopMarkers=function(t){var e=this.editor.session;t.forEach((function(t){t.markerId||(t.markerId=e.addMarker(t,"ace_snippet-marker","text"))}))},this.removeTabstopMarkers=function(t){var e=this.editor.session;t.forEach((function(t){e.removeMarker(t.markerId),t.markerId=null}))},this.removeRange=function(t){var e=t.tabstop.indexOf(t);-1!=e&&t.tabstop.splice(e,1),-1!=(e=this.ranges.indexOf(t))&&this.ranges.splice(e,1),-1!=(e=t.tabstop.rangeList.ranges.indexOf(t))&&t.tabstop.splice(e,1),this.editor.session.removeMarker(t.markerId),t.tabstop.length||(-1!=(e=this.tabstops.indexOf(t.tabstop))&&this.tabstops.splice(e,1),this.tabstops.length||this.detach())},this.keyboardHandler=new c,this.keyboardHandler.bindKeys({Tab:function(t){e.snippetManager&&e.snippetManager.expandWithTab(t)||(t.tabstopManager.tabNext(1),t.renderer.scrollCursorIntoView())},"Shift-Tab":function(t){t.tabstopManager.tabNext(-1),t.renderer.scrollCursorIntoView()},Esc:function(t){t.tabstopManager.detach()}})}).call(g.prototype);var m=function(t,e){0==t.row&&(t.column+=e.column),t.row+=e.row},v=function(t,e){t.row==e.row&&(t.column-=e.column),t.row-=e.row};i.importCssString("\n.ace_snippet-marker {\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n background: rgba(194, 193, 208, 0.09);\n border: 1px dotted rgba(211, 208, 235, 0.62);\n position: absolute;\n}","snippets.css",!1),e.snippetManager=new p;var b=t("./editor").Editor;(function(){this.insertSnippet=function(t,n){return e.snippetManager.insertSnippet(this,t,n)},this.expandSnippet=function(t){return e.snippetManager.expandWithTab(this,t)}}).call(b.prototype)})),ace.define("ace/autocomplete/popup",["require","exports","module","ace/virtual_renderer","ace/editor","ace/range","ace/lib/event","ace/lib/lang","ace/lib/dom"],(function(t,e,n){"use strict";var i=t("../virtual_renderer").VirtualRenderer,r=t("../editor").Editor,o=t("../range").Range,s=t("../lib/event"),a=t("../lib/lang"),l=t("../lib/dom"),c=function(t){return"suggest-aria-id:".concat(t)},u=function(t){var e=new i(t);e.$maxLines=4;var n=new r(e);return n.setHighlightActiveLine(!1),n.setShowPrintMargin(!1),n.renderer.setShowGutter(!1),n.renderer.setHighlightGutterLine(!1),n.$mouseHandler.$focusTimeout=0,n.$highlightTagPending=!0,n};l.importCssString("\n.ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line {\n background-color: #CAD6FA;\n z-index: 1;\n}\n.ace_dark.ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line {\n background-color: #3a674e;\n}\n.ace_editor.ace_autocomplete .ace_line-hover {\n border: 1px solid #abbffe;\n margin-top: -1px;\n background: rgba(233,233,253,0.4);\n position: absolute;\n z-index: 2;\n}\n.ace_dark.ace_editor.ace_autocomplete .ace_line-hover {\n border: 1px solid rgba(109, 150, 13, 0.8);\n background: rgba(58, 103, 78, 0.62);\n}\n.ace_completion-meta {\n opacity: 0.5;\n margin: 0.9em;\n}\n.ace_completion-message {\n color: blue;\n}\n.ace_editor.ace_autocomplete .ace_completion-highlight{\n color: #2d69c7;\n}\n.ace_dark.ace_editor.ace_autocomplete .ace_completion-highlight{\n color: #93ca12;\n}\n.ace_editor.ace_autocomplete {\n width: 300px;\n z-index: 200000;\n border: 1px lightgray solid;\n position: fixed;\n box-shadow: 2px 3px 5px rgba(0,0,0,.2);\n line-height: 1.4;\n background: #fefefe;\n color: #111;\n}\n.ace_dark.ace_editor.ace_autocomplete {\n border: 1px #484747 solid;\n box-shadow: 2px 3px 5px rgba(0, 0, 0, 0.51);\n line-height: 1.4;\n background: #25282c;\n color: #c1c1c1;\n}","autocompletion.css",!1),e.AcePopup=function(t){var e=l.createElement("div"),n=new u(e);t&&t.appendChild(e),e.style.display="none",n.renderer.content.style.cursor="default",n.renderer.setStyle("ace_autocomplete"),n.renderer.container.setAttribute("role","listbox"),n.renderer.container.setAttribute("aria-label","Autocomplete suggestions"),n.setOption("displayIndentGuides",!1),n.setOption("dragDelay",150);var i,r=function(){};n.focus=r,n.$isFocused=!0,n.renderer.$cursorLayer.restartTimer=r,n.renderer.$cursorLayer.element.style.opacity=0,n.renderer.$maxLines=8,n.renderer.$keepTextAreaAtCursor=!1,n.setHighlightActiveLine(!1),n.session.highlight(""),n.session.$searchHighlight.clazz="ace_highlight-marker",n.on("mousedown",(function(t){var e=t.getDocumentPosition();n.selection.moveToPosition(e),d.start.row=d.end.row=e.row,t.stop()}));var h=new o(-1,0,-1,1/0),d=new o(-1,0,-1,1/0);d.id=n.session.addMarker(d,"ace_active-line","fullLine"),n.setSelectOnHover=function(t){t?h.id&&(n.session.removeMarker(h.id),h.id=null):h.id=n.session.addMarker(h,"ace_line-hover","fullLine")},n.setSelectOnHover(!1),n.on("mousemove",(function(t){if(i){if(i.x!=t.x||i.y!=t.y){(i=t).scrollTop=n.renderer.scrollTop;var e=i.getDocumentPosition().row;h.start.row!=e&&(h.id||n.setRow(e),p(e))}}else i=t})),n.renderer.on("beforeRender",(function(){if(i&&-1!=h.start.row){i.$pos=null;var t=i.getDocumentPosition().row;h.id||n.setRow(t),p(t,!0)}})),n.renderer.on("afterRender",(function(){var t=n.getRow(),e=n.renderer.$textLayer,i=e.element.childNodes[t-e.config.firstRow],r=document.activeElement;if(i!==e.selectedNode&&e.selectedNode&&(l.removeCssClass(e.selectedNode,"ace_selected"),r.removeAttribute("aria-activedescendant"),e.selectedNode.removeAttribute("id")),e.selectedNode=i,i){l.addCssClass(i,"ace_selected");var o=c(t);i.id=o,n.renderer.container.setAttribute("aria-activedescendant",o),r.setAttribute("aria-activedescendant",o),i.setAttribute("role","option"),i.setAttribute("aria-label",n.getData(t).value),i.setAttribute("aria-setsize",n.data.length),i.setAttribute("aria-posinset",t)}}));var f=function(){p(-1)},p=function(t,e){t!==h.start.row&&(h.start.row=h.end.row=t,e||n.session._emit("changeBackMarker"),n._emit("changeHoverMarker"))};n.getHoveredRow=function(){return h.start.row},s.addListener(n.container,"mouseout",f),n.on("hide",f),n.on("changeSelection",f),n.session.doc.getLength=function(){return n.data.length},n.session.doc.getLine=function(t){var e=n.data[t];return"string"==typeof e?e:e&&e.value||""};var g=n.session.bgTokenizer;return g.$tokenizeRow=function(t){var e=n.data[t],i=[];if(!e)return i;"string"==typeof e&&(e={value:e});var r=e.caption||e.value||e.name;function o(t,n){t&&i.push({type:(e.className||"")+(n||""),value:t})}for(var s=r.toLowerCase(),a=(n.filterText||"").toLowerCase(),l=0,c=0,u=0;u<=a.length;u++)if(u!=c&&(e.matchMask&1<s/2&&!r&&u+e+c>s?(l.$maxPixelHeight=u-2*this.$borderSize,o.style.top="",o.style.bottom=s-u+"px",n.isTopdown=!1):(u+=e,l.$maxPixelHeight=s-u-.2*e,o.style.top=u+"px",o.style.bottom="",n.isTopdown=!0),o.style.display="";var h=t.left;h+o.offsetWidth>a&&(h=a-o.offsetWidth),o.style.left=h+"px",this._signal("show"),i=null,n.isOpen=!0},n.goTo=function(t){var e=this.getRow(),n=this.session.getLength()-1;switch(t){case"up":e=e<=0?n:e-1;break;case"down":e=e>=n?-1:e+1;break;case"start":e=0;break;case"end":e=n}this.setRow(e)},n.getTextLeftOffset=function(){return this.$borderSize+this.renderer.$padding+this.$imageSize},n.$imageSize=0,n.$borderSize=1,n},e.$singleLineEditor=u,e.getAriaId=c})),ace.define("ace/autocomplete/util",["require","exports","module"],(function(t,e,n){"use strict";e.parForEach=function(t,e,n){var i=0,r=t.length;0===r&&n();for(var o=0;o=0&&n.test(t[o]);o--)r.push(t[o]);return r.reverse().join("")},e.retrieveFollowingIdentifier=function(t,e,n){n=n||i;for(var r=[],o=e;othis.filterText&&0===t.lastIndexOf(this.filterText,0))var e=this.filtered;else e=this.all;this.filterText=t,e=(e=this.filterCompletions(e,this.filterText)).sort((function(t,e){return e.exactMatch-t.exactMatch||e.$score-t.$score||(t.caption||t.value).localeCompare(e.caption||e.value)}));var n=null;e=e.filter((function(t){var e=t.snippet||t.caption||t.value;return e!==n&&(n=e,!0)})),this.filtered=e},this.filterCompletions=function(t,e){var n=[],i=e.toUpperCase(),r=e.toLowerCase();t:for(var o,s=0;o=t[s];s++){var a=o.caption||o.value||o.snippet;if(a){var l,c,u=-1,h=0,d=0;if(this.exactMatch){if(e!==a.substr(0,e.length))continue t}else{var f=a.toLowerCase().indexOf(r);if(f>-1)d=f;else for(var p=0;p=0&&(m<0||g0&&(-1===u&&(d+=10),d+=c,h|=1<",s.escapeHTML(t.caption),"","

      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/, + next: "pop" + }, { + defaultToken: "string.quoted.other.relative.url.turtle" + }] + }], + "#string-datatype-suffixes": [{ + token: "keyword.operator.datatype.suffix.turtle", + regex: /\^\^/ + }], + "#string-language-suffixes": [{ + token: [ + "keyword.operator.language.suffix.turtle", + "constant.language.suffix.turtle" + ], + regex: /(?!")(@)([a-z]+(?:\-[a-z0-9]+)*)/ + }], + "#strings": [{ + token: "string.quoted.triple.turtle", + regex: /"""/, + push: [{ + token: "string.quoted.triple.turtle", + regex: /"""/, + next: "pop" + }, { + defaultToken: "string.quoted.triple.turtle" + }] + }, { + token: "string.quoted.double.turtle", + regex: /"/, + push: [{ + token: "string.quoted.double.turtle", + regex: /"/, + next: "pop" + }, { + token: "invalid.string.newline", + regex: /$/ + }, { + token: "constant.character.escape.turtle", + regex: /\\./ + }, { + defaultToken: "string.quoted.double.turtle" + }] + }], + "#xml-schema-types": [{ + token: "support.type.datatype.xml.schema.turtle", + regex: /xsd?:[a-z][a-zA-Z]+/ + }] + }; + this.normalizeRules(); +}; +TurtleHighlightRules.metaData = { + fileTypes: ["ttl", "nt"], + name: "Turtle", + scopeName: "source.turtle" +}; +oop.inherits(TurtleHighlightRules, TextHighlightRules); +exports.TurtleHighlightRules = TurtleHighlightRules; + +}); + +ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/turtle",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/turtle_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ +"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var TurtleHighlightRules = require("./turtle_highlight_rules").TurtleHighlightRules; +var FoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = TurtleHighlightRules; + this.foldingRules = new FoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.$id = "ace/mode/turtle"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/turtle"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/e908b5e66faee5b948e984da2c1aaf9a.js b/web/dist/e908b5e66faee5b948e984da2c1aaf9a.js new file mode 100644 index 00000000..abfa0fe9 --- /dev/null +++ b/web/dist/e908b5e66faee5b948e984da2c1aaf9a.js @@ -0,0 +1,2293 @@ +ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var DocCommentHighlightRules = function () { + this.$rules = { + "start": [{ + token: "comment.doc.tag", + regex: "@[\\w\\d_]+" // TODO: fix email addresses + }, + DocCommentHighlightRules.getTagRule(), + { + defaultToken: "comment.doc", + caseInsensitive: true + }] + }; +}; +oop.inherits(DocCommentHighlightRules, TextHighlightRules); +DocCommentHighlightRules.getTagRule = function (start) { + return { + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" + }; +}; +DocCommentHighlightRules.getStartRule = function (start) { + return { + token: "comment.doc", + regex: "\\/\\*(?=\\*)", + next: start + }; +}; +DocCommentHighlightRules.getEndRule = function (start) { + return { + token: "comment.doc", + regex: "\\*\\/", + next: start + }; +}; +exports.DocCommentHighlightRules = DocCommentHighlightRules; + +}); + +ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; +var JavaScriptHighlightRules = function (options) { + var keywordMapper = this.createKeywordMapper({ + "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|" + // Constructors + "Namespace|QName|XML|XMLList|" + // E4X + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors + "SyntaxError|TypeError|URIError|" + + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions + "isNaN|parseFloat|parseInt|" + + "JSON|Math|" + // Other + "this|arguments|prototype|window|document", + "keyword": "const|yield|import|get|set|async|await|" + + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + + "__parent__|__count__|escape|unescape|with|__proto__|" + + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor", + "storage.type": "const|let|var|function", + "constant.language": "null|Infinity|NaN|undefined", + "support.function": "alert", + "constant.language.boolean": "true|false" + }, "identifier"); + var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; + var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex + "u[0-9a-fA-F]{4}|" + // unicode + "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode + "[0-2][0-7]{0,2}|" + // oct + "3[0-7][0-7]?|" + // oct + "[4-7][0-7]?|" + //oct + ".)"; + this.$rules = { + "no_regex": [ + DocCommentHighlightRules.getStartRule("doc-start"), + comments("no_regex"), + { + token: "string", + regex: "'(?=.)", + next: "qstring" + }, { + token: "string", + regex: '"(?=.)', + next: "qqstring" + }, { + token: "constant.numeric", + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + }, { + token: [ + "storage.type", "punctuation.operator", "support.function", + "punctuation.operator", "entity.name.function", "text", "keyword.operator" + ], + regex: "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe + ")(\\s*)(=)", + next: "function_arguments" + }, { + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", "storage.type", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "entity.name.function", "text", "keyword.operator", "text", "storage.type", + "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(function\\*?)(\\s+)(" + identifierRe + ")(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "entity.name.function", "text", "punctuation.operator", + "text", "storage.type", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "text", "text", "storage.type", "text", "paren.lparen" + ], + regex: "(:)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: "keyword", + regex: "from(?=\\s*('|\"))" + }, { + token: "keyword", + regex: "(?:" + kwBeforeRe + ")\\b", + next: "start" + }, { + token: "support.constant", + regex: /that\b/ + }, { + token: ["storage.type", "punctuation.operator", "support.function.firebug"], + regex: /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ + }, { + token: keywordMapper, + regex: identifierRe + }, { + token: "punctuation.operator", + regex: /[.](?![.])/, + next: "property" + }, { + token: "storage.type", + regex: /=>/, + next: "start" + }, { + token: "keyword.operator", + regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next: "start" + }, { + token: "punctuation.operator", + regex: /[?:,;.]/, + next: "start" + }, { + token: "paren.lparen", + regex: /[\[({]/, + next: "start" + }, { + token: "paren.rparen", + regex: /[\])}]/ + }, { + token: "comment", + regex: /^#!.*$/ + } + ], + property: [{ + token: "text", + regex: "\\s+" + }, { + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()", + next: "function_arguments" + }, { + token: "punctuation.operator", + regex: /[.](?![.])/ + }, { + token: "support.function", + regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ + }, { + token: "support.function.dom", + regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ + }, { + token: "support.constant", + regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ + }, { + token: "identifier", + regex: identifierRe + }, { + regex: "", + token: "empty", + next: "no_regex" + } + ], + "start": [ + DocCommentHighlightRules.getStartRule("doc-start"), + comments("start"), + { + token: "string.regexp", + regex: "\\/", + next: "regex" + }, { + token: "text", + regex: "\\s+|^$", + next: "start" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "regex": [ + { + token: "regexp.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "string.regexp", + regex: "/[sxngimy]*", + next: "no_regex" + }, { + token: "invalid", + regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ + }, { + token: "constant.language.escape", + regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ + }, { + token: "constant.language.delimiter", + regex: /\|/ + }, { + token: "constant.language.escape", + regex: /\[\^?/, + next: "regex_character_class" + }, { + token: "empty", + regex: "$", + next: "no_regex" + }, { + defaultToken: "string.regexp" + } + ], + "regex_character_class": [ + { + token: "regexp.charclass.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "constant.language.escape", + regex: "]", + next: "regex" + }, { + token: "constant.language.escape", + regex: "-" + }, { + token: "empty", + regex: "$", + next: "no_regex" + }, { + defaultToken: "string.regexp.charachterclass" + } + ], + "default_parameter": [ + { + token: "string", + regex: "'(?=.)", + push: [ + { + token: "string", + regex: "'|$", + next: "pop" + }, { + include: "qstring" + } + ] + }, { + token: "string", + regex: '"(?=.)', + push: [ + { + token: "string", + regex: '"|$', + next: "pop" + }, { + include: "qqstring" + } + ] + }, { + token: "constant.language", + regex: "null|Infinity|NaN|undefined" + }, { + token: "constant.numeric", + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + }, { + token: "punctuation.operator", + regex: ",", + next: "function_arguments" + }, { + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "function_arguments": [ + comments("function_arguments"), + { + token: "variable.parameter", + regex: identifierRe + }, { + token: "punctuation.operator", + regex: "," + }, { + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: '"|$', + next: "no_regex" + }, { + defaultToken: "string" + } + ], + "qstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: "'|$", + next: "no_regex" + }, { + defaultToken: "string" + } + ] + }; + if (!options || !options.noES6) { + this.$rules.no_regex.unshift({ + regex: "[{}]", onMatch: function (val, state, stack) { + this.next = val == "{" ? this.nextState : ""; + if (val == "{" && stack.length) { + stack.unshift("start", state); + } + else if (val == "}" && stack.length) { + stack.shift(); + this.next = stack.shift(); + if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) + return "paren.quasi.end"; + } + return val == "{" ? "paren.lparen" : "paren.rparen"; + }, + nextState: "start" + }, { + token: "string.quasi.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedRe + }, { + token: "paren.quasi.start", + regex: /\${/, + push: "start" + }, { + token: "string.quasi.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string.quasi" + }] + }, { + token: ["variable.parameter", "text"], + regex: "(" + identifierRe + ")(\\s*)(?=\\=>)" + }, { + token: "paren.lparen", + regex: "(\\()(?=.+\\s*=>)", + next: "function_arguments" + }, { + token: "variable.language", + regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b" + }); + this.$rules["function_arguments"].unshift({ + token: "keyword.operator", + regex: "=", + next: "default_parameter" + }, { + token: "keyword.operator", + regex: "\\.{3}" + }); + this.$rules["property"].unshift({ + token: "support.function", + regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|" + + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()" + }, { + token: "constant.language", + regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b" + }); + if (!options || options.jsx != false) + JSX.call(this); + } + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]); + this.normalizeRules(); +}; +oop.inherits(JavaScriptHighlightRules, TextHighlightRules); +function JSX() { + var tagRegex = identifierRe.replace("\\d", "\\d\\-"); + var jsxTag = { + onMatch: function (val, state, stack) { + var offset = val.charAt(1) == "/" ? 2 : 1; + if (offset == 1) { + if (state != this.nextState) + stack.unshift(this.next, this.nextState, 0); + else + stack.unshift(this.next); + stack[2]++; + } + else if (offset == 2) { + if (state == this.nextState) { + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.shift(); + stack.shift(); + } + } + } + return [{ + type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", + value: val.slice(0, offset) + }, { + type: "meta.tag.tag-name.xml", + value: val.substr(offset) + }]; + }, + regex: "", + onMatch: function (value, currentState, stack) { + if (currentState == stack[0]) + stack.shift(); + if (value.length == 2) { + if (stack[0] == this.nextState) + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.splice(0, 2); + } + } + this.next = stack[0] || "start"; + return [{ type: this.token, value: value }]; + }, + nextState: "jsx" + }, + jsxJsRule, + comments("jsxAttributes"), + { + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + token: "text.tag-whitespace.xml", + regex: "\\s+" + }, { + token: "string.attribute-value.xml", + regex: "'", + stateName: "jsx_attr_q", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + stateName: "jsx_attr_qq", + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, + jsxTag + ]; + this.$rules.reference = [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }]; +} +function comments(next) { + return [ + { + token: "comment", + regex: /\/\*/, + next: [ + DocCommentHighlightRules.getTagRule(), + { token: "comment", regex: "\\*\\/", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } + ] + }, { + token: "comment", + regex: "\\/\\/", + next: [ + DocCommentHighlightRules.getTagRule(), + { token: "comment", regex: "$|^", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } + ] + } + ]; +} +exports.JavaScriptHighlightRules = JavaScriptHighlightRules; + +}); + +ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) + return false; + return /^\s*\}/.test(input); + }; + this.autoOutdent = function (doc, row) { + var line = doc.getLine(row); + var match = line.match(/^(\s*\})/); + if (!match) + return 0; + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; + var indent = this.$getIndent(doc.getLine(openBracePos.row)); + doc.replace(new Range(row, 0, row, column - 1), indent); + }; + this.$getIndent = function (line) { + return line.match(/^\s*/)[0]; + }; +}).call(MatchingBraceOutdent.prototype); +exports.MatchingBraceOutdent = MatchingBraceOutdent; + +}); + +ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = JavaScriptHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CstyleBehaviour(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "//"; + this.blockComment = { start: "/*", end: "*/" }; + this.$quotes = { '"': '"', "'": "'", "`": "`" }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + var endState = tokenizedLine.state; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + if (state == "start" || state == "no_regex") { + var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); + if (match) { + indent += tab; + } + } + else if (state == "doc-start") { + if (endState == "start" || endState == "no_regex") { + return ""; + } + var match = line.match(/^\s*(\/?)\*/); + if (match) { + if (match[1]) { + indent += " "; + } + indent += "* "; + } + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.createWorker = function (session) { + var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); + worker.attachToDocument(session.getDocument()); + worker.on("annotate", function (results) { + session.setAnnotations(results.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/javascript"; + this.snippetFileId = "ace/snippets/javascript"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; +var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; +var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; +var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; +var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; +var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; +var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; +var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; +var CssHighlightRules = function () { + var keywordMapper = this.createKeywordMapper({ + "support.function": supportFunction, + "support.constant": supportConstant, + "support.type": supportType, + "support.constant.color": supportConstantColor, + "support.constant.fonts": supportConstantFonts + }, "text", true); + this.$rules = { + "start": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" + }, { + token: "string", + regex: "@(?!viewport)", + next: "media" + }, { + token: "keyword", + regex: "#[a-z0-9-_]+" + }, { + token: "keyword", + regex: "%" + }, { + token: "variable", + regex: "\\.[a-z0-9-_]+" + }, { + token: "string", + regex: ":[a-z0-9-_]+" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant", + regex: "[a-z0-9-_]+" + }, { + caseInsensitive: true + }], + "media": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "start" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + token: "string", + regex: ";", + next: "start" + }, { + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" + }], + "comments": [{ + token: "comment", + regex: "\\/\\*", + push: [{ + token: "comment", + regex: "\\*\\/", + next: "pop" + }, { + defaultToken: "comment" + }] + }], + "ruleset": [{ + regex: "-(webkit|ms|moz|o)-", + token: "text" + }, { + token: "punctuation.operator", + regex: "[:;]" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + include: ["strings", "url", "comments"] + }, { + token: ["constant.numeric", "keyword"], + regex: "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant.numeric", + regex: "#[a-f0-9]{6}" + }, { + token: "constant.numeric", + regex: "#[a-f0-9]{3}" + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"], + regex: pseudoElements + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"], + regex: pseudoClasses + }, { + include: "url" + }, { + token: keywordMapper, + regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" + }, { + caseInsensitive: true + }], + url: [{ + token: "support.function", + regex: "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token: "support.function", + regex: "\\)", + next: "pop" + }, { + defaultToken: "string" + }] + }], + strings: [{ + token: "string.start", + regex: "'", + push: [{ + token: "string.end", + regex: "'|$", + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }, { + token: "string.start", + regex: '"', + push: [{ + token: "string.end", + regex: '"|$', + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], + escapes: [{ + token: "constant.language.escape", + regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ + }] + }; + this.normalizeRules(); +}; +oop.inherits(CssHighlightRules, TextHighlightRules); +exports.CssHighlightRules = CssHighlightRules; + +}); + +ace.define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module){"use strict"; +var propertyMap = { + "background": { "#$0": 1 }, + "background-color": { "#$0": 1, "transparent": 1, "fixed": 1 }, + "background-image": { "url('/$0')": 1 }, + "background-repeat": { "repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1 }, + "background-position": { "bottom": 2, "center": 2, "left": 2, "right": 2, "top": 2, "inherit": 2 }, + "background-attachment": { "scroll": 1, "fixed": 1 }, + "background-size": { "cover": 1, "contain": 1 }, + "background-clip": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "background-origin": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "border": { "solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1 }, + "border-color": { "#$0": 1 }, + "border-style": { "solid": 2, "dashed": 2, "dotted": 2, "double": 2, "groove": 2, "hidden": 2, "inherit": 2, "inset": 2, "none": 2, "outset": 2, "ridged": 2 }, + "border-collapse": { "collapse": 1, "separate": 1 }, + "bottom": { "px": 1, "em": 1, "%": 1 }, + "clear": { "left": 1, "right": 1, "both": 1, "none": 1 }, + "color": { "#$0": 1, "rgb(#$00,0,0)": 1 }, + "cursor": { "default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1 }, + "display": { "none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1 }, + "empty-cells": { "show": 1, "hide": 1 }, + "float": { "left": 1, "right": 1, "none": 1 }, + "font-family": { "Arial": 2, "Comic Sans MS": 2, "Consolas": 2, "Courier New": 2, "Courier": 2, "Georgia": 2, "Monospace": 2, "Sans-Serif": 2, "Segoe UI": 2, "Tahoma": 2, "Times New Roman": 2, "Trebuchet MS": 2, "Verdana": 1 }, + "font-size": { "px": 1, "em": 1, "%": 1 }, + "font-weight": { "bold": 1, "normal": 1 }, + "font-style": { "italic": 1, "normal": 1 }, + "font-variant": { "normal": 1, "small-caps": 1 }, + "height": { "px": 1, "em": 1, "%": 1 }, + "left": { "px": 1, "em": 1, "%": 1 }, + "letter-spacing": { "normal": 1 }, + "line-height": { "normal": 1 }, + "list-style-type": { "none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1 }, + "margin": { "px": 1, "em": 1, "%": 1 }, + "margin-right": { "px": 1, "em": 1, "%": 1 }, + "margin-left": { "px": 1, "em": 1, "%": 1 }, + "margin-top": { "px": 1, "em": 1, "%": 1 }, + "margin-bottom": { "px": 1, "em": 1, "%": 1 }, + "max-height": { "px": 1, "em": 1, "%": 1 }, + "max-width": { "px": 1, "em": 1, "%": 1 }, + "min-height": { "px": 1, "em": 1, "%": 1 }, + "min-width": { "px": 1, "em": 1, "%": 1 }, + "overflow": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-x": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-y": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "padding": { "px": 1, "em": 1, "%": 1 }, + "padding-top": { "px": 1, "em": 1, "%": 1 }, + "padding-right": { "px": 1, "em": 1, "%": 1 }, + "padding-bottom": { "px": 1, "em": 1, "%": 1 }, + "padding-left": { "px": 1, "em": 1, "%": 1 }, + "page-break-after": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "page-break-before": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "position": { "absolute": 1, "relative": 1, "fixed": 1, "static": 1 }, + "right": { "px": 1, "em": 1, "%": 1 }, + "table-layout": { "fixed": 1, "auto": 1 }, + "text-decoration": { "none": 1, "underline": 1, "line-through": 1, "blink": 1 }, + "text-align": { "left": 1, "right": 1, "center": 1, "justify": 1 }, + "text-transform": { "capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1 }, + "top": { "px": 1, "em": 1, "%": 1 }, + "vertical-align": { "top": 1, "bottom": 1 }, + "visibility": { "hidden": 1, "visible": 1 }, + "white-space": { "nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1 }, + "width": { "px": 1, "em": 1, "%": 1 }, + "word-spacing": { "normal": 1 }, + "filter": { "alpha(opacity=$0100)": 1 }, + "text-shadow": { "$02px 2px 2px #777": 1 }, + "text-overflow": { "ellipsis-word": 1, "clip": 1, "ellipsis": 1 }, + "-moz-border-radius": 1, + "-moz-border-radius-topright": 1, + "-moz-border-radius-bottomright": 1, + "-moz-border-radius-topleft": 1, + "-moz-border-radius-bottomleft": 1, + "-webkit-border-radius": 1, + "-webkit-border-top-right-radius": 1, + "-webkit-border-top-left-radius": 1, + "-webkit-border-bottom-right-radius": 1, + "-webkit-border-bottom-left-radius": 1, + "-moz-box-shadow": 1, + "-webkit-box-shadow": 1, + "transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-moz-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-webkit-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 } +}; +var CssCompletions = function () { +}; +(function () { + this.completionsDefined = false; + this.defineCompletions = function () { + if (document) { + var style = document.createElement('c').style; + for (var i in style) { + if (typeof style[i] !== 'string') + continue; + var name = i.replace(/[A-Z]/g, function (x) { + return '-' + x.toLowerCase(); + }); + if (!propertyMap.hasOwnProperty(name)) + propertyMap[name] = 1; + } + } + this.completionsDefined = true; + }; + this.getCompletions = function (state, session, pos, prefix) { + if (!this.completionsDefined) { + this.defineCompletions(); + } + if (state === 'ruleset' || session.$mode.$id == "ace/mode/scss") { + var line = session.getLine(pos.row).substr(0, pos.column); + var inParens = /\([^)]*$/.test(line); + if (inParens) { + line = line.substr(line.lastIndexOf('(') + 1); + } + if (/:[^;]+$/.test(line)) { + /([\w\-]+):[^:]*$/.test(line); + return this.getPropertyValueCompletions(state, session, pos, prefix); + } + else { + return this.getPropertyCompletions(state, session, pos, prefix, inParens); + } + } + return []; + }; + this.getPropertyCompletions = function (state, session, pos, prefix, skipSemicolon) { + skipSemicolon = skipSemicolon || false; + var properties = Object.keys(propertyMap); + return properties.map(function (property) { + return { + caption: property, + snippet: property + ': $0' + (skipSemicolon ? '' : ';'), + meta: "property", + score: 1000000 + }; + }); + }; + this.getPropertyValueCompletions = function (state, session, pos, prefix) { + var line = session.getLine(pos.row).substr(0, pos.column); + var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; + if (!property) + return []; + var values = []; + if (property in propertyMap && typeof propertyMap[property] === "object") { + values = Object.keys(propertyMap[property]); + } + return values.map(function (value) { + return { + caption: value, + snippet: value, + meta: "property value", + score: 1000000 + }; + }); + }; +}).call(CssCompletions.prototype); +exports.CssCompletions = CssCompletions; + +}); + +ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Behaviour = require("../behaviour").Behaviour; +var CstyleBehaviour = require("./cstyle").CstyleBehaviour; +var TokenIterator = require("../../token_iterator").TokenIterator; +var CssBehaviour = function () { + this.inherit(CstyleBehaviour); + this.add("colon", "insertion", function (state, action, editor, session, text) { + if (text === ':' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.value.match(/\s+/)) { + token = iterator.stepBackward(); + } + if (token && token.type === 'support.type') { + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + if (rightChar === ':') { + return { + text: '', + selection: [1, 1] + }; + } + if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { + return { + text: ':;', + selection: [1, 1] + }; + } + } + } + }); + this.add("colon", "deletion", function (state, action, editor, session, range) { + var selected = session.doc.getTextRange(range); + if (!range.isMultiLine() && selected === ':') { + var cursor = editor.getCursorPosition(); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.value.match(/\s+/)) { + token = iterator.stepBackward(); + } + if (token && token.type === 'support.type') { + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.end.column, range.end.column + 1); + if (rightChar === ';') { + range.end.column++; + return range; + } + } + } + }); + this.add("semicolon", "insertion", function (state, action, editor, session, text) { + if (text === ';' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + if (rightChar === ';') { + return { + text: '', + selection: [1, 1] + }; + } + } + }); + this.add("!important", "insertion", function (state, action, editor, session, text) { + if (text === '!' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { + return { + text: '!important', + selection: [10, 10] + }; + } + } + }); +}; +oop.inherits(CssBehaviour, CstyleBehaviour); +exports.CssBehaviour = CssBehaviour; + +}); + +ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var CssCompletions = require("./css_completions").CssCompletions; +var CssBehaviour = require("./behaviour/css").CssBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = CssHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CssBehaviour(); + this.$completer = new CssCompletions(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.foldingRules = "cStyle"; + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokens = this.getTokenizer().getLineTokens(line, state).tokens; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + var match = line.match(/^.*\{\s*$/); + if (match) { + indent += tab; + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.getCompletions = function (state, session, pos, prefix) { + return this.$completer.getCompletions(state, session, pos, prefix); + }; + this.createWorker = function (session) { + var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); + worker.attachToDocument(session.getDocument()); + worker.on("annotate", function (e) { + session.setAnnotations(e.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/css"; + this.snippetFileId = "ace/snippets/css"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var XmlHighlightRules = function (normalize) { + var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; + this.$rules = { + start: [ + { token: "string.cdata.xml", regex: "<\\!\\[CDATA\\[", next: "cdata" }, + { + token: ["punctuation.instruction.xml", "keyword.instruction.xml"], + regex: "(<\\?)(" + tagRegex + ")", next: "processing_instruction" + }, + { token: "comment.start.xml", regex: "<\\!--", next: "comment" }, + { + token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], + regex: "(<\\!)(DOCTYPE)(?=[\\s])", next: "doctype", caseInsensitive: true + }, + { include: "tag" }, + { token: "text.end-tag-open.xml", regex: "", + next: "start" + }], + doctype: [ + { include: "whitespace" }, + { include: "string" }, + { token: "xml-pe.doctype.xml", regex: ">", next: "start" }, + { token: "xml-pe.xml", regex: "[-_a-zA-Z0-9:]+" }, + { token: "punctuation.int-subset", regex: "\\[", push: "int_subset" } + ], + int_subset: [{ + token: "text.xml", + regex: "\\s+" + }, { + token: "punctuation.int-subset.xml", + regex: "]", + next: "pop" + }, { + token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], + regex: "(<\\!)(" + tagRegex + ")", + push: [{ + token: "text", + regex: "\\s+" + }, + { + token: "punctuation.markup-decl.xml", + regex: ">", + next: "pop" + }, + { include: "string" }] + }], + cdata: [ + { token: "string.cdata.xml", regex: "\\]\\]>", next: "start" }, + { token: "text.xml", regex: "\\s+" }, + { token: "text.xml", regex: "(?:[^\\]]|\\](?!\\]>))+" } + ], + comment: [ + { token: "comment.end.xml", regex: "-->", next: "start" }, + { defaultToken: "comment.xml" } + ], + reference: [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + attr_reference: [{ + token: "constant.language.escape.reference.attribute-value.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + tag: [{ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], + regex: "(?:(<)|(", next: "start" } + ] + }], + tag_whitespace: [ + { token: "text.tag-whitespace.xml", regex: "\\s+" } + ], + whitespace: [ + { token: "text.whitespace.xml", regex: "\\s+" } + ], + string: [{ + token: "string.xml", + regex: "'", + push: [ + { token: "string.xml", regex: "'", next: "pop" }, + { defaultToken: "string.xml" } + ] + }, { + token: "string.xml", + regex: '"', + push: [ + { token: "string.xml", regex: '"', next: "pop" }, + { defaultToken: "string.xml" } + ] + }], + attributes: [{ + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + include: "tag_whitespace" + }, { + include: "attribute_value" + }], + attribute_value: [{ + token: "string.attribute-value.xml", + regex: "'", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }] + }; + if (this.constructor === XmlHighlightRules) + this.normalizeRules(); +}; +(function () { + this.embedTagRules = function (HighlightRules, prefix, tag) { + this.$rules.tag.unshift({ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(<)(" + tag + "(?=\\s|>|$))", + next: [ + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: prefix + "start" } + ] + }); + this.$rules[tag + "-end"] = [ + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start", + onMatch: function (value, currentState, stack) { + stack.splice(0); + return this.token; + } } + ]; + this.embedRules(HighlightRules, prefix, [{ + token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(|$))", + next: tag + "-end" + }, { + token: "string.cdata.xml", + regex: "<\\!\\[CDATA\\[" + }, { + token: "string.cdata.xml", + regex: "\\]\\]>" + }]); + }; +}).call(TextHighlightRules.prototype); +oop.inherits(XmlHighlightRules, TextHighlightRules); +exports.XmlHighlightRules = XmlHighlightRules; + +}); + +ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; +var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; +var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; +var tagMap = lang.createMap({ + a: 'anchor', + button: 'form', + form: 'form', + img: 'image', + input: 'form', + label: 'form', + option: 'form', + script: 'script', + select: 'form', + textarea: 'form', + style: 'style', + table: 'table', + tbody: 'table', + td: 'table', + tfoot: 'table', + th: 'table', + tr: 'table' +}); +var HtmlHighlightRules = function () { + XmlHighlightRules.call(this); + this.addRules({ + attributes: [{ + include: "tag_whitespace" + }, { + token: "entity.other.attribute-name.xml", + regex: "[-_a-zA-Z0-9:.]+" + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=", + push: [{ + include: "tag_whitespace" + }, { + token: "string.unquoted.attribute-value.html", + regex: "[^<>='\"`\\s]+", + next: "pop" + }, { + token: "empty", + regex: "", + next: "pop" + }] + }, { + include: "attribute_value" + }], + tag: [{ + token: function (start, tag) { + var group = tagMap[tag]; + return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", + "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; + }, + regex: "(", next: "start" } + ] + }); + this.embedTagRules(CssHighlightRules, "css-", "style"); + this.embedTagRules(new JavaScriptHighlightRules({ jsx: false }).getRules(), "js-", "script"); + if (this.constructor === HtmlHighlightRules) + this.normalizeRules(); +}; +oop.inherits(HtmlHighlightRules, XmlHighlightRules); +exports.HtmlHighlightRules = HtmlHighlightRules; + +}); + +ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Behaviour = require("../behaviour").Behaviour; +var TokenIterator = require("../../token_iterator").TokenIterator; +var lang = require("../../lib/lang"); +function is(token, type) { + return token && token.type.lastIndexOf(type + ".xml") > -1; +} +var XmlBehaviour = function () { + this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { + if (text == '"' || text == "'") { + var quote = text; + var selected = session.doc.getTextRange(editor.getSelectionRange()); + if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { + return { + text: quote + selected + quote, + selection: false + }; + } + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { + return { + text: "", + selection: [1, 1] + }; + } + if (!token) + token = iterator.stepBackward(); + if (!token) + return; + while (is(token, "tag-whitespace") || is(token, "whitespace")) { + token = iterator.stepBackward(); + } + var rightSpace = !rightChar || rightChar.match(/\s/); + if (is(token, "attribute-equals") && (rightSpace || rightChar == '>') || (is(token, "decl-attribute-equals") && (rightSpace || rightChar == '?'))) { + return { + text: quote + quote, + selection: [1, 1] + }; + } + } + }); + this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { + var selected = session.doc.getTextRange(range); + if (!range.isMultiLine() && (selected == '"' || selected == "'")) { + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.start.column + 1, range.start.column + 2); + if (rightChar == selected) { + range.end.column++; + return range; + } + } + }); + this.add("autoclosing", "insertion", function (state, action, editor, session, text) { + if (text == '>') { + var position = editor.getSelectionRange().start; + var iterator = new TokenIterator(session, position.row, position.column); + var token = iterator.getCurrentToken() || iterator.stepBackward(); + if (!token || !(is(token, "tag-name") || is(token, "tag-whitespace") || is(token, "attribute-name") || is(token, "attribute-equals") || is(token, "attribute-value"))) + return; + if (is(token, "reference.attribute-value")) + return; + if (is(token, "attribute-value")) { + var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; + if (position.column < tokenEndColumn) + return; + if (position.column == tokenEndColumn) { + var nextToken = iterator.stepForward(); + if (nextToken && is(nextToken, "attribute-value")) + return; + iterator.stepBackward(); + } + } + if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) + return; + while (!is(token, "tag-name")) { + token = iterator.stepBackward(); + if (token.value == "<") { + token = iterator.stepForward(); + break; + } + } + var tokenRow = iterator.getCurrentTokenRow(); + var tokenColumn = iterator.getCurrentTokenColumn(); + if (is(iterator.stepBackward(), "end-tag-open")) + return; + var element = token.value; + if (tokenRow == position.row) + element = element.substring(0, position.column - tokenColumn); + if (this.voidElements.hasOwnProperty(element.toLowerCase())) + return; + return { + text: ">" + "", + selection: [1, 1] + }; + } + }); + this.add("autoindent", "insertion", function (state, action, editor, session, text) { + if (text == "\n") { + var cursor = editor.getCursorPosition(); + var line = session.getLine(cursor.row); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.type.indexOf("tag-close") !== -1) { + if (token.value == "/>") + return; + while (token && token.type.indexOf("tag-name") === -1) { + token = iterator.stepBackward(); + } + if (!token) { + return; + } + var tag = token.value; + var row = iterator.getCurrentTokenRow(); + token = iterator.stepBackward(); + if (!token || token.type.indexOf("end-tag") !== -1) { + return; + } + if (this.voidElements && !this.voidElements[tag]) { + var nextToken = session.getTokenAt(cursor.row, cursor.column + 1); + var line = session.getLine(row); + var nextIndent = this.$getIndent(line); + var indent = nextIndent + session.getTabString(); + if (nextToken && nextToken.value === " -1; +} +(function () { + this.getFoldWidget = function (session, foldStyle, row) { + var tag = this._getFirstTagInLine(session, row); + if (!tag) + return this.getCommentFoldWidget(session, row); + if (tag.closing || (!tag.tagName && tag.selfClosing)) + return foldStyle === "markbeginend" ? "end" : ""; + if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) + return ""; + if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) + return ""; + return "start"; + }; + this.getCommentFoldWidget = function (session, row) { + if (/comment/.test(session.getState(row)) && /'; + break; + } + } + return tag; + } + else if (is(token, "tag-close")) { + tag.selfClosing = token.value == '/>'; + return tag; + } + tag.start.column += token.value.length; + } + return null; + }; + this._findEndTagInLine = function (session, row, tagName, startColumn) { + var tokens = session.getTokens(row); + var column = 0; + for (var i = 0; i < tokens.length; i++) { + var token = tokens[i]; + column += token.value.length; + if (column < startColumn) + continue; + if (is(token, "end-tag-open")) { + token = tokens[i + 1]; + if (token && token.value == tagName) + return true; + } + } + return false; + }; + this.getFoldWidgetRange = function (session, foldStyle, row) { + var tags = session.getMatchingTags({ row: row, column: 0 }); + if (tags) { + return new Range(tags.openTag.end.row, tags.openTag.end.column, tags.closeTag.start.row, tags.closeTag.start.column); + } + else { + return this.getCommentFoldWidget(session, row) + && session.getCommentFoldRange(row, session.getLine(row).length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var MixedFoldMode = require("./mixed").FoldMode; +var XmlFoldMode = require("./xml").FoldMode; +var CStyleFoldMode = require("./cstyle").FoldMode; +var FoldMode = exports.FoldMode = function (voidElements, optionalTags) { + MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { + "js-": new CStyleFoldMode(), + "css-": new CStyleFoldMode() + }); +}; +oop.inherits(FoldMode, MixedFoldMode); + +}); + +ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module){"use strict"; +var TokenIterator = require("../token_iterator").TokenIterator; +var commonAttributes = [ + "accesskey", + "class", + "contenteditable", + "contextmenu", + "dir", + "draggable", + "dropzone", + "hidden", + "id", + "inert", + "itemid", + "itemprop", + "itemref", + "itemscope", + "itemtype", + "lang", + "spellcheck", + "style", + "tabindex", + "title", + "translate" +]; +var eventAttributes = [ + "onabort", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextmenu", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onmousewheel", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onscroll", + "onseeked", + "onseeking", + "onselect", + "onshow", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "onvolumechange", + "onwaiting" +]; +var globalAttributes = commonAttributes.concat(eventAttributes); +var attributeMap = { + "a": { "href": 1, "target": { "_blank": 1, "top": 1 }, "ping": 1, "rel": { "nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1 }, "media": 1, "hreflang": 1, "type": 1 }, + "abbr": {}, + "address": {}, + "area": { "shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1 }, + "article": { "pubdate": 1 }, + "aside": {}, + "audio": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "b": {}, + "base": { "href": 1, "target": 1 }, + "bdi": {}, + "bdo": {}, + "blockquote": { "cite": 1 }, + "body": { "onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1 }, + "br": {}, + "button": { "autofocus": 1, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": { "button": 1, "submit": 1 } }, + "canvas": { "width": 1, "height": 1 }, + "caption": {}, + "cite": {}, + "code": {}, + "col": { "span": 1 }, + "colgroup": { "span": 1 }, + "command": { "type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1 }, + "data": {}, + "datalist": {}, + "dd": {}, + "del": { "cite": 1, "datetime": 1 }, + "details": { "open": 1 }, + "dfn": {}, + "dialog": { "open": 1 }, + "div": {}, + "dl": {}, + "dt": {}, + "em": {}, + "embed": { "src": 1, "height": 1, "width": 1, "type": 1 }, + "fieldset": { "disabled": 1, "form": 1, "name": 1 }, + "figcaption": {}, + "figure": {}, + "footer": {}, + "form": { "accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": { "multipart/form-data": 1, "application/x-www-form-urlencoded": 1 }, "method": { "get": 1, "post": 1 }, "name": 1, "novalidate": 1, "target": { "_blank": 1, "top": 1 } }, + "h1": {}, + "h2": {}, + "h3": {}, + "h4": {}, + "h5": {}, + "h6": {}, + "head": {}, + "header": {}, + "hr": {}, + "html": { "manifest": 1 }, + "i": {}, + "iframe": { "name": 1, "src": 1, "height": 1, "width": 1, "sandbox": { "allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1 }, "seamless": { "seamless": 1 } }, + "img": { "alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1 }, + "input": { + "type": { "text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1 }, + "accept": 1, "alt": 1, "autocomplete": { "on": 1, "off": 1 }, "autofocus": { "autofocus": 1 }, "checked": { "checked": 1 }, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": { "application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1 }, "formmethod": { "get": 1, "post": 1 }, "formnovalidate": { "formnovalidate": 1 }, "formtarget": { "_blank": 1, "_self": 1, "_parent": 1, "_top": 1 }, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": { "multiple": 1 }, "name": 1, "pattern": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1 + }, + "ins": { "cite": 1, "datetime": 1 }, + "kbd": {}, + "keygen": { "autofocus": 1, "challenge": { "challenge": 1 }, "disabled": { "disabled": 1 }, "form": 1, "keytype": { "rsa": 1, "dsa": 1, "ec": 1 }, "name": 1 }, + "label": { "form": 1, "for": 1 }, + "legend": {}, + "li": { "value": 1 }, + "link": { "href": 1, "hreflang": 1, "rel": { "stylesheet": 1, "icon": 1 }, "media": { "all": 1, "screen": 1, "print": 1 }, "type": { "text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1 }, "sizes": 1 }, + "main": {}, + "map": { "name": 1 }, + "mark": {}, + "math": {}, + "menu": { "type": 1, "label": 1 }, + "meta": { "http-equiv": { "content-type": 1 }, "name": { "description": 1, "keywords": 1 }, "content": { "text/html; charset=UTF-8": 1 }, "charset": 1 }, + "meter": { "value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1 }, + "nav": {}, + "noscript": { "href": 1 }, + "object": { "param": 1, "data": 1, "type": 1, "height": 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1 }, + "ol": { "start": 1, "reversed": 1 }, + "optgroup": { "disabled": 1, "label": 1 }, + "option": { "disabled": 1, "selected": 1, "label": 1, "value": 1 }, + "output": { "for": 1, "form": 1, "name": 1 }, + "p": {}, + "param": { "name": 1, "value": 1 }, + "pre": {}, + "progress": { "value": 1, "max": 1 }, + "q": { "cite": 1 }, + "rp": {}, + "rt": {}, + "ruby": {}, + "s": {}, + "samp": {}, + "script": { "charset": 1, "type": { "text/javascript": 1 }, "src": 1, "defer": 1, "async": 1 }, + "select": { "autofocus": 1, "disabled": 1, "form": 1, "multiple": { "multiple": 1 }, "name": 1, "size": 1, "readonly": { "readonly": 1 } }, + "small": {}, + "source": { "src": 1, "type": 1, "media": 1 }, + "span": {}, + "strong": {}, + "style": { "type": 1, "media": { "all": 1, "screen": 1, "print": 1 }, "scoped": 1 }, + "sub": {}, + "sup": {}, + "svg": {}, + "table": { "summary": 1 }, + "tbody": {}, + "td": { "headers": 1, "rowspan": 1, "colspan": 1 }, + "textarea": { "autofocus": { "autofocus": 1 }, "disabled": { "disabled": 1 }, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "rows": 1, "cols": 1, "wrap": { "on": 1, "off": 1, "hard": 1, "soft": 1 } }, + "tfoot": {}, + "th": { "headers": 1, "rowspan": 1, "colspan": 1, "scope": 1 }, + "thead": {}, + "time": { "datetime": 1 }, + "title": {}, + "tr": {}, + "track": { "kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1 }, + "section": {}, + "summary": {}, + "u": {}, + "ul": {}, + "var": {}, + "video": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "width": 1, "height": 1, "poster": 1, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "wbr": {} +}; +var elements = Object.keys(attributeMap); +function is(token, type) { + return token.type.lastIndexOf(type + ".xml") > -1; +} +function findTagName(session, pos) { + var iterator = new TokenIterator(session, pos.row, pos.column); + var token = iterator.getCurrentToken(); + while (token && !is(token, "tag-name")) { + token = iterator.stepBackward(); + } + if (token) + return token.value; +} +function findAttributeName(session, pos) { + var iterator = new TokenIterator(session, pos.row, pos.column); + var token = iterator.getCurrentToken(); + while (token && !is(token, "attribute-name")) { + token = iterator.stepBackward(); + } + if (token) + return token.value; +} +var HtmlCompletions = function () { +}; +(function () { + this.getCompletions = function (state, session, pos, prefix) { + var token = session.getTokenAt(pos.row, pos.column); + if (!token) + return []; + if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) + return this.getTagCompletions(state, session, pos, prefix); + if (is(token, "tag-whitespace") || is(token, "attribute-name")) + return this.getAttributeCompletions(state, session, pos, prefix); + if (is(token, "attribute-value")) + return this.getAttributeValueCompletions(state, session, pos, prefix); + var line = session.getLine(pos.row).substr(0, pos.column); + if (/&[a-z]*$/i.test(line)) + return this.getHTMLEntityCompletions(state, session, pos, prefix); + return []; + }; + this.getTagCompletions = function (state, session, pos, prefix) { + return elements.map(function (element) { + return { + value: element, + meta: "tag", + score: 1000000 + }; + }); + }; + this.getAttributeCompletions = function (state, session, pos, prefix) { + var tagName = findTagName(session, pos); + if (!tagName) + return []; + var attributes = globalAttributes; + if (tagName in attributeMap) { + attributes = attributes.concat(Object.keys(attributeMap[tagName])); + } + return attributes.map(function (attribute) { + return { + caption: attribute, + snippet: attribute + '="$0"', + meta: "attribute", + score: 1000000 + }; + }); + }; + this.getAttributeValueCompletions = function (state, session, pos, prefix) { + var tagName = findTagName(session, pos); + var attributeName = findAttributeName(session, pos); + if (!tagName) + return []; + var values = []; + if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { + values = Object.keys(attributeMap[tagName][attributeName]); + } + return values.map(function (value) { + return { + caption: value, + snippet: value, + meta: "attribute value", + score: 1000000 + }; + }); + }; + this.getHTMLEntityCompletions = function (state, session, pos, prefix) { + var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;']; + return values.map(function (value) { + return { + caption: value, + snippet: value, + meta: "html entity", + score: 1000000 + }; + }); + }; +}).call(HtmlCompletions.prototype); +exports.HtmlCompletions = HtmlCompletions; + +}); + +ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextMode = require("./text").Mode; +var JavaScriptMode = require("./javascript").Mode; +var CssMode = require("./css").Mode; +var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; +var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; +var HtmlFoldMode = require("./folding/html").FoldMode; +var HtmlCompletions = require("./html_completions").HtmlCompletions; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; +var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; +var Mode = function (options) { + this.fragmentContext = options && options.fragmentContext; + this.HighlightRules = HtmlHighlightRules; + this.$behaviour = new XmlBehaviour(); + this.$completer = new HtmlCompletions(); + this.createModeDelegates({ + "js-": JavaScriptMode, + "css-": CssMode + }); + this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); +}; +oop.inherits(Mode, TextMode); +(function () { + this.blockComment = { start: "" }; + this.voidElements = lang.arrayToMap(voidElements); + this.getNextLineIndent = function (state, line, tab) { + return this.$getIndent(line); + }; + this.checkOutdent = function (state, line, input) { + return false; + }; + this.getCompletions = function (state, session, pos, prefix) { + return this.$completer.getCompletions(state, session, pos, prefix); + }; + this.createWorker = function (session) { + if (this.constructor != Mode) + return; + var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker"); + worker.attachToDocument(session.getDocument()); + if (this.fragmentContext) + worker.call("setOptions", [{ context: this.fragmentContext }]); + worker.on("error", function (e) { + session.setAnnotations(e.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/html"; + this.snippetFileId = "ace/snippets/html"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +ace.define("ace/mode/handlebars_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules"], function(require, exports, module){/* global define */ +"use strict"; +var oop = require("../lib/oop"); +var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; +function pop2(currentState, stack) { + stack.splice(0, 3); + return stack.shift() || "start"; +} +var HandlebarsHighlightRules = function () { + HtmlHighlightRules.call(this); + var hbs = { + regex: "(?={{)", + push: "handlebars" + }; + for (var key in this.$rules) { + this.$rules[key].unshift(hbs); + } + this.$rules.handlebars = [{ + token: "comment.start", + regex: "{{!--", + push: [{ + token: "comment.end", + regex: "--}}", + next: pop2 + }, { + defaultToken: "comment" + }] + }, { + token: "comment.start", + regex: "{{!", + push: [{ + token: "comment.end", + regex: "}}", + next: pop2 + }, { + defaultToken: "comment" + }] + }, { + token: "support.function", + regex: "{{{", + push: [{ + token: "support.function", + regex: "}}}", + next: pop2 + }, { + token: "variable.parameter", + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*" + }] + }, { + token: "storage.type.start", + regex: "{{[#\\^/&]?", + push: [{ + token: "storage.type.end", + regex: "}}", + next: pop2 + }, { + token: "variable.parameter", + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*" + }] + }]; + this.normalizeRules(); +}; +oop.inherits(HandlebarsHighlightRules, HtmlHighlightRules); +exports.HandlebarsHighlightRules = HandlebarsHighlightRules; + +}); + +ace.define("ace/mode/behaviour/html",["require","exports","module","ace/lib/oop","ace/mode/behaviour/xml"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var XmlBehaviour = require("../behaviour/xml").XmlBehaviour; +var HtmlBehaviour = function () { + XmlBehaviour.call(this); +}; +oop.inherits(HtmlBehaviour, XmlBehaviour); +exports.HtmlBehaviour = HtmlBehaviour; + +}); + +ace.define("ace/mode/handlebars",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/handlebars_highlight_rules","ace/mode/behaviour/html","ace/mode/folding/html"], function(require, exports, module){/* global define */ +"use strict"; +var oop = require("../lib/oop"); +var HtmlMode = require("./html").Mode; +var HandlebarsHighlightRules = require("./handlebars_highlight_rules").HandlebarsHighlightRules; +var HtmlBehaviour = require("./behaviour/html").HtmlBehaviour; +var HtmlFoldMode = require("./folding/html").FoldMode; +var Mode = function () { + HtmlMode.call(this); + this.HighlightRules = HandlebarsHighlightRules; + this.$behaviour = new HtmlBehaviour(); +}; +oop.inherits(Mode, HtmlMode); +(function () { + this.blockComment = { start: "{{!--", end: "--}}" }; + this.$id = "ace/mode/handlebars"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/handlebars"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/e908b5e66faee5b948e984da2c1aaf9a.js.gz b/web/dist/e908b5e66faee5b948e984da2c1aaf9a.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..9573cd9c532ecac3d7ab038092e69de29a1f65fe GIT binary patch literal 21872 zcmV(4!zAv>N_RT4&Yccd>0Nf0ndoGB8jkbsldn$wv;%c_ z_B*mfuR9p%7Cp}J0b2V(HTDkMvhus3@dou`T;2D{_&KAaR;hx&)AKr)Uv=QWd=_Sd z`>FiSY4~3^%l$O(?sX2!H1%JeoQQa@)0IdczyJ(#f7;!trBG)j+pyl)bWEL6>_p8fqML9 zlz*sq!2$l*&%~=Z6LA*i;i=f`FmLI(pDM*oVKK@jV8F?scezHDP=a2X_SF0|0U*Xi{hl zS~#`o)03~hx&m_f%6Cb^-~3ZQ8>ivo)&yazZ2hC;WeeI2so4g)H)zK19Z2LbfOf)3 zDAIRGbKOI~|LIx(e~*stA0I6rKJ*{;kCqeoZ>T>6^=}U(dj1B3{GJB6MZ6~q{LK_O zW4RM?ah9aPYk#p2DP$(eKTd_8i@%$ndWI5!a-lzp#31tH=@KLdD1`2_H1#iv?~)`E zeq4MH<%^fH;o?;;QXhm&@n$(6iL`h-`b~`U;+>ejIA0X+VVL7-@l%?dUli{z=A$Gk zx}9y*2+sjpkgj7WYb$~78-Fgc1&~_te=%76`ua!w_hXpls_=_H|7w>Z5WfSw0SGUn z#LvHZ%urM0FMsC9t2lr37adetAoxEVg4*qBe-6tM7*<6v{69wUdF0O*B50`PMVbPF zUYz<7hoC``#wzv>FfC+I0Q@2z%jo+&SulPP)2i$Ese-Zh7jf>NbD<9)={fZCyH^~j z0ThTaFfn{DbO?B3k;Fi?1+*_e>X7jfI#Gn#%PHz-j{o6OiYd@c&m&nsuu}G6VK{Z#Lg>jIa6(A1i zlOdeDk|nw%*8$+-A{0?jgmaWp1?Y()gMWT@5swT1%nu!)jevnp3N#epPd=U%P*EPn zOHoKm1AZd`$O)1{M34(awjV_o#RNt|VWwVfI4Q!oNboNx4u#^S7Cy;NjpA-0vz zQs`NpUKH3<$O0`Dz_Z2KER3+{fU!V~meZ+l4EymhU>v36ad8Zia!DbPjeS7cGL`|V z19Bod;d8B$apY$ikj8RefbbJ>kQLbyq)5Sn9&s57H6-CF3X8>Z6oq5x8PM_s`5Kt} z1Y`@18AuBe6wv1!vKUlk4x44g=&@6MS4cHWP!1o|wkgNrWfTGPO^|pm3M9s5%qlgo zT3ar#Cj(tC6!jyK=B*73Ml2sOH(HIw#D~$BHq;IbuvQ7E)wGO0`%VC12v!qBRaLqH zvM^{u(nF09n2=ACFzA-G^N*_56_g@euy}_we%JPT6)c&dWUC(0BTC;LLFN=jwOs z^T3k`Xq@Q8$uXI4IM-QwzM+lWUKa#QpC?O|$%iyPvR>K5%IS$RGc(eZEiHwJqV~W30MV4i1)eoDAw1*678Nb_| zuGc#{8hAaepk=%%YxcnF?Y9uR0{U3%{_f|(eLL>lb=UA|;JVtbN+&fvi0J3m@ZXMa z8Bo1~dF_Ep1GVvahht+BZA7WN{<}l-mxs$ghP2m%MUBI%@&1C?VH^LRZGSPtdG{!E zp`Zq< zHzFMvlRl&ZTxxIZFi$i#FzTgwsLb3J^ERLP`6j0G;k9kl!6Zy^RiZm=F}4w6m_Y*t zfOJ0dQ=Ilrk|Ii`g`j1uJe&)d^5Oyl24BQM;b$4l%Qu<;SgWFq;FzqsKJwQTHLA;p zgJJLB9{lxo8^<54W~eB?*l1qYY67X&_n+?G8r9V;fyQS0{o-i*Xd7lym)~3!`}_L^ z{=c|~|KBgZ-QGVap5mW-#n)dKNASPm=wPonym$YqD zZ|BKic#G|uVzi~*qr=|itv8#lZg%Kh4L6!z&nt_r)ha*!>E7VM{YsTzIrN4i{njn% z279yIpUbxYV?%#IHuS-sX-0bocdzxYFO)aex-E+`TF+&GgBkn_CwY;aLEv=~z+VxG zEc-t6QQ!Fy2fX435iLBg7^g`TL8f1e?=IlyC!m0=_%Vz{<{cFOEIuUglf#E(QKaFC z@QM&3aq&rfNS-HgjypGj82M>2jd9D;D{!TL33(O;9stPl6ak8--U0ltSVUMH)vQ+t ztSF$$-(fflKjHph@%vI_`47SmMCui*5lwtiZVx)oqsD)__i5fRlcw-Q-6NvM- zlOp#4sW31|;9-VEUYzsZ=X0NWS1jj?LgfBGe2qa4>c_ar&`~$4;^W6o? zyaGsdT;P5f;RWOt&J9ilj48pG0C2*m0ak+~>w-1_&j~Q&6!QTEl6=b+AZi3lwKaqq zG7CwXNRZU`q{t!pBIVhqB!(fLWCF$7_lTQ|0*BywqD&We2{gnqihA5%jv~7^)a5yi zTala+3aKs;CBPyda3r6NVEP4c0G!W835rIMPC=f5C>RlV*g6h>io8^uLxnhIdEyu0 zlxQIW%7M0i34?qFU5JoI{PBtB;VH9y(C|0Vr~??SRa$i^br~==(79jC!<>{^jyjLX zCnqsA7s0Ds%nRK&Ohx(zf{a*(&U~!!`7DeA{E`(fft7%OQ0}YZ$koIOV`c@Qx>!&> zrKo;RngfMG@%^(8&)zek6#jzgjJQq=fYSM?S0$2i!q*xwe zkQtwoeG=8dmf%v^2>_iHXK6^qqF5@iAV38}LXFVLxe-HzvYffr{#wkLM$4h%kB$L@ zA)5+&SYI#_uzIqV=n&Bde@eg4@%RFUJTRqR1)h@#M$t083DK^x_(BAGkpa9v$^!&o zw^#xRhBrVBwf>MKQRh)KQ6iJ4SBL`rkWXJ*uz_3HM zi{e)lXg@02E#B*(M}`mr=aWpN!(Alqe}4DML*hmo7iHnAH^={Y_T$elif6xaz*FXx zKL$nj9>^t827){%QsihGql7DxlTav43EJ#?vB+m&Z6OQBY(xoSh-HeWV2Z_(h=J7^ zDr)#QN8A@)ENs537Xc~Y8P365Q{@Q|l*P*Ok6 zuolwhCXUGc$nUW|fso&ov zd7jKmjxACaM!)c}v>*KoK<@!aEo5!@r>%p38WCj#k%A>VBchW&Fz`V2h@#~PihzZR zV}(_nh6$hy7~7MkDos8T1g#*J_=${Qk8D!5T#E%7K_G2M0!@xnV)SqnMtD35M0S$u zhJbcXq>1?RyB~j!`DkEJ{De$fynX-5q6=xEMuO0z4NWpiU;6V9Y`$NJNT8Q<7RIR* z4N7{0Sbxs#y}-k5xp+?}LKUxOIZcA_upNpvS%h^^Z(jS-$k2F6CQSVY{|S(c6^ zlBO`?lbj}RF;3G^c9I2~OY=-x)df#Jn9qK~RTL0;M1fiHE07xzpT}hvNKmgsV9$R5 zAt7P2>Oq(SL1DBcb27H_RbxhXmfsEb+&9k;4fO&XLpS0r z!LT?wxcp}4>N*Du^~qpfziI=ecXV*Lw|@^>^9ma-glTwmP#pHW`yaO-91Mmx0tKdZ zAxw+gq}=XNamT$qJo?zOfk)Yn$I9kErUU1<$d&hRh0ZG13T<*&>h~MFpEUOH3P zYPZ&Yala*(Iy{jqy3RaK{Hy=McpNPQ(R8N1j&zOu&vEwt^Wb-@TioBed;H!Vg6kK6 znrXT1UeJH8Hf(UUVZ*)l?#>-;`QPfHkWD*v|BIVJIB;2&Amv2Qk$LS|pT0d@s+>Rc zgdGsre~9LqM5AT%`bNX%R+zq^czc?YtXr3DfY1R!<0|-zIB>c4xS7IsD$HB50@oU_ z|BTm025fPMR(s=kDW4!@2TeM?d(v-1rzkoqJcyGQ@BiYNzDUZetOEtwU>VaHnVt=j z>fYhy70jXsD2MTod_dDIoZs(x(kpHsn02TXHo{g6h>9shfv*ZQ5%4YQwgy<`OuuF4Du>r%sguVVd9w5OrJscZ5eMCMFeS@cBWoWK z?NrYQKWX#SqzR(Fidtiu$_gO^E(hC1%DexntQE-_kb5AnA=_5Ux7HbreW1FzH?>u; z`i+t5$fo zXaA|U26?ue%hxU8sb!p}Z)4?HZJjGtOl2CIuRG#tfZT#h zOUhOPRf&p{oUPcp@^9~d9gLyRq=jWoSEXkVfu|m5GqlBXAMK2Sz&TvQx18zqW9S(^ zNMbxf6osDzx8~Jd2R3>5YH%H>Z8_*-&-D0}`_p#_09Yud02}}*(jhzGivYzZxf|=7 zerN!VAN;B1C*?Y(BYAV9BP?t;(z5lly!Xf>J7X8^jK^SFJhH6`99&gwzw^jtq+u3n z8AsbTLcKMtNnK*6Qh2BH&|$!#CAmqhjw&eU;p5@<_LHxgjWKPqmfe5c-u?Yr_uEX` z!$-q@zu7>&r!pZ+>F~FJla}?{HH_aivt6w)Rj9kV9+8k z2@I`WvT#8n0~??Kg(7`C_&PYBM-3Je9oOF@vd-|XNbli}BzA8DE3E=1wo8|`)@ye; z!n-<+tqz}j<*?9|B>r~y05PGZ#J06oB(*X~g7VCF<+C#JaeiXXWX<_0={wCKELUtn z^S4a8;=HUucxg1aj$vIll^qbFir6<6MKlOIW)gr|#xIRc3Vj=>YvS~>Vd5`ocIX77 zL@Wa2R;x||Mk*OcN#-IGeUjqfY2}Msf-gbljrj=d`xUDIC?d?P$UH119uB?h%%kPx zd@1B~yiwj6GLKqwh`n~fbBBU&p_u>iHN~29H32&but-{d(llj1yp$q@Dj=fSF(kxN zSVCaMR9*9NC7**s$_)ZrKp1-iZhDp%QxkOHIPg`$CYdLRS&694Cj>?l0%S&%wQ$V- z8dfgOG>QG_5GtKqZ>iDVBv`fdQG&`m(OmCVC7nzGJV?rec#Jh2|K4@3lhi2baxFN_ zw#~(WDm|?yE?0<6CkPd;8Qwl#x4K*F;Pq}0i;aJAh^=VECS9gsY1U&+3vgxG7J7#{ z9CH;}cgoysWSTk`gaQ86-(|-tI?G$@g~$pu2O* z=y|S5C9NMl`KpqNg&!PU$x{n#ULyxr=$7=3s4>!DriIEj|?7^c;Kl1u`M z%bMo+ort`5iJjZSKRdGGJ=K6?<<6**mhZ~=0BS({9+9v{AHrB-niUeDkT2HtOoUeJ z_Y8nApIQ-%#Tk=tkGk=2$Lvn0-+AQi$Oat)U$$K%N6(tvQa7xTgn``kz~tAJUU|G& z>0**W={mK1N}_?AT*<9cW0FL8M{IYT;mw=f*wgIUk*?`SB8o2Jy!O)*dZmFV zl3q{fHDnrObd6Wj@a|D@_^}v1IJm#N)9I2=Y_nNjH1VoCAiCaUvAS)QXVa!d9C&)^ zy}IhH5V>QGjMuCHocP-99UfgC9Uk?D-r>iitE1tOH+%p(9$omMVdm{V`KqS6~*{N|3G`YK(&rc&+Y< z-f-wQ>9&H}>Mo6G2`pQKYgtqcQl$bWTUU;qu230Ld~&D0r=_f{M&cp>&{iqUs!DHE z6%zAdWyul2Naes82$%T5!8NR#5X3Xr_fQ#rJ7D3|;pQ5VeJC^tGa76fMz3k1xS1%d zj!R(GNJ@_=45jY1J$h@L_|g=L+k;&&q`F>f^LXU{$?CnPl&yz)9=pwb+}xZ4?TmmR z5?SpRP%Y^?|-FapJDSb%|5fvzjh<@Ss~2%@sjq5{g?&T~`ZXMv_9>mZxFK z1iFR;6X*S|EAu;?v|yW#Z_m{y{v_l+H9)@CyJs}-hKDMMfFfpy`YKxr)s`cD^D*k)gjE5qjwddQc-Fp ziI8M)i5G%GR@AuvF2BnyPD1g%CWa<~=YV>JEYt0*6uTug=`uh;1B-apY0xD8eTDy< z^rv#j!AaFuRSTt@iz}S&nC!G8>)EMME~k6yh_BPmsap(gAyQfo6;a|~Y|Ra5q>;skM2@7%xM-q5a(jdHd~#i?#(xm19PW3 zqP|o&bDbx2C};J+4S_*lR*ICXHH0x%C%-&xWd2Pl+Rzg&J*XCk)EwDb5L)Yb(3`xA zY{uIj99_K!Z(x?-I-b)2e5Z!WhN(7!-k_3S zRzlWu^OBq~($#gj+5()lP_)5*O1YSuX!Ii6y3p4%Pj%iO8J))xl`dMDWp5NXl-=sQ z>r^POjVV%WSr;=F0B9DAul?=rn$O^kjAaizc*Rl(4-Gx&k`#jAgWayZy8Zhy;gd?2 zxK}MVth-xXc_yIyFAV*wTh+900AN%aj+JqFbd+^$?vJWEwsC2{qFv~$D{jbzpG5E@ zt1Q+02bm57pwt&7WpbOSdYwqug*~+@<fF-pcw0l~+fdaGi$|4(;@Q z=h2YdxziC@wZGV)Q5Zu_Gg5s*R4xz6!%Z@+Jf7^BKsxuE24r@OaHsQVG#IhF#;aj|-DB{w3VVY#nv$u?q&S78sl zqX(N|#hiyX9fQ-D>vq<<++`Ga(CMzmwS%-wmTug3wYa&q`)V#CDA{V&Wo_H8zpE-+ zb#1QNZ5b7mTd|Jrk*i+TaIPsqRYsj9#%77B7<-3kr=U&ZG?%y>%FR+4aq+G>fu|Ha zwd0Rx9}?w3wPzUQI?bz>13Ree$8mx<>h2hwNks-z$*f9as@hEC&$t*~s!+KH0Xjl` z;=GSxG>9I`!?@aFQ&VH~d2cq>(14^LZpX3r8V0E5T&AwMT@r_jg~(sR%;%NPFB3Dn zjNX8)+Shu+l}!$|L0XLNahBC>A8UUE}siY8i=n2rM)0>-WG%{`dr+#_pe%9#}`( zwWSg4vuGd>%SP%b!mA7fqLB&){KAT}%g{0*L|2(+LXw8lFg8;b37&6CtTcJG%}Aj) z1V#yZ_>@2W5jzUCVhRE)EfSNwpZY<#%qm|}BoOx}GPWyeXXGqYra?=QzsQ6UFI$%V zHX?mc8|aPPN>lwb)9C6)C5hc?TWJ<7*h4dH14AiRe<;PO!NvjM#fsQ9a*|agCs}pk zVP^CWtfFT2JXsh)yLL=)j2R}o1`N}yb=!cbh@_YEem3*bRWb#`PYC0fUC%=lD4bMC zLB!2~@o^o=h%$matHM)%p@Jxb%y8eTfl?S)Glc<^DS)l>4wfY;Izd0U6q=?gl+99n zeu2VgDfEAW&zlqz0FnOmC+vrr!o}8?tGdqEb1}LZ zN2zAqTq$P!2`daI7g}x;M?@me4LU@7urKpRVWyfZgOY8H1TCD5G*sKgoSYWRA0>)p zjM|oA<|G+GqM!Tc3I+`F0AuJ=f;B)c^)*z(k0JUR`=@=N+n55h4@V(t4+Gp7hL(#W z!Cr%uXPF7ohg>epUrCiJ#`nE+l<}fs3`BA&QlbMD=%1Iti(=uElXCT|FruOaqKYt> zDuzf|phTm!(!M`Isx%Tt{D_2+62`=(3z23EL9Z;CVWnd9(D5<@-dsj1&uh z9}#E7R7mx|Oppy?oH0@crNLq*DC@*XQBj9fO&wSSr?HEEvJ) z6u<|?IYSK_reoBEzX4ANBALRl&HyRnD2Y)CCzKC_`s3 zexON;IO)qbV=!beIz$6dHu#ID*2+{lQ;JbCu)hoVK@E)^2p~*4AwE-WC8G#mXDN(Y z@0Nkx~RS8rT`%1P}%q00e+>fv6?FCoX^IG*F&7&ey5ve^gjmu1+R~zURPZu+MN3xG{ zw+xcl1(gJPg4rhfeF;p(4rA~yDxi#B!s+8P99a(Jh;o7gDwn`2rH#((J4Ln}!9N_w zOhe0dlxkJR@JTNjl=CF$<-$smkx7!|M62cZ8NDlKB_VbyaSj#vs1K@~jkZ$zQruLD zoWP2VEh~bZ>?*XT@Cm7WhVQMxUugodAR>>wOfO4(&r-4&hncN7%xpzrVkItu z@PSh34@_LJ%l@Y&SrQ?d6=8;qH3Dir!N2hs)TbZK6I@1$=*v=^hDn5r9VyOMMqp-L zoFxg`2!Y5c6Y77UswFD&Spu{`FP$c28YF2vA-TjkA)1BJ3Fz-|o}ndi0SFH8FeHA) zfKHjB=@O^V62($5Z8;!BtU{c0GV@PD3gMIwR1}4QSx!ZnJE7y5GB^fhN5NF^Z$_Qw zpzzC58TLiPMllVEj7cE!WeTDx%s8jSSpZsLfm3S?WG5F~Q#j{3@E1!bK+cSx3Cz_; zDbg$;4e-Y!h%}$&4Af*fo@Jq5Ou;V7z^qG(=`6`|&WI>0O1x1kT#Wu+2$Zk|H97;~ zdl8`SPjZ3~ND&MN#0Q3^NfDmnD{hS2$UhaxGdcj!;!COiSOdZfsLZSZnG5=( zDvbp$4KQ5+3nkDl>r8{EIDzWopd>MlESBjaQeQNIfIkX*t)*oN%L z!jD8rSQH}=F;oJGu@XEm5Bv)s8UR6zObAffh9U+l4P+0_9u$$3$S*0SB$5ma zk-{90l3+mYf`S36#*L#Kbrxs}nBkSEkOJUrhV}v@o+bZ0IT3}VHU6Q>-J<^`7~EO2 z=vSY+xV{$Ad~69kJ5J^}^GcQ}&WUgV5eIn!1^f&I0(#Ix0WT*DX#Jn!1Qu-gIp`%Y zT$kf80AyXvVfqL^`0yljc?Nwfa^Q>%l&KhjAc79UymkR~09FGugU`f>pGt<&$ogPg zg_DB+LX!!pJ=s&3CA>3tZdAN`bksj!FNJ)kA5Rq=4LFPsu32$U)&`TvWsu0{;7p9w zKA0Sd#}j%vwFc1(Hn^PC$q2D_@=30KkO`(j~Wb9HyT@N9MDo?yRtcc6VgbVSKI>fW)M4lhSv)zF!-&txsnK<++JI&SraTD8stK1g$$;S^8IX_g443*96!*z^Ss8;P{93& z(srlIt7f$G3jj^f*>YAW38%NFjlJCozjew^48Ff%`erbzG{qIt_KW zR##xTD;hRqR;giU=k?=wJ+S&u!n~MgXe}3s*Kc{omW-A=dm86(@5%5Bl_|F^gby96 ztdt_d7BPaJH+Z^5&hE#vVmvPbF@+gOfd@#^VoHlgLGi;Um{Sxd@H3y|@Gi#1A}@$luDW;J!Z#bVaA@)X z4sn~4OrCT01CBD3kWmL}(`o8gw*Xnu#qYUy)4YRYanvuo6G&9`+dSD8omcbjvq zeDdqA322QM%~w!M&86&}QOoCfqV+%2vX;1!Xj(B_+5D;WquwF=ygdqrmydS-a#b9D z)CpeYW!7Qsmdxs>M`~-g4R4O96>!&DZ!K-*{TQ%~7m=X*KP&FWT=#m5Iui*-fnGN4 zmKPRa`f~}^+x>?Sc%&S^cB@w%yppt-rBwYaLa4T%;!)z zw+>?y>d1;6y^v9T_D06#z&5p_PTg`leAEKMk8!?2CjeyxPdmvVoqv(x9Ha?{%61;R z+9_|Ta7%nZW*wyAu?j9j#{y*$d2Fz8w4!jKx}=Up%96(MA)_vN^suQuKBIf{8mXwn z0G{;eXj0;1jYgaf7MAfEX&Sd!8i?1p#$hxm$BWxj5o%0F@GPT@@QFeh;p2n#0jC(R zAv`7$j8zFf!=(u)m~tzQUeF;?HO@MQJy%DkDxH&*3i%fb?P4wi|7GQ+>mi&~lJO&h zj4_M{W;OrBc1upiPp6|E#2)Uz|7;HCyBwTfsuD#ed`wNo=8V=yYLAD5czj3(@xZ1k zDUYow5anSb6%}^863wddO7zT*SE8{Q*PWF2Q@EE3V~9sQuc-wO?yXvpzWKd8b7oa- zTzQd1J4?jk_*f@EPu_OA39CyXu|yAk;gr-|Ms(_{Pt4l(yVE zZ^W6MB4dB$9d{Xft#`yZj#c;H<7T-^5Yt3-etspRA7}?&MQ|S;8|u8nLux8j?aP-S z{)2bs>-{Wc=PDjCuI(r(7X=!JXf!x#FC`0~pk0w)F7qm?QJIhk^>Ik6)XacqRR`qw zua(ohWmJWx%vPQ;ZpmZaGOF=FV$v$2Q#1njqSShLH*Z*NRAT+1E$?k@lz$UtQl76~KR;cO zSu?x7P_};l4XRi7lsLE6=a^9*WtB0!%%X@@n`*Uc$OyfaiY{(gk+i|q!-8>@ZLbB~&W*h1PmY&G)nf&UcV2Ac! za#k<8sttz1yferp%(_*l%Ix<2znW0jC(BijjT;}@4hrLwdZl!auGL)8b1sa?`zZB# z^i@G=FYB9JrnJV@X;YpX@tRSzHY3@&-bw@jBYL|a^Yz%bwz%*s_Em&M$2OWk}51$^)IRi2Elw3R! zXJ(Q;@HeYL!gjq%a9L5F1btpE?bVKfwmt4s7WR^n^ z-C4$dyE`h6JcKGYPJ3J9EpI@1Z1-7!7<|AI{cVRaSJLFx3nvK4g!3GR!_K|^{mvGz zE^oPgle_(*Du{9G72kC(-`+TU*8kt(?$mU;bl&JCn7t`&^|w0Po%2DS{D?Z@Ilffj zaA2+kI{=aX)+?&I1xd$ls%T4lJu?jqm@N4*RA z+>v@I_#yRmz?b=)?!AA)(?osdXBfgztK9=Qj^35e&lqP{<=g15Id$#p6^5l5_ zcGBDGZQ+B<)n^B;Y7On~9e#W=ti0XjXcQlSIXmhPw>>DZ*9yPmB?(2p|G=|u=0LWQ z%*q$NFV}5$%@%j`KzVEX^E(_mS;W!ux~u}JC*k6~n1{GXYI(-9J|JCMaiH_c18c?> zO-Or4Z%4n0aXvT^7g^7c7j=hlWvRj3Ul{5{m1^*u={nCrw_*3Re5&umNmp@Y7NFd% zz0UoIC`NmBCl5MXTb;em){`yAgM|31^B%42QZWNjxe@11<@TV zt7ua_sqm2B^hk&*9RgT3)tl@>6_VSO}_g|9U>BDwz=h}vM?XEYdI@E6S%H8gZ zo6bMHlKrZ~R_V7lu<~o;-)y?U(3ks&y$TfOZ6`kndbAHmM-g$WF_q^MYr@Ru3t$}) zgaC&j+;ZcQUu}}pbL(hm0&l`_a&S6lpC-&}c>Dqp{m) zNf+p|+cS*gCcJpwO}n@E=|`dpTnu}a^;1) z>+)Krra^b5v7dY{jeQ->bGuq+?cr_}$L*SCwGh5~vLOlF^q&h32)5l%&CAGU3E72wqB}oy5Ya2 zC#q^km>XxLU+mLWu5;YhWHEC%?spvY{=#3Wsw^#3dT5TJH>j>VIOensk6g*pf7tU@ zj&Z5IhjN2=tuptcR`(_Pgpt#+74jJ#z^c^V9aGgeeE{n-zh#we{D@WUfvV5`=v2$g zQAd~6H=-I}LTY#$>OU_O-PXRQ)l<#2m5SHc@%n7rYB+h(mk0G7Uqg!|k=?{4Q=$4;0`gI<)xJc92^h{rAxj%h}*8p*d4v+WvzWUMm z_+kHOIf4I%hyCNdfxgCWetFPs_Z=pc-=Rf?m(^RSW2Er`j3B<4EpI4)dvtW~=;-kI z_s>2&gJ1X}@0n8Ot~ySn>s-s>0BC$@a>=tfZcjPAsC{a4f&suCc;pI0;|{%Hlt2O{ zkCE5F5H;$pUj1*tid2$v1*ndee&4``RHz%^11jt<1kN>))f5^WsVgvW&+C2v_W6f@ z{`A7@9qb<-9c4oU1F|AWSi_q^6%*yHV8Cy;8B@p`xB}IOY~&}rimlyMg_{a?+kgU1 zB~lTCE~)3L-14PHux`W1F!1W8lh(_9`H0oH>Kq~Ux*wd8ur&Dbc1eYIW z?X7nAH*tB>ExlfERLph3dTn<>$PU=E6&(RN@N_fpKE~in7O9IzXV=>ZQg*eO)}1`B zI`OpRTKS&os(S45pdPex*c)!Q6t_ij-pA!CksDR9q-QS%UC41PbGW&u%+Sg)ng`p) zG26Z-rIh_x(Z;ZuP-?yt)^?!-^Pu!(xiDz8WYOxU)$-h-(XQ`eg4fB`aPU$^eS=zP zR&8y=Q^U_nfS%sSGm0Bz7q2$^cpww!T2|B1(GdQ>0YjI(VGqbgCD7gSM`(9gz@Og1 zJp{q?wi~!snk>!zQ}z#TE!hqA`)hQ~?Z2)?32SwJEvFg-U3>-q1D3x26T6;%LY}C< z{?j=|*~^AbH2g)Ouj)R2Xx1U9c#m(b1Em`09n?RdLm+r{AY z_rSqRwFZW519e=QC(Ycf&FnI>Tj01@bL|GMQ#s4gbsTrK^FfQ-t`!4jR&Q2k>Y3(Y zcRCcR%DIMtT*LoVYp2`1PhF$aSl!)sx*|83udY4Wy6cJ6ozAIj?%k-UhU=IQ@vg=( zXIzKTHd8=1W;|zen=_(~o8#u?fmLMeg6CFvc_X~uoVQ!?x<0S}!FaX2oY9UKU)Yih zH3=V?sV%sA_9l$eGg{OBqL`0F@WG$fS8l7m)6_*7VC4F~4=u!!C9sU?Ny=X3O4;>{ zDQVcCP19;Gm9t7crNlD5gMHA(#na-xS2c;6%%KfTp<6J67^euT(;gZ+_eczkAIgs6 z<9S`Yd)U0N)6$vSv*+qaN@CiU-|JNFfzVkoJYo4>Zq4QX_@wFJAAKBT3w$!J_t0xS z^+(vD{y2{QnPyo9p~MKxF-?@e@g$+u{$H22ZTj9_m%vLRH)&*JId07P8=ibmIHlKA2qb5pMxQKM^b=A^ZcMWIxt!x`&3}@9F91Hu+KlS-J$hKUr zUCle&iNqc_a!|*-+ds_pH^9Jq!a!S)55GmF4vv+-C%-r<0+%Pk21K<(@Zy*JYHj=e?4Sv>04XADc$M8;O=qnamt>a&5 zUYl%GPqWjL%y_tvge6+T!&c+4!A|Sam3M5B&J2Fr?HmB|I>cK+zl%;Cy0#tHh*#YJ z)yeQdWz+=6a9lix)#or*TMfYjuUF;YmN(syVX}NVnY4}#XW9FsrxB)^UcZuIO<7%D zzPn%*;E9#4Jb~O;7SHQ7Y4qM@=eG>tBkv9X03N)P6KZs5CL5rFs)fcGdtJ$_GiA3d z)p`{>j)j2IQg!OJdg7W_&}qbO=L&k|x^=~z{ladY-@?^#hmBh?bG6V5Gd|+HL+%@t z+*9+~`sF{%`3#+SMyY~h<#nER`j3E$lv%pQ?RCEFM(Xf5AZ?i4$!#ZGjzh;7D%#z0 zdI2H`P_#p~`ZcC?ZmX8pqTZ`3L;S&W+;7qqqBARy{pJnUdkkeIjrvhu+Ja_&N&SUJ zboPRu#_e7ACKMxJyKHislUCk}B8j#Bm8gI7D}`Uqm0Qi*tA{%7 zmE#RS=ty}9eAne-%tZ`5Vd~Pg`JT~+SuF|9r(4uvvli!J$Tg}u*z#^FnAVdRz`GHb*W)iBrH9X&~e?@<->-k)`6r}2sekJ|!D$%BT;v}CnuIM*k&tFXi zc&`X25%kXOofs!iot`R`yJt&1R?P~={-k#O8hE@P265-2? zZig8a+UR^+Y0Ya{0$Hy{V1!DQEsHQXb^qW}tS^()MQvuoWmyoLVOGYSxNceSa`%mz zS%(AK9D`Uc5S~is2M+&%ntMSI&`xEQhrNxgo_kI%ys=edU8ZGXlZ#$WW1L@OY{}#P zW+>KN^Da4S;TQPYYm$a*Gn7ItAJ|#Z(YHGK*@(~JNqVUH~12wUhi94px#hf zp?Wj7RPqmNN~6;^(c*GqgnAWUJW#LdRy`l9RxGE=Ya*c0l9Y3mr?@0a7pAs#zqZ|n z;oHs0t0!xj4SdD=ZmfpxQQW;N7cFber@u(2ShPkJ%Jr$PUjGG5;fhNCQKNtHifGz> z+TBd0NeQ|V9BG>DH$rnQ>FV}YC+EGb?&sF2OYRM~$rL>!*i?{STbY!`qYKqie727J zW=L=fFC6K6wN%;^TGxCrc#e{u<-JCpY4B*af{Wem)l67kt?6B(CIVvZ3q@D5ZS}|> zy=PUiu0f_Fni=;=VtXxnlq(%68Y%#!CV;4XWTl!DjNr8v~}Z1xd58e<3!ioI8v41?=hy_?dA}e zHqHKwxc#atBO|}Un2}Uk7V?NN`}_fe4Fj3A_hRJ0mpjUs>D)pVM4=*s^)XfL?^qpb z@h^n(r3Ntj;Hla=>eUZ??BU*ixmx{I<)|iY+tBafLt|H4KQMA4$YZ(HshZy$^{j-} zB2bDo^+T`q1p-y$Aru(4c-)DXQRHwilBXALbQqQ(QUtkSsyV?Sr$JoY!mh+<&Cf}X zG9OSG6wx?fzu?=ld9SfGIzQlarBjx6d97)KTY+QYz?|dKDP2@v=w8Wd!9`Kj0ZSFM z>Yoy6t#H%I4CYu9W2=xwt9P4Xta+rHkXBtgrqa0Fw!z@rq`!9icieVOUKu1+Z-5s| zn_8(I=T$PyI>ft%?z!HP1zME;#Y!%Q${W1nCG)%1SEl*ABhP;N(Tf-l&S*(( z0^mLjY1!uc9VpX)s4;q;vt`{=o@5=KjMH+8`AHdCKj_Nx-Fbu+ig+Oszp4b ziq?fZ327As#y?2efceCMembYA+TcjJ1-QBumBfetn!E(s1Lmfu3K7w&y>!P=U$-~Z zBM#&4xA*!Di~E$v-3=3FNB7Kb)MGPz{tI*L>U7jH*)2 zYL9m1cb{%OX)NBb*|g3&iK!d>>B`6NHtXIsyR{xXb*^b2r8OtOH9_Afqe#xPz$ZBB z8^s$-E-exseg>hnK5^ry>#cUPuk}aEobQ}gsHU=;*s`IkAjhTVVaqmdlM#H=(?O9%fFD=@-ot8DYc}8W(^G?i!mzLrW zQpPDtwo}#VQ~E$G{z3CwS)%fxwwG2S(Xnj2nMqn3M>>qG(PfmD$JG!>mmMQ1yaweh zOu6~4)Xi3V<&ts3eEu`MIZ&UJzebSUb8UvUI?w)f9=WsAys478&6R$G3;mnTF_EulEwqCPXgE(*L9mKY) zBkSB7!D&kpKhxK(v~vdl5yd@2QYd3l*Bqd3xfc(m5haf4#h&dedt1m=Ef(8;p>}bJQWi&nvIi%Fca8;FUR?M zJBPD{h$8Y|uT%KtO8LONKcZ~{9S?KkBR=~cp`-GzhKyQq3J7vx7HE2ul>JHKQM63U z*w~N9BC_I($iJv1w3^BE??FlBz(Q=9(jC7lgm_Oi6b1wUjulPQ#As)djF(v%rK{;? z6pWkDC=DDCBxkXeut-IgSt&~c&M5H%J0=2h?p;a4`-}DT3JT^4@VpHGCCw8Po0OC+ ztL1D2Q<4cNC7jKKNo@;%X;O(zc^C_0WAK6VrZz5Mh-xI13i5`lqS-i2BBRMnh!b5byb4mwal@f_bTi!wY)xU%3c>PrK|-#bqV4R1=k*)DF9iMf;q*>$0HC@C+Y)m z1cdOaba#QEadHY{NSWgVY?cV{!|8qmj7aY%$oMj!0W)x9lq4s(L@1*(5iMj850(Pj zWekr>s9-{8ol~LeK(93djOa3YDubEuQ=N_na}?Nf&>FsK6N-}vmf27;b3Tcg(Fj|* z)bSu7dNY$?Ue0~bX8uCKJWi4{$c$Fp4FZ0u7=Kg&kx~1|#&;diG!Ms-U_chjQ6O<% zX2`-oSa2_cFp+?#<8pkG(Q-1;_{9WbLds~w7?)8(^l+&|oQ%R9m@MN@Mof+X5MaRH zR8UeBbQYzTZcO7tiYi3~vFx1g-pK6Q$j?MGNtZYo1))_eNUSJ6IYbw6WH-VJO3`Hp ze*%>{0YYD-VXTG_)T)44y>O*1W7$hiocY;Ia=uEM1CjYgJef@JV3dw8k_BzH>x5JU zi4n=dPvy4^%q_FBWo+avVJZ7%kv#icDTjph7Z(r0jIMw3S0l#5iGEOIP7Ly)QzJpd zV@1d^1qOPS1V%!fkUlKCiisAl(D6nN@(Fs2LoSUDkW^sdY!eSyG^f5K*0V6kXIdiR zjUWp*^1*f!L6R=YcoJ0NQZ{A_Kej7NBJ!5d_<26}V~Jb?QRKQthQqP$nu&hoK{O`*CzD$cGNI5<=Sf!2hquM-QSApD|a z+LSjuwem(*%z{Ogaz9wNOp@@P^Da8u14N6z^XcU|}s0LD(sYNH~ z+()E#3e|eav!O-a2Pu(en({4vqB~>qWhj|cvKI;3C=VB)CU&vbz9CKh1-hIg({}f~ ze|C1(ryR>Pf(nwr;AhR9P+!S_izLf+7K0mWth?H%&^VhtGVw5bY{kB@Vt=+`|Bn^> zixm@oP>tL8p4l;6=waOXaX1l~EeR~u5l&L>_@#w{HRvn@CLAT_a+uL{>Ss_vKS{%B zs0WwQ0ZskbKMkk8IqvicM=Y~a*l9{?Qe25P#fM>}aBqoyo&rb+=d29BVKEqK zd(=C8kClgHprt+@pa<zEWBr7>Ab1H3TdkOjzqS=Ai-%JB1q_mb8# z8BRu)xIPgVQ_*0Df?kXeiONzpqMK4LG*c34nkj+{bV!VABcMT6mf2;MA?#d&R;-M^ zMIjf`7%TIJL~)mGlSn=JrscwHCQ4B!twU?x%X&r)<2V&s%Idia<+p`2JuGMl(A|Y@ zpX0wRgq<)ACl(21R>$VdyO(8rVXIFgCoK^eIf>fJI4&VJ+Q?-!B3J7idA`6K*=$Ja z#pJ$W@@X)TS_JFTQlLqUX?qu{Eu5$4Lf)D0Q$(w$~CSKbZFhrEW z544gW+EWibN229NMc1bS5LL;z$c;Hu#SE{HdZG>QT4v?p!7;0<^I@{gr4^(3d4<`( zFmbOCdg-38mWAvofnMLN69$umF8F)H8bxY>ky_KEbUC^(dMt(mrjtn zlxIcGdXXn66HErG<6bU~ln$qM1LnWByp0A}3)S)D6OPY}h2GG?h0e zDy%-Pu85Rmr<0ae#A3x$--7Nm48$L_n(baOl=BYV^c}2upUH(Aoo6 zjPbVf)XFjQ(9XK92P!^8S^3cBuBCG74mi@lN-HK>0o=e7Rx3Q31#S%03hzlx?fwHZ zZ{B!|#{)?ho^(|s{nWTAWS8D<96q?e8}dyI@_En-`41mn|M-GD;BO9fh4?DxT5a06 z4#&v)mG&9H^v_^VncQ$>)#X-<-ZYcN>b?Iqs$JuVV&YY_^M|@YR82MkTAB+epH9Us?o0Dj4?u1m`$!E8PA#{lz_t)0%6Uk0Cz!*tAvMo52s z5rtDu6Dss;k9MNLt%TyhjFZeeO~V0@*+r ze72lNoTdUJ^yf>V?_i8LNe9x?k)Lu9?3RmL@ z%n=SH68v$pxZptQr`+&(xsbm&IiTS8{&Xt%YhVPQr7BGY1lRh#h-8O?G8FprOoniN zPQe%D@QE_`LPIQc=tVhv!U*E4Ffx=e*dmsJ7mF;667GO7!?@PZIV5Nb`!7EHAmcNR zt05C*AmyPG=V8X!p2W$714-)3A)BQB_|fAs_-7sbMh7#_`d5EG=hmlXh&wms24)J) zGlk}v@Y6h#!6*v3zpqLJhGp=T#$Z^6#QB(8e^sI~G=jKe!=V`TgA6e=uM&x@PzQbo zuH}zmCUd`12n$u<@BU)J`A>A{M}IyFI2f5hNt=<+wP!lSdFTF^%g+NpV^WxhV>$BkFbEQvFN~Kw46m1*z(4p3 z0{0~zNn(t3O)*0mGjGPSD)^PC!xO_4cvA|IxD39LP4Lg#a-fqk_*Rc}qC;=BbWF5# zd|M8AVgzvl!r$j&%Kb=m=q+I)mZ?T~5lLJ~+$U);Q2|Ez+bmK@NXp>bvTunMoC~h+ ztszrnUl0XGy z1DUK!{^IFS3g8)(u?$ICPBpcqik7v&O*Jj2nwC@H%OojM(~_#+&14?+8!>*~1nCQ`xj^TSNZ?A#71wGIY~(gPoUc>C^+OiWVlbxCL?o#ilW zoc43cN=qZC25zYa?q|(iOC9>TWTd4Ll$5&!T4A#P+0aN!BmA?@ssd*sR3!Z?6WTfd z{Ii7Z!U#&8{ZCc?LIwU;Vd|3(oc$($V+ahNe7SZk?x1)0)xX=YVb!(I%HpDR`_p_@ z%C>GRDJ$>e-O^*HbUM!Yx@qM}R5R*+e6{hxtEL;SZ5Isb+gXyHh*bU@kE0MzK>U%f zsNypg_3NdCLvK)CEG^$ct7kS4Y!-Q*Wv+XxnU%@;7@3jZIWFG7^<0_bJu9OkdjP$G z?XgmU((E@&k8$yR(m?8uuP zJ9I^XcR;&4>R>mWiz3I@bNOlpU98gw$9CjlD!H}Bzwr_;WOjGd35^}S$G@X?Ja>4b zP2Rw&yYM>1(_1@q^n8bo$75yqC#8gx!ur(8jy{sIW1Rorq5bq7+V_!D=RBI=|M_d8LEHkwK2~>a?c2p6L_qzB-Mna#je%$}AuK zh3>)}5^T=gdRSK8wYGV-e#=@iXx%Zoq<7Up1&qFnUGpoo!%q=|!uKyeB={C_)q$Gh z-ZtOaR`RFC5h>j%l5Pyhg&Cc9!q>&`_3^Dm5eE?I_n&sHb(ac1R3UV@j8n@sZvZCT zpwRx7YwI*<`=h6akz-B2#W}MH9-S3_yUg30Ack}_((H5Nb~Yv|Bw49=jZKuR8nv>- za`^zM`ID`_lzDHTSlhLpYA>dqsWy;iO%d5UMD>fBwxXiB1d0*PZn}lyZ}>ipKc0O^ zzE8$WBp1^Om`;MpjZYM@P-KuT=s}!^JDqPNK}ced zpJ(AD=l80#Lp^!mK@Y%6hf( z@^*gHOVs`T)m1|le$yE##PPIsgF85RBJP6?NBxa*<9+g4T^nNPZt?TQVkcWJP|OSz zA2lNA@;V4wQF|Rrw}~bN1aN1Fr(y>*g%PFalO`|@`8oCD`@=*1usTE@Toc25yPVGo zwiDsupN@_`?tVQyxE8L>c0Myjer8k;4TE5fN7Ea$$Byeoc4LvNS?M%=TJs(Cn|MgG z*Ea6b;aTJQ%DM|I?XQiSWh@2ldh_0Rp~Ng#S&}pxwBl>pcsH@>tayvn*h~)%>x`e> zHmt9S$+a+J9juu(%wo-G@CMB+hkhx-l0L-SgZ)r(%^ z5{iQ4I!h?h4Ag5VpaI&aUL|8(XG&ES;2PdulM`TMPc>GDPB=_vn78>7HlC_s7U>uV vo{Ym%68h>_$yO^~aN=A8T}Nl$?48*Cj?|Uw;W)4QGS~kPwsMt;B$xpJvU!-! literal 0 HcmV?d00001 diff --git a/web/dist/e956ee932ed766d1e40c10a39bf62e58.js b/web/dist/e956ee932ed766d1e40c10a39bf62e58.js new file mode 100644 index 00000000..f2ca4bb0 --- /dev/null +++ b/web/dist/e956ee932ed766d1e40c10a39bf62e58.js @@ -0,0 +1,135 @@ +ace.define("ace/mode/haskell_cabal_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){/** + * Haskell Cabal files highlighter (https://www.haskell.org/cabal/users-guide/developing-packages.html) + **/ +"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var CabalHighlightRules = function () { + this.$rules = { + "start": [ + { + token: "comment", + regex: "^\\s*--.*$" + }, { + token: ["keyword"], + regex: /^(\s*\w.*?)(:(?:\s+|$))/ + }, { + token: "constant.numeric", + regex: /[\d_]+(?:(?:[\.\d_]*)?)/ + }, { + token: "constant.language.boolean", + regex: "(?:true|false|TRUE|FALSE|True|False|yes|no)\\b" + }, { + token: "markup.heading", + regex: /^(\w.*)$/ + } + ] + }; +}; +oop.inherits(CabalHighlightRules, TextHighlightRules); +exports.CabalHighlightRules = CabalHighlightRules; + +}); + +ace.define("ace/mode/folding/haskell_cabal",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module){/* +* Folding mode for Cabal files (Haskell): allow folding each seaction, including +* the initial general section. +*/ +"use strict"; +var oop = require("../../lib/oop"); +var BaseFoldMode = require("./fold_mode").FoldMode; +var Range = require("../../range").Range; +var FoldMode = exports.FoldMode = function () { }; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.isHeading = function (session, row) { + var heading = "markup.heading"; + var token = session.getTokens(row)[0]; + return row == 0 || (token && token.type.lastIndexOf(heading, 0) === 0); + }; + this.getFoldWidget = function (session, foldStyle, row) { + if (this.isHeading(session, row)) { + return "start"; + } + else if (foldStyle === "markbeginend" && !(/^\s*$/.test(session.getLine(row)))) { + var maxRow = session.getLength(); + while (++row < maxRow) { + if (!(/^\s*$/.test(session.getLine(row)))) { + break; + } + } + if (row == maxRow || this.isHeading(session, row)) { + return "end"; + } + } + return ""; + }; + this.getFoldWidgetRange = function (session, foldStyle, row) { + var line = session.getLine(row); + var startColumn = line.length; + var maxRow = session.getLength(); + var startRow = row; + var endRow = row; + if (this.isHeading(session, row)) { + while (++row < maxRow) { + if (this.isHeading(session, row)) { + row--; + break; + } + } + endRow = row; + if (endRow > startRow) { + while (endRow > startRow && /^\s*$/.test(session.getLine(endRow))) + endRow--; + } + if (endRow > startRow) { + var endColumn = session.getLine(endRow).length; + return new Range(startRow, startColumn, endRow, endColumn); + } + } + else if (this.getFoldWidget(session, foldStyle, row) === "end") { + var endRow = row; + var endColumn = session.getLine(endRow).length; + while (--row >= 0) { + if (this.isHeading(session, row)) { + break; + } + } + var line = session.getLine(row); + var startColumn = line.length; + return new Range(row, startColumn, endRow, endColumn); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/haskell_cabal",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/haskell_cabal_highlight_rules","ace/mode/folding/haskell_cabal"], function(require, exports, module){/** +* Haskell Cabal files mode (https://www.haskell.org/cabal/users-guide/developing-packages.html) +**/ +"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var CabalHighlightRules = require("./haskell_cabal_highlight_rules").CabalHighlightRules; +var FoldMode = require("./folding/haskell_cabal").FoldMode; +var Mode = function () { + this.HighlightRules = CabalHighlightRules; + this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "--"; + this.blockComment = null; + this.$id = "ace/mode/haskell_cabal"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/haskell_cabal"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/e970a8b8e51d2b1fe9d44e1b2c741ff1.js b/web/dist/e970a8b8e51d2b1fe9d44e1b2c741ff1.js new file mode 100644 index 00000000..7c944d2d --- /dev/null +++ b/web/dist/e970a8b8e51d2b1fe9d44e1b2c741ff1.js @@ -0,0 +1,16 @@ +ace.define("ace/snippets/razor.snippets",["require","exports","module"], function(require, exports, module){module.exports = "snippet if\n(${1} == ${2}) {\n\t${3}\n}"; + +}); + +ace.define("ace/snippets/razor",["require","exports","module","ace/snippets/razor.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./razor.snippets"); +exports.scope = "razor"; + +}); (function() { + ace.require(["ace/snippets/razor"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/ed72112dc346ee7976809d4693f0dcba.js b/web/dist/ed72112dc346ee7976809d4693f0dcba.js new file mode 100644 index 00000000..6cb10870 --- /dev/null +++ b/web/dist/ed72112dc346ee7976809d4693f0dcba.js @@ -0,0 +1,16 @@ +ace.define("ace/snippets/edifact.snippets",["require","exports","module"], function(require, exports, module){module.exports = "## Access Modifiers\nsnippet u\n\tUN\nsnippet un\n\tUNB\nsnippet pr\n\tprivate\n##\n## Annotations\nsnippet before\n\t@Before\n\tstatic void ${1:intercept}(${2:args}) { ${3} }\nsnippet mm\n\t@ManyToMany\n\t${1}\nsnippet mo\n\t@ManyToOne\n\t${1}\nsnippet om\n\t@OneToMany${1:(cascade=CascadeType.ALL)}\n\t${2}\nsnippet oo\n\t@OneToOne\n\t${1}\n##\n## Basic Java packages and import\nsnippet im\n\timport\nsnippet j.b\n\tjava.beans.\nsnippet j.i\n\tjava.io.\nsnippet j.m\n\tjava.math.\nsnippet j.n\n\tjava.net.\nsnippet j.u\n\tjava.util.\n##\n## Class\nsnippet cl\n\tclass ${1:`Filename(\"\", \"untitled\")`} ${2}\nsnippet in\n\tinterface ${1:`Filename(\"\", \"untitled\")`} ${2:extends Parent}${3}\nsnippet tc\n\tpublic class ${1:`Filename()`} extends ${2:TestCase}\n##\n## Class Enhancements\nsnippet ext\n\textends \nsnippet imp\n\timplements\n##\n## Comments\nsnippet /*\n\t/*\n\t * ${1}\n\t */\n##\n## Constants\nsnippet co\n\tstatic public final ${1:String} ${2:var} = ${3};${4}\nsnippet cos\n\tstatic public final String ${1:var} = \"${2}\";${3}\n##\n## Control Statements\nsnippet case\n\tcase ${1}:\n\t\t${2}\nsnippet def\n\tdefault:\n\t\t${2}\nsnippet el\n\telse\nsnippet elif\n\telse if (${1}) ${2}\nsnippet if\n\tif (${1}) ${2}\nsnippet sw\n\tswitch (${1}) {\n\t\t${2}\n\t}\n##\n## Create a Method\nsnippet m\n\t${1:void} ${2:method}(${3}) ${4:throws }${5}\n##\n## Create a Variable\nsnippet v\n\t${1:String} ${2:var}${3: = null}${4};${5}\n##\n## Enhancements to Methods, variables, classes, etc.\nsnippet ab\n\tabstract\nsnippet fi\n\tfinal\nsnippet st\n\tstatic\nsnippet sy\n\tsynchronized\n##\n## Error Methods\nsnippet err\n\tSystem.err.print(\"${1:Message}\");\nsnippet errf\n\tSystem.err.printf(\"${1:Message}\", ${2:exception});\nsnippet errln\n\tSystem.err.println(\"${1:Message}\");\n##\n## Exception Handling\nsnippet as\n\tassert ${1:test} : \"${2:Failure message}\";${3}\nsnippet ca\n\tcatch(${1:Exception} ${2:e}) ${3}\nsnippet thr\n\tthrow\nsnippet ths\n\tthrows\nsnippet try\n\ttry {\n\t\t${3}\n\t} catch(${1:Exception} ${2:e}) {\n\t}\nsnippet tryf\n\ttry {\n\t\t${3}\n\t} catch(${1:Exception} ${2:e}) {\n\t} finally {\n\t}\n##\n## Find Methods\nsnippet findall\n\tList<${1:listName}> ${2:items} = ${1}.findAll();${3}\nsnippet findbyid\n\t${1:var} ${2:item} = ${1}.findById(${3});${4}\n##\n## Javadocs\nsnippet /**\n\t/**\n\t * ${1}\n\t */\nsnippet @au\n\t@author `system(\"grep \\`id -un\\` /etc/passwd | cut -d \\\":\\\" -f5 | cut -d \\\",\\\" -f1\")`\nsnippet @br\n\t@brief ${1:Description}\nsnippet @fi\n\t@file ${1:`Filename()`}.java\nsnippet @pa\n\t@param ${1:param}\nsnippet @re\n\t@return ${1:param}\n##\n## Logger Methods\nsnippet debug\n\tLogger.debug(${1:param});${2}\nsnippet error\n\tLogger.error(${1:param});${2}\nsnippet info\n\tLogger.info(${1:param});${2}\nsnippet warn\n\tLogger.warn(${1:param});${2}\n##\n## Loops\nsnippet enfor\n\tfor (${1} : ${2}) ${3}\nsnippet for\n\tfor (${1}; ${2}; ${3}) ${4}\nsnippet wh\n\twhile (${1}) ${2}\n##\n## Main method\nsnippet main\n\tpublic static void main (String[] args) {\n\t\t${1:/* code */}\n\t}\n##\n## Print Methods\nsnippet print\n\tSystem.out.print(\"${1:Message}\");\nsnippet printf\n\tSystem.out.printf(\"${1:Message}\", ${2:args});\nsnippet println\n\tSystem.out.println(${1});\n##\n## Render Methods\nsnippet ren\n\trender(${1:param});${2}\nsnippet rena\n\trenderArgs.put(\"${1}\", ${2});${3}\nsnippet renb\n\trenderBinary(${1:param});${2}\nsnippet renj\n\trenderJSON(${1:param});${2}\nsnippet renx\n\trenderXml(${1:param});${2}\n##\n## Setter and Getter Methods\nsnippet set\n\t${1:public} void set${3:}(${2:String} ${4:}){\n\t\tthis.$4 = $4;\n\t}\nsnippet get\n\t${1:public} ${2:String} get${3:}(){\n\t\treturn this.${4:};\n\t}\n##\n## Terminate Methods or Loops\nsnippet re\n\treturn\nsnippet br\n\tbreak;\n##\n## Test Methods\nsnippet t\n\tpublic void test${1:Name}() throws Exception {\n\t\t${2}\n\t}\nsnippet test\n\t@Test\n\tpublic void test${1:Name}() throws Exception {\n\t\t${2}\n\t}\n##\n## Utils\nsnippet Sc\n\tScanner\n##\n## Miscellaneous\nsnippet action\n\tpublic static void ${1:index}(${2:args}) { ${3} }\nsnippet rnf\n\tnotFound(${1:param});${2}\nsnippet rnfin\n\tnotFoundIfNull(${1:param});${2}\nsnippet rr\n\tredirect(${1:param});${2}\nsnippet ru\n\tunauthorized(${1:param});${2}\nsnippet unless\n\t(unless=${1:param});${2}\n"; + +}); + +ace.define("ace/snippets/edifact",["require","exports","module","ace/snippets/edifact.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./edifact.snippets"); +exports.scope = "edifact"; + +}); (function() { + ace.require(["ace/snippets/edifact"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/ef8f636d121f5d3e5047e1399c78ee2b.js b/web/dist/ef8f636d121f5d3e5047e1399c78ee2b.js new file mode 100644 index 00000000..286a39e0 --- /dev/null +++ b/web/dist/ef8f636d121f5d3e5047e1399c78ee2b.js @@ -0,0 +1,2271 @@ +ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var DocCommentHighlightRules = function () { + this.$rules = { + "start": [{ + token: "comment.doc.tag", + regex: "@[\\w\\d_]+" // TODO: fix email addresses + }, + DocCommentHighlightRules.getTagRule(), + { + defaultToken: "comment.doc", + caseInsensitive: true + }] + }; +}; +oop.inherits(DocCommentHighlightRules, TextHighlightRules); +DocCommentHighlightRules.getTagRule = function (start) { + return { + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" + }; +}; +DocCommentHighlightRules.getStartRule = function (start) { + return { + token: "comment.doc", + regex: "\\/\\*(?=\\*)", + next: start + }; +}; +DocCommentHighlightRules.getEndRule = function (start) { + return { + token: "comment.doc", + regex: "\\*\\/", + next: start + }; +}; +exports.DocCommentHighlightRules = DocCommentHighlightRules; + +}); + +ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; +var JavaScriptHighlightRules = function (options) { + var keywordMapper = this.createKeywordMapper({ + "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|" + // Constructors + "Namespace|QName|XML|XMLList|" + // E4X + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors + "SyntaxError|TypeError|URIError|" + + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions + "isNaN|parseFloat|parseInt|" + + "JSON|Math|" + // Other + "this|arguments|prototype|window|document", + "keyword": "const|yield|import|get|set|async|await|" + + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + + "__parent__|__count__|escape|unescape|with|__proto__|" + + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor", + "storage.type": "const|let|var|function", + "constant.language": "null|Infinity|NaN|undefined", + "support.function": "alert", + "constant.language.boolean": "true|false" + }, "identifier"); + var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; + var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex + "u[0-9a-fA-F]{4}|" + // unicode + "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode + "[0-2][0-7]{0,2}|" + // oct + "3[0-7][0-7]?|" + // oct + "[4-7][0-7]?|" + //oct + ".)"; + this.$rules = { + "no_regex": [ + DocCommentHighlightRules.getStartRule("doc-start"), + comments("no_regex"), + { + token: "string", + regex: "'(?=.)", + next: "qstring" + }, { + token: "string", + regex: '"(?=.)', + next: "qqstring" + }, { + token: "constant.numeric", + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + }, { + token: [ + "storage.type", "punctuation.operator", "support.function", + "punctuation.operator", "entity.name.function", "text", "keyword.operator" + ], + regex: "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe + ")(\\s*)(=)", + next: "function_arguments" + }, { + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", "storage.type", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "entity.name.function", "text", "keyword.operator", "text", "storage.type", + "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(function\\*?)(\\s+)(" + identifierRe + ")(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "entity.name.function", "text", "punctuation.operator", + "text", "storage.type", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "text", "text", "storage.type", "text", "paren.lparen" + ], + regex: "(:)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: "keyword", + regex: "from(?=\\s*('|\"))" + }, { + token: "keyword", + regex: "(?:" + kwBeforeRe + ")\\b", + next: "start" + }, { + token: "support.constant", + regex: /that\b/ + }, { + token: ["storage.type", "punctuation.operator", "support.function.firebug"], + regex: /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ + }, { + token: keywordMapper, + regex: identifierRe + }, { + token: "punctuation.operator", + regex: /[.](?![.])/, + next: "property" + }, { + token: "storage.type", + regex: /=>/, + next: "start" + }, { + token: "keyword.operator", + regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next: "start" + }, { + token: "punctuation.operator", + regex: /[?:,;.]/, + next: "start" + }, { + token: "paren.lparen", + regex: /[\[({]/, + next: "start" + }, { + token: "paren.rparen", + regex: /[\])}]/ + }, { + token: "comment", + regex: /^#!.*$/ + } + ], + property: [{ + token: "text", + regex: "\\s+" + }, { + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()", + next: "function_arguments" + }, { + token: "punctuation.operator", + regex: /[.](?![.])/ + }, { + token: "support.function", + regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ + }, { + token: "support.function.dom", + regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ + }, { + token: "support.constant", + regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ + }, { + token: "identifier", + regex: identifierRe + }, { + regex: "", + token: "empty", + next: "no_regex" + } + ], + "start": [ + DocCommentHighlightRules.getStartRule("doc-start"), + comments("start"), + { + token: "string.regexp", + regex: "\\/", + next: "regex" + }, { + token: "text", + regex: "\\s+|^$", + next: "start" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "regex": [ + { + token: "regexp.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "string.regexp", + regex: "/[sxngimy]*", + next: "no_regex" + }, { + token: "invalid", + regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ + }, { + token: "constant.language.escape", + regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ + }, { + token: "constant.language.delimiter", + regex: /\|/ + }, { + token: "constant.language.escape", + regex: /\[\^?/, + next: "regex_character_class" + }, { + token: "empty", + regex: "$", + next: "no_regex" + }, { + defaultToken: "string.regexp" + } + ], + "regex_character_class": [ + { + token: "regexp.charclass.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "constant.language.escape", + regex: "]", + next: "regex" + }, { + token: "constant.language.escape", + regex: "-" + }, { + token: "empty", + regex: "$", + next: "no_regex" + }, { + defaultToken: "string.regexp.charachterclass" + } + ], + "default_parameter": [ + { + token: "string", + regex: "'(?=.)", + push: [ + { + token: "string", + regex: "'|$", + next: "pop" + }, { + include: "qstring" + } + ] + }, { + token: "string", + regex: '"(?=.)', + push: [ + { + token: "string", + regex: '"|$', + next: "pop" + }, { + include: "qqstring" + } + ] + }, { + token: "constant.language", + regex: "null|Infinity|NaN|undefined" + }, { + token: "constant.numeric", + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + }, { + token: "punctuation.operator", + regex: ",", + next: "function_arguments" + }, { + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "function_arguments": [ + comments("function_arguments"), + { + token: "variable.parameter", + regex: identifierRe + }, { + token: "punctuation.operator", + regex: "," + }, { + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: '"|$', + next: "no_regex" + }, { + defaultToken: "string" + } + ], + "qstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: "'|$", + next: "no_regex" + }, { + defaultToken: "string" + } + ] + }; + if (!options || !options.noES6) { + this.$rules.no_regex.unshift({ + regex: "[{}]", onMatch: function (val, state, stack) { + this.next = val == "{" ? this.nextState : ""; + if (val == "{" && stack.length) { + stack.unshift("start", state); + } + else if (val == "}" && stack.length) { + stack.shift(); + this.next = stack.shift(); + if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) + return "paren.quasi.end"; + } + return val == "{" ? "paren.lparen" : "paren.rparen"; + }, + nextState: "start" + }, { + token: "string.quasi.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedRe + }, { + token: "paren.quasi.start", + regex: /\${/, + push: "start" + }, { + token: "string.quasi.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string.quasi" + }] + }, { + token: ["variable.parameter", "text"], + regex: "(" + identifierRe + ")(\\s*)(?=\\=>)" + }, { + token: "paren.lparen", + regex: "(\\()(?=.+\\s*=>)", + next: "function_arguments" + }, { + token: "variable.language", + regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b" + }); + this.$rules["function_arguments"].unshift({ + token: "keyword.operator", + regex: "=", + next: "default_parameter" + }, { + token: "keyword.operator", + regex: "\\.{3}" + }); + this.$rules["property"].unshift({ + token: "support.function", + regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|" + + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()" + }, { + token: "constant.language", + regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b" + }); + if (!options || options.jsx != false) + JSX.call(this); + } + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]); + this.normalizeRules(); +}; +oop.inherits(JavaScriptHighlightRules, TextHighlightRules); +function JSX() { + var tagRegex = identifierRe.replace("\\d", "\\d\\-"); + var jsxTag = { + onMatch: function (val, state, stack) { + var offset = val.charAt(1) == "/" ? 2 : 1; + if (offset == 1) { + if (state != this.nextState) + stack.unshift(this.next, this.nextState, 0); + else + stack.unshift(this.next); + stack[2]++; + } + else if (offset == 2) { + if (state == this.nextState) { + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.shift(); + stack.shift(); + } + } + } + return [{ + type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", + value: val.slice(0, offset) + }, { + type: "meta.tag.tag-name.xml", + value: val.substr(offset) + }]; + }, + regex: "", + onMatch: function (value, currentState, stack) { + if (currentState == stack[0]) + stack.shift(); + if (value.length == 2) { + if (stack[0] == this.nextState) + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.splice(0, 2); + } + } + this.next = stack[0] || "start"; + return [{ type: this.token, value: value }]; + }, + nextState: "jsx" + }, + jsxJsRule, + comments("jsxAttributes"), + { + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + token: "text.tag-whitespace.xml", + regex: "\\s+" + }, { + token: "string.attribute-value.xml", + regex: "'", + stateName: "jsx_attr_q", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + stateName: "jsx_attr_qq", + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, + jsxTag + ]; + this.$rules.reference = [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }]; +} +function comments(next) { + return [ + { + token: "comment", + regex: /\/\*/, + next: [ + DocCommentHighlightRules.getTagRule(), + { token: "comment", regex: "\\*\\/", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } + ] + }, { + token: "comment", + regex: "\\/\\/", + next: [ + DocCommentHighlightRules.getTagRule(), + { token: "comment", regex: "$|^", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } + ] + } + ]; +} +exports.JavaScriptHighlightRules = JavaScriptHighlightRules; + +}); + +ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) + return false; + return /^\s*\}/.test(input); + }; + this.autoOutdent = function (doc, row) { + var line = doc.getLine(row); + var match = line.match(/^(\s*\})/); + if (!match) + return 0; + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; + var indent = this.$getIndent(doc.getLine(openBracePos.row)); + doc.replace(new Range(row, 0, row, column - 1), indent); + }; + this.$getIndent = function (line) { + return line.match(/^\s*/)[0]; + }; +}).call(MatchingBraceOutdent.prototype); +exports.MatchingBraceOutdent = MatchingBraceOutdent; + +}); + +ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = JavaScriptHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CstyleBehaviour(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "//"; + this.blockComment = { start: "/*", end: "*/" }; + this.$quotes = { '"': '"', "'": "'", "`": "`" }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + var endState = tokenizedLine.state; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + if (state == "start" || state == "no_regex") { + var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); + if (match) { + indent += tab; + } + } + else if (state == "doc-start") { + if (endState == "start" || endState == "no_regex") { + return ""; + } + var match = line.match(/^\s*(\/?)\*/); + if (match) { + if (match[1]) { + indent += " "; + } + indent += "* "; + } + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.createWorker = function (session) { + var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); + worker.attachToDocument(session.getDocument()); + worker.on("annotate", function (results) { + session.setAnnotations(results.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/javascript"; + this.snippetFileId = "ace/snippets/javascript"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; +var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; +var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; +var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; +var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; +var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; +var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; +var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; +var CssHighlightRules = function () { + var keywordMapper = this.createKeywordMapper({ + "support.function": supportFunction, + "support.constant": supportConstant, + "support.type": supportType, + "support.constant.color": supportConstantColor, + "support.constant.fonts": supportConstantFonts + }, "text", true); + this.$rules = { + "start": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" + }, { + token: "string", + regex: "@(?!viewport)", + next: "media" + }, { + token: "keyword", + regex: "#[a-z0-9-_]+" + }, { + token: "keyword", + regex: "%" + }, { + token: "variable", + regex: "\\.[a-z0-9-_]+" + }, { + token: "string", + regex: ":[a-z0-9-_]+" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant", + regex: "[a-z0-9-_]+" + }, { + caseInsensitive: true + }], + "media": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "start" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + token: "string", + regex: ";", + next: "start" + }, { + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" + }], + "comments": [{ + token: "comment", + regex: "\\/\\*", + push: [{ + token: "comment", + regex: "\\*\\/", + next: "pop" + }, { + defaultToken: "comment" + }] + }], + "ruleset": [{ + regex: "-(webkit|ms|moz|o)-", + token: "text" + }, { + token: "punctuation.operator", + regex: "[:;]" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + include: ["strings", "url", "comments"] + }, { + token: ["constant.numeric", "keyword"], + regex: "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant.numeric", + regex: "#[a-f0-9]{6}" + }, { + token: "constant.numeric", + regex: "#[a-f0-9]{3}" + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"], + regex: pseudoElements + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"], + regex: pseudoClasses + }, { + include: "url" + }, { + token: keywordMapper, + regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" + }, { + caseInsensitive: true + }], + url: [{ + token: "support.function", + regex: "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token: "support.function", + regex: "\\)", + next: "pop" + }, { + defaultToken: "string" + }] + }], + strings: [{ + token: "string.start", + regex: "'", + push: [{ + token: "string.end", + regex: "'|$", + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }, { + token: "string.start", + regex: '"', + push: [{ + token: "string.end", + regex: '"|$', + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], + escapes: [{ + token: "constant.language.escape", + regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ + }] + }; + this.normalizeRules(); +}; +oop.inherits(CssHighlightRules, TextHighlightRules); +exports.CssHighlightRules = CssHighlightRules; + +}); + +ace.define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module){"use strict"; +var propertyMap = { + "background": { "#$0": 1 }, + "background-color": { "#$0": 1, "transparent": 1, "fixed": 1 }, + "background-image": { "url('/$0')": 1 }, + "background-repeat": { "repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1 }, + "background-position": { "bottom": 2, "center": 2, "left": 2, "right": 2, "top": 2, "inherit": 2 }, + "background-attachment": { "scroll": 1, "fixed": 1 }, + "background-size": { "cover": 1, "contain": 1 }, + "background-clip": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "background-origin": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "border": { "solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1 }, + "border-color": { "#$0": 1 }, + "border-style": { "solid": 2, "dashed": 2, "dotted": 2, "double": 2, "groove": 2, "hidden": 2, "inherit": 2, "inset": 2, "none": 2, "outset": 2, "ridged": 2 }, + "border-collapse": { "collapse": 1, "separate": 1 }, + "bottom": { "px": 1, "em": 1, "%": 1 }, + "clear": { "left": 1, "right": 1, "both": 1, "none": 1 }, + "color": { "#$0": 1, "rgb(#$00,0,0)": 1 }, + "cursor": { "default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1 }, + "display": { "none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1 }, + "empty-cells": { "show": 1, "hide": 1 }, + "float": { "left": 1, "right": 1, "none": 1 }, + "font-family": { "Arial": 2, "Comic Sans MS": 2, "Consolas": 2, "Courier New": 2, "Courier": 2, "Georgia": 2, "Monospace": 2, "Sans-Serif": 2, "Segoe UI": 2, "Tahoma": 2, "Times New Roman": 2, "Trebuchet MS": 2, "Verdana": 1 }, + "font-size": { "px": 1, "em": 1, "%": 1 }, + "font-weight": { "bold": 1, "normal": 1 }, + "font-style": { "italic": 1, "normal": 1 }, + "font-variant": { "normal": 1, "small-caps": 1 }, + "height": { "px": 1, "em": 1, "%": 1 }, + "left": { "px": 1, "em": 1, "%": 1 }, + "letter-spacing": { "normal": 1 }, + "line-height": { "normal": 1 }, + "list-style-type": { "none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1 }, + "margin": { "px": 1, "em": 1, "%": 1 }, + "margin-right": { "px": 1, "em": 1, "%": 1 }, + "margin-left": { "px": 1, "em": 1, "%": 1 }, + "margin-top": { "px": 1, "em": 1, "%": 1 }, + "margin-bottom": { "px": 1, "em": 1, "%": 1 }, + "max-height": { "px": 1, "em": 1, "%": 1 }, + "max-width": { "px": 1, "em": 1, "%": 1 }, + "min-height": { "px": 1, "em": 1, "%": 1 }, + "min-width": { "px": 1, "em": 1, "%": 1 }, + "overflow": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-x": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-y": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "padding": { "px": 1, "em": 1, "%": 1 }, + "padding-top": { "px": 1, "em": 1, "%": 1 }, + "padding-right": { "px": 1, "em": 1, "%": 1 }, + "padding-bottom": { "px": 1, "em": 1, "%": 1 }, + "padding-left": { "px": 1, "em": 1, "%": 1 }, + "page-break-after": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "page-break-before": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "position": { "absolute": 1, "relative": 1, "fixed": 1, "static": 1 }, + "right": { "px": 1, "em": 1, "%": 1 }, + "table-layout": { "fixed": 1, "auto": 1 }, + "text-decoration": { "none": 1, "underline": 1, "line-through": 1, "blink": 1 }, + "text-align": { "left": 1, "right": 1, "center": 1, "justify": 1 }, + "text-transform": { "capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1 }, + "top": { "px": 1, "em": 1, "%": 1 }, + "vertical-align": { "top": 1, "bottom": 1 }, + "visibility": { "hidden": 1, "visible": 1 }, + "white-space": { "nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1 }, + "width": { "px": 1, "em": 1, "%": 1 }, + "word-spacing": { "normal": 1 }, + "filter": { "alpha(opacity=$0100)": 1 }, + "text-shadow": { "$02px 2px 2px #777": 1 }, + "text-overflow": { "ellipsis-word": 1, "clip": 1, "ellipsis": 1 }, + "-moz-border-radius": 1, + "-moz-border-radius-topright": 1, + "-moz-border-radius-bottomright": 1, + "-moz-border-radius-topleft": 1, + "-moz-border-radius-bottomleft": 1, + "-webkit-border-radius": 1, + "-webkit-border-top-right-radius": 1, + "-webkit-border-top-left-radius": 1, + "-webkit-border-bottom-right-radius": 1, + "-webkit-border-bottom-left-radius": 1, + "-moz-box-shadow": 1, + "-webkit-box-shadow": 1, + "transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-moz-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-webkit-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 } +}; +var CssCompletions = function () { +}; +(function () { + this.completionsDefined = false; + this.defineCompletions = function () { + if (document) { + var style = document.createElement('c').style; + for (var i in style) { + if (typeof style[i] !== 'string') + continue; + var name = i.replace(/[A-Z]/g, function (x) { + return '-' + x.toLowerCase(); + }); + if (!propertyMap.hasOwnProperty(name)) + propertyMap[name] = 1; + } + } + this.completionsDefined = true; + }; + this.getCompletions = function (state, session, pos, prefix) { + if (!this.completionsDefined) { + this.defineCompletions(); + } + if (state === 'ruleset' || session.$mode.$id == "ace/mode/scss") { + var line = session.getLine(pos.row).substr(0, pos.column); + var inParens = /\([^)]*$/.test(line); + if (inParens) { + line = line.substr(line.lastIndexOf('(') + 1); + } + if (/:[^;]+$/.test(line)) { + /([\w\-]+):[^:]*$/.test(line); + return this.getPropertyValueCompletions(state, session, pos, prefix); + } + else { + return this.getPropertyCompletions(state, session, pos, prefix, inParens); + } + } + return []; + }; + this.getPropertyCompletions = function (state, session, pos, prefix, skipSemicolon) { + skipSemicolon = skipSemicolon || false; + var properties = Object.keys(propertyMap); + return properties.map(function (property) { + return { + caption: property, + snippet: property + ': $0' + (skipSemicolon ? '' : ';'), + meta: "property", + score: 1000000 + }; + }); + }; + this.getPropertyValueCompletions = function (state, session, pos, prefix) { + var line = session.getLine(pos.row).substr(0, pos.column); + var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; + if (!property) + return []; + var values = []; + if (property in propertyMap && typeof propertyMap[property] === "object") { + values = Object.keys(propertyMap[property]); + } + return values.map(function (value) { + return { + caption: value, + snippet: value, + meta: "property value", + score: 1000000 + }; + }); + }; +}).call(CssCompletions.prototype); +exports.CssCompletions = CssCompletions; + +}); + +ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Behaviour = require("../behaviour").Behaviour; +var CstyleBehaviour = require("./cstyle").CstyleBehaviour; +var TokenIterator = require("../../token_iterator").TokenIterator; +var CssBehaviour = function () { + this.inherit(CstyleBehaviour); + this.add("colon", "insertion", function (state, action, editor, session, text) { + if (text === ':' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.value.match(/\s+/)) { + token = iterator.stepBackward(); + } + if (token && token.type === 'support.type') { + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + if (rightChar === ':') { + return { + text: '', + selection: [1, 1] + }; + } + if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { + return { + text: ':;', + selection: [1, 1] + }; + } + } + } + }); + this.add("colon", "deletion", function (state, action, editor, session, range) { + var selected = session.doc.getTextRange(range); + if (!range.isMultiLine() && selected === ':') { + var cursor = editor.getCursorPosition(); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.value.match(/\s+/)) { + token = iterator.stepBackward(); + } + if (token && token.type === 'support.type') { + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.end.column, range.end.column + 1); + if (rightChar === ';') { + range.end.column++; + return range; + } + } + } + }); + this.add("semicolon", "insertion", function (state, action, editor, session, text) { + if (text === ';' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + if (rightChar === ';') { + return { + text: '', + selection: [1, 1] + }; + } + } + }); + this.add("!important", "insertion", function (state, action, editor, session, text) { + if (text === '!' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { + return { + text: '!important', + selection: [10, 10] + }; + } + } + }); +}; +oop.inherits(CssBehaviour, CstyleBehaviour); +exports.CssBehaviour = CssBehaviour; + +}); + +ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var CssCompletions = require("./css_completions").CssCompletions; +var CssBehaviour = require("./behaviour/css").CssBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = CssHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CssBehaviour(); + this.$completer = new CssCompletions(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.foldingRules = "cStyle"; + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokens = this.getTokenizer().getLineTokens(line, state).tokens; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + var match = line.match(/^.*\{\s*$/); + if (match) { + indent += tab; + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.getCompletions = function (state, session, pos, prefix) { + return this.$completer.getCompletions(state, session, pos, prefix); + }; + this.createWorker = function (session) { + var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); + worker.attachToDocument(session.getDocument()); + worker.on("annotate", function (e) { + session.setAnnotations(e.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/css"; + this.snippetFileId = "ace/snippets/css"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var XmlHighlightRules = function (normalize) { + var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; + this.$rules = { + start: [ + { token: "string.cdata.xml", regex: "<\\!\\[CDATA\\[", next: "cdata" }, + { + token: ["punctuation.instruction.xml", "keyword.instruction.xml"], + regex: "(<\\?)(" + tagRegex + ")", next: "processing_instruction" + }, + { token: "comment.start.xml", regex: "<\\!--", next: "comment" }, + { + token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], + regex: "(<\\!)(DOCTYPE)(?=[\\s])", next: "doctype", caseInsensitive: true + }, + { include: "tag" }, + { token: "text.end-tag-open.xml", regex: "", + next: "start" + }], + doctype: [ + { include: "whitespace" }, + { include: "string" }, + { token: "xml-pe.doctype.xml", regex: ">", next: "start" }, + { token: "xml-pe.xml", regex: "[-_a-zA-Z0-9:]+" }, + { token: "punctuation.int-subset", regex: "\\[", push: "int_subset" } + ], + int_subset: [{ + token: "text.xml", + regex: "\\s+" + }, { + token: "punctuation.int-subset.xml", + regex: "]", + next: "pop" + }, { + token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], + regex: "(<\\!)(" + tagRegex + ")", + push: [{ + token: "text", + regex: "\\s+" + }, + { + token: "punctuation.markup-decl.xml", + regex: ">", + next: "pop" + }, + { include: "string" }] + }], + cdata: [ + { token: "string.cdata.xml", regex: "\\]\\]>", next: "start" }, + { token: "text.xml", regex: "\\s+" }, + { token: "text.xml", regex: "(?:[^\\]]|\\](?!\\]>))+" } + ], + comment: [ + { token: "comment.end.xml", regex: "-->", next: "start" }, + { defaultToken: "comment.xml" } + ], + reference: [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + attr_reference: [{ + token: "constant.language.escape.reference.attribute-value.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + tag: [{ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], + regex: "(?:(<)|(", next: "start" } + ] + }], + tag_whitespace: [ + { token: "text.tag-whitespace.xml", regex: "\\s+" } + ], + whitespace: [ + { token: "text.whitespace.xml", regex: "\\s+" } + ], + string: [{ + token: "string.xml", + regex: "'", + push: [ + { token: "string.xml", regex: "'", next: "pop" }, + { defaultToken: "string.xml" } + ] + }, { + token: "string.xml", + regex: '"', + push: [ + { token: "string.xml", regex: '"', next: "pop" }, + { defaultToken: "string.xml" } + ] + }], + attributes: [{ + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + include: "tag_whitespace" + }, { + include: "attribute_value" + }], + attribute_value: [{ + token: "string.attribute-value.xml", + regex: "'", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }] + }; + if (this.constructor === XmlHighlightRules) + this.normalizeRules(); +}; +(function () { + this.embedTagRules = function (HighlightRules, prefix, tag) { + this.$rules.tag.unshift({ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(<)(" + tag + "(?=\\s|>|$))", + next: [ + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: prefix + "start" } + ] + }); + this.$rules[tag + "-end"] = [ + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start", + onMatch: function (value, currentState, stack) { + stack.splice(0); + return this.token; + } } + ]; + this.embedRules(HighlightRules, prefix, [{ + token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(|$))", + next: tag + "-end" + }, { + token: "string.cdata.xml", + regex: "<\\!\\[CDATA\\[" + }, { + token: "string.cdata.xml", + regex: "\\]\\]>" + }]); + }; +}).call(TextHighlightRules.prototype); +oop.inherits(XmlHighlightRules, TextHighlightRules); +exports.XmlHighlightRules = XmlHighlightRules; + +}); + +ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; +var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; +var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; +var tagMap = lang.createMap({ + a: 'anchor', + button: 'form', + form: 'form', + img: 'image', + input: 'form', + label: 'form', + option: 'form', + script: 'script', + select: 'form', + textarea: 'form', + style: 'style', + table: 'table', + tbody: 'table', + td: 'table', + tfoot: 'table', + th: 'table', + tr: 'table' +}); +var HtmlHighlightRules = function () { + XmlHighlightRules.call(this); + this.addRules({ + attributes: [{ + include: "tag_whitespace" + }, { + token: "entity.other.attribute-name.xml", + regex: "[-_a-zA-Z0-9:.]+" + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=", + push: [{ + include: "tag_whitespace" + }, { + token: "string.unquoted.attribute-value.html", + regex: "[^<>='\"`\\s]+", + next: "pop" + }, { + token: "empty", + regex: "", + next: "pop" + }] + }, { + include: "attribute_value" + }], + tag: [{ + token: function (start, tag) { + var group = tagMap[tag]; + return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", + "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; + }, + regex: "(", next: "start" } + ] + }); + this.embedTagRules(CssHighlightRules, "css-", "style"); + this.embedTagRules(new JavaScriptHighlightRules({ jsx: false }).getRules(), "js-", "script"); + if (this.constructor === HtmlHighlightRules) + this.normalizeRules(); +}; +oop.inherits(HtmlHighlightRules, XmlHighlightRules); +exports.HtmlHighlightRules = HtmlHighlightRules; + +}); + +ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Behaviour = require("../behaviour").Behaviour; +var TokenIterator = require("../../token_iterator").TokenIterator; +var lang = require("../../lib/lang"); +function is(token, type) { + return token && token.type.lastIndexOf(type + ".xml") > -1; +} +var XmlBehaviour = function () { + this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { + if (text == '"' || text == "'") { + var quote = text; + var selected = session.doc.getTextRange(editor.getSelectionRange()); + if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { + return { + text: quote + selected + quote, + selection: false + }; + } + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { + return { + text: "", + selection: [1, 1] + }; + } + if (!token) + token = iterator.stepBackward(); + if (!token) + return; + while (is(token, "tag-whitespace") || is(token, "whitespace")) { + token = iterator.stepBackward(); + } + var rightSpace = !rightChar || rightChar.match(/\s/); + if (is(token, "attribute-equals") && (rightSpace || rightChar == '>') || (is(token, "decl-attribute-equals") && (rightSpace || rightChar == '?'))) { + return { + text: quote + quote, + selection: [1, 1] + }; + } + } + }); + this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { + var selected = session.doc.getTextRange(range); + if (!range.isMultiLine() && (selected == '"' || selected == "'")) { + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.start.column + 1, range.start.column + 2); + if (rightChar == selected) { + range.end.column++; + return range; + } + } + }); + this.add("autoclosing", "insertion", function (state, action, editor, session, text) { + if (text == '>') { + var position = editor.getSelectionRange().start; + var iterator = new TokenIterator(session, position.row, position.column); + var token = iterator.getCurrentToken() || iterator.stepBackward(); + if (!token || !(is(token, "tag-name") || is(token, "tag-whitespace") || is(token, "attribute-name") || is(token, "attribute-equals") || is(token, "attribute-value"))) + return; + if (is(token, "reference.attribute-value")) + return; + if (is(token, "attribute-value")) { + var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; + if (position.column < tokenEndColumn) + return; + if (position.column == tokenEndColumn) { + var nextToken = iterator.stepForward(); + if (nextToken && is(nextToken, "attribute-value")) + return; + iterator.stepBackward(); + } + } + if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) + return; + while (!is(token, "tag-name")) { + token = iterator.stepBackward(); + if (token.value == "<") { + token = iterator.stepForward(); + break; + } + } + var tokenRow = iterator.getCurrentTokenRow(); + var tokenColumn = iterator.getCurrentTokenColumn(); + if (is(iterator.stepBackward(), "end-tag-open")) + return; + var element = token.value; + if (tokenRow == position.row) + element = element.substring(0, position.column - tokenColumn); + if (this.voidElements.hasOwnProperty(element.toLowerCase())) + return; + return { + text: ">" + "", + selection: [1, 1] + }; + } + }); + this.add("autoindent", "insertion", function (state, action, editor, session, text) { + if (text == "\n") { + var cursor = editor.getCursorPosition(); + var line = session.getLine(cursor.row); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.type.indexOf("tag-close") !== -1) { + if (token.value == "/>") + return; + while (token && token.type.indexOf("tag-name") === -1) { + token = iterator.stepBackward(); + } + if (!token) { + return; + } + var tag = token.value; + var row = iterator.getCurrentTokenRow(); + token = iterator.stepBackward(); + if (!token || token.type.indexOf("end-tag") !== -1) { + return; + } + if (this.voidElements && !this.voidElements[tag]) { + var nextToken = session.getTokenAt(cursor.row, cursor.column + 1); + var line = session.getLine(row); + var nextIndent = this.$getIndent(line); + var indent = nextIndent + session.getTabString(); + if (nextToken && nextToken.value === " -1; +} +(function () { + this.getFoldWidget = function (session, foldStyle, row) { + var tag = this._getFirstTagInLine(session, row); + if (!tag) + return this.getCommentFoldWidget(session, row); + if (tag.closing || (!tag.tagName && tag.selfClosing)) + return foldStyle === "markbeginend" ? "end" : ""; + if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) + return ""; + if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) + return ""; + return "start"; + }; + this.getCommentFoldWidget = function (session, row) { + if (/comment/.test(session.getState(row)) && /'; + break; + } + } + return tag; + } + else if (is(token, "tag-close")) { + tag.selfClosing = token.value == '/>'; + return tag; + } + tag.start.column += token.value.length; + } + return null; + }; + this._findEndTagInLine = function (session, row, tagName, startColumn) { + var tokens = session.getTokens(row); + var column = 0; + for (var i = 0; i < tokens.length; i++) { + var token = tokens[i]; + column += token.value.length; + if (column < startColumn) + continue; + if (is(token, "end-tag-open")) { + token = tokens[i + 1]; + if (token && token.value == tagName) + return true; + } + } + return false; + }; + this.getFoldWidgetRange = function (session, foldStyle, row) { + var tags = session.getMatchingTags({ row: row, column: 0 }); + if (tags) { + return new Range(tags.openTag.end.row, tags.openTag.end.column, tags.closeTag.start.row, tags.closeTag.start.column); + } + else { + return this.getCommentFoldWidget(session, row) + && session.getCommentFoldRange(row, session.getLine(row).length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var MixedFoldMode = require("./mixed").FoldMode; +var XmlFoldMode = require("./xml").FoldMode; +var CStyleFoldMode = require("./cstyle").FoldMode; +var FoldMode = exports.FoldMode = function (voidElements, optionalTags) { + MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { + "js-": new CStyleFoldMode(), + "css-": new CStyleFoldMode() + }); +}; +oop.inherits(FoldMode, MixedFoldMode); + +}); + +ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module){"use strict"; +var TokenIterator = require("../token_iterator").TokenIterator; +var commonAttributes = [ + "accesskey", + "class", + "contenteditable", + "contextmenu", + "dir", + "draggable", + "dropzone", + "hidden", + "id", + "inert", + "itemid", + "itemprop", + "itemref", + "itemscope", + "itemtype", + "lang", + "spellcheck", + "style", + "tabindex", + "title", + "translate" +]; +var eventAttributes = [ + "onabort", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextmenu", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onmousewheel", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onscroll", + "onseeked", + "onseeking", + "onselect", + "onshow", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "onvolumechange", + "onwaiting" +]; +var globalAttributes = commonAttributes.concat(eventAttributes); +var attributeMap = { + "a": { "href": 1, "target": { "_blank": 1, "top": 1 }, "ping": 1, "rel": { "nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1 }, "media": 1, "hreflang": 1, "type": 1 }, + "abbr": {}, + "address": {}, + "area": { "shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1 }, + "article": { "pubdate": 1 }, + "aside": {}, + "audio": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "b": {}, + "base": { "href": 1, "target": 1 }, + "bdi": {}, + "bdo": {}, + "blockquote": { "cite": 1 }, + "body": { "onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1 }, + "br": {}, + "button": { "autofocus": 1, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": { "button": 1, "submit": 1 } }, + "canvas": { "width": 1, "height": 1 }, + "caption": {}, + "cite": {}, + "code": {}, + "col": { "span": 1 }, + "colgroup": { "span": 1 }, + "command": { "type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1 }, + "data": {}, + "datalist": {}, + "dd": {}, + "del": { "cite": 1, "datetime": 1 }, + "details": { "open": 1 }, + "dfn": {}, + "dialog": { "open": 1 }, + "div": {}, + "dl": {}, + "dt": {}, + "em": {}, + "embed": { "src": 1, "height": 1, "width": 1, "type": 1 }, + "fieldset": { "disabled": 1, "form": 1, "name": 1 }, + "figcaption": {}, + "figure": {}, + "footer": {}, + "form": { "accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": { "multipart/form-data": 1, "application/x-www-form-urlencoded": 1 }, "method": { "get": 1, "post": 1 }, "name": 1, "novalidate": 1, "target": { "_blank": 1, "top": 1 } }, + "h1": {}, + "h2": {}, + "h3": {}, + "h4": {}, + "h5": {}, + "h6": {}, + "head": {}, + "header": {}, + "hr": {}, + "html": { "manifest": 1 }, + "i": {}, + "iframe": { "name": 1, "src": 1, "height": 1, "width": 1, "sandbox": { "allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1 }, "seamless": { "seamless": 1 } }, + "img": { "alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1 }, + "input": { + "type": { "text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1 }, + "accept": 1, "alt": 1, "autocomplete": { "on": 1, "off": 1 }, "autofocus": { "autofocus": 1 }, "checked": { "checked": 1 }, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": { "application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1 }, "formmethod": { "get": 1, "post": 1 }, "formnovalidate": { "formnovalidate": 1 }, "formtarget": { "_blank": 1, "_self": 1, "_parent": 1, "_top": 1 }, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": { "multiple": 1 }, "name": 1, "pattern": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1 + }, + "ins": { "cite": 1, "datetime": 1 }, + "kbd": {}, + "keygen": { "autofocus": 1, "challenge": { "challenge": 1 }, "disabled": { "disabled": 1 }, "form": 1, "keytype": { "rsa": 1, "dsa": 1, "ec": 1 }, "name": 1 }, + "label": { "form": 1, "for": 1 }, + "legend": {}, + "li": { "value": 1 }, + "link": { "href": 1, "hreflang": 1, "rel": { "stylesheet": 1, "icon": 1 }, "media": { "all": 1, "screen": 1, "print": 1 }, "type": { "text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1 }, "sizes": 1 }, + "main": {}, + "map": { "name": 1 }, + "mark": {}, + "math": {}, + "menu": { "type": 1, "label": 1 }, + "meta": { "http-equiv": { "content-type": 1 }, "name": { "description": 1, "keywords": 1 }, "content": { "text/html; charset=UTF-8": 1 }, "charset": 1 }, + "meter": { "value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1 }, + "nav": {}, + "noscript": { "href": 1 }, + "object": { "param": 1, "data": 1, "type": 1, "height": 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1 }, + "ol": { "start": 1, "reversed": 1 }, + "optgroup": { "disabled": 1, "label": 1 }, + "option": { "disabled": 1, "selected": 1, "label": 1, "value": 1 }, + "output": { "for": 1, "form": 1, "name": 1 }, + "p": {}, + "param": { "name": 1, "value": 1 }, + "pre": {}, + "progress": { "value": 1, "max": 1 }, + "q": { "cite": 1 }, + "rp": {}, + "rt": {}, + "ruby": {}, + "s": {}, + "samp": {}, + "script": { "charset": 1, "type": { "text/javascript": 1 }, "src": 1, "defer": 1, "async": 1 }, + "select": { "autofocus": 1, "disabled": 1, "form": 1, "multiple": { "multiple": 1 }, "name": 1, "size": 1, "readonly": { "readonly": 1 } }, + "small": {}, + "source": { "src": 1, "type": 1, "media": 1 }, + "span": {}, + "strong": {}, + "style": { "type": 1, "media": { "all": 1, "screen": 1, "print": 1 }, "scoped": 1 }, + "sub": {}, + "sup": {}, + "svg": {}, + "table": { "summary": 1 }, + "tbody": {}, + "td": { "headers": 1, "rowspan": 1, "colspan": 1 }, + "textarea": { "autofocus": { "autofocus": 1 }, "disabled": { "disabled": 1 }, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "rows": 1, "cols": 1, "wrap": { "on": 1, "off": 1, "hard": 1, "soft": 1 } }, + "tfoot": {}, + "th": { "headers": 1, "rowspan": 1, "colspan": 1, "scope": 1 }, + "thead": {}, + "time": { "datetime": 1 }, + "title": {}, + "tr": {}, + "track": { "kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1 }, + "section": {}, + "summary": {}, + "u": {}, + "ul": {}, + "var": {}, + "video": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "width": 1, "height": 1, "poster": 1, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "wbr": {} +}; +var elements = Object.keys(attributeMap); +function is(token, type) { + return token.type.lastIndexOf(type + ".xml") > -1; +} +function findTagName(session, pos) { + var iterator = new TokenIterator(session, pos.row, pos.column); + var token = iterator.getCurrentToken(); + while (token && !is(token, "tag-name")) { + token = iterator.stepBackward(); + } + if (token) + return token.value; +} +function findAttributeName(session, pos) { + var iterator = new TokenIterator(session, pos.row, pos.column); + var token = iterator.getCurrentToken(); + while (token && !is(token, "attribute-name")) { + token = iterator.stepBackward(); + } + if (token) + return token.value; +} +var HtmlCompletions = function () { +}; +(function () { + this.getCompletions = function (state, session, pos, prefix) { + var token = session.getTokenAt(pos.row, pos.column); + if (!token) + return []; + if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) + return this.getTagCompletions(state, session, pos, prefix); + if (is(token, "tag-whitespace") || is(token, "attribute-name")) + return this.getAttributeCompletions(state, session, pos, prefix); + if (is(token, "attribute-value")) + return this.getAttributeValueCompletions(state, session, pos, prefix); + var line = session.getLine(pos.row).substr(0, pos.column); + if (/&[a-z]*$/i.test(line)) + return this.getHTMLEntityCompletions(state, session, pos, prefix); + return []; + }; + this.getTagCompletions = function (state, session, pos, prefix) { + return elements.map(function (element) { + return { + value: element, + meta: "tag", + score: 1000000 + }; + }); + }; + this.getAttributeCompletions = function (state, session, pos, prefix) { + var tagName = findTagName(session, pos); + if (!tagName) + return []; + var attributes = globalAttributes; + if (tagName in attributeMap) { + attributes = attributes.concat(Object.keys(attributeMap[tagName])); + } + return attributes.map(function (attribute) { + return { + caption: attribute, + snippet: attribute + '="$0"', + meta: "attribute", + score: 1000000 + }; + }); + }; + this.getAttributeValueCompletions = function (state, session, pos, prefix) { + var tagName = findTagName(session, pos); + var attributeName = findAttributeName(session, pos); + if (!tagName) + return []; + var values = []; + if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { + values = Object.keys(attributeMap[tagName][attributeName]); + } + return values.map(function (value) { + return { + caption: value, + snippet: value, + meta: "attribute value", + score: 1000000 + }; + }); + }; + this.getHTMLEntityCompletions = function (state, session, pos, prefix) { + var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;']; + return values.map(function (value) { + return { + caption: value, + snippet: value, + meta: "html entity", + score: 1000000 + }; + }); + }; +}).call(HtmlCompletions.prototype); +exports.HtmlCompletions = HtmlCompletions; + +}); + +ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextMode = require("./text").Mode; +var JavaScriptMode = require("./javascript").Mode; +var CssMode = require("./css").Mode; +var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; +var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; +var HtmlFoldMode = require("./folding/html").FoldMode; +var HtmlCompletions = require("./html_completions").HtmlCompletions; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; +var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; +var Mode = function (options) { + this.fragmentContext = options && options.fragmentContext; + this.HighlightRules = HtmlHighlightRules; + this.$behaviour = new XmlBehaviour(); + this.$completer = new HtmlCompletions(); + this.createModeDelegates({ + "js-": JavaScriptMode, + "css-": CssMode + }); + this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); +}; +oop.inherits(Mode, TextMode); +(function () { + this.blockComment = { start: "" }; + this.voidElements = lang.arrayToMap(voidElements); + this.getNextLineIndent = function (state, line, tab) { + return this.$getIndent(line); + }; + this.checkOutdent = function (state, line, input) { + return false; + }; + this.getCompletions = function (state, session, pos, prefix) { + return this.$completer.getCompletions(state, session, pos, prefix); + }; + this.createWorker = function (session) { + if (this.constructor != Mode) + return; + var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker"); + worker.attachToDocument(session.getDocument()); + if (this.fragmentContext) + worker.call("setOptions", [{ context: this.fragmentContext }]); + worker.on("error", function (e) { + session.setAnnotations(e.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/html"; + this.snippetFileId = "ace/snippets/html"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +ace.define("ace/mode/django",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/html_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){var oop = require("../lib/oop"); +var HtmlMode = require("./html").Mode; +var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var DjangoHighlightRules = function () { + this.$rules = { + 'start': [{ + token: "string", + regex: '".*?"' + }, { + token: "string", + regex: "'.*?'" + }, { + token: "constant", + regex: '[0-9]+' + }, { + token: "variable", + regex: "[-_a-zA-Z0-9:]+" + }], + 'tag': [{ + token: "entity.name.function", + regex: "[a-zA-Z][_a-zA-Z0-9]*", + next: "start" + }] + }; +}; +oop.inherits(DjangoHighlightRules, TextHighlightRules); +var DjangoHtmlHighlightRules = function () { + this.$rules = new HtmlHighlightRules().getRules(); + for (var i in this.$rules) { + this.$rules[i].unshift({ + token: "comment.line", + regex: "\\{#.*?#\\}" + }, { + token: "comment.block", + regex: "\\{\\%\\s*comment\\s*\\%\\}", + merge: true, + next: "django-comment" + }, { + token: "constant.language", + regex: "\\{\\{", + next: "django-start" + }, { + token: "constant.language", + regex: "\\{\\%", + next: "django-tag" + }); + this.embedRules(DjangoHighlightRules, "django-", [{ + token: "comment.block", + regex: "\\{\\%\\s*endcomment\\s*\\%\\}", + merge: true, + next: "start" + }, { + token: "constant.language", + regex: "\\%\\}", + next: "start" + }, { + token: "constant.language", + regex: "\\}\\}", + next: "start" + }]); + } +}; +oop.inherits(DjangoHtmlHighlightRules, HtmlHighlightRules); +var Mode = function () { + HtmlMode.call(this); + this.HighlightRules = DjangoHtmlHighlightRules; +}; +oop.inherits(Mode, HtmlMode); +(function () { + this.$id = "ace/mode/django"; + this.snippetFileId = "ace/snippets/django"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/django"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/ef8f636d121f5d3e5047e1399c78ee2b.js.gz b/web/dist/ef8f636d121f5d3e5047e1399c78ee2b.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..a44658eba424082904e5e8ae94b6af069af97618 GIT binary patch literal 21814 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 pSHDUNZ_Q&eoNJ)#=q#EYrMjQAxpuu_/, + comment: "Splitter" + }, { + token: "entity.name.tag", + regex: /\*[\*A-Za-z0-9]/, + comment: "Signal" + }, { + token: "constant.numeric", + regex: /[0-9]{2}/, + comment: "Pause" + }, { + token: "keyword.control", + regex: /\^\^/, + comment: "Start" + }, { + token: "keyword.control", + regex: /\(\)/, + comment: "Hole" + }, { + token: "support.function", + regex: />>/, + comment: "Out" + }, { + token: "support.function", + regex: />\//, + comment: "Ln Out" + }, { + token: "support.function", + regex: /< *)(?:([-+*\/]=)( *)((?:-)?)([0-9]+)|(=)( *)(?:((?:-)?)([0-9]+)|("[^"]*")|('[^']*')))/, + comment: "Assignment function" + }, { + token: [ + "entity.name.function", + "keyword.other", + "keyword.control", + "keyword.other", + "keyword.operator", + "keyword.other", + "keyword.operator", + "constant.numeric", + "entity.name.tag", + "keyword.other", + "keyword.control", + "keyword.other", + "constant.language", + "keyword.other", + "keyword.control", + "keyword.other", + "constant.language" + ], + regex: /([A-Za-z][A-Za-z0-9])( *-> *)(IF|if)( *)(?:([<>]=?|==)( *)((?:-)?)([0-9]+)|(\*[\*A-Za-z0-9]))( *)(THEN|then)( *)(%[LRUDNlrudn])(?:( *)(ELSE|else)( *)(%[LRUDNlrudn]))?/, + comment: "Equality Function" + }, { + token: "entity.name.function", + regex: /[A-Za-z][A-Za-z0-9]/, + comment: "Function cell" + }, { + token: "comment.line.double-slash", + regex: / *\/\/.*/, + comment: "Comment" + }] + }; + this.normalizeRules(); +}; +MazeHighlightRules.metaData = { + fileTypes: ["mz"], + name: "Maze", + scopeName: "source.maze" +}; +oop.inherits(MazeHighlightRules, TextHighlightRules); +exports.MazeHighlightRules = MazeHighlightRules; + +}); + +ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/maze",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/maze_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var MazeHighlightRules = require("./maze_highlight_rules").MazeHighlightRules; +var FoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = MazeHighlightRules; + this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "//"; + this.$id = "ace/mode/maze"; + this.snippetFileId = "ace/snippets/maze"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/maze"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/f2abd10469c6740e9c96cfa9229ec3fe.js b/web/dist/f2abd10469c6740e9c96cfa9229ec3fe.js new file mode 100644 index 00000000..dc21ae3d --- /dev/null +++ b/web/dist/f2abd10469c6740e9c96cfa9229ec3fe.js @@ -0,0 +1,19 @@ +ace.define("ace/theme/cloud9_day.css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-cloud9-day .ace_gutter {\n background: #ECECEC;\n color: #333;\n}\n\n.ace-cloud9-day .ace_print-margin {\n width: 1px;\n background: #e8e8e8;\n}\n\n.ace-cloud9-day .ace_fold {\n background-color: #6B72E6;\n}\n\n.ace-cloud9-day {\n background-color: #FBFBFB;\n color: black;\n}\n\n.ace-cloud9-day .ace_cursor {\n color: black;\n}\n\n.ace-cloud9-day .ace_invisible {\n color: rgb(191, 191, 191);\n}\n\n.ace-cloud9-day .ace_storage,\n.ace-cloud9-day .ace_keyword {\n color: rgb(24, 122, 234);\n}\n\n.ace-cloud9-day .ace_constant {\n color: rgb(197, 6, 11);\n}\n\n.ace-cloud9-day .ace_constant.ace_buildin {\n color: rgb(88, 72, 246);\n}\n\n.ace-cloud9-day .ace_constant.ace_language {\n color: rgb(88, 92, 246);\n}\n\n.ace-cloud9-day .ace_constant.ace_library {\n color: rgb(6, 150, 14);\n}\n\n.ace-cloud9-day .ace_invalid {\n background-color: rgba(255, 0, 0, 0.1);\n color: red;\n}\n\n.ace-cloud9-day .ace_support.ace_function {\n color: rgb(60, 76, 114);\n}\n\n.ace-cloud9-day .ace_support.ace_constant {\n color: rgb(6, 150, 14);\n}\n\n.ace-cloud9-day .ace_support.ace_type,\n.ace-cloud9-day .ace_support.ace_class {\n color: rgb(109, 121, 222);\n}\n\n.ace-cloud9-day .ace_keyword.ace_operator {\n color: rgb(104, 118, 135);\n}\n\n.ace-cloud9-day .ace_string {\n color: rgb(3, 106, 7);\n}\n\n.ace-cloud9-day .ace_comment {\n color: rgb(76, 136, 107);\n}\n\n.ace-cloud9-day .ace_comment.ace_doc {\n color: rgb(0, 102, 255);\n}\n\n.ace-cloud9-day .ace_comment.ace_doc.ace_tag {\n color: rgb(128, 159, 191);\n}\n\n.ace-cloud9-day .ace_constant.ace_numeric {\n color: rgb(0, 0, 205);\n}\n\n.ace-cloud9-day .ace_variable {\n color: rgb(49, 132, 149);\n}\n\n.ace-cloud9-day .ace_xml-pe {\n color: rgb(104, 104, 91);\n}\n\n.ace-cloud9-day .ace_entity.ace_name.ace_function {\n color: #0000A2;\n}\n\n\n.ace-cloud9-day .ace_heading {\n color: rgb(12, 7, 255);\n}\n\n.ace-cloud9-day .ace_list {\n color: rgb(185, 6, 144);\n}\n\n.ace-cloud9-day .ace_meta.ace_tag {\n color: rgb(0, 22, 142);\n}\n\n.ace-cloud9-day .ace_string.ace_regex {\n color: rgb(255, 0, 0)\n}\n\n.ace-cloud9-day .ace_marker-layer .ace_selection {\n background: rgb(181, 213, 255);\n}\n\n.ace-cloud9-day.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px white;\n}\n\n.ace-cloud9-day .ace_marker-layer .ace_step {\n background: rgb(247, 237, 137);\n}\n\n.ace-cloud9-day .ace_marker-layer .ace_stack {\n background: #BAE0A0;\n}\n\n.ace-cloud9-day .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgb(192, 192, 192);\n}\n\n.ace-cloud9-day .ace_marker-layer .ace_active-line {\n background: rgba(0, 0, 0, 0.07);\n}\n\n.ace-cloud9-day .ace_gutter-active-line {\n background-color: #E5E5E5;\n}\n\n.ace-cloud9-day .ace_marker-layer .ace_selected-word {\n background: rgb(250, 250, 255);\n border: 1px solid rgb(200, 200, 250);\n}\n\n.ace-cloud9-day .ace_indent-guide {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;\n}\n\n.ace-cloud9-day .ace_indent-guide-active {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC\") right repeat-y;\n} \n"; + +}); + +ace.define("ace/theme/cloud9_day",["require","exports","module","ace/theme/cloud9_day.css","ace/lib/dom"], function(require, exports, module){"use strict"; +exports.isDark = false; +exports.cssClass = "ace-cloud9-day"; +exports.cssText = require("./cloud9_day.css"); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); + +}); (function() { + ace.require(["ace/theme/cloud9_day"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/f2cbfaebd00ef55ea3d48ff5acaeb844.js b/web/dist/f2cbfaebd00ef55ea3d48ff5acaeb844.js new file mode 100644 index 00000000..a80e73e4 --- /dev/null +++ b/web/dist/f2cbfaebd00ef55ea3d48ff5acaeb844.js @@ -0,0 +1,202 @@ +ace.define("ace/ext/code_lens",["require","exports","module","ace/line_widgets","ace/lib/event","ace/lib/lang","ace/lib/dom","ace/editor","ace/config"], function(require, exports, module){"use strict"; +var LineWidgets = require("../line_widgets").LineWidgets; +var event = require("../lib/event"); +var lang = require("../lib/lang"); +var dom = require("../lib/dom"); +function clearLensElements(renderer) { + var textLayer = renderer.$textLayer; + var lensElements = textLayer.$lenses; + if (lensElements) + lensElements.forEach(function (el) { el.remove(); }); + textLayer.$lenses = null; +} +function renderWidgets(changes, renderer) { + var changed = changes & renderer.CHANGE_LINES + || changes & renderer.CHANGE_FULL + || changes & renderer.CHANGE_SCROLL + || changes & renderer.CHANGE_TEXT; + if (!changed) + return; + var session = renderer.session; + var lineWidgets = renderer.session.lineWidgets; + var textLayer = renderer.$textLayer; + var lensElements = textLayer.$lenses; + if (!lineWidgets) { + if (lensElements) + clearLensElements(renderer); + return; + } + var textCells = renderer.$textLayer.$lines.cells; + var config = renderer.layerConfig; + var padding = renderer.$padding; + if (!lensElements) + lensElements = textLayer.$lenses = []; + var index = 0; + for (var i = 0; i < textCells.length; i++) { + var row = textCells[i].row; + var widget = lineWidgets[row]; + var lenses = widget && widget.lenses; + if (!lenses || !lenses.length) + continue; + var lensContainer = lensElements[index]; + if (!lensContainer) { + lensContainer = lensElements[index] + = dom.buildDom(["div", { class: "ace_codeLens" }], renderer.container); + } + lensContainer.style.height = config.lineHeight + "px"; + index++; + for (var j = 0; j < lenses.length; j++) { + var el = lensContainer.childNodes[2 * j]; + if (!el) { + if (j != 0) + lensContainer.appendChild(dom.createTextNode("\xa0|\xa0")); + el = dom.buildDom(["a"], lensContainer); + } + el.textContent = lenses[j].title; + el.lensCommand = lenses[j]; + } + while (lensContainer.childNodes.length > 2 * j - 1) + lensContainer.lastChild.remove(); + var top = renderer.$cursorLayer.getPixelPosition({ + row: row, + column: 0 + }, true).top - config.lineHeight * widget.rowsAbove - config.offset; + lensContainer.style.top = top + "px"; + var left = renderer.gutterWidth; + var indent = session.getLine(row).search(/\S|$/); + if (indent == -1) + indent = 0; + left += indent * config.characterWidth; + lensContainer.style.paddingLeft = padding + left + "px"; + } + while (index < lensElements.length) + lensElements.pop().remove(); +} +function clearCodeLensWidgets(session) { + if (!session.lineWidgets) + return; + var widgetManager = session.widgetManager; + session.lineWidgets.forEach(function (widget) { + if (widget && widget.lenses) + widgetManager.removeLineWidget(widget); + }); +} +exports.setLenses = function (session, lenses) { + var firstRow = Number.MAX_VALUE; + clearCodeLensWidgets(session); + lenses && lenses.forEach(function (lens) { + var row = lens.start.row; + var column = lens.start.column; + var widget = session.lineWidgets && session.lineWidgets[row]; + if (!widget || !widget.lenses) { + widget = session.widgetManager.$registerLineWidget({ + rowCount: 1, + rowsAbove: 1, + row: row, + column: column, + lenses: [] + }); + } + widget.lenses.push(lens.command); + if (row < firstRow) + firstRow = row; + }); + session._emit("changeFold", { data: { start: { row: firstRow } } }); + return firstRow; +}; +function attachToEditor(editor) { + editor.codeLensProviders = []; + editor.renderer.on("afterRender", renderWidgets); + if (!editor.$codeLensClickHandler) { + editor.$codeLensClickHandler = function (e) { + var command = e.target.lensCommand; + if (!command) + return; + editor.execCommand(command.id, command.arguments); + editor._emit("codeLensClick", e); + }; + event.addListener(editor.container, "click", editor.$codeLensClickHandler, editor); + } + editor.$updateLenses = function () { + var session = editor.session; + if (!session) + return; + if (!session.widgetManager) { + session.widgetManager = new LineWidgets(session); + session.widgetManager.attach(editor); + } + var providersToWaitNum = editor.codeLensProviders.length; + var lenses = []; + editor.codeLensProviders.forEach(function (provider) { + provider.provideCodeLenses(session, function (err, payload) { + if (err) + return; + payload.forEach(function (lens) { + lenses.push(lens); + }); + providersToWaitNum--; + if (providersToWaitNum == 0) { + applyLenses(); + } + }); + }); + function applyLenses() { + var cursor = session.selection.cursor; + var oldRow = session.documentToScreenRow(cursor); + var scrollTop = session.getScrollTop(); + var firstRow = exports.setLenses(session, lenses); + var lastDelta = session.$undoManager && session.$undoManager.$lastDelta; + if (lastDelta && lastDelta.action == "remove" && lastDelta.lines.length > 1) + return; + var row = session.documentToScreenRow(cursor); + var lineHeight = editor.renderer.layerConfig.lineHeight; + var top = session.getScrollTop() + (row - oldRow) * lineHeight; + if (firstRow == 0 && scrollTop < lineHeight / 4 && scrollTop > -lineHeight / 4) { + top = -lineHeight; + } + session.setScrollTop(top); + } + }; + var updateLenses = lang.delayedCall(editor.$updateLenses); + editor.$updateLensesOnInput = function () { + updateLenses.delay(250); + }; + editor.on("input", editor.$updateLensesOnInput); +} +function detachFromEditor(editor) { + editor.off("input", editor.$updateLensesOnInput); + editor.renderer.off("afterRender", renderWidgets); + if (editor.$codeLensClickHandler) + editor.container.removeEventListener("click", editor.$codeLensClickHandler); +} +exports.registerCodeLensProvider = function (editor, codeLensProvider) { + editor.setOption("enableCodeLens", true); + editor.codeLensProviders.push(codeLensProvider); + editor.$updateLensesOnInput(); +}; +exports.clear = function (session) { + exports.setLenses(session, null); +}; +var Editor = require("../editor").Editor; +require("../config").defineOptions(Editor.prototype, "editor", { + enableCodeLens: { + set: function (val) { + if (val) { + attachToEditor(this); + } + else { + detachFromEditor(this); + } + } + } +}); +dom.importCssString("\n.ace_codeLens {\n position: absolute;\n color: #aaa;\n font-size: 88%;\n background: inherit;\n width: 100%;\n display: flex;\n align-items: flex-end;\n pointer-events: none;\n}\n.ace_codeLens > a {\n cursor: pointer;\n pointer-events: auto;\n}\n.ace_codeLens > a:hover {\n color: #0000ff;\n text-decoration: underline;\n}\n.ace_dark > .ace_codeLens > a:hover {\n color: #4e94ce;\n}\n", "codelense.css", false); + +}); (function() { + ace.require(["ace/ext/code_lens"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/f2cfc0e604350e23bfcd7c78165b1411.js b/web/dist/f2cfc0e604350e23bfcd7c78165b1411.js new file mode 100644 index 00000000..45505c0d --- /dev/null +++ b/web/dist/f2cfc0e604350e23bfcd7c78165b1411.js @@ -0,0 +1,9 @@ + +; (function() { + ace.require(["ace/snippets/jsx"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/f3a0f6e7e442de2ae51eddbf4eb98d97.js b/web/dist/f3a0f6e7e442de2ae51eddbf4eb98d97.js new file mode 100644 index 00000000..fce2a9f6 --- /dev/null +++ b/web/dist/f3a0f6e7e442de2ae51eddbf4eb98d97.js @@ -0,0 +1,9 @@ + +; (function() { + ace.require(["ace/mode/text"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/f4acea05f1f36de4fb003f20f7799de6.js b/web/dist/f4acea05f1f36de4fb003f20f7799de6.js new file mode 100644 index 00000000..e56f5516 --- /dev/null +++ b/web/dist/f4acea05f1f36de4fb003f20f7799de6.js @@ -0,0 +1,351 @@ +ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var DocCommentHighlightRules = function () { + this.$rules = { + "start": [{ + token: "comment.doc.tag", + regex: "@[\\w\\d_]+" // TODO: fix email addresses + }, + DocCommentHighlightRules.getTagRule(), + { + defaultToken: "comment.doc", + caseInsensitive: true + }] + }; +}; +oop.inherits(DocCommentHighlightRules, TextHighlightRules); +DocCommentHighlightRules.getTagRule = function (start) { + return { + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" + }; +}; +DocCommentHighlightRules.getStartRule = function (start) { + return { + token: "comment.doc", + regex: "\\/\\*(?=\\*)", + next: start + }; +}; +DocCommentHighlightRules.getEndRule = function (start) { + return { + token: "comment.doc", + regex: "\\*\\/", + next: start + }; +}; +exports.DocCommentHighlightRules = DocCommentHighlightRules; + +}); + +ace.define("ace/mode/scad_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var scadHighlightRules = function () { + var keywordMapper = this.createKeywordMapper({ + "variable.language": "this", + "keyword": "module|if|else|for", + "constant.language": "NULL" + }, "identifier"); + this.$rules = { + "start": [ + { + token: "comment", + regex: "\\/\\/.*$" + }, + DocCommentHighlightRules.getStartRule("start"), + { + token: "comment", + regex: "\\/\\*", + next: "comment" + }, { + token: "string", + regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + }, { + token: "string", + regex: '["].*\\\\$', + next: "qqstring" + }, { + token: "string", + regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + }, { + token: "string", + regex: "['].*\\\\$", + next: "qstring" + }, { + token: "constant.numeric", + regex: "0[xX][0-9a-fA-F]+\\b" + }, { + token: "constant.numeric", + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token: "constant", + regex: "<[a-zA-Z0-9.]+>" + }, { + token: "keyword", + regex: "(?:use|include)" + }, { + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token: "keyword.operator", + regex: "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|new|delete|typeof|void)" + }, { + token: "paren.lparen", + regex: "[[({]" + }, { + token: "paren.rparen", + regex: "[\\])}]" + }, { + token: "text", + regex: "\\s+" + } + ], + "comment": [ + { + token: "comment", + regex: "\\*\\/", + next: "start" + }, { + defaultToken: "comment" + } + ], + "qqstring": [ + { + token: "string", + regex: '(?:(?:\\\\.)|(?:[^"\\\\]))*?"', + next: "start" + }, { + token: "string", + regex: '.+' + } + ], + "qstring": [ + { + token: "string", + regex: "(?:(?:\\\\.)|(?:[^'\\\\]))*?'", + next: "start" + }, { + token: "string", + regex: '.+' + } + ] + }; + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("start")]); +}; +oop.inherits(scadHighlightRules, TextHighlightRules); +exports.scadHighlightRules = scadHighlightRules; + +}); + +ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) + return false; + return /^\s*\}/.test(input); + }; + this.autoOutdent = function (doc, row) { + var line = doc.getLine(row); + var match = line.match(/^(\s*\})/); + if (!match) + return 0; + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; + var indent = this.$getIndent(doc.getLine(openBracePos.row)); + doc.replace(new Range(row, 0, row, column - 1), indent); + }; + this.$getIndent = function (line) { + return line.match(/^\s*/)[0]; + }; +}).call(MatchingBraceOutdent.prototype); +exports.MatchingBraceOutdent = MatchingBraceOutdent; + +}); + +ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/scad",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/scad_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var scadHighlightRules = require("./scad_highlight_rules").scadHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = scadHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CstyleBehaviour(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "//"; + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + var endState = tokenizedLine.state; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + if (state == "start") { + var match = line.match(/^.*[\{\(\[]\s*$/); + if (match) { + indent += tab; + } + } + else if (state == "doc-start") { + if (endState == "start") { + return ""; + } + var match = line.match(/^\s*(\/?)\*/); + if (match) { + if (match[1]) { + indent += " "; + } + indent += "* "; + } + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.$id = "ace/mode/scad"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/scad"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/f4acea05f1f36de4fb003f20f7799de6.js.gz b/web/dist/f4acea05f1f36de4fb003f20f7799de6.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..8a474300a16b9e5cb146db127af6cd389eb56bfd GIT binary patch literal 2841 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 literal 0 HcmV?d00001 diff --git a/web/dist/f50d7c4ce743ce495230d19bd33fefab.js b/web/dist/f50d7c4ce743ce495230d19bd33fefab.js new file mode 100644 index 00000000..34921220 --- /dev/null +++ b/web/dist/f50d7c4ce743ce495230d19bd33fefab.js @@ -0,0 +1,9 @@ + +; (function() { + ace.require(["ace/snippets/space"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/f5292be525fc36a337ce7bfb792070de.js b/web/dist/f5292be525fc36a337ce7bfb792070de.js new file mode 100644 index 00000000..e6db65f5 --- /dev/null +++ b/web/dist/f5292be525fc36a337ce7bfb792070de.js @@ -0,0 +1,9 @@ + +; (function() { + ace.require(["ace/snippets/luapage"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/f58ee8ca364e28090c10b602eef235b1.js b/web/dist/f58ee8ca364e28090c10b602eef235b1.js new file mode 100644 index 00000000..b80e1adb --- /dev/null +++ b/web/dist/f58ee8ca364e28090c10b602eef235b1.js @@ -0,0 +1,16 @@ +ace.define("ace/snippets/sql.snippets",["require","exports","module"], function(require, exports, module){module.exports = "snippet tbl\n\tcreate table ${1:table} (\n\t\t${2:columns}\n\t);\nsnippet col\n\t${1:name}\t${2:type}\t${3:default ''}\t${4:not null}\nsnippet ccol\n\t${1:name}\tvarchar2(${2:size})\t${3:default ''}\t${4:not null}\nsnippet ncol\n\t${1:name}\tnumber\t${3:default 0}\t${4:not null}\nsnippet dcol\n\t${1:name}\tdate\t${3:default sysdate}\t${4:not null}\nsnippet ind\n\tcreate index ${3:$1_$2} on ${1:table}(${2:column});\nsnippet uind\n\tcreate unique index ${1:name} on ${2:table}(${3:column});\nsnippet tblcom\n\tcomment on table ${1:table} is '${2:comment}';\nsnippet colcom\n\tcomment on column ${1:table}.${2:column} is '${3:comment}';\nsnippet addcol\n\talter table ${1:table} add (${2:column} ${3:type});\nsnippet seq\n\tcreate sequence ${1:name} start with ${2:1} increment by ${3:1} minvalue ${4:1};\nsnippet s*\n\tselect * from ${1:table}\n"; + +}); + +ace.define("ace/snippets/sql",["require","exports","module","ace/snippets/sql.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./sql.snippets"); +exports.scope = "sql"; + +}); (function() { + ace.require(["ace/snippets/sql"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/f61f1aaed3f32a7dabd977a6f47ecd5f.js b/web/dist/f61f1aaed3f32a7dabd977a6f47ecd5f.js new file mode 100644 index 00000000..ccdeb06e --- /dev/null +++ b/web/dist/f61f1aaed3f32a7dabd977a6f47ecd5f.js @@ -0,0 +1,9 @@ + +; (function() { + ace.require(["ace/snippets/protobuf"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/f6493d95eaf3c21810134f4fc28531c7.js b/web/dist/f6493d95eaf3c21810134f4fc28531c7.js new file mode 100644 index 00000000..458df1fb --- /dev/null +++ b/web/dist/f6493d95eaf3c21810134f4fc28531c7.js @@ -0,0 +1,1026 @@ +ace.define("ace/occur",["require","exports","module","ace/lib/oop","ace/range","ace/search","ace/edit_session","ace/search_highlight","ace/lib/dom"], function(require, exports, module){"use strict"; +var oop = require("./lib/oop"); +var Range = require("./range").Range; +var Search = require("./search").Search; +var EditSession = require("./edit_session").EditSession; +var SearchHighlight = require("./search_highlight").SearchHighlight; +function Occur() { } +oop.inherits(Occur, Search); +(function () { + this.enter = function (editor, options) { + if (!options.needle) + return false; + var pos = editor.getCursorPosition(); + this.displayOccurContent(editor, options); + var translatedPos = this.originalToOccurPosition(editor.session, pos); + editor.moveCursorToPosition(translatedPos); + return true; + }; + this.exit = function (editor, options) { + var pos = options.translatePosition && editor.getCursorPosition(); + var translatedPos = pos && this.occurToOriginalPosition(editor.session, pos); + this.displayOriginalContent(editor); + if (translatedPos) + editor.moveCursorToPosition(translatedPos); + return true; + }; + this.highlight = function (sess, regexp) { + var hl = sess.$occurHighlight = sess.$occurHighlight || sess.addDynamicMarker(new SearchHighlight(null, "ace_occur-highlight", "text")); + hl.setRegexp(regexp); + sess._emit("changeBackMarker"); // force highlight layer redraw + }; + this.displayOccurContent = function (editor, options) { + this.$originalSession = editor.session; + var found = this.matchingLines(editor.session, options); + var lines = found.map(function (foundLine) { return foundLine.content; }); + var occurSession = new EditSession(lines.join('\n')); + occurSession.$occur = this; + occurSession.$occurMatchingLines = found; + editor.setSession(occurSession); + this.$useEmacsStyleLineStart = this.$originalSession.$useEmacsStyleLineStart; + occurSession.$useEmacsStyleLineStart = this.$useEmacsStyleLineStart; + this.highlight(occurSession, options.re); + occurSession._emit('changeBackMarker'); + }; + this.displayOriginalContent = function (editor) { + editor.setSession(this.$originalSession); + this.$originalSession.$useEmacsStyleLineStart = this.$useEmacsStyleLineStart; + }; + this.originalToOccurPosition = function (session, pos) { + var lines = session.$occurMatchingLines; + var nullPos = { row: 0, column: 0 }; + if (!lines) + return nullPos; + for (var i = 0; i < lines.length; i++) { + if (lines[i].row === pos.row) + return { row: i, column: pos.column }; + } + return nullPos; + }; + this.occurToOriginalPosition = function (session, pos) { + var lines = session.$occurMatchingLines; + if (!lines || !lines[pos.row]) + return pos; + return { row: lines[pos.row].row, column: pos.column }; + }; + this.matchingLines = function (session, options) { + options = oop.mixin({}, options); + if (!session || !options.needle) + return []; + var search = new Search(); + search.set(options); + return search.findAll(session).reduce(function (lines, range) { + var row = range.start.row; + var last = lines[lines.length - 1]; + return last && last.row === row ? + lines : + lines.concat({ row: row, content: session.getLine(row) }); + }, []); + }; +}).call(Occur.prototype); +var dom = require('./lib/dom'); +dom.importCssString(".ace_occur-highlight {\n\ + border-radius: 4px;\n\ + background-color: rgba(87, 255, 8, 0.25);\n\ + position: absolute;\n\ + z-index: 4;\n\ + box-sizing: border-box;\n\ + box-shadow: 0 0 4px rgb(91, 255, 50);\n\ +}\n\ +.ace_dark .ace_occur-highlight {\n\ + background-color: rgb(80, 140, 85);\n\ + box-shadow: 0 0 4px rgb(60, 120, 70);\n\ +}\n", "incremental-occur-highlighting", false); +exports.Occur = Occur; + +}); + +ace.define("ace/commands/occur_commands",["require","exports","module","ace/config","ace/occur","ace/keyboard/hash_handler","ace/lib/oop"], function(require, exports, module){var config = require("../config"), Occur = require("../occur").Occur; +var occurStartCommand = { + name: "occur", + exec: function (editor, options) { + var alreadyInOccur = !!editor.session.$occur; + var occurSessionActive = new Occur().enter(editor, options); + if (occurSessionActive && !alreadyInOccur) + OccurKeyboardHandler.installIn(editor); + }, + readOnly: true +}; +var occurCommands = [{ + name: "occurexit", + bindKey: 'esc|Ctrl-G', + exec: function (editor) { + var occur = editor.session.$occur; + if (!occur) + return; + occur.exit(editor, {}); + if (!editor.session.$occur) + OccurKeyboardHandler.uninstallFrom(editor); + }, + readOnly: true + }, { + name: "occuraccept", + bindKey: 'enter', + exec: function (editor) { + var occur = editor.session.$occur; + if (!occur) + return; + occur.exit(editor, { translatePosition: true }); + if (!editor.session.$occur) + OccurKeyboardHandler.uninstallFrom(editor); + }, + readOnly: true + }]; +var HashHandler = require("../keyboard/hash_handler").HashHandler; +var oop = require("../lib/oop"); +function OccurKeyboardHandler() { } +oop.inherits(OccurKeyboardHandler, HashHandler); +(function () { + this.isOccurHandler = true; + this.attach = function (editor) { + HashHandler.call(this, occurCommands, editor.commands.platform); + this.$editor = editor; + }; + var handleKeyboard$super = this.handleKeyboard; + this.handleKeyboard = function (data, hashId, key, keyCode) { + var cmd = handleKeyboard$super.call(this, data, hashId, key, keyCode); + return (cmd && cmd.command) ? cmd : undefined; + }; +}).call(OccurKeyboardHandler.prototype); +OccurKeyboardHandler.installIn = function (editor) { + var handler = new this(); + editor.keyBinding.addKeyboardHandler(handler); + editor.commands.addCommands(occurCommands); +}; +OccurKeyboardHandler.uninstallFrom = function (editor) { + editor.commands.removeCommands(occurCommands); + var handler = editor.getKeyboardHandler(); + if (handler.isOccurHandler) + editor.keyBinding.removeKeyboardHandler(handler); +}; +exports.occurStartCommand = occurStartCommand; + +}); + +ace.define("ace/commands/incremental_search_commands",["require","exports","module","ace/config","ace/lib/oop","ace/keyboard/hash_handler","ace/commands/occur_commands"], function(require, exports, module){var config = require("../config"); +var oop = require("../lib/oop"); +var HashHandler = require("../keyboard/hash_handler").HashHandler; +var occurStartCommand = require("./occur_commands").occurStartCommand; +exports.iSearchStartCommands = [{ + name: "iSearch", + bindKey: { win: "Ctrl-F", mac: "Command-F" }, + exec: function (editor, options) { + config.loadModule(["core", "ace/incremental_search"], function (e) { + var iSearch = e.iSearch = e.iSearch || new e.IncrementalSearch(); + iSearch.activate(editor, options.backwards); + if (options.jumpToFirstMatch) + iSearch.next(options); + }); + }, + readOnly: true + }, { + name: "iSearchBackwards", + exec: function (editor, jumpToNext) { editor.execCommand('iSearch', { backwards: true }); }, + readOnly: true + }, { + name: "iSearchAndGo", + bindKey: { win: "Ctrl-K", mac: "Command-G" }, + exec: function (editor, jumpToNext) { editor.execCommand('iSearch', { jumpToFirstMatch: true, useCurrentOrPrevSearch: true }); }, + readOnly: true + }, { + name: "iSearchBackwardsAndGo", + bindKey: { win: "Ctrl-Shift-K", mac: "Command-Shift-G" }, + exec: function (editor) { editor.execCommand('iSearch', { jumpToFirstMatch: true, backwards: true, useCurrentOrPrevSearch: true }); }, + readOnly: true + }]; +exports.iSearchCommands = [{ + name: "restartSearch", + bindKey: { win: "Ctrl-F", mac: "Command-F" }, + exec: function (iSearch) { + iSearch.cancelSearch(true); + } + }, { + name: "searchForward", + bindKey: { win: "Ctrl-S|Ctrl-K", mac: "Ctrl-S|Command-G" }, + exec: function (iSearch, options) { + options.useCurrentOrPrevSearch = true; + iSearch.next(options); + } + }, { + name: "searchBackward", + bindKey: { win: "Ctrl-R|Ctrl-Shift-K", mac: "Ctrl-R|Command-Shift-G" }, + exec: function (iSearch, options) { + options.useCurrentOrPrevSearch = true; + options.backwards = true; + iSearch.next(options); + } + }, { + name: "extendSearchTerm", + exec: function (iSearch, string) { + iSearch.addString(string); + } + }, { + name: "extendSearchTermSpace", + bindKey: "space", + exec: function (iSearch) { iSearch.addString(' '); } + }, { + name: "shrinkSearchTerm", + bindKey: "backspace", + exec: function (iSearch) { + iSearch.removeChar(); + } + }, { + name: 'confirmSearch', + bindKey: 'return', + exec: function (iSearch) { iSearch.deactivate(); } + }, { + name: 'cancelSearch', + bindKey: 'esc|Ctrl-G', + exec: function (iSearch) { iSearch.deactivate(true); } + }, { + name: 'occurisearch', + bindKey: 'Ctrl-O', + exec: function (iSearch) { + var options = oop.mixin({}, iSearch.$options); + iSearch.deactivate(); + occurStartCommand.exec(iSearch.$editor, options); + } + }, { + name: "yankNextWord", + bindKey: "Ctrl-w", + exec: function (iSearch) { + var ed = iSearch.$editor, range = ed.selection.getRangeOfMovements(function (sel) { sel.moveCursorWordRight(); }), string = ed.session.getTextRange(range); + iSearch.addString(string); + } + }, { + name: "yankNextChar", + bindKey: "Ctrl-Alt-y", + exec: function (iSearch) { + var ed = iSearch.$editor, range = ed.selection.getRangeOfMovements(function (sel) { sel.moveCursorRight(); }), string = ed.session.getTextRange(range); + iSearch.addString(string); + } + }, { + name: 'recenterTopBottom', + bindKey: 'Ctrl-l', + exec: function (iSearch) { iSearch.$editor.execCommand('recenterTopBottom'); } + }, { + name: 'selectAllMatches', + bindKey: 'Ctrl-space', + exec: function (iSearch) { + var ed = iSearch.$editor, hl = ed.session.$isearchHighlight, ranges = hl && hl.cache ? hl.cache + .reduce(function (ranges, ea) { + return ranges.concat(ea ? ea : []); + }, []) : []; + iSearch.deactivate(false); + ranges.forEach(ed.selection.addRange.bind(ed.selection)); + } + }, { + name: 'searchAsRegExp', + bindKey: 'Alt-r', + exec: function (iSearch) { + iSearch.convertNeedleToRegExp(); + } + }].map(function (cmd) { + cmd.readOnly = true; + cmd.isIncrementalSearchCommand = true; + cmd.scrollIntoView = "animate-cursor"; + return cmd; +}); +function IncrementalSearchKeyboardHandler(iSearch) { + this.$iSearch = iSearch; +} +oop.inherits(IncrementalSearchKeyboardHandler, HashHandler); +(function () { + this.attach = function (editor) { + var iSearch = this.$iSearch; + HashHandler.call(this, exports.iSearchCommands, editor.commands.platform); + this.$commandExecHandler = editor.commands.on('exec', function (e) { + if (!e.command.isIncrementalSearchCommand) + return iSearch.deactivate(); + e.stopPropagation(); + e.preventDefault(); + var scrollTop = editor.session.getScrollTop(); + var result = e.command.exec(iSearch, e.args || {}); + editor.renderer.scrollCursorIntoView(null, 0.5); + editor.renderer.animateScrolling(scrollTop); + return result; + }); + }; + this.detach = function (editor) { + if (!this.$commandExecHandler) + return; + editor.commands.off('exec', this.$commandExecHandler); + delete this.$commandExecHandler; + }; + var handleKeyboard$super = this.handleKeyboard; + this.handleKeyboard = function (data, hashId, key, keyCode) { + if (((hashId === 1 /*ctrl*/ || hashId === 8 /*command*/) && key === 'v') + || (hashId === 1 /*ctrl*/ && key === 'y')) + return null; + var cmd = handleKeyboard$super.call(this, data, hashId, key, keyCode); + if (cmd && cmd.command) { + return cmd; + } + if (hashId == -1) { + var extendCmd = this.commands.extendSearchTerm; + if (extendCmd) { + return { command: extendCmd, args: key }; + } + } + return false; + }; +}).call(IncrementalSearchKeyboardHandler.prototype); +exports.IncrementalSearchKeyboardHandler = IncrementalSearchKeyboardHandler; + +}); + +ace.define("ace/incremental_search",["require","exports","module","ace/lib/oop","ace/range","ace/search","ace/search_highlight","ace/commands/incremental_search_commands","ace/lib/dom","ace/commands/command_manager","ace/editor","ace/config"], function(require, exports, module){"use strict"; +var oop = require("./lib/oop"); +var Range = require("./range").Range; +var Search = require("./search").Search; +var SearchHighlight = require("./search_highlight").SearchHighlight; +var iSearchCommandModule = require("./commands/incremental_search_commands"); +var ISearchKbd = iSearchCommandModule.IncrementalSearchKeyboardHandler; +function IncrementalSearch() { + this.$options = { wrap: false, skipCurrent: false }; + this.$keyboardHandler = new ISearchKbd(this); +} +oop.inherits(IncrementalSearch, Search); +function isRegExp(obj) { + return obj instanceof RegExp; +} +function regExpToObject(re) { + var string = String(re), start = string.indexOf('/'), flagStart = string.lastIndexOf('/'); + return { + expression: string.slice(start + 1, flagStart), + flags: string.slice(flagStart + 1) + }; +} +function stringToRegExp(string, flags) { + try { + return new RegExp(string, flags); + } + catch (e) { + return string; + } +} +function objectToRegExp(obj) { + return stringToRegExp(obj.expression, obj.flags); +} +(function () { + this.activate = function (editor, backwards) { + this.$editor = editor; + this.$startPos = this.$currentPos = editor.getCursorPosition(); + this.$options.needle = ''; + this.$options.backwards = backwards; + editor.keyBinding.addKeyboardHandler(this.$keyboardHandler); + this.$originalEditorOnPaste = editor.onPaste; + editor.onPaste = this.onPaste.bind(this); + this.$mousedownHandler = editor.on('mousedown', this.onMouseDown.bind(this)); + this.selectionFix(editor); + this.statusMessage(true); + }; + this.deactivate = function (reset) { + this.cancelSearch(reset); + var editor = this.$editor; + editor.keyBinding.removeKeyboardHandler(this.$keyboardHandler); + if (this.$mousedownHandler) { + editor.off('mousedown', this.$mousedownHandler); + delete this.$mousedownHandler; + } + editor.onPaste = this.$originalEditorOnPaste; + this.message(''); + }; + this.selectionFix = function (editor) { + if (editor.selection.isEmpty() && !editor.session.$emacsMark) { + editor.clearSelection(); + } + }; + this.highlight = function (regexp) { + var sess = this.$editor.session, hl = sess.$isearchHighlight = sess.$isearchHighlight || sess.addDynamicMarker(new SearchHighlight(null, "ace_isearch-result", "text")); + hl.setRegexp(regexp); + sess._emit("changeBackMarker"); // force highlight layer redraw + }; + this.cancelSearch = function (reset) { + var e = this.$editor; + this.$prevNeedle = this.$options.needle; + this.$options.needle = ''; + if (reset) { + e.moveCursorToPosition(this.$startPos); + this.$currentPos = this.$startPos; + } + else { + e.pushEmacsMark && e.pushEmacsMark(this.$startPos, false); + } + this.highlight(null); + return Range.fromPoints(this.$currentPos, this.$currentPos); + }; + this.highlightAndFindWithNeedle = function (moveToNext, needleUpdateFunc) { + if (!this.$editor) + return null; + var options = this.$options; + if (needleUpdateFunc) { + options.needle = needleUpdateFunc.call(this, options.needle || '') || ''; + } + if (options.needle.length === 0) { + this.statusMessage(true); + return this.cancelSearch(true); + } + options.start = this.$currentPos; + var session = this.$editor.session, found = this.find(session), shouldSelect = this.$editor.emacsMark ? + !!this.$editor.emacsMark() : !this.$editor.selection.isEmpty(); + if (found) { + if (options.backwards) + found = Range.fromPoints(found.end, found.start); + this.$editor.selection.setRange(Range.fromPoints(shouldSelect ? this.$startPos : found.end, found.end)); + if (moveToNext) + this.$currentPos = found.end; + this.highlight(options.re); + } + this.statusMessage(found); + return found; + }; + this.addString = function (s) { + return this.highlightAndFindWithNeedle(false, function (needle) { + if (!isRegExp(needle)) + return needle + s; + var reObj = regExpToObject(needle); + reObj.expression += s; + return objectToRegExp(reObj); + }); + }; + this.removeChar = function (c) { + return this.highlightAndFindWithNeedle(false, function (needle) { + if (!isRegExp(needle)) + return needle.substring(0, needle.length - 1); + var reObj = regExpToObject(needle); + reObj.expression = reObj.expression.substring(0, reObj.expression.length - 1); + return objectToRegExp(reObj); + }); + }; + this.next = function (options) { + options = options || {}; + this.$options.backwards = !!options.backwards; + this.$currentPos = this.$editor.getCursorPosition(); + return this.highlightAndFindWithNeedle(true, function (needle) { + return options.useCurrentOrPrevSearch && needle.length === 0 ? + this.$prevNeedle || '' : needle; + }); + }; + this.onMouseDown = function (evt) { + this.deactivate(); + return true; + }; + this.onPaste = function (text) { + this.addString(text); + }; + this.convertNeedleToRegExp = function () { + return this.highlightAndFindWithNeedle(false, function (needle) { + return isRegExp(needle) ? needle : stringToRegExp(needle, 'ig'); + }); + }; + this.convertNeedleToString = function () { + return this.highlightAndFindWithNeedle(false, function (needle) { + return isRegExp(needle) ? regExpToObject(needle).expression : needle; + }); + }; + this.statusMessage = function (found) { + var options = this.$options, msg = ''; + msg += options.backwards ? 'reverse-' : ''; + msg += 'isearch: ' + options.needle; + msg += found ? '' : ' (not found)'; + this.message(msg); + }; + this.message = function (msg) { + if (this.$editor.showCommandLine) { + this.$editor.showCommandLine(msg); + this.$editor.focus(); + } + }; +}).call(IncrementalSearch.prototype); +exports.IncrementalSearch = IncrementalSearch; +var dom = require('./lib/dom'); +dom.importCssString("\n.ace_marker-layer .ace_isearch-result {\n position: absolute;\n z-index: 6;\n box-sizing: border-box;\n}\ndiv.ace_isearch-result {\n border-radius: 4px;\n background-color: rgba(255, 200, 0, 0.5);\n box-shadow: 0 0 4px rgb(255, 200, 0);\n}\n.ace_dark div.ace_isearch-result {\n background-color: rgb(100, 110, 160);\n box-shadow: 0 0 4px rgb(80, 90, 140);\n}", "incremental-search-highlighting", false); +var commands = require("./commands/command_manager"); +(function () { + this.setupIncrementalSearch = function (editor, val) { + if (this.usesIncrementalSearch == val) + return; + this.usesIncrementalSearch = val; + var iSearchCommands = iSearchCommandModule.iSearchStartCommands; + var method = val ? 'addCommands' : 'removeCommands'; + this[method](iSearchCommands); + }; +}).call(commands.CommandManager.prototype); +var Editor = require("./editor").Editor; +require("./config").defineOptions(Editor.prototype, "editor", { + useIncrementalSearch: { + set: function (val) { + this.keyBinding.$handlers.forEach(function (handler) { + if (handler.setupIncrementalSearch) { + handler.setupIncrementalSearch(this, val); + } + }); + this._emit('incrementalSearchSettingChanged', { isEnabled: val }); + } + } +}); + +}); + +ace.define("ace/keyboard/emacs",["require","exports","module","ace/lib/dom","ace/incremental_search","ace/commands/incremental_search_commands","ace/keyboard/hash_handler","ace/lib/keys"], function(require, exports, module){"use strict"; +var dom = require("../lib/dom"); +require("../incremental_search"); +var iSearchCommandModule = require("../commands/incremental_search_commands"); +var HashHandler = require("./hash_handler").HashHandler; +exports.handler = new HashHandler(); +exports.handler.isEmacs = true; +exports.handler.$id = "ace/keyboard/emacs"; +dom.importCssString("\n.emacs-mode .ace_cursor{\n border: 1px rgba(50,250,50,0.8) solid!important;\n box-sizing: border-box!important;\n background-color: rgba(0,250,0,0.9);\n opacity: 0.5;\n}\n.emacs-mode .ace_hidden-cursors .ace_cursor{\n opacity: 1;\n background-color: transparent;\n}\n.emacs-mode .ace_overwrite-cursors .ace_cursor {\n opacity: 1;\n background-color: transparent;\n border-width: 0 0 2px 2px !important;\n}\n.emacs-mode .ace_text-layer {\n z-index: 4\n}\n.emacs-mode .ace_cursor-layer {\n z-index: 2\n}", 'emacsMode'); +var $formerLongWords; +var $formerLineStart; +exports.handler.attach = function (editor) { + $formerLongWords = editor.session.$selectLongWords; + editor.session.$selectLongWords = true; + $formerLineStart = editor.session.$useEmacsStyleLineStart; + editor.session.$useEmacsStyleLineStart = true; + editor.session.$emacsMark = null; // the active mark + editor.session.$emacsMarkRing = editor.session.$emacsMarkRing || []; + editor.emacsMark = function () { + return this.session.$emacsMark; + }; + editor.setEmacsMark = function (p) { + this.session.$emacsMark = p; + }; + editor.pushEmacsMark = function (p, activate) { + var prevMark = this.session.$emacsMark; + if (prevMark) + this.session.$emacsMarkRing.push(prevMark); + if (!p || activate) + this.setEmacsMark(p); + else + this.session.$emacsMarkRing.push(p); + }; + editor.popEmacsMark = function () { + var mark = this.emacsMark(); + if (mark) { + this.setEmacsMark(null); + return mark; + } + return this.session.$emacsMarkRing.pop(); + }; + editor.getLastEmacsMark = function (p) { + return this.session.$emacsMark || this.session.$emacsMarkRing.slice(-1)[0]; + }; + editor.emacsMarkForSelection = function (replacement) { + var sel = this.selection, multiRangeLength = this.multiSelect ? + this.multiSelect.getAllRanges().length : 1, selIndex = sel.index || 0, markRing = this.session.$emacsMarkRing, markIndex = markRing.length - (multiRangeLength - selIndex), lastMark = markRing[markIndex] || sel.anchor; + if (replacement) { + markRing.splice(markIndex, 1, "row" in replacement && "column" in replacement ? + replacement : undefined); + } + return lastMark; + }; + editor.on("click", $resetMarkMode); + editor.on("changeSession", $kbSessionChange); + editor.renderer.$blockCursor = true; + editor.setStyle("emacs-mode"); + editor.commands.addCommands(commands); + exports.handler.platform = editor.commands.platform; + editor.$emacsModeHandler = this; + editor.on('copy', this.onCopy); + editor.on('paste', this.onPaste); +}; +exports.handler.detach = function (editor) { + editor.renderer.$blockCursor = false; + editor.session.$selectLongWords = $formerLongWords; + editor.session.$useEmacsStyleLineStart = $formerLineStart; + editor.off("click", $resetMarkMode); + editor.off("changeSession", $kbSessionChange); + editor.unsetStyle("emacs-mode"); + editor.commands.removeCommands(commands); + editor.off('copy', this.onCopy); + editor.off('paste', this.onPaste); + editor.$emacsModeHandler = null; +}; +var $kbSessionChange = function (e) { + if (e.oldSession) { + e.oldSession.$selectLongWords = $formerLongWords; + e.oldSession.$useEmacsStyleLineStart = $formerLineStart; + } + $formerLongWords = e.session.$selectLongWords; + e.session.$selectLongWords = true; + $formerLineStart = e.session.$useEmacsStyleLineStart; + e.session.$useEmacsStyleLineStart = true; + if (!e.session.hasOwnProperty('$emacsMark')) + e.session.$emacsMark = null; + if (!e.session.hasOwnProperty('$emacsMarkRing')) + e.session.$emacsMarkRing = []; +}; +var $resetMarkMode = function (e) { + e.editor.session.$emacsMark = null; +}; +var keys = require("../lib/keys").KEY_MODS; +var eMods = { C: "ctrl", S: "shift", M: "alt", CMD: "command" }; +var combinations = ["C-S-M-CMD", + "S-M-CMD", "C-M-CMD", "C-S-CMD", "C-S-M", + "M-CMD", "S-CMD", "S-M", "C-CMD", "C-M", "C-S", + "CMD", "M", "S", "C"]; +combinations.forEach(function (c) { + var hashId = 0; + c.split("-").forEach(function (c) { + hashId = hashId | keys[eMods[c]]; + }); + eMods[hashId] = c.toLowerCase() + "-"; +}); +exports.handler.onCopy = function (e, editor) { + if (editor.$handlesEmacsOnCopy) + return; + editor.$handlesEmacsOnCopy = true; + exports.handler.commands.killRingSave.exec(editor); + editor.$handlesEmacsOnCopy = false; +}; +exports.handler.onPaste = function (e, editor) { + editor.pushEmacsMark(editor.getCursorPosition()); +}; +exports.handler.bindKey = function (key, command) { + if (typeof key == "object") + key = key[this.platform]; + if (!key) + return; + var ckb = this.commandKeyBinding; + key.split("|").forEach(function (keyPart) { + keyPart = keyPart.toLowerCase(); + ckb[keyPart] = command; + var keyParts = keyPart.split(" ").slice(0, -1); + keyParts.reduce(function (keyMapKeys, keyPart, i) { + var prefix = keyMapKeys[i - 1] ? keyMapKeys[i - 1] + ' ' : ''; + return keyMapKeys.concat([prefix + keyPart]); + }, []).forEach(function (keyPart) { + if (!ckb[keyPart]) + ckb[keyPart] = "null"; + }); + }, this); +}; +exports.handler.getStatusText = function (editor, data) { + var str = ""; + if (data.count) + str += data.count; + if (data.keyChain) + str += " " + data.keyChain; + return str; +}; +exports.handler.handleKeyboard = function (data, hashId, key, keyCode) { + if (keyCode === -1) + return undefined; + var editor = data.editor; + editor._signal("changeStatus"); + if (hashId == -1) { + editor.pushEmacsMark(); + if (data.count) { + var str = new Array(data.count + 1).join(key); + data.count = null; + return { command: "insertstring", args: str }; + } + } + var modifier = eMods[hashId]; + if (modifier == "c-" || data.count) { + var count = parseInt(key[key.length - 1]); + if (typeof count === 'number' && !isNaN(count)) { + data.count = Math.max(data.count, 0) || 0; + data.count = 10 * data.count + count; + return { command: "null" }; + } + } + if (modifier) + key = modifier + key; + if (data.keyChain) + key = data.keyChain += " " + key; + var command = this.commandKeyBinding[key]; + data.keyChain = command == "null" ? key : ""; + if (!command) + return undefined; + if (command === "null") + return { command: "null" }; + if (command === "universalArgument") { + data.count = -4; + return { command: "null" }; + } + var args; + if (typeof command !== "string") { + args = command.args; + if (command.command) + command = command.command; + if (command === "goorselect") { + command = editor.emacsMark() ? args[1] : args[0]; + args = null; + } + } + if (typeof command === "string") { + if (command === "insertstring" || + command === "splitline" || + command === "togglecomment") { + editor.pushEmacsMark(); + } + command = this.commands[command] || editor.commands.commands[command]; + if (!command) + return undefined; + } + if (!command.readOnly && !command.isYank) + data.lastCommand = null; + if (!command.readOnly && editor.emacsMark()) + editor.setEmacsMark(null); + if (data.count) { + var count = data.count; + data.count = 0; + if (!command || !command.handlesCount) { + return { + args: args, + command: { + exec: function (editor, args) { + for (var i = 0; i < count; i++) + command.exec(editor, args); + }, + multiSelectAction: command.multiSelectAction + } + }; + } + else { + if (!args) + args = {}; + if (typeof args === 'object') + args.count = count; + } + } + return { command: command, args: args }; +}; +exports.emacsKeys = { + "Up|C-p": { command: "goorselect", args: ["golineup", "selectup"] }, + "Down|C-n": { command: "goorselect", args: ["golinedown", "selectdown"] }, + "Left|C-b": { command: "goorselect", args: ["gotoleft", "selectleft"] }, + "Right|C-f": { command: "goorselect", args: ["gotoright", "selectright"] }, + "C-Left|M-b": { command: "goorselect", args: ["gotowordleft", "selectwordleft"] }, + "C-Right|M-f": { command: "goorselect", args: ["gotowordright", "selectwordright"] }, + "Home|C-a": { command: "goorselect", args: ["gotolinestart", "selecttolinestart"] }, + "End|C-e": { command: "goorselect", args: ["gotolineend", "selecttolineend"] }, + "C-Home|S-M-,": { command: "goorselect", args: ["gotostart", "selecttostart"] }, + "C-End|S-M-.": { command: "goorselect", args: ["gotoend", "selecttoend"] }, + "S-Up|S-C-p": "selectup", + "S-Down|S-C-n": "selectdown", + "S-Left|S-C-b": "selectleft", + "S-Right|S-C-f": "selectright", + "S-C-Left|S-M-b": "selectwordleft", + "S-C-Right|S-M-f": "selectwordright", + "S-Home|S-C-a": "selecttolinestart", + "S-End|S-C-e": "selecttolineend", + "S-C-Home": "selecttostart", + "S-C-End": "selecttoend", + "C-l": "recenterTopBottom", + "M-s": "centerselection", + "M-g": "gotoline", + "C-x C-p": "selectall", + "C-Down": { command: "goorselect", args: ["gotopagedown", "selectpagedown"] }, + "C-Up": { command: "goorselect", args: ["gotopageup", "selectpageup"] }, + "PageDown|C-v": { command: "goorselect", args: ["gotopagedown", "selectpagedown"] }, + "PageUp|M-v": { command: "goorselect", args: ["gotopageup", "selectpageup"] }, + "S-C-Down": "selectpagedown", + "S-C-Up": "selectpageup", + "C-s": "iSearch", + "C-r": "iSearchBackwards", + "M-C-s": "findnext", + "M-C-r": "findprevious", + "S-M-5": "replace", + "Backspace": "backspace", + "Delete|C-d": "del", + "Return|C-m": { command: "insertstring", args: "\n" }, + "C-o": "splitline", + "M-d|C-Delete": { command: "killWord", args: "right" }, + "C-Backspace|M-Backspace|M-Delete": { command: "killWord", args: "left" }, + "C-k": "killLine", + "C-y|S-Delete": "yank", + "M-y": "yankRotate", + "C-g": "keyboardQuit", + "C-w|C-S-W": "killRegion", + "M-w": "killRingSave", + "C-Space": "setMark", + "C-x C-x": "exchangePointAndMark", + "C-t": "transposeletters", + "M-u": "touppercase", + "M-l": "tolowercase", + "M-/": "autocomplete", + "C-u": "universalArgument", + "M-;": "togglecomment", + "C-/|C-x u|S-C--|C-z": "undo", + "S-C-/|S-C-x u|C--|S-C-z": "redo", + "C-x r": "selectRectangularRegion", + "M-x": { command: "focusCommandLine", args: "M-x " } +}; +exports.handler.bindKeys(exports.emacsKeys); +exports.handler.addCommands({ + recenterTopBottom: function (editor) { + var renderer = editor.renderer; + var pos = renderer.$cursorLayer.getPixelPosition(); + var h = renderer.$size.scrollerHeight - renderer.lineHeight; + var scrollTop = renderer.scrollTop; + if (Math.abs(pos.top - scrollTop) < 2) { + scrollTop = pos.top - h; + } + else if (Math.abs(pos.top - scrollTop - h * 0.5) < 2) { + scrollTop = pos.top; + } + else { + scrollTop = pos.top - h * 0.5; + } + editor.session.setScrollTop(scrollTop); + }, + selectRectangularRegion: function (editor) { + editor.multiSelect.toggleBlockSelection(); + }, + setMark: { + exec: function (editor, args) { + if (args && args.count) { + if (editor.inMultiSelectMode) + editor.forEachSelection(moveToMark); + else + moveToMark(); + moveToMark(); + return; + } + var mark = editor.emacsMark(), ranges = editor.selection.getAllRanges(), rangePositions = ranges.map(function (r) { return { row: r.start.row, column: r.start.column }; }), transientMarkModeActive = true, hasNoSelection = ranges.every(function (range) { return range.isEmpty(); }); + if (transientMarkModeActive && (mark || !hasNoSelection)) { + if (editor.inMultiSelectMode) + editor.forEachSelection({ exec: editor.clearSelection.bind(editor) }); + else + editor.clearSelection(); + if (mark) + editor.pushEmacsMark(null); + return; + } + if (!mark) { + rangePositions.forEach(function (pos) { editor.pushEmacsMark(pos); }); + editor.setEmacsMark(rangePositions[rangePositions.length - 1]); + return; + } + function moveToMark() { + var mark = editor.popEmacsMark(); + mark && editor.moveCursorToPosition(mark); + } + }, + readOnly: true, + handlesCount: true + }, + exchangePointAndMark: { + exec: function exchangePointAndMark$exec(editor, args) { + var sel = editor.selection; + if (!args.count && !sel.isEmpty()) { // just invert selection + sel.setSelectionRange(sel.getRange(), !sel.isBackwards()); + return; + } + if (args.count) { // replace mark and point + var pos = { row: sel.lead.row, column: sel.lead.column }; + sel.clearSelection(); + sel.moveCursorToPosition(editor.emacsMarkForSelection(pos)); + } + else { // create selection to last mark + sel.selectToPosition(editor.emacsMarkForSelection()); + } + }, + readOnly: true, + handlesCount: true, + multiSelectAction: "forEach" + }, + killWord: { + exec: function (editor, dir) { + editor.clearSelection(); + if (dir == "left") + editor.selection.selectWordLeft(); + else + editor.selection.selectWordRight(); + var range = editor.getSelectionRange(); + var text = editor.session.getTextRange(range); + exports.killRing.add(text); + editor.session.remove(range); + editor.clearSelection(); + }, + multiSelectAction: "forEach" + }, + killLine: function (editor) { + editor.pushEmacsMark(null); + editor.clearSelection(); + var range = editor.getSelectionRange(); + var line = editor.session.getLine(range.start.row); + range.end.column = line.length; + line = line.substr(range.start.column); + var foldLine = editor.session.getFoldLine(range.start.row); + if (foldLine && range.end.row != foldLine.end.row) { + range.end.row = foldLine.end.row; + line = "x"; + } + if (/^\s*$/.test(line)) { + range.end.row++; + line = editor.session.getLine(range.end.row); + range.end.column = /^\s*$/.test(line) ? line.length : 0; + } + var text = editor.session.getTextRange(range); + if (editor.prevOp.command == this) + exports.killRing.append(text); + else + exports.killRing.add(text); + editor.session.remove(range); + editor.clearSelection(); + }, + yank: function (editor) { + editor.onPaste(exports.killRing.get() || ''); + editor.keyBinding.$data.lastCommand = "yank"; + }, + yankRotate: function (editor) { + if (editor.keyBinding.$data.lastCommand != "yank") + return; + editor.undo(); + editor.session.$emacsMarkRing.pop(); // also undo recording mark + editor.onPaste(exports.killRing.rotate()); + editor.keyBinding.$data.lastCommand = "yank"; + }, + killRegion: { + exec: function (editor) { + exports.killRing.add(editor.getCopyText()); + editor.commands.byName.cut.exec(editor); + editor.setEmacsMark(null); + }, + readOnly: true, + multiSelectAction: "forEach" + }, + killRingSave: { + exec: function (editor) { + editor.$handlesEmacsOnCopy = true; + var marks = editor.session.$emacsMarkRing.slice(), deselectedMarks = []; + exports.killRing.add(editor.getCopyText()); + setTimeout(function () { + function deselect() { + var sel = editor.selection, range = sel.getRange(), pos = sel.isBackwards() ? range.end : range.start; + deselectedMarks.push({ row: pos.row, column: pos.column }); + sel.clearSelection(); + } + editor.$handlesEmacsOnCopy = false; + if (editor.inMultiSelectMode) + editor.forEachSelection({ exec: deselect }); + else + deselect(); + editor.setEmacsMark(null); + editor.session.$emacsMarkRing = marks.concat(deselectedMarks.reverse()); + }, 0); + }, + readOnly: true + }, + keyboardQuit: function (editor) { + editor.selection.clearSelection(); + editor.setEmacsMark(null); + editor.keyBinding.$data.count = null; + }, + focusCommandLine: function (editor, arg) { + if (editor.showCommandLine) + editor.showCommandLine(arg); + } +}); +exports.handler.addCommands(iSearchCommandModule.iSearchStartCommands); +var commands = exports.handler.commands; +commands.yank.isYank = true; +commands.yankRotate.isYank = true; +exports.killRing = { + $data: [], + add: function (str) { + str && this.$data.push(str); + if (this.$data.length > 30) + this.$data.shift(); + }, + append: function (str) { + var idx = this.$data.length - 1; + var text = this.$data[idx] || ""; + if (str) + text += str; + if (text) + this.$data[idx] = text; + }, + get: function (n) { + n = n || 1; + return this.$data.slice(this.$data.length - n, this.$data.length).reverse().join('\n'); + }, + pop: function () { + if (this.$data.length > 1) + this.$data.pop(); + return this.get(); + }, + rotate: function () { + this.$data.unshift(this.$data.pop()); + return this.get(); + } +}; + +}); (function() { + ace.require(["ace/keyboard/emacs"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/f6493d95eaf3c21810134f4fc28531c7.js.gz b/web/dist/f6493d95eaf3c21810134f4fc28531c7.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..15baebfe342d7a10f0b35569b3a98d68cfb5c961 GIT binary patch literal 8764 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 mqpGC?K1w1=|<>|<|>' }, + { token: 'keyword.operator.assignment.vala', regex: '=' }, + { token: 'keyword.operator.increment-decrement.vala', + regex: '\\-\\-|\\+\\+' }, + { token: 'keyword.operator.arithmetic.vala', + regex: '\\-|\\+|\\*|\\/|%' }, + { token: 'keyword.operator.logical.vala', regex: '!|&&|\\|\\|' }, + { token: 'keyword.operator.dereference.vala', + regex: '\\.(?=\\S)', + originalRegex: '(?<=\\S)\\.(?=\\S)' }, + { token: 'punctuation.terminator.vala', regex: ';' }, + { token: 'keyword.operator.ownership', regex: 'owned|unowned' }], + '#methods': [{ token: 'meta.method.vala', + regex: '(?!new)(?=\\w.*\\s+)(?=[^=]+\\()', + push: [{ token: 'paren.vala', regex: '}|(?=;)', next: 'pop' }, + { include: '#storage-modifiers' }, + { token: ['entity.name.function.vala', 'meta.method.identifier.vala'], + regex: '([\\~\\w\\.]+)(\\s*\\()', + push: [{ token: 'meta.method.identifier.vala', + regex: '\\)', + next: 'pop' }, + { include: '#parameters' }, + { defaultToken: 'meta.method.identifier.vala' }] }, + { token: 'meta.method.return-type.vala', + regex: '(?=\\w.*\\s+\\w+\\s*\\()', + push: [{ token: 'meta.method.return-type.vala', + regex: '(?=\\w+\\s*\\()', + next: 'pop' }, + { include: '#all-types' }, + { defaultToken: 'meta.method.return-type.vala' }] }, + { include: '#throws' }, + { token: 'paren.vala', + regex: '{', + push: [{ token: 'paren.vala', regex: '(?=})', next: 'pop' }, + { include: '#code' }, + { defaultToken: 'meta.method.body.vala' }] }, + { defaultToken: 'meta.method.vala' }] }], + '#namespace': [{ token: 'text', + regex: '^(?=\\s*[A-Z0-9_]+\\s*(?:{|\\(|,))', + push: [{ token: 'text', regex: '(?=;|})', next: 'pop' }, + { token: 'constant.other.namespace.vala', + regex: '\\w+', + push: [{ token: 'meta.namespace.vala', regex: '(?=,|;|})', next: 'pop' }, + { include: '#parens' }, + { token: 'text', + regex: '{', + push: [{ token: 'text', regex: '}', next: 'pop' }, + { include: '#code' }] }, + { defaultToken: 'meta.namespace.vala' }] }], + comment: 'This is not quite right. See the class grammar right now' }], + '#object-types': [{ token: 'storage.type.generic.vala', + regex: '\\b(?:[a-z]\\w*\\.)*[A-Z]+\\w*<', + push: [{ token: 'storage.type.generic.vala', + regex: '>|[^\\w\\s,\\?<\\[()\\]]', + TODO: 'FIXME: regexp doesn\'t have js equivalent', + originalRegex: '>|[^\\w\\s,\\?<\\[(?:[,]+)\\]]', + next: 'pop' }, + { include: '#object-types' }, + { token: 'storage.type.generic.vala', + regex: '<', + push: [{ token: 'storage.type.generic.vala', + regex: '>|[^\\w\\s,\\[\\]<]', + next: 'pop' }, + { defaultToken: 'storage.type.generic.vala' }], + comment: 'This is just to support <>\'s with no actual type prefix' }, + { defaultToken: 'storage.type.generic.vala' }] }, + { token: 'storage.type.object.array.vala', + regex: '\\b(?:[a-z]\\w*\\.)*[A-Z]+\\w*(?=\\[)', + push: [{ token: 'storage.type.object.array.vala', + regex: '(?=[^\\]\\s])', + next: 'pop' }, + { token: 'text', + regex: '\\[', + push: [{ token: 'text', regex: '\\]', next: 'pop' }, + { include: '#code' }] }, + { defaultToken: 'storage.type.object.array.vala' }] }, + { token: ['storage.type.vala', + 'keyword.operator.dereference.vala', + 'storage.type.vala'], + regex: '\\b(?:([a-z]\\w*)(\\.))*([A-Z]+\\w*\\b)' }], + '#object-types-inherited': [{ token: 'entity.other.inherited-class.vala', + regex: '\\b(?:[a-z]\\w*\\.)*[A-Z]+\\w*<', + push: [{ token: 'entity.other.inherited-class.vala', + regex: '>|[^\\w\\s,<]', + next: 'pop' }, + { include: '#object-types' }, + { token: 'storage.type.generic.vala', + regex: '<', + push: [{ token: 'storage.type.generic.vala', + regex: '>|[^\\w\\s,<]', + next: 'pop' }, + { defaultToken: 'storage.type.generic.vala' }], + comment: 'This is just to support <>\'s with no actual type prefix' }, + { defaultToken: 'entity.other.inherited-class.vala' }] }, + { token: ['entity.other.inherited-class.vala', + 'keyword.operator.dereference.vala', + 'entity.other.inherited-class.vala'], + regex: '\\b(?:([a-z]\\w*)(\\.))*([A-Z]+\\w*)' }], + '#parameters': [{ token: 'storage.modifier.vala', regex: 'final' }, + { include: '#primitive-arrays' }, + { include: '#primitive-types' }, + { include: '#object-types' }, + { token: 'variable.parameter.vala', regex: '\\w+' }], + '#parens': [{ token: 'text', + regex: '\\(', + push: [{ token: 'text', regex: '\\)', next: 'pop' }, + { include: '#code' }] }], + '#primitive-arrays': [{ token: 'storage.type.primitive.array.vala', + regex: '\\b(?:bool|byte|sbyte|char|decimal|double|float|int|uint|long|ulong|object|short|ushort|string|void|int8|int16|int32|int64|uint8|uint16|uint32|uint64)(?:\\[\\])*\\b' }], + '#primitive-types': [{ token: 'storage.type.primitive.vala', + regex: '\\b(?:var|bool|byte|sbyte|char|decimal|double|float|int|uint|long|ulong|object|short|ushort|string|void|signal|int8|int16|int32|int64|uint8|uint16|uint32|uint64)\\b', + comment: 'var is not really a primitive, but acts like one in most cases' }], + '#storage-modifiers': [{ token: 'storage.modifier.vala', + regex: '\\b(?:public|private|protected|internal|static|final|sealed|virtual|override|abstract|readonly|volatile|dynamic|async|unsafe|out|ref|weak|owned|unowned|const)\\b', + comment: 'Not sure about unsafe and readonly' }], + '#strings': [{ token: 'punctuation.definition.string.begin.vala', + regex: '@"', + push: [{ token: 'punctuation.definition.string.end.vala', + regex: '"', + next: 'pop' }, + { token: 'constant.character.escape.vala', + regex: '\\\\.|%[\\w\\.\\-]+|\\$(?:\\w+|\\([\\w\\s\\+\\-\\*\\/]+\\))' }, + { defaultToken: 'string.quoted.interpolated.vala' }] }, + { token: 'punctuation.definition.string.begin.vala', + regex: '"', + push: [{ token: 'punctuation.definition.string.end.vala', + regex: '"', + next: 'pop' }, + { token: 'constant.character.escape.vala', regex: '\\\\.' }, + { token: 'constant.character.escape.vala', + regex: '%[\\w\\.\\-]+' }, + { defaultToken: 'string.quoted.double.vala' }] }, + { token: 'punctuation.definition.string.begin.vala', + regex: '\'', + push: [{ token: 'punctuation.definition.string.end.vala', + regex: '\'', + next: 'pop' }, + { token: 'constant.character.escape.vala', regex: '\\\\.' }, + { defaultToken: 'string.quoted.single.vala' }] }, + { token: 'punctuation.definition.string.begin.vala', + regex: '"""', + push: [{ token: 'punctuation.definition.string.end.vala', + regex: '"""', + next: 'pop' }, + { token: 'constant.character.escape.vala', + regex: '%[\\w\\.\\-]+' }, + { defaultToken: 'string.quoted.triple.vala' }] }], + '#throws': [{ token: 'storage.modifier.vala', + regex: 'throws', + push: [{ token: 'meta.throwables.vala', regex: '(?={|;)', next: 'pop' }, + { include: '#object-types' }, + { defaultToken: 'meta.throwables.vala' }] }], + '#values': [{ include: '#strings' }, + { include: '#object-types' }, + { include: '#constants-and-special-vars' }] }; + this.normalizeRules(); +}; +ValaHighlightRules.metaData = { + comment: 'Based heavily on the Java bundle\'s language syntax. TODO:\n* Closures\n* Delegates\n* Properties: Better support for properties.\n* Annotations\n* Error domains\n* Named arguments\n* Array slicing, negative indexes, multidimensional\n* construct blocks\n* lock blocks?\n* regex literals\n* DocBlock syntax highlighting. (Currently importing javadoc)\n* Folding rule for comments.\n', + fileTypes: ['vala'], + foldingStartMarker: '(\\{\\s*(//.*)?$|^\\s*// \\{\\{\\{)', + foldingStopMarker: '^\\s*(\\}|// \\}\\}\\}$)', + name: 'Vala', + scopeName: 'source.vala' +}; +oop.inherits(ValaHighlightRules, TextHighlightRules); +exports.ValaHighlightRules = ValaHighlightRules; + +}); + +ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) + return false; + return /^\s*\}/.test(input); + }; + this.autoOutdent = function (doc, row) { + var line = doc.getLine(row); + var match = line.match(/^(\s*\})/); + if (!match) + return 0; + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; + var indent = this.$getIndent(doc.getLine(openBracePos.row)); + doc.replace(new Range(row, 0, row, column - 1), indent); + }; + this.$getIndent = function (line) { + return line.match(/^\s*/)[0]; + }; +}).call(MatchingBraceOutdent.prototype); +exports.MatchingBraceOutdent = MatchingBraceOutdent; + +}); + +ace.define("ace/mode/vala",["require","exports","module","ace/lib/oop","ace/mode/text","ace/tokenizer","ace/mode/vala_highlight_rules","ace/mode/folding/cstyle","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle","ace/mode/matching_brace_outdent"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ +"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var Tokenizer = require("../tokenizer").Tokenizer; +var ValaHighlightRules = require("./vala_highlight_rules").ValaHighlightRules; +var FoldMode = require("./folding/cstyle").FoldMode; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var Mode = function () { + this.HighlightRules = ValaHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CstyleBehaviour(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "//"; + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + var endState = tokenizedLine.state; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + if (state == "start" || state == "no_regex") { + var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); + if (match) { + indent += tab; + } + } + else if (state == "doc-start") { + if (endState == "start" || endState == "no_regex") { + return ""; + } + var match = line.match(/^\s*(\/?)\*/); + if (match) { + if (match[1]) { + indent += " "; + } + indent += "* "; + } + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.$id = "ace/mode/vala"; + this.snippetFileId = "ace/snippets/vala"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/vala"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/f6cc5f20d4885d2d7d5a244f6f22e650.js.gz b/web/dist/f6cc5f20d4885d2d7d5a244f6f22e650.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..ac44b13bfc13bb62aaa66471c4358414f3ca5202 GIT binary patch literal 5353 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 Hw{QReVUAZ2 literal 0 HcmV?d00001 diff --git a/web/dist/f6d0fea0854403a43f86a04e3db40850.js b/web/dist/f6d0fea0854403a43f86a04e3db40850.js new file mode 100644 index 00000000..008e1ffe --- /dev/null +++ b/web/dist/f6d0fea0854403a43f86a04e3db40850.js @@ -0,0 +1,16 @@ +ace.define("ace/snippets/django.snippets",["require","exports","module"], function(require, exports, module){module.exports = "# Model Fields\n\n# Note: Optional arguments are using defaults that match what Django will use\n# as a default, e.g. with max_length fields. Doing this as a form of self\n# documentation and to make it easy to know whether you should override the\n# default or not.\n\n# Note: Optional arguments that are booleans will use the opposite since you\n# can either not specify them, or override them, e.g. auto_now_add=False.\n\nsnippet auto\n\t${1:FIELDNAME} = models.AutoField(${2})\nsnippet bool\n\t${1:FIELDNAME} = models.BooleanField(${2:default=True})\nsnippet char\n\t${1:FIELDNAME} = models.CharField(max_length=${2}${3:, blank=True})\nsnippet comma\n\t${1:FIELDNAME} = models.CommaSeparatedIntegerField(max_length=${2}${3:, blank=True})\nsnippet date\n\t${1:FIELDNAME} = models.DateField(${2:auto_now_add=True, auto_now=True}${3:, blank=True, null=True})\nsnippet datetime\n\t${1:FIELDNAME} = models.DateTimeField(${2:auto_now_add=True, auto_now=True}${3:, blank=True, null=True})\nsnippet decimal\n\t${1:FIELDNAME} = models.DecimalField(max_digits=${2}, decimal_places=${3})\nsnippet email\n\t${1:FIELDNAME} = models.EmailField(max_length=${2:75}${3:, blank=True})\nsnippet file\n\t${1:FIELDNAME} = models.FileField(upload_to=${2:path/for/upload}${3:, max_length=100})\nsnippet filepath\n\t${1:FIELDNAME} = models.FilePathField(path=${2:\"/abs/path/to/dir\"}${3:, max_length=100}${4:, match=\"*.ext\"}${5:, recursive=True}${6:, blank=True, })\nsnippet float\n\t${1:FIELDNAME} = models.FloatField(${2})\nsnippet image\n\t${1:FIELDNAME} = models.ImageField(upload_to=${2:path/for/upload}${3:, height_field=height, width_field=width}${4:, max_length=100})\nsnippet int\n\t${1:FIELDNAME} = models.IntegerField(${2})\nsnippet ip\n\t${1:FIELDNAME} = models.IPAddressField(${2})\nsnippet nullbool\n\t${1:FIELDNAME} = models.NullBooleanField(${2})\nsnippet posint\n\t${1:FIELDNAME} = models.PositiveIntegerField(${2})\nsnippet possmallint\n\t${1:FIELDNAME} = models.PositiveSmallIntegerField(${2})\nsnippet slug\n\t${1:FIELDNAME} = models.SlugField(max_length=${2:50}${3:, blank=True})\nsnippet smallint\n\t${1:FIELDNAME} = models.SmallIntegerField(${2})\nsnippet text\n\t${1:FIELDNAME} = models.TextField(${2:blank=True})\nsnippet time\n\t${1:FIELDNAME} = models.TimeField(${2:auto_now_add=True, auto_now=True}${3:, blank=True, null=True})\nsnippet url\n\t${1:FIELDNAME} = models.URLField(${2:verify_exists=False}${3:, max_length=200}${4:, blank=True})\nsnippet xml\n\t${1:FIELDNAME} = models.XMLField(schema_path=${2:None}${3:, blank=True})\n# Relational Fields\nsnippet fk\n\t${1:FIELDNAME} = models.ForeignKey(${2:OtherModel}${3:, related_name=''}${4:, limit_choices_to=}${5:, to_field=''})\nsnippet m2m\n\t${1:FIELDNAME} = models.ManyToManyField(${2:OtherModel}${3:, related_name=''}${4:, limit_choices_to=}${5:, symmetrical=False}${6:, through=''}${7:, db_table=''})\nsnippet o2o\n\t${1:FIELDNAME} = models.OneToOneField(${2:OtherModel}${3:, parent_link=True}${4:, related_name=''}${5:, limit_choices_to=}${6:, to_field=''})\n\n# Code Skeletons\n\nsnippet form\n\tclass ${1:FormName}(forms.Form):\n\t\t\"\"\"${2:docstring}\"\"\"\n\t\t${3}\n\nsnippet model\n\tclass ${1:ModelName}(models.Model):\n\t\t\"\"\"${2:docstring}\"\"\"\n\t\t${3}\n\t\t\n\t\tclass Meta:\n\t\t\t${4}\n\t\t\n\t\tdef __unicode__(self):\n\t\t\t${5}\n\t\t\n\t\tdef save(self, force_insert=False, force_update=False):\n\t\t\t${6}\n\t\t\n\t\t@models.permalink\n\t\tdef get_absolute_url(self):\n\t\t\treturn ('${7:view_or_url_name}' ${8})\n\nsnippet modeladmin\n\tclass ${1:ModelName}Admin(admin.ModelAdmin):\n\t\t${2}\n\t\n\tadmin.site.register($1, $1Admin)\n\t\nsnippet tabularinline\n\tclass ${1:ModelName}Inline(admin.TabularInline):\n\t\tmodel = $1\n\nsnippet stackedinline\n\tclass ${1:ModelName}Inline(admin.StackedInline):\n\t\tmodel = $1\n\nsnippet r2r\n\treturn render_to_response('${1:template.html}', {\n\t\t\t${2}\n\t\t}${3:, context_instance=RequestContext(request)}\n\t)\n"; + +}); + +ace.define("ace/snippets/django",["require","exports","module","ace/snippets/django.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./django.snippets"); +exports.scope = "django"; + +}); (function() { + ace.require(["ace/snippets/django"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/f7443e8232a7e4289b9f2ed4a512750c.js b/web/dist/f7443e8232a7e4289b9f2ed4a512750c.js new file mode 100644 index 00000000..a4ab834e --- /dev/null +++ b/web/dist/f7443e8232a7e4289b9f2ed4a512750c.js @@ -0,0 +1,9 @@ + +; (function() { + ace.require(["ace/snippets/kotlin"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/f80c6eb0f52a68464b21211240e3d6e6.js b/web/dist/f80c6eb0f52a68464b21211240e3d6e6.js new file mode 100644 index 00000000..211ce3e7 --- /dev/null +++ b/web/dist/f80c6eb0f52a68464b21211240e3d6e6.js @@ -0,0 +1,9 @@ + +; (function() { + ace.require(["ace/snippets/elm"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/f86deff6386f7243a4aa39e90b30ba36.js b/web/dist/f86deff6386f7243a4aa39e90b30ba36.js new file mode 100644 index 00000000..169c349e --- /dev/null +++ b/web/dist/f86deff6386f7243a4aa39e90b30ba36.js @@ -0,0 +1,3510 @@ +"no use strict"; +!(function(window) { +if (typeof window.window != "undefined" && window.document) + return; +if (window.require && window.define) + return; + +if (!window.console) { + window.console = function() { + var msgs = Array.prototype.slice.call(arguments, 0); + postMessage({type: "log", data: msgs}); + }; + window.console.error = + window.console.warn = + window.console.log = + window.console.trace = window.console; +} +window.window = window; +window.ace = window; + +window.onerror = function(message, file, line, col, err) { + postMessage({type: "error", data: { + message: message, + data: err && err.data, + file: file, + line: line, + col: col, + stack: err && err.stack + }}); +}; + +window.normalizeModule = function(parentId, moduleName) { + // normalize plugin requires + if (moduleName.indexOf("!") !== -1) { + var chunks = moduleName.split("!"); + return window.normalizeModule(parentId, chunks[0]) + "!" + window.normalizeModule(parentId, chunks[1]); + } + // normalize relative requires + if (moduleName.charAt(0) == ".") { + var base = parentId.split("/").slice(0, -1).join("/"); + moduleName = (base ? base + "/" : "") + moduleName; + + while (moduleName.indexOf(".") !== -1 && previous != moduleName) { + var previous = moduleName; + moduleName = moduleName.replace(/^\.\//, "").replace(/\/\.\//, "/").replace(/[^\/]+\/\.\.\//, ""); + } + } + + return moduleName; +}; + +window.require = function require(parentId, id) { + if (!id) { + id = parentId; + parentId = null; + } + if (!id.charAt) + throw new Error("worker.js require() accepts only (parentId, id) as arguments"); + + id = window.normalizeModule(parentId, id); + + var module = window.require.modules[id]; + if (module) { + if (!module.initialized) { + module.initialized = true; + module.exports = module.factory().exports; + } + return module.exports; + } + + if (!window.require.tlns) + return console.log("unable to load " + id); + + var path = resolveModuleId(id, window.require.tlns); + if (path.slice(-3) != ".js") path += ".js"; + + window.require.id = id; + window.require.modules[id] = {}; // prevent infinite loop on broken modules + importScripts(path); + return window.require(parentId, id); +}; +function resolveModuleId(id, paths) { + var testPath = id, tail = ""; + while (testPath) { + var alias = paths[testPath]; + if (typeof alias == "string") { + return alias + tail; + } else if (alias) { + return alias.location.replace(/\/*$/, "/") + (tail || alias.main || alias.name); + } else if (alias === false) { + return ""; + } + var i = testPath.lastIndexOf("/"); + if (i === -1) break; + tail = testPath.substr(i) + tail; + testPath = testPath.slice(0, i); + } + return id; +} +window.require.modules = {}; +window.require.tlns = {}; + +window.define = function(id, deps, factory) { + if (arguments.length == 2) { + factory = deps; + if (typeof id != "string") { + deps = id; + id = window.require.id; + } + } else if (arguments.length == 1) { + factory = id; + deps = []; + id = window.require.id; + } + + if (typeof factory != "function") { + window.require.modules[id] = { + exports: factory, + initialized: true + }; + return; + } + + if (!deps.length) + // If there is no dependencies, we inject "require", "exports" and + // "module" as dependencies, to provide CommonJS compatibility. + deps = ["require", "exports", "module"]; + + var req = function(childId) { + return window.require(id, childId); + }; + + window.require.modules[id] = { + exports: {}, + factory: function() { + var module = this; + var returnExports = factory.apply(this, deps.slice(0, factory.length).map(function(dep) { + switch (dep) { + // Because "require", "exports" and "module" aren't actual + // dependencies, we must handle them seperately. + case "require": return req; + case "exports": return module.exports; + case "module": return module; + // But for all other dependencies, we can just go ahead and + // require them. + default: return req(dep); + } + })); + if (returnExports) + module.exports = returnExports; + return module; + } + }; +}; +window.define.amd = {}; +window.require.tlns = {}; +window.initBaseUrls = function initBaseUrls(topLevelNamespaces) { + for (var i in topLevelNamespaces) + this.require.tlns[i] = topLevelNamespaces[i]; +}; + +window.initSender = function initSender() { + + var EventEmitter = window.require("ace/lib/event_emitter").EventEmitter; + var oop = window.require("ace/lib/oop"); + + var Sender = function() {}; + + (function() { + + oop.implement(this, EventEmitter); + + this.callback = function(data, callbackId) { + postMessage({ + type: "call", + id: callbackId, + data: data + }); + }; + + this.emit = function(name, data) { + postMessage({ + type: "event", + name: name, + data: data + }); + }; + + }).call(Sender.prototype); + + return new Sender(); +}; + +var main = window.main = null; +var sender = window.sender = null; + +window.onmessage = function(e) { + var msg = e.data; + if (msg.event && sender) { + sender._signal(msg.event, msg.data); + } + else if (msg.command) { + if (main[msg.command]) + main[msg.command].apply(main, msg.args); + else if (window[msg.command]) + window[msg.command].apply(window, msg.args); + else + throw new Error("Unknown command:" + msg.command); + } + else if (msg.init) { + window.initBaseUrls(msg.tlns); + sender = window.sender = window.initSender(); + var clazz = this.require(msg.module)[msg.classname]; + main = window.main = new clazz(sender); + } +}; +})(this); + +ace.define("ace/lib/oop",[], function(require, exports, module){"use strict"; +exports.inherits = function (ctor, superCtor) { + ctor.super_ = superCtor; + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }); +}; +exports.mixin = function (obj, mixin) { + for (var key in mixin) { + obj[key] = mixin[key]; + } + return obj; +}; +exports.implement = function (proto, mixin) { + exports.mixin(proto, mixin); +}; + +}); + +ace.define("ace/apply_delta",[], function(require, exports, module){"use strict"; +function throwDeltaError(delta, errorText) { + console.log("Invalid Delta:", delta); + throw "Invalid Delta: " + errorText; +} +function positionInDocument(docLines, position) { + return position.row >= 0 && position.row < docLines.length && + position.column >= 0 && position.column <= docLines[position.row].length; +} +function validateDelta(docLines, delta) { + if (delta.action != "insert" && delta.action != "remove") + throwDeltaError(delta, "delta.action must be 'insert' or 'remove'"); + if (!(delta.lines instanceof Array)) + throwDeltaError(delta, "delta.lines must be an Array"); + if (!delta.start || !delta.end) + throwDeltaError(delta, "delta.start/end must be an present"); + var start = delta.start; + if (!positionInDocument(docLines, delta.start)) + throwDeltaError(delta, "delta.start must be contained in document"); + var end = delta.end; + if (delta.action == "remove" && !positionInDocument(docLines, end)) + throwDeltaError(delta, "delta.end must contained in document for 'remove' actions"); + var numRangeRows = end.row - start.row; + var numRangeLastLineChars = (end.column - (numRangeRows == 0 ? start.column : 0)); + if (numRangeRows != delta.lines.length - 1 || delta.lines[numRangeRows].length != numRangeLastLineChars) + throwDeltaError(delta, "delta.range must match delta lines"); +} +exports.applyDelta = function (docLines, delta, doNotValidate) { + var row = delta.start.row; + var startColumn = delta.start.column; + var line = docLines[row] || ""; + switch (delta.action) { + case "insert": + var lines = delta.lines; + if (lines.length === 1) { + docLines[row] = line.substring(0, startColumn) + delta.lines[0] + line.substring(startColumn); + } + else { + var args = [row, 1].concat(delta.lines); + docLines.splice.apply(docLines, args); + docLines[row] = line.substring(0, startColumn) + docLines[row]; + docLines[row + delta.lines.length - 1] += line.substring(startColumn); + } + break; + case "remove": + var endColumn = delta.end.column; + var endRow = delta.end.row; + if (row === endRow) { + docLines[row] = line.substring(0, startColumn) + line.substring(endColumn); + } + else { + docLines.splice(row, endRow - row + 1, line.substring(0, startColumn) + docLines[endRow].substring(endColumn)); + } + break; + } +}; + +}); + +ace.define("ace/lib/event_emitter",[], function(require, exports, module){"use strict"; +var EventEmitter = {}; +var stopPropagation = function () { this.propagationStopped = true; }; +var preventDefault = function () { this.defaultPrevented = true; }; +EventEmitter._emit = + EventEmitter._dispatchEvent = function (eventName, e) { + this._eventRegistry || (this._eventRegistry = {}); + this._defaultHandlers || (this._defaultHandlers = {}); + var listeners = this._eventRegistry[eventName] || []; + var defaultHandler = this._defaultHandlers[eventName]; + if (!listeners.length && !defaultHandler) + return; + if (typeof e != "object" || !e) + e = {}; + if (!e.type) + e.type = eventName; + if (!e.stopPropagation) + e.stopPropagation = stopPropagation; + if (!e.preventDefault) + e.preventDefault = preventDefault; + listeners = listeners.slice(); + for (var i = 0; i < listeners.length; i++) { + listeners[i](e, this); + if (e.propagationStopped) + break; + } + if (defaultHandler && !e.defaultPrevented) + return defaultHandler(e, this); + }; +EventEmitter._signal = function (eventName, e) { + var listeners = (this._eventRegistry || {})[eventName]; + if (!listeners) + return; + listeners = listeners.slice(); + for (var i = 0; i < listeners.length; i++) + listeners[i](e, this); +}; +EventEmitter.once = function (eventName, callback) { + var _self = this; + this.on(eventName, function newCallback() { + _self.off(eventName, newCallback); + callback.apply(null, arguments); + }); + if (!callback) { + return new Promise(function (resolve) { + callback = resolve; + }); + } +}; +EventEmitter.setDefaultHandler = function (eventName, callback) { + var handlers = this._defaultHandlers; + if (!handlers) + handlers = this._defaultHandlers = { _disabled_: {} }; + if (handlers[eventName]) { + var old = handlers[eventName]; + var disabled = handlers._disabled_[eventName]; + if (!disabled) + handlers._disabled_[eventName] = disabled = []; + disabled.push(old); + var i = disabled.indexOf(callback); + if (i != -1) + disabled.splice(i, 1); + } + handlers[eventName] = callback; +}; +EventEmitter.removeDefaultHandler = function (eventName, callback) { + var handlers = this._defaultHandlers; + if (!handlers) + return; + var disabled = handlers._disabled_[eventName]; + if (handlers[eventName] == callback) { + if (disabled) + this.setDefaultHandler(eventName, disabled.pop()); + } + else if (disabled) { + var i = disabled.indexOf(callback); + if (i != -1) + disabled.splice(i, 1); + } +}; +EventEmitter.on = + EventEmitter.addEventListener = function (eventName, callback, capturing) { + this._eventRegistry = this._eventRegistry || {}; + var listeners = this._eventRegistry[eventName]; + if (!listeners) + listeners = this._eventRegistry[eventName] = []; + if (listeners.indexOf(callback) == -1) + listeners[capturing ? "unshift" : "push"](callback); + return callback; + }; +EventEmitter.off = + EventEmitter.removeListener = + EventEmitter.removeEventListener = function (eventName, callback) { + this._eventRegistry = this._eventRegistry || {}; + var listeners = this._eventRegistry[eventName]; + if (!listeners) + return; + var index = listeners.indexOf(callback); + if (index !== -1) + listeners.splice(index, 1); + }; +EventEmitter.removeAllListeners = function (eventName) { + if (!eventName) + this._eventRegistry = this._defaultHandlers = undefined; + if (this._eventRegistry) + this._eventRegistry[eventName] = undefined; + if (this._defaultHandlers) + this._defaultHandlers[eventName] = undefined; +}; +exports.EventEmitter = EventEmitter; + +}); + +ace.define("ace/range",[], function(require, exports, module){"use strict"; +var comparePoints = function (p1, p2) { + return p1.row - p2.row || p1.column - p2.column; +}; +var Range = function (startRow, startColumn, endRow, endColumn) { + this.start = { + row: startRow, + column: startColumn + }; + this.end = { + row: endRow, + column: endColumn + }; +}; +(function () { + this.isEqual = function (range) { + return this.start.row === range.start.row && + this.end.row === range.end.row && + this.start.column === range.start.column && + this.end.column === range.end.column; + }; + this.toString = function () { + return ("Range: [" + this.start.row + "/" + this.start.column + + "] -> [" + this.end.row + "/" + this.end.column + "]"); + }; + this.contains = function (row, column) { + return this.compare(row, column) == 0; + }; + this.compareRange = function (range) { + var cmp, end = range.end, start = range.start; + cmp = this.compare(end.row, end.column); + if (cmp == 1) { + cmp = this.compare(start.row, start.column); + if (cmp == 1) { + return 2; + } + else if (cmp == 0) { + return 1; + } + else { + return 0; + } + } + else if (cmp == -1) { + return -2; + } + else { + cmp = this.compare(start.row, start.column); + if (cmp == -1) { + return -1; + } + else if (cmp == 1) { + return 42; + } + else { + return 0; + } + } + }; + this.comparePoint = function (p) { + return this.compare(p.row, p.column); + }; + this.containsRange = function (range) { + return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0; + }; + this.intersects = function (range) { + var cmp = this.compareRange(range); + return (cmp == -1 || cmp == 0 || cmp == 1); + }; + this.isEnd = function (row, column) { + return this.end.row == row && this.end.column == column; + }; + this.isStart = function (row, column) { + return this.start.row == row && this.start.column == column; + }; + this.setStart = function (row, column) { + if (typeof row == "object") { + this.start.column = row.column; + this.start.row = row.row; + } + else { + this.start.row = row; + this.start.column = column; + } + }; + this.setEnd = function (row, column) { + if (typeof row == "object") { + this.end.column = row.column; + this.end.row = row.row; + } + else { + this.end.row = row; + this.end.column = column; + } + }; + this.inside = function (row, column) { + if (this.compare(row, column) == 0) { + if (this.isEnd(row, column) || this.isStart(row, column)) { + return false; + } + else { + return true; + } + } + return false; + }; + this.insideStart = function (row, column) { + if (this.compare(row, column) == 0) { + if (this.isEnd(row, column)) { + return false; + } + else { + return true; + } + } + return false; + }; + this.insideEnd = function (row, column) { + if (this.compare(row, column) == 0) { + if (this.isStart(row, column)) { + return false; + } + else { + return true; + } + } + return false; + }; + this.compare = function (row, column) { + if (!this.isMultiLine()) { + if (row === this.start.row) { + return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0); + } + } + if (row < this.start.row) + return -1; + if (row > this.end.row) + return 1; + if (this.start.row === row) + return column >= this.start.column ? 0 : -1; + if (this.end.row === row) + return column <= this.end.column ? 0 : 1; + return 0; + }; + this.compareStart = function (row, column) { + if (this.start.row == row && this.start.column == column) { + return -1; + } + else { + return this.compare(row, column); + } + }; + this.compareEnd = function (row, column) { + if (this.end.row == row && this.end.column == column) { + return 1; + } + else { + return this.compare(row, column); + } + }; + this.compareInside = function (row, column) { + if (this.end.row == row && this.end.column == column) { + return 1; + } + else if (this.start.row == row && this.start.column == column) { + return -1; + } + else { + return this.compare(row, column); + } + }; + this.clipRows = function (firstRow, lastRow) { + if (this.end.row > lastRow) + var end = { row: lastRow + 1, column: 0 }; + else if (this.end.row < firstRow) + var end = { row: firstRow, column: 0 }; + if (this.start.row > lastRow) + var start = { row: lastRow + 1, column: 0 }; + else if (this.start.row < firstRow) + var start = { row: firstRow, column: 0 }; + return Range.fromPoints(start || this.start, end || this.end); + }; + this.extend = function (row, column) { + var cmp = this.compare(row, column); + if (cmp == 0) + return this; + else if (cmp == -1) + var start = { row: row, column: column }; + else + var end = { row: row, column: column }; + return Range.fromPoints(start || this.start, end || this.end); + }; + this.isEmpty = function () { + return (this.start.row === this.end.row && this.start.column === this.end.column); + }; + this.isMultiLine = function () { + return (this.start.row !== this.end.row); + }; + this.clone = function () { + return Range.fromPoints(this.start, this.end); + }; + this.collapseRows = function () { + if (this.end.column == 0) + return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row - 1), 0); + else + return new Range(this.start.row, 0, this.end.row, 0); + }; + this.toScreenRange = function (session) { + var screenPosStart = session.documentToScreenPosition(this.start); + var screenPosEnd = session.documentToScreenPosition(this.end); + return new Range(screenPosStart.row, screenPosStart.column, screenPosEnd.row, screenPosEnd.column); + }; + this.moveBy = function (row, column) { + this.start.row += row; + this.start.column += column; + this.end.row += row; + this.end.column += column; + }; +}).call(Range.prototype); +Range.fromPoints = function (start, end) { + return new Range(start.row, start.column, end.row, end.column); +}; +Range.comparePoints = comparePoints; +Range.comparePoints = function (p1, p2) { + return p1.row - p2.row || p1.column - p2.column; +}; +exports.Range = Range; + +}); + +ace.define("ace/anchor",[], function(require, exports, module){"use strict"; +var oop = require("./lib/oop"); +var EventEmitter = require("./lib/event_emitter").EventEmitter; +var Anchor = exports.Anchor = function (doc, row, column) { + this.$onChange = this.onChange.bind(this); + this.attach(doc); + if (typeof column == "undefined") + this.setPosition(row.row, row.column); + else + this.setPosition(row, column); +}; +(function () { + oop.implement(this, EventEmitter); + this.getPosition = function () { + return this.$clipPositionToDocument(this.row, this.column); + }; + this.getDocument = function () { + return this.document; + }; + this.$insertRight = false; + this.onChange = function (delta) { + if (delta.start.row == delta.end.row && delta.start.row != this.row) + return; + if (delta.start.row > this.row) + return; + var point = $getTransformedPoint(delta, { row: this.row, column: this.column }, this.$insertRight); + this.setPosition(point.row, point.column, true); + }; + function $pointsInOrder(point1, point2, equalPointsInOrder) { + var bColIsAfter = equalPointsInOrder ? point1.column <= point2.column : point1.column < point2.column; + return (point1.row < point2.row) || (point1.row == point2.row && bColIsAfter); + } + function $getTransformedPoint(delta, point, moveIfEqual) { + var deltaIsInsert = delta.action == "insert"; + var deltaRowShift = (deltaIsInsert ? 1 : -1) * (delta.end.row - delta.start.row); + var deltaColShift = (deltaIsInsert ? 1 : -1) * (delta.end.column - delta.start.column); + var deltaStart = delta.start; + var deltaEnd = deltaIsInsert ? deltaStart : delta.end; // Collapse insert range. + if ($pointsInOrder(point, deltaStart, moveIfEqual)) { + return { + row: point.row, + column: point.column + }; + } + if ($pointsInOrder(deltaEnd, point, !moveIfEqual)) { + return { + row: point.row + deltaRowShift, + column: point.column + (point.row == deltaEnd.row ? deltaColShift : 0) + }; + } + return { + row: deltaStart.row, + column: deltaStart.column + }; + } + this.setPosition = function (row, column, noClip) { + var pos; + if (noClip) { + pos = { + row: row, + column: column + }; + } + else { + pos = this.$clipPositionToDocument(row, column); + } + if (this.row == pos.row && this.column == pos.column) + return; + var old = { + row: this.row, + column: this.column + }; + this.row = pos.row; + this.column = pos.column; + this._signal("change", { + old: old, + value: pos + }); + }; + this.detach = function () { + this.document.off("change", this.$onChange); + }; + this.attach = function (doc) { + this.document = doc || this.document; + this.document.on("change", this.$onChange); + }; + this.$clipPositionToDocument = function (row, column) { + var pos = {}; + if (row >= this.document.getLength()) { + pos.row = Math.max(0, this.document.getLength() - 1); + pos.column = this.document.getLine(pos.row).length; + } + else if (row < 0) { + pos.row = 0; + pos.column = 0; + } + else { + pos.row = row; + pos.column = Math.min(this.document.getLine(pos.row).length, Math.max(0, column)); + } + if (column < 0) + pos.column = 0; + return pos; + }; +}).call(Anchor.prototype); + +}); + +ace.define("ace/document",[], function(require, exports, module){"use strict"; +var oop = require("./lib/oop"); +var applyDelta = require("./apply_delta").applyDelta; +var EventEmitter = require("./lib/event_emitter").EventEmitter; +var Range = require("./range").Range; +var Anchor = require("./anchor").Anchor; +var Document = function (textOrLines) { + this.$lines = [""]; + if (textOrLines.length === 0) { + this.$lines = [""]; + } + else if (Array.isArray(textOrLines)) { + this.insertMergedLines({ row: 0, column: 0 }, textOrLines); + } + else { + this.insert({ row: 0, column: 0 }, textOrLines); + } +}; +(function () { + oop.implement(this, EventEmitter); + this.setValue = function (text) { + var len = this.getLength() - 1; + this.remove(new Range(0, 0, len, this.getLine(len).length)); + this.insert({ row: 0, column: 0 }, text || ""); + }; + this.getValue = function () { + return this.getAllLines().join(this.getNewLineCharacter()); + }; + this.createAnchor = function (row, column) { + return new Anchor(this, row, column); + }; + if ("aaa".split(/a/).length === 0) { + this.$split = function (text) { + return text.replace(/\r\n|\r/g, "\n").split("\n"); + }; + } + else { + this.$split = function (text) { + return text.split(/\r\n|\r|\n/); + }; + } + this.$detectNewLine = function (text) { + var match = text.match(/^.*?(\r\n|\r|\n)/m); + this.$autoNewLine = match ? match[1] : "\n"; + this._signal("changeNewLineMode"); + }; + this.getNewLineCharacter = function () { + switch (this.$newLineMode) { + case "windows": + return "\r\n"; + case "unix": + return "\n"; + default: + return this.$autoNewLine || "\n"; + } + }; + this.$autoNewLine = ""; + this.$newLineMode = "auto"; + this.setNewLineMode = function (newLineMode) { + if (this.$newLineMode === newLineMode) + return; + this.$newLineMode = newLineMode; + this._signal("changeNewLineMode"); + }; + this.getNewLineMode = function () { + return this.$newLineMode; + }; + this.isNewLine = function (text) { + return (text == "\r\n" || text == "\r" || text == "\n"); + }; + this.getLine = function (row) { + return this.$lines[row] || ""; + }; + this.getLines = function (firstRow, lastRow) { + return this.$lines.slice(firstRow, lastRow + 1); + }; + this.getAllLines = function () { + return this.getLines(0, this.getLength()); + }; + this.getLength = function () { + return this.$lines.length; + }; + this.getTextRange = function (range) { + return this.getLinesForRange(range).join(this.getNewLineCharacter()); + }; + this.getLinesForRange = function (range) { + var lines; + if (range.start.row === range.end.row) { + lines = [this.getLine(range.start.row).substring(range.start.column, range.end.column)]; + } + else { + lines = this.getLines(range.start.row, range.end.row); + lines[0] = (lines[0] || "").substring(range.start.column); + var l = lines.length - 1; + if (range.end.row - range.start.row == l) + lines[l] = lines[l].substring(0, range.end.column); + } + return lines; + }; + this.insertLines = function (row, lines) { + console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."); + return this.insertFullLines(row, lines); + }; + this.removeLines = function (firstRow, lastRow) { + console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."); + return this.removeFullLines(firstRow, lastRow); + }; + this.insertNewLine = function (position) { + console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."); + return this.insertMergedLines(position, ["", ""]); + }; + this.insert = function (position, text) { + if (this.getLength() <= 1) + this.$detectNewLine(text); + return this.insertMergedLines(position, this.$split(text)); + }; + this.insertInLine = function (position, text) { + var start = this.clippedPos(position.row, position.column); + var end = this.pos(position.row, position.column + text.length); + this.applyDelta({ + start: start, + end: end, + action: "insert", + lines: [text] + }, true); + return this.clonePos(end); + }; + this.clippedPos = function (row, column) { + var length = this.getLength(); + if (row === undefined) { + row = length; + } + else if (row < 0) { + row = 0; + } + else if (row >= length) { + row = length - 1; + column = undefined; + } + var line = this.getLine(row); + if (column == undefined) + column = line.length; + column = Math.min(Math.max(column, 0), line.length); + return { row: row, column: column }; + }; + this.clonePos = function (pos) { + return { row: pos.row, column: pos.column }; + }; + this.pos = function (row, column) { + return { row: row, column: column }; + }; + this.$clipPosition = function (position) { + var length = this.getLength(); + if (position.row >= length) { + position.row = Math.max(0, length - 1); + position.column = this.getLine(length - 1).length; + } + else { + position.row = Math.max(0, position.row); + position.column = Math.min(Math.max(position.column, 0), this.getLine(position.row).length); + } + return position; + }; + this.insertFullLines = function (row, lines) { + row = Math.min(Math.max(row, 0), this.getLength()); + var column = 0; + if (row < this.getLength()) { + lines = lines.concat([""]); + column = 0; + } + else { + lines = [""].concat(lines); + row--; + column = this.$lines[row].length; + } + this.insertMergedLines({ row: row, column: column }, lines); + }; + this.insertMergedLines = function (position, lines) { + var start = this.clippedPos(position.row, position.column); + var end = { + row: start.row + lines.length - 1, + column: (lines.length == 1 ? start.column : 0) + lines[lines.length - 1].length + }; + this.applyDelta({ + start: start, + end: end, + action: "insert", + lines: lines + }); + return this.clonePos(end); + }; + this.remove = function (range) { + var start = this.clippedPos(range.start.row, range.start.column); + var end = this.clippedPos(range.end.row, range.end.column); + this.applyDelta({ + start: start, + end: end, + action: "remove", + lines: this.getLinesForRange({ start: start, end: end }) + }); + return this.clonePos(start); + }; + this.removeInLine = function (row, startColumn, endColumn) { + var start = this.clippedPos(row, startColumn); + var end = this.clippedPos(row, endColumn); + this.applyDelta({ + start: start, + end: end, + action: "remove", + lines: this.getLinesForRange({ start: start, end: end }) + }, true); + return this.clonePos(start); + }; + this.removeFullLines = function (firstRow, lastRow) { + firstRow = Math.min(Math.max(0, firstRow), this.getLength() - 1); + lastRow = Math.min(Math.max(0, lastRow), this.getLength() - 1); + var deleteFirstNewLine = lastRow == this.getLength() - 1 && firstRow > 0; + var deleteLastNewLine = lastRow < this.getLength() - 1; + var startRow = (deleteFirstNewLine ? firstRow - 1 : firstRow); + var startCol = (deleteFirstNewLine ? this.getLine(startRow).length : 0); + var endRow = (deleteLastNewLine ? lastRow + 1 : lastRow); + var endCol = (deleteLastNewLine ? 0 : this.getLine(endRow).length); + var range = new Range(startRow, startCol, endRow, endCol); + var deletedLines = this.$lines.slice(firstRow, lastRow + 1); + this.applyDelta({ + start: range.start, + end: range.end, + action: "remove", + lines: this.getLinesForRange(range) + }); + return deletedLines; + }; + this.removeNewLine = function (row) { + if (row < this.getLength() - 1 && row >= 0) { + this.applyDelta({ + start: this.pos(row, this.getLine(row).length), + end: this.pos(row + 1, 0), + action: "remove", + lines: ["", ""] + }); + } + }; + this.replace = function (range, text) { + if (!(range instanceof Range)) + range = Range.fromPoints(range.start, range.end); + if (text.length === 0 && range.isEmpty()) + return range.start; + if (text == this.getTextRange(range)) + return range.end; + this.remove(range); + var end; + if (text) { + end = this.insert(range.start, text); + } + else { + end = range.start; + } + return end; + }; + this.applyDeltas = function (deltas) { + for (var i = 0; i < deltas.length; i++) { + this.applyDelta(deltas[i]); + } + }; + this.revertDeltas = function (deltas) { + for (var i = deltas.length - 1; i >= 0; i--) { + this.revertDelta(deltas[i]); + } + }; + this.applyDelta = function (delta, doNotValidate) { + var isInsert = delta.action == "insert"; + if (isInsert ? delta.lines.length <= 1 && !delta.lines[0] + : !Range.comparePoints(delta.start, delta.end)) { + return; + } + if (isInsert && delta.lines.length > 20000) { + this.$splitAndapplyLargeDelta(delta, 20000); + } + else { + applyDelta(this.$lines, delta, doNotValidate); + this._signal("change", delta); + } + }; + this.$safeApplyDelta = function (delta) { + var docLength = this.$lines.length; + if (delta.action == "remove" && delta.start.row < docLength && delta.end.row < docLength + || delta.action == "insert" && delta.start.row <= docLength) { + this.applyDelta(delta); + } + }; + this.$splitAndapplyLargeDelta = function (delta, MAX) { + var lines = delta.lines; + var l = lines.length - MAX + 1; + var row = delta.start.row; + var column = delta.start.column; + for (var from = 0, to = 0; from < l; from = to) { + to += MAX - 1; + var chunk = lines.slice(from, to); + chunk.push(""); + this.applyDelta({ + start: this.pos(row + from, column), + end: this.pos(row + to, column = 0), + action: delta.action, + lines: chunk + }, true); + } + delta.lines = lines.slice(from); + delta.start.row = row + from; + delta.start.column = column; + this.applyDelta(delta, true); + }; + this.revertDelta = function (delta) { + this.$safeApplyDelta({ + start: this.clonePos(delta.start), + end: this.clonePos(delta.end), + action: (delta.action == "insert" ? "remove" : "insert"), + lines: delta.lines.slice() + }); + }; + this.indexToPosition = function (index, startRow) { + var lines = this.$lines || this.getAllLines(); + var newlineLength = this.getNewLineCharacter().length; + for (var i = startRow || 0, l = lines.length; i < l; i++) { + index -= lines[i].length + newlineLength; + if (index < 0) + return { row: i, column: index + lines[i].length + newlineLength }; + } + return { row: l - 1, column: index + lines[l - 1].length + newlineLength }; + }; + this.positionToIndex = function (pos, startRow) { + var lines = this.$lines || this.getAllLines(); + var newlineLength = this.getNewLineCharacter().length; + var index = 0; + var row = Math.min(pos.row, lines.length); + for (var i = startRow || 0; i < row; ++i) + index += lines[i].length + newlineLength; + return index + pos.column; + }; +}).call(Document.prototype); +exports.Document = Document; + +}); + +ace.define("ace/lib/lang",[], function(require, exports, module){"use strict"; +exports.last = function (a) { + return a[a.length - 1]; +}; +exports.stringReverse = function (string) { + return string.split("").reverse().join(""); +}; +exports.stringRepeat = function (string, count) { + var result = ''; + while (count > 0) { + if (count & 1) + result += string; + if (count >>= 1) + string += string; + } + return result; +}; +var trimBeginRegexp = /^\s\s*/; +var trimEndRegexp = /\s\s*$/; +exports.stringTrimLeft = function (string) { + return string.replace(trimBeginRegexp, ''); +}; +exports.stringTrimRight = function (string) { + return string.replace(trimEndRegexp, ''); +}; +exports.copyObject = function (obj) { + var copy = {}; + for (var key in obj) { + copy[key] = obj[key]; + } + return copy; +}; +exports.copyArray = function (array) { + var copy = []; + for (var i = 0, l = array.length; i < l; i++) { + if (array[i] && typeof array[i] == "object") + copy[i] = this.copyObject(array[i]); + else + copy[i] = array[i]; + } + return copy; +}; +exports.deepCopy = function deepCopy(obj) { + if (typeof obj !== "object" || !obj) + return obj; + var copy; + if (Array.isArray(obj)) { + copy = []; + for (var key = 0; key < obj.length; key++) { + copy[key] = deepCopy(obj[key]); + } + return copy; + } + if (Object.prototype.toString.call(obj) !== "[object Object]") + return obj; + copy = {}; + for (var key in obj) + copy[key] = deepCopy(obj[key]); + return copy; +}; +exports.arrayToMap = function (arr) { + var map = {}; + for (var i = 0; i < arr.length; i++) { + map[arr[i]] = 1; + } + return map; +}; +exports.createMap = function (props) { + var map = Object.create(null); + for (var i in props) { + map[i] = props[i]; + } + return map; +}; +exports.arrayRemove = function (array, value) { + for (var i = 0; i <= array.length; i++) { + if (value === array[i]) { + array.splice(i, 1); + } + } +}; +exports.escapeRegExp = function (str) { + return str.replace(/([.*+?^${}()|[\]\/\\])/g, '\\$1'); +}; +exports.escapeHTML = function (str) { + return ("" + str).replace(/&/g, "&").replace(/"/g, """).replace(/'/g, "'").replace(/= doc.$lines.length) { + err = new Error("Invalid delta"); + err.data = { + path: _self.$path, + linesLength: doc.$lines.length, + start: d.start, + end: d.end + }; + throw err; + } + + doc.applyDelta(d, true); + } + } + if (_self.$timeout) + return deferredUpdate.schedule(_self.$timeout); + _self.onUpdate(); + }); +}; + +(function() { + + this.$timeout = 500; + + this.setTimeout = function(timeout) { + this.$timeout = timeout; + }; + + this.setValue = function(value) { + this.doc.setValue(value); + this.deferredUpdate.schedule(this.$timeout); + }; + + this.getValue = function(callbackId) { + this.sender.callback(this.doc.getValue(), callbackId); + }; + + this.onUpdate = function() { + }; + + this.isPending = function() { + return this.deferredUpdate.isPending(); + }; + +}).call(Mirror.prototype); + +}); + +ace.define("ace/mode/lua/luaparse",[], function(require, exports, module) { + +(function (root, name, factory) { + factory(exports) +}(this, 'luaparse', function (exports) { + 'use strict'; + + exports.version = "0.3.1"; + + var input, options, length, features, encodingMode; + var defaultOptions = exports.defaultOptions = { + wait: false + , comments: true + , scope: false + , locations: false + , ranges: false + , onCreateNode: null + , onCreateScope: null + , onDestroyScope: null + , onLocalDeclaration: null + , luaVersion: '5.3' + , encodingMode: 'none' + }; + + function encodeUTF8(codepoint, highMask) { + highMask = highMask || 0; + + if (codepoint < 0x80) { + return String.fromCharCode(codepoint); + } else if (codepoint < 0x800) { + return String.fromCharCode( + highMask | 0xc0 | (codepoint >> 6) , + highMask | 0x80 | ( codepoint & 0x3f) + ); + } else if (codepoint < 0x10000) { + return String.fromCharCode( + highMask | 0xe0 | (codepoint >> 12) , + highMask | 0x80 | ((codepoint >> 6) & 0x3f), + highMask | 0x80 | ( codepoint & 0x3f) + ); + } else /* istanbul ignore else */ if (codepoint < 0x110000) { + return String.fromCharCode( + highMask | 0xf0 | (codepoint >> 18) , + highMask | 0x80 | ((codepoint >> 12) & 0x3f), + highMask | 0x80 | ((codepoint >> 6) & 0x3f), + highMask | 0x80 | ( codepoint & 0x3f) + ); + } else { + return null; + } + } + + function toHex(num, digits) { + var result = num.toString(16); + while (result.length < digits) + result = '0' + result; + return result; + } + + function checkChars(rx) { + return function (s) { + var m = rx.exec(s); + if (!m) + return s; + raise(null, errors.invalidCodeUnit, toHex(m[0].charCodeAt(0), 4).toUpperCase()); + }; + } + + var encodingModes = { + 'pseudo-latin1': { + fixup: checkChars(/[^\x00-\xff]/), + encodeByte: function (value) { + if (value === null) + return ''; + return String.fromCharCode(value); + }, + encodeUTF8: function (codepoint) { + return encodeUTF8(codepoint); + }, + }, + 'x-user-defined': { + fixup: checkChars(/[^\x00-\x7f\uf780-\uf7ff]/), + encodeByte: function (value) { + if (value === null) + return ''; + if (value >= 0x80) + return String.fromCharCode(value | 0xf700); + return String.fromCharCode(value); + }, + encodeUTF8: function (codepoint) { + return encodeUTF8(codepoint, 0xf700); + } + }, + 'none': { + discardStrings: true, + fixup: function (s) { + return s; + }, + encodeByte: function (value) { + return ''; + }, + encodeUTF8: function (codepoint) { + return ''; + } + } + }; + + var EOF = 1, StringLiteral = 2, Keyword = 4, Identifier = 8 + , NumericLiteral = 16, Punctuator = 32, BooleanLiteral = 64 + , NilLiteral = 128, VarargLiteral = 256; + + exports.tokenTypes = { EOF: EOF, StringLiteral: StringLiteral + , Keyword: Keyword, Identifier: Identifier, NumericLiteral: NumericLiteral + , Punctuator: Punctuator, BooleanLiteral: BooleanLiteral + , NilLiteral: NilLiteral, VarargLiteral: VarargLiteral + }; + + var errors = exports.errors = { + unexpected: 'unexpected %1 \'%2\' near \'%3\'' + , unexpectedEOF: 'unexpected symbol near \'\'' + , expected: '\'%1\' expected near \'%2\'' + , expectedToken: '%1 expected near \'%2\'' + , unfinishedString: 'unfinished string near \'%1\'' + , malformedNumber: 'malformed number near \'%1\'' + , decimalEscapeTooLarge: 'decimal escape too large near \'%1\'' + , invalidEscape: 'invalid escape sequence near \'%1\'' + , hexadecimalDigitExpected: 'hexadecimal digit expected near \'%1\'' + , braceExpected: 'missing \'%1\' near \'%2\'' + , tooLargeCodepoint: 'UTF-8 value too large near \'%1\'' + , unfinishedLongString: 'unfinished long string (starting at line %1) near \'%2\'' + , unfinishedLongComment: 'unfinished long comment (starting at line %1) near \'%2\'' + , ambiguousSyntax: 'ambiguous syntax (function call x new statement) near \'%1\'' + , noLoopToBreak: 'no loop to break near \'%1\'' + , labelAlreadyDefined: 'label \'%1\' already defined on line %2' + , labelNotVisible: 'no visible label \'%1\' for ' + , gotoJumpInLocalScope: ' jumps into the scope of local \'%2\'' + , cannotUseVararg: 'cannot use \'...\' outside a vararg function near \'%1\'' + , invalidCodeUnit: 'code unit U+%1 is not allowed in the current encoding mode' + }; + + var ast = exports.ast = { + labelStatement: function(label) { + return { + type: 'LabelStatement' + , label: label + }; + } + + , breakStatement: function() { + return { + type: 'BreakStatement' + }; + } + + , gotoStatement: function(label) { + return { + type: 'GotoStatement' + , label: label + }; + } + + , returnStatement: function(args) { + return { + type: 'ReturnStatement' + , 'arguments': args + }; + } + + , ifStatement: function(clauses) { + return { + type: 'IfStatement' + , clauses: clauses + }; + } + , ifClause: function(condition, body) { + return { + type: 'IfClause' + , condition: condition + , body: body + }; + } + , elseifClause: function(condition, body) { + return { + type: 'ElseifClause' + , condition: condition + , body: body + }; + } + , elseClause: function(body) { + return { + type: 'ElseClause' + , body: body + }; + } + + , whileStatement: function(condition, body) { + return { + type: 'WhileStatement' + , condition: condition + , body: body + }; + } + + , doStatement: function(body) { + return { + type: 'DoStatement' + , body: body + }; + } + + , repeatStatement: function(condition, body) { + return { + type: 'RepeatStatement' + , condition: condition + , body: body + }; + } + + , localStatement: function(variables, init) { + return { + type: 'LocalStatement' + , variables: variables + , init: init + }; + } + + , assignmentStatement: function(variables, init) { + return { + type: 'AssignmentStatement' + , variables: variables + , init: init + }; + } + + , callStatement: function(expression) { + return { + type: 'CallStatement' + , expression: expression + }; + } + + , functionStatement: function(identifier, parameters, isLocal, body) { + return { + type: 'FunctionDeclaration' + , identifier: identifier + , isLocal: isLocal + , parameters: parameters + , body: body + }; + } + + , forNumericStatement: function(variable, start, end, step, body) { + return { + type: 'ForNumericStatement' + , variable: variable + , start: start + , end: end + , step: step + , body: body + }; + } + + , forGenericStatement: function(variables, iterators, body) { + return { + type: 'ForGenericStatement' + , variables: variables + , iterators: iterators + , body: body + }; + } + + , chunk: function(body) { + return { + type: 'Chunk' + , body: body + }; + } + + , identifier: function(name) { + return { + type: 'Identifier' + , name: name + }; + } + + , literal: function(type, value, raw) { + type = (type === StringLiteral) ? 'StringLiteral' + : (type === NumericLiteral) ? 'NumericLiteral' + : (type === BooleanLiteral) ? 'BooleanLiteral' + : (type === NilLiteral) ? 'NilLiteral' + : 'VarargLiteral'; + + return { + type: type + , value: value + , raw: raw + }; + } + + , tableKey: function(key, value) { + return { + type: 'TableKey' + , key: key + , value: value + }; + } + , tableKeyString: function(key, value) { + return { + type: 'TableKeyString' + , key: key + , value: value + }; + } + , tableValue: function(value) { + return { + type: 'TableValue' + , value: value + }; + } + + + , tableConstructorExpression: function(fields) { + return { + type: 'TableConstructorExpression' + , fields: fields + }; + } + , binaryExpression: function(operator, left, right) { + var type = ('and' === operator || 'or' === operator) ? + 'LogicalExpression' : + 'BinaryExpression'; + + return { + type: type + , operator: operator + , left: left + , right: right + }; + } + , unaryExpression: function(operator, argument) { + return { + type: 'UnaryExpression' + , operator: operator + , argument: argument + }; + } + , memberExpression: function(base, indexer, identifier) { + return { + type: 'MemberExpression' + , indexer: indexer + , identifier: identifier + , base: base + }; + } + + , indexExpression: function(base, index) { + return { + type: 'IndexExpression' + , base: base + , index: index + }; + } + + , callExpression: function(base, args) { + return { + type: 'CallExpression' + , base: base + , 'arguments': args + }; + } + + , tableCallExpression: function(base, args) { + return { + type: 'TableCallExpression' + , base: base + , 'arguments': args + }; + } + + , stringCallExpression: function(base, argument) { + return { + type: 'StringCallExpression' + , base: base + , argument: argument + }; + } + + , comment: function(value, raw) { + return { + type: 'Comment' + , value: value + , raw: raw + }; + } + }; + + function finishNode(node) { + if (trackLocations) { + var location = locations.pop(); + location.complete(); + location.bless(node); + } + if (options.onCreateNode) options.onCreateNode(node); + return node; + } + + var slice = Array.prototype.slice + , toString = Object.prototype.toString + ; + + var indexOf = /* istanbul ignore next */ function (array, element) { + for (var i = 0, length = array.length; i < length; ++i) { + if (array[i] === element) return i; + } + return -1; + }; + if (Array.prototype.indexOf) + indexOf = function (array, element) { + return array.indexOf(element); + }; + + function indexOfObject(array, property, element) { + for (var i = 0, length = array.length; i < length; ++i) { + if (array[i][property] === element) return i; + } + return -1; + } + + function sprintf(format) { + var args = slice.call(arguments, 1); + format = format.replace(/%(\d)/g, function (match, index) { + return '' + args[index - 1] || /* istanbul ignore next */ ''; + }); + return format; + } + + var assign = /* istanbul ignore next */ function (dest) { + var args = slice.call(arguments, 1) + , src, prop; + + for (var i = 0, length = args.length; i < length; ++i) { + src = args[i]; + for (prop in src) + if (Object.prototype.hasOwnProperty.call(src, prop)) { + dest[prop] = src[prop]; + } + } + + return dest; + }; + if (Object.assign) + assign = Object.assign; + + exports.SyntaxError = SyntaxError; + + function fixupError(e) { + if (!Object.create) + return e; + return Object.create(e, { + 'line': { 'writable': true, value: e.line }, + 'index': { 'writable': true, value: e.index }, + 'column': { 'writable': true, value: e.column } + }); + } + + function raise(token) { + var message = sprintf.apply(null, slice.call(arguments, 1)) + , error, col; + + if (token === null || typeof token.line === 'undefined') { + col = index - lineStart + 1; + error = fixupError(new SyntaxError(sprintf('[%1:%2] %3', line, col, message))); + error.index = index; + error.line = line; + error.column = col; + } else { + col = token.range[0] - token.lineStart; + error = fixupError(new SyntaxError(sprintf('[%1:%2] %3', token.line, col, message))); + error.line = token.line; + error.index = token.range[0]; + error.column = col; + } + throw error; + } + + function tokenValue(token) { + var raw = input.slice(token.range[0], token.range[1]); + if (raw) + return raw; + return token.value; + } + + function raiseUnexpectedToken(type, token) { + raise(token, errors.expectedToken, type, tokenValue(token)); + } + + function unexpected(found) { + var near = tokenValue(lookahead); + if ('undefined' !== typeof found.type) { + var type; + switch (found.type) { + case StringLiteral: type = 'string'; break; + case Keyword: type = 'keyword'; break; + case Identifier: type = 'identifier'; break; + case NumericLiteral: type = 'number'; break; + case Punctuator: type = 'symbol'; break; + case BooleanLiteral: type = 'boolean'; break; + case NilLiteral: + return raise(found, errors.unexpected, 'symbol', 'nil', near); + case EOF: + return raise(found, errors.unexpectedEOF); + } + return raise(found, errors.unexpected, type, tokenValue(found), near); + } + return raise(found, errors.unexpected, 'symbol', found, near); + } + + var index + , token + , previousToken + , lookahead + , comments + , tokenStart + , line + , lineStart; + + exports.lex = lex; + + function lex() { + skipWhiteSpace(); + while (45 === input.charCodeAt(index) && + 45 === input.charCodeAt(index + 1)) { + scanComment(); + skipWhiteSpace(); + } + if (index >= length) return { + type : EOF + , value: '' + , line: line + , lineStart: lineStart + , range: [index, index] + }; + + var charCode = input.charCodeAt(index) + , next = input.charCodeAt(index + 1); + tokenStart = index; + if (isIdentifierStart(charCode)) return scanIdentifierOrKeyword(); + + switch (charCode) { + case 39: case 34: // '" + return scanStringLiteral(); + + case 48: case 49: case 50: case 51: case 52: case 53: + case 54: case 55: case 56: case 57: // 0-9 + return scanNumericLiteral(); + + case 46: // . + if (isDecDigit(next)) return scanNumericLiteral(); + if (46 === next) { + if (46 === input.charCodeAt(index + 2)) return scanVarargLiteral(); + return scanPunctuator('..'); + } + return scanPunctuator('.'); + + case 61: // = + if (61 === next) return scanPunctuator('=='); + return scanPunctuator('='); + + case 62: // > + if (features.bitwiseOperators) + if (62 === next) return scanPunctuator('>>'); + if (61 === next) return scanPunctuator('>='); + return scanPunctuator('>'); + + case 60: // < + if (features.bitwiseOperators) + if (60 === next) return scanPunctuator('<<'); + if (61 === next) return scanPunctuator('<='); + return scanPunctuator('<'); + + case 126: // ~ + if (61 === next) return scanPunctuator('~='); + if (!features.bitwiseOperators) + break; + return scanPunctuator('~'); + + case 58: // : + if (features.labels) + if (58 === next) return scanPunctuator('::'); + return scanPunctuator(':'); + + case 91: // [ + if (91 === next || 61 === next) return scanLongStringLiteral(); + return scanPunctuator('['); + + case 47: // / + if (features.integerDivision) + if (47 === next) return scanPunctuator('//'); + return scanPunctuator('/'); + + case 38: case 124: // & | + if (!features.bitwiseOperators) + break; + case 42: case 94: case 37: case 44: case 123: case 125: + case 93: case 40: case 41: case 59: case 35: case 45: + case 43: // * ^ % , { } ] ( ) ; # - + + return scanPunctuator(input.charAt(index)); + } + + return unexpected(input.charAt(index)); + } + + function consumeEOL() { + var charCode = input.charCodeAt(index) + , peekCharCode = input.charCodeAt(index + 1); + + if (isLineTerminator(charCode)) { + if (10 === charCode && 13 === peekCharCode) ++index; + if (13 === charCode && 10 === peekCharCode) ++index; + ++line; + lineStart = ++index; + + return true; + } + return false; + } + + function skipWhiteSpace() { + while (index < length) { + var charCode = input.charCodeAt(index); + if (isWhiteSpace(charCode)) { + ++index; + } else if (!consumeEOL()) { + break; + } + } + } + + function scanIdentifierOrKeyword() { + var value, type; + while (isIdentifierPart(input.charCodeAt(++index))); + value = encodingMode.fixup(input.slice(tokenStart, index)); + if (isKeyword(value)) { + type = Keyword; + } else if ('true' === value || 'false' === value) { + type = BooleanLiteral; + value = ('true' === value); + } else if ('nil' === value) { + type = NilLiteral; + value = null; + } else { + type = Identifier; + } + + return { + type: type + , value: value + , line: line + , lineStart: lineStart + , range: [tokenStart, index] + }; + } + + function scanPunctuator(value) { + index += value.length; + return { + type: Punctuator + , value: value + , line: line + , lineStart: lineStart + , range: [tokenStart, index] + }; + } + + function scanVarargLiteral() { + index += 3; + return { + type: VarargLiteral + , value: '...' + , line: line + , lineStart: lineStart + , range: [tokenStart, index] + }; + } + + function scanStringLiteral() { + var delimiter = input.charCodeAt(index++) + , beginLine = line + , beginLineStart = lineStart + , stringStart = index + , string = encodingMode.discardStrings ? null : '' + , charCode; + + for (;;) { + charCode = input.charCodeAt(index++); + if (delimiter === charCode) break; + if (index > length || isLineTerminator(charCode)) { + string += input.slice(stringStart, index - 1); + raise(null, errors.unfinishedString, input.slice(tokenStart, index - 1)); + } + if (92 === charCode) { // backslash + if (!encodingMode.discardStrings) { + var beforeEscape = input.slice(stringStart, index - 1); + string += encodingMode.fixup(beforeEscape); + } + var escapeValue = readEscapeSequence(); + if (!encodingMode.discardStrings) + string += escapeValue; + stringStart = index; + } + } + if (!encodingMode.discardStrings) { + string += encodingMode.encodeByte(null); + string += encodingMode.fixup(input.slice(stringStart, index - 1)); + } + + return { + type: StringLiteral + , value: string + , line: beginLine + , lineStart: beginLineStart + , lastLine: line + , lastLineStart: lineStart + , range: [tokenStart, index] + }; + } + + function scanLongStringLiteral() { + var beginLine = line + , beginLineStart = lineStart + , string = readLongString(false); + if (false === string) raise(token, errors.expected, '[', tokenValue(token)); + + return { + type: StringLiteral + , value: encodingMode.discardStrings ? null : encodingMode.fixup(string) + , line: beginLine + , lineStart: beginLineStart + , lastLine: line + , lastLineStart: lineStart + , range: [tokenStart, index] + }; + } + + function scanNumericLiteral() { + var character = input.charAt(index) + , next = input.charAt(index + 1); + + var literal = ('0' === character && 'xX'.indexOf(next || null) >= 0) ? + readHexLiteral() : readDecLiteral(); + + var foundImaginaryUnit = readImaginaryUnitSuffix() + , foundInt64Suffix = readInt64Suffix(); + + if (foundInt64Suffix && (foundImaginaryUnit || literal.hasFractionPart)) { + raise(null, errors.malformedNumber, input.slice(tokenStart, index)); + } + + return { + type: NumericLiteral + , value: literal.value + , line: line + , lineStart: lineStart + , range: [tokenStart, index] + }; + } + + function readImaginaryUnitSuffix() { + if (!features.imaginaryNumbers) return; + if ('iI'.indexOf(input.charAt(index) || null) >= 0) { + ++index; + return true; + } else { + return false; + } + } + + function readInt64Suffix() { + if (!features.integerSuffixes) return; + + if ('uU'.indexOf(input.charAt(index) || null) >= 0) { + ++index; + if ('lL'.indexOf(input.charAt(index) || null) >= 0) { + ++index; + if ('lL'.indexOf(input.charAt(index) || null) >= 0) { + ++index; + return 'ULL'; + } else { + raise(null, errors.malformedNumber, input.slice(tokenStart, index)); + } + } else { + raise(null, errors.malformedNumber, input.slice(tokenStart, index)); + } + } else if ('lL'.indexOf(input.charAt(index) || null) >= 0) { + ++index; + if ('lL'.indexOf(input.charAt(index) || null) >= 0) { + ++index; + return 'LL'; + } else { + raise(null, errors.malformedNumber, input.slice(tokenStart, index)); + } + } + } + + function readHexLiteral() { + var fraction = 0 // defaults to 0 as it gets summed + , binaryExponent = 1 // defaults to 1 as it gets multiplied + , binarySign = 1 // positive + , digit, fractionStart, exponentStart, digitStart; + + digitStart = index += 2; // Skip 0x part + if (!isHexDigit(input.charCodeAt(index))) + raise(null, errors.malformedNumber, input.slice(tokenStart, index)); + + while (isHexDigit(input.charCodeAt(index))) ++index; + digit = parseInt(input.slice(digitStart, index), 16); + var foundFraction = false; + if ('.' === input.charAt(index)) { + foundFraction = true; + fractionStart = ++index; + + while (isHexDigit(input.charCodeAt(index))) ++index; + fraction = input.slice(fractionStart, index); + fraction = (fractionStart === index) ? 0 + : parseInt(fraction, 16) / Math.pow(16, index - fractionStart); + } + var foundBinaryExponent = false; + if ('pP'.indexOf(input.charAt(index) || null) >= 0) { + foundBinaryExponent = true; + ++index; + if ('+-'.indexOf(input.charAt(index) || null) >= 0) + binarySign = ('+' === input.charAt(index++)) ? 1 : -1; + + exponentStart = index; + if (!isDecDigit(input.charCodeAt(index))) + raise(null, errors.malformedNumber, input.slice(tokenStart, index)); + + while (isDecDigit(input.charCodeAt(index))) ++index; + binaryExponent = input.slice(exponentStart, index); + binaryExponent = Math.pow(2, binaryExponent * binarySign); + } + + return { + value: (digit + fraction) * binaryExponent, + hasFractionPart: foundFraction || foundBinaryExponent + }; + } + + function readDecLiteral() { + while (isDecDigit(input.charCodeAt(index))) ++index; + var foundFraction = false; + if ('.' === input.charAt(index)) { + foundFraction = true; + ++index; + while (isDecDigit(input.charCodeAt(index))) ++index; + } + var foundExponent = false; + if ('eE'.indexOf(input.charAt(index) || null) >= 0) { + foundExponent = true; + ++index; + if ('+-'.indexOf(input.charAt(index) || null) >= 0) ++index; + if (!isDecDigit(input.charCodeAt(index))) + raise(null, errors.malformedNumber, input.slice(tokenStart, index)); + + while (isDecDigit(input.charCodeAt(index))) ++index; + } + + return { + value: parseFloat(input.slice(tokenStart, index)), + hasFractionPart: foundFraction || foundExponent + }; + } + + function readUnicodeEscapeSequence() { + var sequenceStart = index++; + + if (input.charAt(index++) !== '{') + raise(null, errors.braceExpected, '{', '\\' + input.slice(sequenceStart, index)); + if (!isHexDigit(input.charCodeAt(index))) + raise(null, errors.hexadecimalDigitExpected, '\\' + input.slice(sequenceStart, index)); + + while (input.charCodeAt(index) === 0x30) ++index; + var escStart = index; + + while (isHexDigit(input.charCodeAt(index))) { + ++index; + if (index - escStart > 6) + raise(null, errors.tooLargeCodepoint, '\\' + input.slice(sequenceStart, index)); + } + + var b = input.charAt(index++); + if (b !== '}') { + if ((b === '"') || (b === "'")) + raise(null, errors.braceExpected, '}', '\\' + input.slice(sequenceStart, index--)); + else + raise(null, errors.hexadecimalDigitExpected, '\\' + input.slice(sequenceStart, index)); + } + + var codepoint = parseInt(input.slice(escStart, index - 1) || '0', 16); + var frag = '\\' + input.slice(sequenceStart, index); + + if (codepoint > 0x10ffff) { + raise(null, errors.tooLargeCodepoint, frag); + } + + return encodingMode.encodeUTF8(codepoint, frag); + } + function readEscapeSequence() { + var sequenceStart = index; + switch (input.charAt(index)) { + case 'a': ++index; return '\x07'; + case 'n': ++index; return '\n'; + case 'r': ++index; return '\r'; + case 't': ++index; return '\t'; + case 'v': ++index; return '\x0b'; + case 'b': ++index; return '\b'; + case 'f': ++index; return '\f'; + case '\r': + case '\n': + consumeEOL(); + return '\n'; + + case '0': case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': + while (isDecDigit(input.charCodeAt(index)) && index - sequenceStart < 3) ++index; + + var frag = input.slice(sequenceStart, index); + var ddd = parseInt(frag, 10); + if (ddd > 255) { + raise(null, errors.decimalEscapeTooLarge, '\\' + ddd); + } + return encodingMode.encodeByte(ddd, '\\' + frag); + + case 'z': + if (features.skipWhitespaceEscape) { + ++index; + skipWhiteSpace(); + return ''; + } + break; + + case 'x': + if (features.hexEscapes) { + if (isHexDigit(input.charCodeAt(index + 1)) && + isHexDigit(input.charCodeAt(index + 2))) { + index += 3; + return encodingMode.encodeByte(parseInt(input.slice(sequenceStart + 1, index), 16), '\\' + input.slice(sequenceStart, index)); + } + raise(null, errors.hexadecimalDigitExpected, '\\' + input.slice(sequenceStart, index + 2)); + } + break; + + case 'u': + if (features.unicodeEscapes) + return readUnicodeEscapeSequence(); + break; + + case '\\': case '"': case "'": + return input.charAt(index++); + } + + if (features.strictEscapes) + raise(null, errors.invalidEscape, '\\' + input.slice(sequenceStart, index + 1)); + return input.charAt(index++); + } + + function scanComment() { + tokenStart = index; + index += 2; // -- + + var character = input.charAt(index) + , content = '' + , isLong = false + , commentStart = index + , lineStartComment = lineStart + , lineComment = line; + + if ('[' === character) { + content = readLongString(true); + if (false === content) content = character; + else isLong = true; + } + if (!isLong) { + while (index < length) { + if (isLineTerminator(input.charCodeAt(index))) break; + ++index; + } + if (options.comments) content = input.slice(commentStart, index); + } + + if (options.comments) { + var node = ast.comment(content, input.slice(tokenStart, index)); + if (options.locations) { + node.loc = { + start: { line: lineComment, column: tokenStart - lineStartComment } + , end: { line: line, column: index - lineStart } + }; + } + if (options.ranges) { + node.range = [tokenStart, index]; + } + if (options.onCreateNode) options.onCreateNode(node); + comments.push(node); + } + } + + function readLongString(isComment) { + var level = 0 + , content = '' + , terminator = false + , character, stringStart, firstLine = line; + + ++index; // [ + while ('=' === input.charAt(index + level)) ++level; + if ('[' !== input.charAt(index + level)) return false; + + index += level + 1; + if (isLineTerminator(input.charCodeAt(index))) consumeEOL(); + + stringStart = index; + while (index < length) { + while (isLineTerminator(input.charCodeAt(index))) consumeEOL(); + + character = input.charAt(index++); + if (']' === character) { + terminator = true; + for (var i = 0; i < level; ++i) { + if ('=' !== input.charAt(index + i)) terminator = false; + } + if (']' !== input.charAt(index + level)) terminator = false; + } + if (terminator) { + content += input.slice(stringStart, index - 1); + index += level + 1; + return content; + } + } + + raise(null, isComment ? + errors.unfinishedLongComment : + errors.unfinishedLongString, + firstLine, ''); + } + + function next() { + previousToken = token; + token = lookahead; + lookahead = lex(); + } + + function consume(value) { + if (value === token.value) { + next(); + return true; + } + return false; + } + + function expect(value) { + if (value === token.value) next(); + else raise(token, errors.expected, value, tokenValue(token)); + } + + function isWhiteSpace(charCode) { + return 9 === charCode || 32 === charCode || 0xB === charCode || 0xC === charCode; + } + + function isLineTerminator(charCode) { + return 10 === charCode || 13 === charCode; + } + + function isDecDigit(charCode) { + return charCode >= 48 && charCode <= 57; + } + + function isHexDigit(charCode) { + return (charCode >= 48 && charCode <= 57) || (charCode >= 97 && charCode <= 102) || (charCode >= 65 && charCode <= 70); + } + + function isIdentifierStart(charCode) { + if ((charCode >= 65 && charCode <= 90) || (charCode >= 97 && charCode <= 122) || 95 === charCode) + return true; + if (features.extendedIdentifiers && charCode >= 128) + return true; + return false; + } + + function isIdentifierPart(charCode) { + if ((charCode >= 65 && charCode <= 90) || (charCode >= 97 && charCode <= 122) || 95 === charCode || (charCode >= 48 && charCode <= 57)) + return true; + if (features.extendedIdentifiers && charCode >= 128) + return true; + return false; + } + + function isKeyword(id) { + switch (id.length) { + case 2: + return 'do' === id || 'if' === id || 'in' === id || 'or' === id; + case 3: + return 'and' === id || 'end' === id || 'for' === id || 'not' === id; + case 4: + if ('else' === id || 'then' === id) + return true; + if (features.labels && !features.contextualGoto) + return ('goto' === id); + return false; + case 5: + return 'break' === id || 'local' === id || 'until' === id || 'while' === id; + case 6: + return 'elseif' === id || 'repeat' === id || 'return' === id; + case 8: + return 'function' === id; + } + return false; + } + + function isUnary(token) { + if (Punctuator === token.type) return '#-~'.indexOf(token.value) >= 0; + if (Keyword === token.type) return 'not' === token.value; + return false; + } + + function isBlockFollow(token) { + if (EOF === token.type) return true; + if (Keyword !== token.type) return false; + switch (token.value) { + case 'else': case 'elseif': + case 'end': case 'until': + return true; + default: + return false; + } + } + var scopes + , scopeDepth + , globals; + function createScope() { + var scope = scopes[scopeDepth++].slice(); + scopes.push(scope); + if (options.onCreateScope) options.onCreateScope(); + } + function destroyScope() { + var scope = scopes.pop(); + --scopeDepth; + if (options.onDestroyScope) options.onDestroyScope(); + } + function scopeIdentifierName(name) { + if (options.onLocalDeclaration) options.onLocalDeclaration(name); + if (-1 !== indexOf(scopes[scopeDepth], name)) return; + scopes[scopeDepth].push(name); + } + function scopeIdentifier(node) { + scopeIdentifierName(node.name); + attachScope(node, true); + } + function attachScope(node, isLocal) { + if (!isLocal && -1 === indexOfObject(globals, 'name', node.name)) + globals.push(node); + + node.isLocal = isLocal; + } + function scopeHasName(name) { + return (-1 !== indexOf(scopes[scopeDepth], name)); + } + + var locations = [] + , trackLocations; + + function createLocationMarker() { + return new Marker(token); + } + + function Marker(token) { + if (options.locations) { + this.loc = { + start: { + line: token.line + , column: token.range[0] - token.lineStart + } + , end: { + line: 0 + , column: 0 + } + }; + } + if (options.ranges) this.range = [token.range[0], 0]; + } + Marker.prototype.complete = function() { + if (options.locations) { + this.loc.end.line = previousToken.lastLine || previousToken.line; + this.loc.end.column = previousToken.range[1] - (previousToken.lastLineStart || previousToken.lineStart); + } + if (options.ranges) { + this.range[1] = previousToken.range[1]; + } + }; + + Marker.prototype.bless = function (node) { + if (this.loc) { + var loc = this.loc; + node.loc = { + start: { + line: loc.start.line, + column: loc.start.column + }, + end: { + line: loc.end.line, + column: loc.end.column + } + }; + } + if (this.range) { + node.range = [ + this.range[0], + this.range[1] + ]; + } + }; + function markLocation() { + if (trackLocations) locations.push(createLocationMarker()); + } + function pushLocation(marker) { + if (trackLocations) locations.push(marker); + } + + function FullFlowContext() { + this.scopes = []; + this.pendingGotos = []; + } + + FullFlowContext.prototype.isInLoop = function () { + var i = this.scopes.length; + while (i --> 0) { + if (this.scopes[i].isLoop) + return true; + } + return false; + }; + + FullFlowContext.prototype.pushScope = function (isLoop) { + var scope = { + labels: {}, + locals: [], + deferredGotos: [], + isLoop: !!isLoop + }; + this.scopes.push(scope); + }; + + FullFlowContext.prototype.popScope = function () { + for (var i = 0; i < this.pendingGotos.length; ++i) { + var theGoto = this.pendingGotos[i]; + if (theGoto.maxDepth >= this.scopes.length) + if (--theGoto.maxDepth <= 0) + raise(theGoto.token, errors.labelNotVisible, theGoto.target); + } + + this.scopes.pop(); + }; + + FullFlowContext.prototype.addGoto = function (target, token) { + var localCounts = []; + + for (var i = 0; i < this.scopes.length; ++i) { + var scope = this.scopes[i]; + localCounts.push(scope.locals.length); + if (Object.prototype.hasOwnProperty.call(scope.labels, target)) + return; + } + + this.pendingGotos.push({ + maxDepth: this.scopes.length, + target: target, + token: token, + localCounts: localCounts + }); + }; + + FullFlowContext.prototype.addLabel = function (name, token) { + var scope = this.currentScope(); + + if (Object.prototype.hasOwnProperty.call(scope.labels, name)) { + raise(token, errors.labelAlreadyDefined, name, scope.labels[name].line); + } else { + var newGotos = []; + + for (var i = 0; i < this.pendingGotos.length; ++i) { + var theGoto = this.pendingGotos[i]; + + if (theGoto.maxDepth >= this.scopes.length && theGoto.target === name) { + if (theGoto.localCounts[this.scopes.length - 1] < scope.locals.length) { + scope.deferredGotos.push(theGoto); + } + continue; + } + + newGotos.push(theGoto); + } + + this.pendingGotos = newGotos; + } + + scope.labels[name] = { + localCount: scope.locals.length, + line: token.line + }; + }; + + FullFlowContext.prototype.addLocal = function (name, token) { + this.currentScope().locals.push({ + name: name, + token: token + }); + }; + + FullFlowContext.prototype.currentScope = function () { + return this.scopes[this.scopes.length - 1]; + }; + + FullFlowContext.prototype.raiseDeferredErrors = function () { + var scope = this.currentScope(); + var bads = scope.deferredGotos; + for (var i = 0; i < bads.length; ++i) { + var theGoto = bads[i]; + raise(theGoto.token, errors.gotoJumpInLocalScope, theGoto.target, scope.locals[theGoto.localCounts[this.scopes.length - 1]].name); + } + }; + + function LoopFlowContext() { + this.level = 0; + this.loopLevels = []; + } + + LoopFlowContext.prototype.isInLoop = function () { + return !!this.loopLevels.length; + }; + + LoopFlowContext.prototype.pushScope = function (isLoop) { + ++this.level; + if (isLoop) + this.loopLevels.push(this.level); + }; + + LoopFlowContext.prototype.popScope = function () { + var levels = this.loopLevels; + var levlen = levels.length; + if (levlen) { + if (levels[levlen - 1] === this.level) + levels.pop(); + } + --this.level; + }; + + LoopFlowContext.prototype.addGoto = + LoopFlowContext.prototype.addLabel = + function () { throw new Error('This should never happen'); }; + + LoopFlowContext.prototype.addLocal = + LoopFlowContext.prototype.raiseDeferredErrors = + function () {}; + + function makeFlowContext() { + return features.labels ? new FullFlowContext() : new LoopFlowContext(); + } + + function parseChunk() { + next(); + markLocation(); + if (options.scope) createScope(); + var flowContext = makeFlowContext(); + flowContext.allowVararg = true; + flowContext.pushScope(); + var body = parseBlock(flowContext); + flowContext.popScope(); + if (options.scope) destroyScope(); + if (EOF !== token.type) unexpected(token); + if (trackLocations && !body.length) previousToken = token; + return finishNode(ast.chunk(body)); + } + + function parseBlock(flowContext) { + var block = [] + , statement; + + while (!isBlockFollow(token)) { + if ('return' === token.value || (!features.relaxedBreak && 'break' === token.value)) { + block.push(parseStatement(flowContext)); + break; + } + statement = parseStatement(flowContext); + consume(';'); + if (statement) block.push(statement); + } + return block; + } + + function parseStatement(flowContext) { + markLocation(); + + if (Punctuator === token.type) { + if (consume('::')) return parseLabelStatement(flowContext); + } + if (features.emptyStatement) { + if (consume(';')) { + if (trackLocations) locations.pop(); + return; + } + } + + flowContext.raiseDeferredErrors(); + + if (Keyword === token.type) { + switch (token.value) { + case 'local': next(); return parseLocalStatement(flowContext); + case 'if': next(); return parseIfStatement(flowContext); + case 'return': next(); return parseReturnStatement(flowContext); + case 'function': next(); + var name = parseFunctionName(); + return parseFunctionDeclaration(name); + case 'while': next(); return parseWhileStatement(flowContext); + case 'for': next(); return parseForStatement(flowContext); + case 'repeat': next(); return parseRepeatStatement(flowContext); + case 'break': next(); + if (!flowContext.isInLoop()) + raise(token, errors.noLoopToBreak, token.value); + return parseBreakStatement(); + case 'do': next(); return parseDoStatement(flowContext); + case 'goto': next(); return parseGotoStatement(flowContext); + } + } + + if (features.contextualGoto && + token.type === Identifier && token.value === 'goto' && + lookahead.type === Identifier && lookahead.value !== 'goto') { + next(); return parseGotoStatement(flowContext); + } + if (trackLocations) locations.pop(); + + return parseAssignmentOrCallStatement(flowContext); + } + + function parseLabelStatement(flowContext) { + var nameToken = token + , label = parseIdentifier(); + + if (options.scope) { + scopeIdentifierName('::' + nameToken.value + '::'); + attachScope(label, true); + } + + expect('::'); + + flowContext.addLabel(nameToken.value, nameToken); + return finishNode(ast.labelStatement(label)); + } + + function parseBreakStatement() { + return finishNode(ast.breakStatement()); + } + + function parseGotoStatement(flowContext) { + var name = token.value + , gotoToken = previousToken + , label = parseIdentifier(); + + flowContext.addGoto(name, gotoToken); + return finishNode(ast.gotoStatement(label)); + } + + function parseDoStatement(flowContext) { + if (options.scope) createScope(); + flowContext.pushScope(); + var body = parseBlock(flowContext); + flowContext.popScope(); + if (options.scope) destroyScope(); + expect('end'); + return finishNode(ast.doStatement(body)); + } + + function parseWhileStatement(flowContext) { + var condition = parseExpectedExpression(flowContext); + expect('do'); + if (options.scope) createScope(); + flowContext.pushScope(true); + var body = parseBlock(flowContext); + flowContext.popScope(); + if (options.scope) destroyScope(); + expect('end'); + return finishNode(ast.whileStatement(condition, body)); + } + + function parseRepeatStatement(flowContext) { + if (options.scope) createScope(); + flowContext.pushScope(true); + var body = parseBlock(flowContext); + expect('until'); + flowContext.raiseDeferredErrors(); + var condition = parseExpectedExpression(flowContext); + flowContext.popScope(); + if (options.scope) destroyScope(); + return finishNode(ast.repeatStatement(condition, body)); + } + + function parseReturnStatement(flowContext) { + var expressions = []; + + if ('end' !== token.value) { + var expression = parseExpression(flowContext); + if (null != expression) expressions.push(expression); + while (consume(',')) { + expression = parseExpectedExpression(flowContext); + expressions.push(expression); + } + consume(';'); // grammar tells us ; is optional here. + } + return finishNode(ast.returnStatement(expressions)); + } + + function parseIfStatement(flowContext) { + var clauses = [] + , condition + , body + , marker; + if (trackLocations) { + marker = locations[locations.length - 1]; + locations.push(marker); + } + condition = parseExpectedExpression(flowContext); + expect('then'); + if (options.scope) createScope(); + flowContext.pushScope(); + body = parseBlock(flowContext); + flowContext.popScope(); + if (options.scope) destroyScope(); + clauses.push(finishNode(ast.ifClause(condition, body))); + + if (trackLocations) marker = createLocationMarker(); + while (consume('elseif')) { + pushLocation(marker); + condition = parseExpectedExpression(flowContext); + expect('then'); + if (options.scope) createScope(); + flowContext.pushScope(); + body = parseBlock(flowContext); + flowContext.popScope(); + if (options.scope) destroyScope(); + clauses.push(finishNode(ast.elseifClause(condition, body))); + if (trackLocations) marker = createLocationMarker(); + } + + if (consume('else')) { + if (trackLocations) { + marker = new Marker(previousToken); + locations.push(marker); + } + if (options.scope) createScope(); + flowContext.pushScope(); + body = parseBlock(flowContext); + flowContext.popScope(); + if (options.scope) destroyScope(); + clauses.push(finishNode(ast.elseClause(body))); + } + + expect('end'); + return finishNode(ast.ifStatement(clauses)); + } + + function parseForStatement(flowContext) { + var variable = parseIdentifier() + , body; + + if (options.scope) { + createScope(); + scopeIdentifier(variable); + } + if (consume('=')) { + var start = parseExpectedExpression(flowContext); + expect(','); + var end = parseExpectedExpression(flowContext); + var step = consume(',') ? parseExpectedExpression(flowContext) : null; + + expect('do'); + flowContext.pushScope(true); + body = parseBlock(flowContext); + flowContext.popScope(); + expect('end'); + if (options.scope) destroyScope(); + + return finishNode(ast.forNumericStatement(variable, start, end, step, body)); + } + else { + var variables = [variable]; + while (consume(',')) { + variable = parseIdentifier(); + if (options.scope) scopeIdentifier(variable); + variables.push(variable); + } + expect('in'); + var iterators = []; + do { + var expression = parseExpectedExpression(flowContext); + iterators.push(expression); + } while (consume(',')); + + expect('do'); + flowContext.pushScope(true); + body = parseBlock(flowContext); + flowContext.popScope(); + expect('end'); + if (options.scope) destroyScope(); + + return finishNode(ast.forGenericStatement(variables, iterators, body)); + } + } + + function parseLocalStatement(flowContext) { + var name + , declToken = previousToken; + + if (Identifier === token.type) { + var variables = [] + , init = []; + + do { + name = parseIdentifier(); + + variables.push(name); + flowContext.addLocal(name.name, declToken); + } while (consume(',')); + + if (consume('=')) { + do { + var expression = parseExpectedExpression(flowContext); + init.push(expression); + } while (consume(',')); + } + if (options.scope) { + for (var i = 0, l = variables.length; i < l; ++i) { + scopeIdentifier(variables[i]); + } + } + + return finishNode(ast.localStatement(variables, init)); + } + if (consume('function')) { + name = parseIdentifier(); + flowContext.addLocal(name.name, declToken); + + if (options.scope) { + scopeIdentifier(name); + createScope(); + } + return parseFunctionDeclaration(name, true); + } else { + raiseUnexpectedToken('', token); + } + } + + function parseAssignmentOrCallStatement(flowContext) { + var previous = token + , marker, startMarker; + var lvalue, base, name; + + var targets = []; + + if (trackLocations) startMarker = createLocationMarker(); + + do { + if (trackLocations) marker = createLocationMarker(); + + if (Identifier === token.type) { + name = token.value; + base = parseIdentifier(); + if (options.scope) attachScope(base, scopeHasName(name)); + lvalue = true; + } else if ('(' === token.value) { + next(); + base = parseExpectedExpression(flowContext); + expect(')'); + lvalue = false; + } else { + return unexpected(token); + } + + both: for (;;) { + var newBase; + + switch (StringLiteral === token.type ? '"' : token.value) { + case '.': + case '[': + lvalue = true; + break; + case ':': + case '(': + case '{': + case '"': + lvalue = null; + break; + default: + break both; + } + + base = parsePrefixExpressionPart(base, marker, flowContext); + } + + targets.push(base); + + if (',' !== token.value) + break; + + if (!lvalue) { + return unexpected(token); + } + + next(); + } while (true); + + if (targets.length === 1 && lvalue === null) { + pushLocation(marker); + return finishNode(ast.callStatement(targets[0])); + } else if (!lvalue) { + return unexpected(token); + } + + expect('='); + + var values = []; + + do { + values.push(parseExpectedExpression(flowContext)); + } while (consume(',')); + + pushLocation(startMarker); + return finishNode(ast.assignmentStatement(targets, values)); + } + + function parseIdentifier() { + markLocation(); + var identifier = token.value; + if (Identifier !== token.type) raiseUnexpectedToken('', token); + next(); + return finishNode(ast.identifier(identifier)); + } + + function parseFunctionDeclaration(name, isLocal) { + var flowContext = makeFlowContext(); + flowContext.pushScope(); + + var parameters = []; + expect('('); + if (!consume(')')) { + while (true) { + if (Identifier === token.type) { + var parameter = parseIdentifier(); + if (options.scope) scopeIdentifier(parameter); + + parameters.push(parameter); + + if (consume(',')) continue; + } + else if (VarargLiteral === token.type) { + flowContext.allowVararg = true; + parameters.push(parsePrimaryExpression(flowContext)); + } else { + raiseUnexpectedToken(' or \'...\'', token); + } + expect(')'); + break; + } + } + + var body = parseBlock(flowContext); + flowContext.popScope(); + expect('end'); + if (options.scope) destroyScope(); + + isLocal = isLocal || false; + return finishNode(ast.functionStatement(name, parameters, isLocal, body)); + } + + function parseFunctionName() { + var base, name, marker; + + if (trackLocations) marker = createLocationMarker(); + base = parseIdentifier(); + + if (options.scope) { + attachScope(base, scopeHasName(base.name)); + createScope(); + } + + while (consume('.')) { + pushLocation(marker); + name = parseIdentifier(); + base = finishNode(ast.memberExpression(base, '.', name)); + } + + if (consume(':')) { + pushLocation(marker); + name = parseIdentifier(); + base = finishNode(ast.memberExpression(base, ':', name)); + if (options.scope) scopeIdentifierName('self'); + } + + return base; + } + + function parseTableConstructor(flowContext) { + var fields = [] + , key, value; + + while (true) { + markLocation(); + if (Punctuator === token.type && consume('[')) { + key = parseExpectedExpression(flowContext); + expect(']'); + expect('='); + value = parseExpectedExpression(flowContext); + fields.push(finishNode(ast.tableKey(key, value))); + } else if (Identifier === token.type) { + if ('=' === lookahead.value) { + key = parseIdentifier(); + next(); + value = parseExpectedExpression(flowContext); + fields.push(finishNode(ast.tableKeyString(key, value))); + } else { + value = parseExpectedExpression(flowContext); + fields.push(finishNode(ast.tableValue(value))); + } + } else { + if (null == (value = parseExpression(flowContext))) { + locations.pop(); + break; + } + fields.push(finishNode(ast.tableValue(value))); + } + if (',;'.indexOf(token.value) >= 0) { + next(); + continue; + } + break; + } + expect('}'); + return finishNode(ast.tableConstructorExpression(fields)); + } + + function parseExpression(flowContext) { + var expression = parseSubExpression(0, flowContext); + return expression; + } + + function parseExpectedExpression(flowContext) { + var expression = parseExpression(flowContext); + if (null == expression) raiseUnexpectedToken('', token); + else return expression; + } + + function binaryPrecedence(operator) { + var charCode = operator.charCodeAt(0) + , length = operator.length; + + if (1 === length) { + switch (charCode) { + case 94: return 12; // ^ + case 42: case 47: case 37: return 10; // * / % + case 43: case 45: return 9; // + - + case 38: return 6; // & + case 126: return 5; // ~ + case 124: return 4; // | + case 60: case 62: return 3; // < > + } + } else if (2 === length) { + switch (charCode) { + case 47: return 10; // // + case 46: return 8; // .. + case 60: case 62: + if('<<' === operator || '>>' === operator) return 7; // << >> + return 3; // <= >= + case 61: case 126: return 3; // == ~= + case 111: return 1; // or + } + } else if (97 === charCode && 'and' === operator) return 2; + return 0; + } + + function parseSubExpression(minPrecedence, flowContext) { + var operator = token.value + , expression, marker; + + if (trackLocations) marker = createLocationMarker(); + if (isUnary(token)) { + markLocation(); + next(); + var argument = parseSubExpression(10, flowContext); + if (argument == null) raiseUnexpectedToken('', token); + expression = finishNode(ast.unaryExpression(operator, argument)); + } + if (null == expression) { + expression = parsePrimaryExpression(flowContext); + if (null == expression) { + expression = parsePrefixExpression(flowContext); + } + } + if (null == expression) return null; + + var precedence; + while (true) { + operator = token.value; + + precedence = (Punctuator === token.type || Keyword === token.type) ? + binaryPrecedence(operator) : 0; + + if (precedence === 0 || precedence <= minPrecedence) break; + if ('^' === operator || '..' === operator) --precedence; + next(); + var right = parseSubExpression(precedence, flowContext); + if (null == right) raiseUnexpectedToken('', token); + if (trackLocations) locations.push(marker); + expression = finishNode(ast.binaryExpression(operator, expression, right)); + + } + return expression; + } + + function parsePrefixExpressionPart(base, marker, flowContext) { + var expression, identifier; + + if (Punctuator === token.type) { + switch (token.value) { + case '[': + pushLocation(marker); + next(); + expression = parseExpectedExpression(flowContext); + expect(']'); + return finishNode(ast.indexExpression(base, expression)); + case '.': + pushLocation(marker); + next(); + identifier = parseIdentifier(); + return finishNode(ast.memberExpression(base, '.', identifier)); + case ':': + pushLocation(marker); + next(); + identifier = parseIdentifier(); + base = finishNode(ast.memberExpression(base, ':', identifier)); + pushLocation(marker); + return parseCallExpression(base, flowContext); + case '(': case '{': // args + pushLocation(marker); + return parseCallExpression(base, flowContext); + } + } else if (StringLiteral === token.type) { + pushLocation(marker); + return parseCallExpression(base, flowContext); + } + + return null; + } + + function parsePrefixExpression(flowContext) { + var base, name, marker; + + if (trackLocations) marker = createLocationMarker(); + if (Identifier === token.type) { + name = token.value; + base = parseIdentifier(); + if (options.scope) attachScope(base, scopeHasName(name)); + } else if (consume('(')) { + base = parseExpectedExpression(flowContext); + expect(')'); + } else { + return null; + } + for (;;) { + var newBase = parsePrefixExpressionPart(base, marker, flowContext); + if (newBase === null) + break; + base = newBase; + } + + return base; + } + + function parseCallExpression(base, flowContext) { + if (Punctuator === token.type) { + switch (token.value) { + case '(': + if (!features.emptyStatement) { + if (token.line !== previousToken.line) + raise(null, errors.ambiguousSyntax, token.value); + } + next(); + var expressions = []; + var expression = parseExpression(flowContext); + if (null != expression) expressions.push(expression); + while (consume(',')) { + expression = parseExpectedExpression(flowContext); + expressions.push(expression); + } + + expect(')'); + return finishNode(ast.callExpression(base, expressions)); + + case '{': + markLocation(); + next(); + var table = parseTableConstructor(flowContext); + return finishNode(ast.tableCallExpression(base, table)); + } + } else if (StringLiteral === token.type) { + return finishNode(ast.stringCallExpression(base, parsePrimaryExpression(flowContext))); + } + + raiseUnexpectedToken('function arguments', token); + } + + function parsePrimaryExpression(flowContext) { + var literals = StringLiteral | NumericLiteral | BooleanLiteral | NilLiteral | VarargLiteral + , value = token.value + , type = token.type + , marker; + + if (trackLocations) marker = createLocationMarker(); + + if (type === VarargLiteral && !flowContext.allowVararg) { + raise(token, errors.cannotUseVararg, token.value); + } + + if (type & literals) { + pushLocation(marker); + var raw = input.slice(token.range[0], token.range[1]); + next(); + return finishNode(ast.literal(type, value, raw)); + } else if (Keyword === type && 'function' === value) { + pushLocation(marker); + next(); + if (options.scope) createScope(); + return parseFunctionDeclaration(null); + } else if (consume('{')) { + pushLocation(marker); + return parseTableConstructor(flowContext); + } + } + + exports.parse = parse; + + var versionFeatures = { + '5.1': { + }, + '5.2': { + labels: true, + emptyStatement: true, + hexEscapes: true, + skipWhitespaceEscape: true, + strictEscapes: true, + relaxedBreak: true + }, + '5.3': { + labels: true, + emptyStatement: true, + hexEscapes: true, + skipWhitespaceEscape: true, + strictEscapes: true, + unicodeEscapes: true, + bitwiseOperators: true, + integerDivision: true, + relaxedBreak: true + }, + 'LuaJIT': { + labels: true, + contextualGoto: true, + hexEscapes: true, + skipWhitespaceEscape: true, + strictEscapes: true, + unicodeEscapes: true, + imaginaryNumbers: true, + integerSuffixes: true + } + }; + + function parse(_input, _options) { + if ('undefined' === typeof _options && 'object' === typeof _input) { + _options = _input; + _input = undefined; + } + if (!_options) _options = {}; + + input = _input || ''; + options = assign({}, defaultOptions, _options); + index = 0; + line = 1; + lineStart = 0; + length = input.length; + scopes = [[]]; + scopeDepth = 0; + globals = []; + locations = []; + + if (!Object.prototype.hasOwnProperty.call(versionFeatures, options.luaVersion)) { + throw new Error(sprintf("Lua version '%1' not supported", options.luaVersion)); + } + + features = assign({}, versionFeatures[options.luaVersion]); + if (options.extendedIdentifiers !== void 0) + features.extendedIdentifiers = !!options.extendedIdentifiers; + + if (!Object.prototype.hasOwnProperty.call(encodingModes, options.encodingMode)) { + throw new Error(sprintf("Encoding mode '%1' not supported", options.encodingMode)); + } + + encodingMode = encodingModes[options.encodingMode]; + + if (options.comments) comments = []; + if (!options.wait) return end(); + return exports; + } + exports.write = write; + + function write(_input) { + input += String(_input); + length = input.length; + return exports; + } + exports.end = end; + + function end(_input) { + if ('undefined' !== typeof _input) write(_input); + if (input && input.substr(0, 2) === '#!') input = input.replace(/^.*/, function (line) { + return line.replace(/./g, ' '); + }); + + length = input.length; + trackLocations = options.locations || options.ranges; + lookahead = lex(); + + var chunk = parseChunk(); + if (options.comments) chunk.comments = comments; + if (options.scope) chunk.globals = globals; + if (locations.length > 0) + throw new Error('Location tracking failed. This is most likely a bug in luaparse'); + + return chunk; + } + +})); + +}); + +ace.define("ace/mode/lua_worker",[], function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var Mirror = require("../worker/mirror").Mirror; +var luaparse = require("../mode/lua/luaparse"); + +var Worker = exports.Worker = function(sender) { + Mirror.call(this, sender); + this.setTimeout(500); +}; + +oop.inherits(Worker, Mirror); + +(function() { + + this.onUpdate = function() { + var value = this.doc.getValue(); + var errors = []; + try { + luaparse.parse(value); + } catch(e) { + if (e instanceof luaparse.SyntaxError) { + errors.push({ + row: e.line - 1, + column: e.column, + text: e.message, + type: "error" + }); + } + } + this.sender.emit("annotate", errors); + }; + +}).call(Worker.prototype); + +}); diff --git a/web/dist/f86deff6386f7243a4aa39e90b30ba36.js.gz b/web/dist/f86deff6386f7243a4aa39e90b30ba36.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..e4009d5303929894d823205313c53b31a39728cf GIT binary patch literal 20642 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 literal 0 HcmV?d00001 diff --git a/web/dist/f88127ad8950e3c94c3af6c65a7120fa.js b/web/dist/f88127ad8950e3c94c3af6c65a7120fa.js new file mode 100644 index 00000000..9b2248ef --- /dev/null +++ b/web/dist/f88127ad8950e3c94c3af6c65a7120fa.js @@ -0,0 +1,9 @@ + +; (function() { + ace.require(["ace/snippets/toml"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/f8d59c056683c7001a96d4fac22cc664.js b/web/dist/f8d59c056683c7001a96d4fac22cc664.js new file mode 100644 index 00000000..e70addcf --- /dev/null +++ b/web/dist/f8d59c056683c7001a96d4fac22cc664.js @@ -0,0 +1,457 @@ +ace.define("ace/mode/smithy_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){/* This file was autogenerated from https://raw.githubusercontent.com/awslabs/smithy-vscode/master/syntaxes/smithy.tmLanguage (uuid: ) */ +"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var SmithyHighlightRules = function () { + this.$rules = { + start: [{ + include: "#comment" + }, { + token: [ + "meta.keyword.statement.smithy", + "variable.other.smithy", + "text", + "keyword.operator.smithy" + ], + regex: /^(\$)(\s+.+)(\s*)(=)/ + }, { + token: [ + "keyword.statement.smithy", + "text", + "entity.name.type.namespace.smithy" + ], + regex: /^(namespace)(\s+)([A-Z-a-z0-9_\.#$-]+)/ + }, { + token: [ + "keyword.statement.smithy", + "text", + "keyword.statement.smithy", + "text", + "entity.name.type.smithy" + ], + regex: /^(use)(\s+)(shape|trait)(\s+)([A-Z-a-z0-9_\.#$-]+)\b/ + }, { + token: [ + "keyword.statement.smithy", + "variable.other.smithy", + "text", + "keyword.operator.smithy" + ], + regex: /^(metadata)(\s+.+)(\s*)(=)/ + }, { + token: [ + "keyword.statement.smithy", + "text", + "entity.name.type.smithy" + ], + regex: /^(apply|byte|short|integer|long|float|double|bigInteger|bigDecimal|boolean|blob|string|timestamp|service|resource|trait|list|map|set|structure|union|document)(\s+)([A-Z-a-z0-9_\.#$-]+)\b/ + }, { + token: [ + "keyword.operator.smithy", + "text", + "entity.name.type.smithy", + "text", + "text", + "support.function.smithy", + "text", + "text", + "support.function.smithy" + ], + regex: /^(operation)(\s+)([A-Z-a-z0-9_\.#$-]+)(\(.*\))(?:(\s*)(->)(\s*[A-Z-a-z0-9_\.#$-]+))?(?:(\s+)(errors))?/ + }, { + include: "#trait" + }, { + token: [ + "support.type.property-name.smithy", + "punctuation.separator.dictionary.pair.smithy" + ], + regex: /([A-Z-a-z0-9_\.#$-]+)(:)/ + }, { + include: "#value" + }, { + token: "keyword.other.smithy", + regex: /\->/ + }], + "#comment": [{ + include: "#doc_comment" + }, { + include: "#line_comment" + }], + "#doc_comment": [{ + token: "comment.block.documentation.smithy", + regex: /\/\/\/.*/ + }], + "#line_comment": [{ + token: "comment.line.double-slash.smithy", + regex: /\/\/.*/ + }], + "#trait": [{ + token: [ + "punctuation.definition.annotation.smithy", + "storage.type.annotation.smithy" + ], + regex: /(@)([0-9a-zA-Z\.#-]+)/ + }, { + token: [ + "punctuation.definition.annotation.smithy", + "punctuation.definition.object.end.smithy", + "meta.structure.smithy" + ], + regex: /(@)([0-9a-zA-Z\.#-]+)(\()/, + push: [{ + token: "punctuation.definition.object.end.smithy", + regex: /\)/, + next: "pop" + }, { + include: "#value" + }, { + include: "#object_inner" + }, { + defaultToken: "meta.structure.smithy" + }] + }], + "#value": [{ + include: "#constant" + }, { + include: "#number" + }, { + include: "#string" + }, { + include: "#array" + }, { + include: "#object" + }], + "#array": [{ + token: "punctuation.definition.array.begin.smithy", + regex: /\[/, + push: [{ + token: "punctuation.definition.array.end.smithy", + regex: /\]/, + next: "pop" + }, { + include: "#comment" + }, { + include: "#value" + }, { + token: "punctuation.separator.array.smithy", + regex: /,/ + }, { + token: "invalid.illegal.expected-array-separator.smithy", + regex: /[^\s\]]/ + }, { + defaultToken: "meta.structure.array.smithy" + }] + }], + "#constant": [{ + token: "constant.language.smithy", + regex: /\b(?:true|false|null)\b/ + }], + "#number": [{ + token: "constant.numeric.smithy", + regex: /-?(?:0|[1-9]\d*)(?:(?:\.\d+)?(?:[eE][+-]?\d+)?)?/ + }], + "#object": [{ + token: "punctuation.definition.dictionary.begin.smithy", + regex: /\{/, + push: [{ + token: "punctuation.definition.dictionary.end.smithy", + regex: /\}/, + next: "pop" + }, { + include: "#trait" + }, { + include: "#object_inner" + }, { + defaultToken: "meta.structure.dictionary.smithy" + }] + }], + "#object_inner": [{ + include: "#comment" + }, { + include: "#string_key" + }, { + token: "punctuation.separator.dictionary.key-value.smithy", + regex: /:/, + push: [{ + token: "punctuation.separator.dictionary.pair.smithy", + regex: /,|(?=\})/, + next: "pop" + }, { + include: "#value" + }, { + token: "invalid.illegal.expected-dictionary-separator.smithy", + regex: /[^\s,]/ + }, { + defaultToken: "meta.structure.dictionary.value.smithy" + }] + }, { + token: "invalid.illegal.expected-dictionary-separator.smithy", + regex: /[^\s\}]/ + }], + "#string_key": [{ + include: "#identifier_key" + }, { + include: "#dquote_key" + }, { + include: "#squote_key" + }], + "#identifier_key": [{ + token: "support.type.property-name.smithy", + regex: /[A-Z-a-z0-9_\.#$-]+/ + }], + "#dquote_key": [{ + include: "#dquote" + }], + "#squote_key": [{ + include: "#squote" + }], + "#string": [{ + include: "#textblock" + }, { + include: "#dquote" + }, { + include: "#squote" + }, { + include: "#identifier" + }], + "#textblock": [{ + token: "punctuation.definition.string.begin.smithy", + regex: /"""/, + push: [{ + token: "punctuation.definition.string.end.smithy", + regex: /"""/, + next: "pop" + }, { + token: "constant.character.escape.smithy", + regex: /\\./ + }, { + defaultToken: "string.quoted.double.smithy" + }] + }], + "#dquote": [{ + token: "punctuation.definition.string.begin.smithy", + regex: /"/, + push: [{ + token: "punctuation.definition.string.end.smithy", + regex: /"/, + next: "pop" + }, { + token: "constant.character.escape.smithy", + regex: /\\./ + }, { + defaultToken: "string.quoted.double.smithy" + }] + }], + "#squote": [{ + token: "punctuation.definition.string.begin.smithy", + regex: /'/, + push: [{ + token: "punctuation.definition.string.end.smithy", + regex: /'/, + next: "pop" + }, { + token: "constant.character.escape.smithy", + regex: /\\./ + }, { + defaultToken: "string.quoted.single.smithy" + }] + }], + "#identifier": [{ + token: "storage.type.smithy", + regex: /[A-Z-a-z_][A-Z-a-z0-9_\.#$-]*/ + }] + }; + this.normalizeRules(); +}; +SmithyHighlightRules.metaData = { + name: "Smithy", + fileTypes: ["smithy"], + scopeName: "source.smithy", + foldingStartMarker: "(\\{|\\[)\\s*", + foldingStopMarker: "\\s*(\\}|\\])" +}; +oop.inherits(SmithyHighlightRules, TextHighlightRules); +exports.SmithyHighlightRules = SmithyHighlightRules; + +}); + +ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) + return false; + return /^\s*\}/.test(input); + }; + this.autoOutdent = function (doc, row) { + var line = doc.getLine(row); + var match = line.match(/^(\s*\})/); + if (!match) + return 0; + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; + var indent = this.$getIndent(doc.getLine(openBracePos.row)); + doc.replace(new Range(row, 0, row, column - 1), indent); + }; + this.$getIndent = function (line) { + return line.match(/^\s*/)[0]; + }; +}).call(MatchingBraceOutdent.prototype); +exports.MatchingBraceOutdent = MatchingBraceOutdent; + +}); + +ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/smithy",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/smithy_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var SmithyHighlightRules = require("./smithy_highlight_rules").SmithyHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = SmithyHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CstyleBehaviour(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "//"; + this.$quotes = { '"': '"' }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.$id = "ace/mode/smithy"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/smithy"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/f8d59c056683c7001a96d4fac22cc664.js.gz b/web/dist/f8d59c056683c7001a96d4fac22cc664.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..1f2a5faf34721e7870083fa2e8f74f05a56ec2e2 GIT binary patch literal 3168 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 GL;wH<_9;*R literal 0 HcmV?d00001 diff --git a/web/dist/fa1618cda4da7d5362c381ea2d5f7321.js b/web/dist/fa1618cda4da7d5362c381ea2d5f7321.js new file mode 100644 index 00000000..815382d6 --- /dev/null +++ b/web/dist/fa1618cda4da7d5362c381ea2d5f7321.js @@ -0,0 +1,9 @@ + +; (function() { + ace.require(["ace/snippets/typescript"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/faf460076b3383fdc3ecc224068964cf.js b/web/dist/faf460076b3383fdc3ecc224068964cf.js new file mode 100644 index 00000000..08357873 --- /dev/null +++ b/web/dist/faf460076b3383fdc3ecc224068964cf.js @@ -0,0 +1,9 @@ + +; (function() { + ace.require(["ace/snippets/sjs"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/fc044cf204bd7f511182d4c654363401.js b/web/dist/fc044cf204bd7f511182d4c654363401.js new file mode 100644 index 00000000..eb424750 --- /dev/null +++ b/web/dist/fc044cf204bd7f511182d4c654363401.js @@ -0,0 +1,317 @@ +ace.define("ace/mode/puppet_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var PuppetHighlightRules = function () { + this.$rules = { + "start": [ + { + token: ['keyword.type.puppet', 'constant.class.puppet', 'keyword.inherits.puppet', 'constant.class.puppet'], + regex: "^\\s*(class)(\\s+(?:[-_A-Za-z0-9\".]+::)*[-_A-Za-z0-9\".]+\\s*)(?:(inherits\\s*)(\\s+(?:[-_A-Za-z0-9\".]+::)*[-_A-Za-z0-9\".]+\\s*))?" + }, + { + token: ['storage.function.puppet', 'name.function.puppet', 'punctuation.lpar'], + regex: "(^\\s*define)(\\s+[a-zA-Z0-9_:]+\\s*)(\\()", + push: [{ + token: 'punctuation.rpar.puppet', + regex: "\\)", + next: 'pop' + }, + { include: "constants" }, + { include: "variable" }, + { include: "strings" }, + { include: "operators" }, + { defaultToken: 'string' }] + }, + { + token: ["language.support.class", "keyword.operator"], + regex: "\\b([a-zA-Z_]+)(\\s+=>)" + }, + { + token: ["exported.resource.puppet", "keyword.name.resource.puppet", "paren.lparen"], + regex: "(\\@\\@)?(\\s*[a-zA-Z_]*)(\\s*\\{)" + }, + { + token: "qualified.variable.puppet", + regex: "(\\$([a-z][a-z0-9_]*)?(::[a-z][a-z0-9_]*)*::[a-z0-9_][a-zA-Z0-9_]*)" + }, + { + token: "singleline.comment.puppet", + regex: '#(.)*$' + }, + { + token: "multiline.comment.begin.puppet", + regex: '^\\s*\\/\\*', + push: "blockComment" + }, + { + token: "keyword.control.puppet", + regex: "\\b(case|if|unless|else|elsif|in|default:|and|or)\\s+(?!::)" + }, + { + token: "keyword.control.puppet", + regex: "\\b(import|default|inherits|include|require|contain|node|application|consumes|environment|site|function|produces)\\b" + }, + { + token: "support.function.puppet", + regex: "\\b(lest|str2bool|escape|gsub|Timestamp|Timespan|with|alert|crit|debug|notice|sprintf|split|step|strftime|slice|shellquote|type|sha1|defined|scanf|reverse_each|regsubst|return|emerg|reduce|err|failed|fail|versioncmp|file|generate|then|info|realize|search|tag|tagged|template|epp|warning|hiera_include|each|assert_type|binary_file|create_resources|dig|digest|filter|lookup|find_file|fqdn_rand|hiera_array|hiera_hash|inline_epp|inline_template|map|match|md5|new|next)\\b" + }, + { + token: "constant.types.puppet", + regex: "\\b(String|File|Package|Service|Class|Integer|Array|Catalogentry|Variant|Boolean|Undef|Number|Hash|Float|Numeric|NotUndef|Callable|Optional|Any|Regexp|Sensitive|Sensitive.new|Type|Resource|Default|Enum|Scalar|Collection|Data|Pattern|Tuple|Struct)\\b" + }, + { + token: "paren.lparen", + regex: "[[({]" + }, + { + token: "paren.rparen", + regex: "[\\])}]" + }, + { include: "variable" }, + { include: "constants" }, + { include: "strings" }, + { include: "operators" }, + { + token: "regexp.begin.string.puppet", + regex: "\\s*(\\/(\\S)+)\\/" + } + ], + blockComment: [{ + regex: "\\*\\/", + token: "multiline.comment.end.puppet", + next: "pop" + }, { + defaultToken: "comment" + }], + "constants": [ + { + token: "constant.language.puppet", + regex: "\\b(false|true|running|stopped|installed|purged|latest|file|directory|held|undef|present|absent|link|mounted|unmounted)\\b" + } + ], + "variable": [ + { + token: "variable.puppet", + regex: "(\\$[a-z0-9_\{][a-zA-Z0-9_]*)" + } + ], + "strings": [ + { + token: "punctuation.quote.puppet", + regex: "'", + push: [{ + token: 'punctuation.quote.puppet', + regex: "'", + next: 'pop' + }, + { include: "escaped_chars" }, + { defaultToken: 'string' }] + }, + { + token: "punctuation.quote.puppet", + regex: '"', + push: [{ + token: 'punctuation.quote.puppet', + regex: '"', + next: 'pop' + }, + { include: "escaped_chars" }, + { include: "variable" }, + { defaultToken: 'string' }] + } + ], + "escaped_chars": [ + { + token: "constant.escaped_char.puppet", + regex: "\\\\." + } + ], + "operators": [ + { + token: "keyword.operator", + regex: "\\+\\.|\\-\\.|\\*\\.|\\/\\.|#|;;|\\+|\\-|\\*|\\*\\*\\/|\\/\\/|%|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|<-|=|::|," + } + ] + }; + this.normalizeRules(); +}; +oop.inherits(PuppetHighlightRules, TextHighlightRules); +exports.PuppetHighlightRules = PuppetHighlightRules; + +}); + +ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) + return false; + return /^\s*\}/.test(input); + }; + this.autoOutdent = function (doc, row) { + var line = doc.getLine(row); + var match = line.match(/^(\s*\})/); + if (!match) + return 0; + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; + var indent = this.$getIndent(doc.getLine(openBracePos.row)); + doc.replace(new Range(row, 0, row, column - 1), indent); + }; + this.$getIndent = function (line) { + return line.match(/^\s*/)[0]; + }; +}).call(MatchingBraceOutdent.prototype); +exports.MatchingBraceOutdent = MatchingBraceOutdent; + +}); + +ace.define("ace/mode/puppet",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/puppet_highlight_rules","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle","ace/mode/matching_brace_outdent"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var PuppetHighlightRules = require("./puppet_highlight_rules").PuppetHighlightRules; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var Mode = function () { + TextMode.call(this); + this.HighlightRules = PuppetHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CstyleBehaviour(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "#"; + this.blockComment = { start: "/*", end: "*/" }; + this.$id = "ace/mode/puppet"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/puppet"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/fc044cf204bd7f511182d4c654363401.js.gz b/web/dist/fc044cf204bd7f511182d4c654363401.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..609f1175c5fca50a396f22099f563f8439dc4173 GIT binary patch literal 3156 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 literal 0 HcmV?d00001 diff --git a/web/dist/fc2291e5687166730bc9040250deb4dc.js b/web/dist/fc2291e5687166730bc9040250deb4dc.js new file mode 100644 index 00000000..95975b07 --- /dev/null +++ b/web/dist/fc2291e5687166730bc9040250deb4dc.js @@ -0,0 +1,192 @@ +ace.define("ace/ext/whitespace",["require","exports","module","ace/lib/lang"], function(require, exports, module){"use strict"; +var lang = require("../lib/lang"); +exports.$detectIndentation = function (lines, fallback) { + var stats = []; + var changes = []; + var tabIndents = 0; + var prevSpaces = 0; + var max = Math.min(lines.length, 1000); + for (var i = 0; i < max; i++) { + var line = lines[i]; + if (!/^\s*[^*+\-\s]/.test(line)) + continue; + if (line[0] == "\t") { + tabIndents++; + prevSpaces = -Number.MAX_VALUE; + } + else { + var spaces = line.match(/^ */)[0].length; + if (spaces && line[spaces] != "\t") { + var diff = spaces - prevSpaces; + if (diff > 0 && !(prevSpaces % diff) && !(spaces % diff)) + changes[diff] = (changes[diff] || 0) + 1; + stats[spaces] = (stats[spaces] || 0) + 1; + } + prevSpaces = spaces; + } + while (i < max && line[line.length - 1] == "\\") + line = lines[i++]; + } + function getScore(indent) { + var score = 0; + for (var i = indent; i < stats.length; i += indent) + score += stats[i] || 0; + return score; + } + var changesTotal = changes.reduce(function (a, b) { return a + b; }, 0); + var first = { score: 0, length: 0 }; + var spaceIndents = 0; + for (var i = 1; i < 12; i++) { + var score = getScore(i); + if (i == 1) { + spaceIndents = score; + score = stats[1] ? 0.9 : 0.8; + if (!stats.length) + score = 0; + } + else + score /= spaceIndents; + if (changes[i]) + score += changes[i] / changesTotal; + if (score > first.score) + first = { score: score, length: i }; + } + if (first.score && first.score > 1.4) + var tabLength = first.length; + if (tabIndents > spaceIndents + 1) { + if (tabLength == 1 || spaceIndents < tabIndents / 4 || first.score < 1.8) + tabLength = undefined; + return { ch: "\t", length: tabLength }; + } + if (spaceIndents > tabIndents + 1) + return { ch: " ", length: tabLength }; +}; +exports.detectIndentation = function (session) { + var lines = session.getLines(0, 1000); + var indent = exports.$detectIndentation(lines) || {}; + if (indent.ch) + session.setUseSoftTabs(indent.ch == " "); + if (indent.length) + session.setTabSize(indent.length); + return indent; +}; +exports.trimTrailingSpace = function (session, options) { + var doc = session.getDocument(); + var lines = doc.getAllLines(); + var min = options && options.trimEmpty ? -1 : 0; + var cursors = [], ci = -1; + if (options && options.keepCursorPosition) { + if (session.selection.rangeCount) { + session.selection.rangeList.ranges.forEach(function (x, i, ranges) { + var next = ranges[i + 1]; + if (next && next.cursor.row == x.cursor.row) + return; + cursors.push(x.cursor); + }); + } + else { + cursors.push(session.selection.getCursor()); + } + ci = 0; + } + var cursorRow = cursors[ci] && cursors[ci].row; + for (var i = 0, l = lines.length; i < l; i++) { + var line = lines[i]; + var index = line.search(/\s+$/); + if (i == cursorRow) { + if (index < cursors[ci].column && index > min) + index = cursors[ci].column; + ci++; + cursorRow = cursors[ci] ? cursors[ci].row : -1; + } + if (index > min) + doc.removeInLine(i, index, line.length); + } +}; +exports.convertIndentation = function (session, ch, len) { + var oldCh = session.getTabString()[0]; + var oldLen = session.getTabSize(); + if (!len) + len = oldLen; + if (!ch) + ch = oldCh; + var tab = ch == "\t" ? ch : lang.stringRepeat(ch, len); + var doc = session.doc; + var lines = doc.getAllLines(); + var cache = {}; + var spaceCache = {}; + for (var i = 0, l = lines.length; i < l; i++) { + var line = lines[i]; + var match = line.match(/^\s*/)[0]; + if (match) { + var w = session.$getStringScreenWidth(match)[0]; + var tabCount = Math.floor(w / oldLen); + var reminder = w % oldLen; + var toInsert = cache[tabCount] || (cache[tabCount] = lang.stringRepeat(tab, tabCount)); + toInsert += spaceCache[reminder] || (spaceCache[reminder] = lang.stringRepeat(" ", reminder)); + if (toInsert != match) { + doc.removeInLine(i, 0, match.length); + doc.insertInLine({ row: i, column: 0 }, toInsert); + } + } + } + session.setTabSize(len); + session.setUseSoftTabs(ch == " "); +}; +exports.$parseStringArg = function (text) { + var indent = {}; + if (/t/.test(text)) + indent.ch = "\t"; + else if (/s/.test(text)) + indent.ch = " "; + var m = text.match(/\d+/); + if (m) + indent.length = parseInt(m[0], 10); + return indent; +}; +exports.$parseArg = function (arg) { + if (!arg) + return {}; + if (typeof arg == "string") + return exports.$parseStringArg(arg); + if (typeof arg.text == "string") + return exports.$parseStringArg(arg.text); + return arg; +}; +exports.commands = [{ + name: "detectIndentation", + description: "Detect indentation from content", + exec: function (editor) { + exports.detectIndentation(editor.session); + } + }, { + name: "trimTrailingSpace", + description: "Trim trailing whitespace", + exec: function (editor, args) { + exports.trimTrailingSpace(editor.session, args); + } + }, { + name: "convertIndentation", + description: "Convert indentation to ...", + exec: function (editor, arg) { + var indent = exports.$parseArg(arg); + exports.convertIndentation(editor.session, indent.ch, indent.length); + } + }, { + name: "setIndentation", + description: "Set indentation", + exec: function (editor, arg) { + var indent = exports.$parseArg(arg); + indent.length && editor.session.setTabSize(indent.length); + indent.ch && editor.session.setUseSoftTabs(indent.ch == " "); + } + }]; + +}); (function() { + ace.require(["ace/ext/whitespace"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/fc6ba43496896432983dff35a140ed34.js b/web/dist/fc6ba43496896432983dff35a140ed34.js new file mode 100644 index 00000000..dc809a3d --- /dev/null +++ b/web/dist/fc6ba43496896432983dff35a140ed34.js @@ -0,0 +1,324 @@ +ace.define("ace/mode/haskell_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){/* This file was autogenerated from tm bundles\haskell.tmbundle\Syntaxes\Haskell.plist (uuid: ) */ +"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var HaskellHighlightRules = function () { + this.$rules = { start: [{ token: ['punctuation.definition.entity.haskell', + 'keyword.operator.function.infix.haskell', + 'punctuation.definition.entity.haskell'], + regex: '(`)([a-zA-Z_\']*?)(`)', + comment: 'In case this regex seems unusual for an infix operator, note that Haskell allows any ordinary function application (elem 4 [1..10]) to be rewritten as an infix expression (4 `elem` [1..10]).' }, + { token: 'constant.language.unit.haskell', regex: '\\(\\)' }, + { token: 'constant.language.empty-list.haskell', + regex: '\\[\\]' }, + { token: 'keyword.other.haskell', + regex: '\\b(module|signature)\\b', + push: [{ token: 'keyword.other.haskell', regex: '\\bwhere\\b', next: 'pop' }, + { include: '#module_name' }, + { include: '#module_exports' }, + { token: 'invalid', regex: '[a-z]+' }, + { defaultToken: 'meta.declaration.module.haskell' }] }, + { token: 'keyword.other.haskell', + regex: '\\bclass\\b', + push: [{ token: 'keyword.other.haskell', + regex: '\\bwhere\\b', + next: 'pop' }, + { token: 'support.class.prelude.haskell', + regex: '\\b(?:Monad|Functor|Eq|Ord|Read|Show|Num|(?:Frac|Ra)tional|Enum|Bounded|Real(?:Frac|Float)?|Integral|Floating)\\b' }, + { token: 'entity.other.inherited-class.haskell', + regex: '[A-Z][A-Za-z_\']*' }, + { token: 'variable.other.generic-type.haskell', + regex: '\\b[a-z][a-zA-Z0-9_\']*\\b' }, + { defaultToken: 'meta.declaration.class.haskell' }] }, + { token: 'keyword.other.haskell', + regex: '\\binstance\\b', + push: [{ token: 'keyword.other.haskell', + regex: '\\bwhere\\b|$', + next: 'pop' }, + { include: '#type_signature' }, + { defaultToken: 'meta.declaration.instance.haskell' }] }, + { token: 'keyword.other.haskell', + regex: 'import', + push: [{ token: 'meta.import.haskell', regex: '$|;|^', next: 'pop' }, + { token: 'keyword.other.haskell', regex: 'qualified|as|hiding' }, + { include: '#module_name' }, + { include: '#module_exports' }, + { defaultToken: 'meta.import.haskell' }] }, + { token: ['keyword.other.haskell', 'meta.deriving.haskell'], + regex: '(deriving)(\\s*\\()', + push: [{ token: 'meta.deriving.haskell', regex: '\\)', next: 'pop' }, + { token: 'entity.other.inherited-class.haskell', + regex: '\\b[A-Z][a-zA-Z_\']*' }, + { defaultToken: 'meta.deriving.haskell' }] }, + { token: 'keyword.other.haskell', + regex: '\\b(?:deriving|where|data|type|case|of|let|in|newtype|default)\\b' }, + { token: 'keyword.operator.haskell', regex: '\\binfix[lr]?\\b' }, + { token: 'keyword.control.haskell', + regex: '\\b(?:do|if|then|else)\\b' }, + { token: 'constant.numeric.float.haskell', + regex: '\\b(?:[0-9]+\\.[0-9]+(?:[eE][+-]?[0-9]+)?|[0-9]+[eE][+-]?[0-9]+)\\b', + comment: 'Floats are always decimal' }, + { token: 'constant.numeric.haskell', + regex: '\\b(?:[0-9]+|0(?:[xX][0-9a-fA-F]+|[oO][0-7]+))\\b' }, + { token: ['meta.preprocessor.c', + 'punctuation.definition.preprocessor.c', + 'meta.preprocessor.c'], + regex: '^(\\s*)(#)(\\s*\\w+)', + comment: 'In addition to Haskell\'s "native" syntax, GHC permits the C preprocessor to be run on a source file.' }, + { include: '#pragma' }, + { token: 'punctuation.definition.string.begin.haskell', + regex: '"', + push: [{ token: 'punctuation.definition.string.end.haskell', + regex: '"', + next: 'pop' }, + { token: 'constant.character.escape.haskell', + regex: '\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\"\'\\&])' }, + { token: 'constant.character.escape.octal.haskell', + regex: '\\\\o[0-7]+|\\\\x[0-9A-Fa-f]+|\\\\[0-9]+' }, + { token: 'constant.character.escape.control.haskell', + regex: '\\^[A-Z@\\[\\]\\\\\\^_]' }, + { defaultToken: 'string.quoted.double.haskell' }] }, + { token: ['punctuation.definition.string.begin.haskell', + 'string.quoted.single.haskell', + 'constant.character.escape.haskell', + 'constant.character.escape.octal.haskell', + 'constant.character.escape.hexadecimal.haskell', + 'constant.character.escape.control.haskell', + 'punctuation.definition.string.end.haskell'], + regex: '(\')(?:([\\ -\\[\\]-~])|(\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\"\'\\&]))|(\\\\o[0-7]+)|(\\\\x[0-9A-Fa-f]+)|(\\^[A-Z@\\[\\]\\\\\\^_]))(\')' }, + { token: ['meta.function.type-declaration.haskell', + 'entity.name.function.haskell', + 'meta.function.type-declaration.haskell', + 'keyword.other.double-colon.haskell'], + regex: '^(\\s*)([a-z_][a-zA-Z0-9_\']*|\\([|!%$+\\-.,=]+\\))(\\s*)(::)', + push: [{ token: 'meta.function.type-declaration.haskell', + regex: '$', + next: 'pop' }, + { include: '#type_signature' }, + { defaultToken: 'meta.function.type-declaration.haskell' }] }, + { token: 'support.constant.haskell', + regex: '\\b(?:Just|Nothing|Left|Right|True|False|LT|EQ|GT|\\(\\)|\\[\\])\\b' }, + { token: 'constant.other.haskell', regex: '\\b[A-Z]\\w*\\b' }, + { include: '#comments' }, + { token: 'support.function.prelude.haskell', + regex: '\\b(?:abs|acos|acosh|all|and|any|appendFile|applyM|asTypeOf|asin|asinh|atan|atan2|atanh|break|catch|ceiling|compare|concat|concatMap|const|cos|cosh|curry|cycle|decodeFloat|div|divMod|drop|dropWhile|elem|encodeFloat|enumFrom|enumFromThen|enumFromThenTo|enumFromTo|error|even|exp|exponent|fail|filter|flip|floatDigits|floatRadix|floatRange|floor|fmap|foldl|foldl1|foldr|foldr1|fromEnum|fromInteger|fromIntegral|fromRational|fst|gcd|getChar|getContents|getLine|head|id|init|interact|ioError|isDenormalized|isIEEE|isInfinite|isNaN|isNegativeZero|iterate|last|lcm|length|lex|lines|log|logBase|lookup|map|mapM|mapM_|max|maxBound|maximum|maybe|min|minBound|minimum|mod|negate|not|notElem|null|odd|or|otherwise|pi|pred|print|product|properFraction|putChar|putStr|putStrLn|quot|quotRem|read|readFile|readIO|readList|readLn|readParen|reads|readsPrec|realToFrac|recip|rem|repeat|replicate|return|reverse|round|scaleFloat|scanl|scanl1|scanr|scanr1|seq|sequence|sequence_|show|showChar|showList|showParen|showString|shows|showsPrec|significand|signum|sin|sinh|snd|span|splitAt|sqrt|subtract|succ|sum|tail|take|takeWhile|tan|tanh|toEnum|toInteger|toRational|truncate|uncurry|undefined|unlines|until|unwords|unzip|unzip3|userError|words|writeFile|zip|zip3|zipWith|zipWith3)\\b' }, + { include: '#infix_op' }, + { token: 'keyword.operator.haskell', + regex: '[|!%$?~+:\\-.=\\\\]+', + comment: 'In case this regex seems overly general, note that Haskell permits the definition of new operators which can be nearly any string of punctuation characters, such as $%^&*.' }, + { token: 'punctuation.separator.comma.haskell', regex: ',' }], + '#block_comment': [{ token: 'punctuation.definition.comment.haskell', + regex: '\\{-(?!#)', + push: [{ include: '#block_comment' }, + { token: 'punctuation.definition.comment.haskell', + regex: '-\\}', + next: 'pop' }, + { defaultToken: 'comment.block.haskell' }] }], + '#comments': [{ token: 'punctuation.definition.comment.haskell', + regex: '--.*', + push_: [{ token: 'comment.line.double-dash.haskell', + regex: '$', + next: 'pop' }, + { defaultToken: 'comment.line.double-dash.haskell' }] }, + { include: '#block_comment' }], + '#infix_op': [{ token: 'entity.name.function.infix.haskell', + regex: '\\([|!%$+:\\-.=]+\\)|\\(,+\\)' }], + '#module_exports': [{ token: 'meta.declaration.exports.haskell', + regex: '\\(', + push: [{ token: 'meta.declaration.exports.haskell.end', + regex: '\\)', + next: 'pop' }, + { token: 'entity.name.function.haskell', + regex: '\\b[a-z][a-zA-Z_\']*' }, + { token: 'storage.type.haskell', regex: '\\b[A-Z][A-Za-z_\']*' }, + { token: 'punctuation.separator.comma.haskell', regex: ',' }, + { include: '#infix_op' }, + { token: 'meta.other.unknown.haskell', + regex: '\\(.*?\\)', + comment: 'So named because I don\'t know what to call this.' }, + { defaultToken: 'meta.declaration.exports.haskell.end' }] }], + '#module_name': [{ token: 'support.other.module.haskell', + regex: '[A-Z][A-Za-z._\']*' }], + '#pragma': [{ token: 'meta.preprocessor.haskell', + regex: '\\{-#', + push: [{ token: 'meta.preprocessor.haskell', + regex: '#-\\}', + next: 'pop' }, + { token: 'keyword.other.preprocessor.haskell', + regex: '\\b(?:LANGUAGE|UNPACK|INLINE)\\b' }, + { defaultToken: 'meta.preprocessor.haskell' }] }], + '#type_signature': [{ token: ['meta.class-constraint.haskell', + 'entity.other.inherited-class.haskell', + 'meta.class-constraint.haskell', + 'variable.other.generic-type.haskell', + 'meta.class-constraint.haskell', + 'keyword.other.big-arrow.haskell'], + regex: '(\\(\\s*)([A-Z][A-Za-z]*)(\\s+)([a-z][A-Za-z_\']*)(\\)\\s*)(=>)' }, + { include: '#pragma' }, + { token: 'keyword.other.arrow.haskell', regex: '->' }, + { token: 'keyword.other.big-arrow.haskell', regex: '=>' }, + { token: 'support.type.prelude.haskell', + regex: '\\b(?:Int(?:eger)?|Maybe|Either|Bool|Float|Double|Char|String|Ordering|ShowS|ReadS|FilePath|IO(?:Error)?)\\b' }, + { token: 'variable.other.generic-type.haskell', + regex: '\\b[a-z][a-zA-Z0-9_\']*\\b' }, + { token: 'storage.type.haskell', + regex: '\\b[A-Z][a-zA-Z0-9_\']*\\b' }, + { token: 'support.constant.unit.haskell', regex: '\\(\\)' }, + { include: '#comments' }] }; + this.normalizeRules(); +}; +HaskellHighlightRules.metaData = { fileTypes: ['hs'], + keyEquivalent: '^~H', + name: 'Haskell', + scopeName: 'source.haskell' }; +oop.inherits(HaskellHighlightRules, TextHighlightRules); +exports.HaskellHighlightRules = HaskellHighlightRules; + +}); + +ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/haskell",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/haskell_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ +"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var HaskellHighlightRules = require("./haskell_highlight_rules").HaskellHighlightRules; +var FoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = HaskellHighlightRules; + this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "--"; + this.blockComment = null; + this.$id = "ace/mode/haskell"; + this.snippetFileId = "ace/snippets/haskell"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/haskell"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/fc6ba43496896432983dff35a140ed34.js.gz b/web/dist/fc6ba43496896432983dff35a140ed34.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..c68a35c177cf5b8a9d07b2a31fbfb2ba9d8b7004 GIT binary patch literal 4385 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 literal 0 HcmV?d00001 diff --git a/web/dist/fd7d0e7d961590c139ed4e02aa7ca536.js b/web/dist/fd7d0e7d961590c139ed4e02aa7ca536.js new file mode 100644 index 00000000..212c9175 --- /dev/null +++ b/web/dist/fd7d0e7d961590c139ed4e02aa7ca536.js @@ -0,0 +1,214 @@ +ace.define("ace/mode/mel_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){/* THIS FILE WAS AUTOGENERATED FROM MEL.tmLanguage (UUID: 69554E52-391D-42BC-9F65-7A77444BA1CF) */ +"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var MELHighlightRules = function () { + this.$rules = { start: [{ caseInsensitive: true, + token: 'storage.type.mel', + regex: '\\b(matrix|string|vector|float|int|void)\\b' }, + { caseInsensitive: true, + token: 'support.function.mel', + regex: '\\b((s(h(ow(ManipCtx|S(hadingGroupAttrEditor|electionInTitle)|H(idden|elp)|Window)|el(f(Button|TabLayout|Layout)|lField)|ading(GeometryRelCtx|Node|Connection|LightRelCtx))|y(s(tem|File)|mbol(Button|CheckBox))|nap(shot|Mode|2to2 |TogetherCtx|Key)|c(ulpt|ene(UIReplacement|Editor)|ale(BrushBrightness |Constraint|Key(Ctx)?)?|r(ipt(Node|Ctx|Table|edPanel(Type)?|Job|EditorInfo)|oll(Field|Layout))|mh)|t(itch(Surface(Points)?|AndExplodeShell )|a(ckTrace|rt(sWith |String ))|r(cmp|i(ng(ToStringArray |Array(Remove(Duplicates | )|C(ount |atenate )|ToString |Intersector))|p )|oke))|i(n(gleProfileBirailSurface)?|ze|gn|mplify)|o(u(nd(Control)?|rce)|ft(Mod(Ctx)?)?|rt)|u(perCtx|rface(S(haderList|ampler))?|b(st(itute(Geometry|AllString )?|ring)|d(M(irror|a(tchTopology|p(SewMove|Cut)))|iv(Crease|DisplaySmoothness)?|C(ollapse|leanTopology)|T(o(Blind|Poly)|ransferUVsToCache)|DuplicateAndConnect|EditUV|ListComponentConversion|AutoProjection)))|p(h(ere|rand)|otLight(PreviewPort)?|aceLocator|r(ing|eadSheetEditor))|e(t(s|MenuMode|Sta(te |rtupMessage|mpDensity )|NodeTypeFlag|ConstraintRestPosition |ToolTo|In(putDeviceMapping|finity)|D(ynamic|efaultShadingGroup|rivenKeyframe)|UITemplate|P(ar(ticleAttr|ent)|roject )|E(scapeCtx|dit(or|Ctx))|Key(Ctx|frame|Path)|F(ocus|luidAttr)|Attr(Mapping)?)|parator|ed|l(ect(Mode|ionConnection|Context|Type|edNodes|Pr(iority|ef)|Key(Ctx)?)?|LoadSettings)|archPathArray )|kin(Cluster|Percent)|q(uareSurface|rt)|w(itchTable|atchDisplayPort)|a(ve(Menu|Shelf|ToolSettings|I(nitialState|mage)|Pref(s|Objects)|Fluid|A(ttrPreset |llShelves))|mpleImage)|rtContext|mooth(step|Curve|TangentSurface))|h(sv_to_rgb|yp(ot|er(Graph|Shade|Panel))|i(tTest|de|lite)|ot(Box|key(Check)?)|ud(Button|Slider(Button)?)|e(lp(Line)?|adsUpDisplay|rmite)|wRe(nder(Load)?|flectionMap)|ard(enPointCurve|ware(RenderPanel)?))|n(o(nLinear|ise|de(Type|IconButton|Outliner|Preset)|rmal(ize |Constraint))|urbs(Boolean|S(elect|quare)|C(opyUVSet|ube)|To(Subdiv|Poly(gonsPref)?)|Plane|ViewDirectionVector )|ew(ton|PanelItems)|ame(space(Info)?|Command|Field))|c(h(oice|dir|eck(Box(Grp)?|DefaultRenderGlobals)|a(n(nelBox|geSubdiv(Region|ComponentDisplayLevel))|racter(Map|OutlineEditor)?))|y(cleCheck|linder)|tx(Completion|Traverse|EditMode|Abort)|irc(ularFillet|le)|o(s|n(str(uctionHistory|ain(Value)?)|nect(ionInfo|Control|Dynamic|Joint|Attr)|t(extInfo|rol)|dition|e|vert(SolidTx|Tessellation|Unit|FromOldLayers |Lightmap)|firmDialog)|py(SkinWeights|Key|Flexor|Array )|l(or(Slider(Grp|ButtonGrp)|Index(SliderGrp)?|Editor|AtPoint)?|umnLayout|lision)|arsenSubdivSelectionList|m(p(onentEditor|utePolysetVolume |actHairSystem )|mand(Port|Echo|Line)))|u(tKey|r(ve(MoveEPCtx|SketchCtx|CVCtx|Intersect|OnSurface|E(ditorCtx|PCtx)|AddPtCtx)?|rent(Ctx|Time(Ctx)?|Unit)))|p(GetSolverAttr|Button|S(olver(Types)?|e(t(SolverAttr|Edit)|am))|C(o(nstraint|llision)|ache)|Tool|P(anel|roperty))|eil|l(ip(Schedule(rOutliner)?|TrimBefore |Editor(CurrentTimeCtx)?)?|ose(Surface|Curve)|uster|ear(Cache)?|amp)|a(n(CreateManip|vas)|tch(Quiet)?|pitalizeString |mera(View)?)|r(oss(Product )?|eate(RenderLayer|MotionField |SubdivRegion|N(ode|ewShelf )|D(isplayLayer|rawCtx)|Editor))|md(Shell|FileOutput))|M(R(ender(ShadowData|Callback|Data|Util|View|Line(Array)?)|ampAttribute)|G(eometryData|lobal)|M(odelMessage|essage|a(nipData|t(erial|rix)))|BoundingBox|S(yntax|ceneMessage|t(atus|ring(Array)?)|imple|pace|elect(ion(Mask|List)|Info)|watchRender(Register|Base))|H(ardwareRenderer|WShaderSwatchGenerator)|NodeMessage|C(o(nditionMessage|lor(Array)?|m(putation|mand(Result|Message)))|ursor|loth(Material|S(ystem|olverRegister)|Con(straint|trol)|Triangle|Particle|Edge|Force)|allbackIdArray)|T(ypeId|ime(r(Message)?|Array)?|oolsInfo|esselationParams|r(imBoundaryArray|ansformationMatrix))|I(ntArray|t(Geometry|Mesh(Polygon|Edge|Vertex|FaceVertex)|S(urfaceCV|electionList)|CurveCV|Instancer|eratorType|D(ependency(Graph|Nodes)|ag)|Keyframe)|k(System|HandleGroup)|mage)|3dView|Object(SetMessage|Handle|Array)?|D(G(M(odifier|essage)|Context)|ynSwept(Triangle|Line)|istance|oubleArray|evice(State|Channel)|a(ta(Block|Handle)|g(M(odifier|essage)|Path(Array)?))|raw(Request(Queue)?|Info|Data|ProcedureBase))|U(serEventMessage|i(nt(Array|64Array)|Message))|P(o(int(Array)?|lyMessage)|lug(Array)?|rogressWindow|x(G(eometry(Iterator|Data)|lBuffer)|M(idiInputDevice|odelEditorCommand|anipContainer)|S(urfaceShape(UI)?|pringNode|electionContext)|HwShaderNode|Node|Co(ntext(Command)?|m(ponentShape|mand))|T(oolCommand|ransform(ationMatrix)?)|IkSolver(Node)?|3dModelView|ObjectSet|D(eformerNode|ata|ragAndDropBehavior)|PolyT(weakUVCommand|rg)|EmitterNode|F(i(eldNode|leTranslator)|luidEmitterNode)|LocatorNode))|E(ulerRotation|vent(Message)?)|ayatomr|Vector(Array)?|Quaternion|F(n(R(otateManip|eflectShader|adialField)|G(e(nericAttribute|ometry(Data|Filter))|ravityField)|M(otionPath|es(sageAttribute|h(Data)?)|a(nip3D|trix(Data|Attribute)))|B(l(innShader|endShapeDeformer)|ase)|S(caleManip|t(ateManip|ring(Data|ArrayData))|ingleIndexedComponent|ubd(Names|Data)?|p(hereData|otLight)|et|kinCluster)|HikEffector|N(on(ExtendedLight|AmbientLight)|u(rbs(Surface(Data)?|Curve(Data)?)|meric(Data|Attribute))|ewtonField)|C(haracter|ircleSweepManip|ompo(nent(ListData)?|undAttribute)|urveSegmentManip|lip|amera)|T(ypedAttribute|oggleManip|urbulenceField|r(ipleIndexedComponent|ansform))|I(ntArrayData|k(Solver|Handle|Joint|Effector))|D(ynSweptGeometryData|i(s(cManip|tanceManip)|rection(Manip|alLight))|ouble(IndexedComponent|ArrayData)|ependencyNode|a(ta|gNode)|ragField)|U(ni(tAttribute|formField)|Int64ArrayData)|P(hong(Shader|EShader)|oint(On(SurfaceManip|CurveManip)|Light|ArrayData)|fxGeometry|lugin(Data)?|arti(cleSystem|tion))|E(numAttribute|xpression)|V(o(lume(Light|AxisField)|rtexField)|ectorArrayData)|KeyframeDelta(Move|B(lockAddRemove|reakdown)|Scale|Tangent|InfType|Weighted|AddRemove)?|F(ield|luid|reePointTriadManip)|W(ireDeformer|eightGeometryFilter)|L(ight(DataAttribute)?|a(yeredShader|ttice(D(eformer|ata))?|mbertShader))|A(ni(sotropyShader|mCurve)|ttribute|irField|r(eaLight|rayAttrsData)|mbientLight))?|ile(IO|Object)|eedbackLine|loat(Matrix|Point(Array)?|Vector(Array)?|Array))|L(i(ghtLinks|brary)|ockMessage)|A(n(im(Message|C(ontrol|urveC(hange|lipboard(Item(Array)?)?))|Util)|gle)|ttribute(Spec(Array)?|Index)|r(rayData(Builder|Handle)|g(Database|Parser|List))))|t(hreePointArcCtx|ime(Control|Port|rX)|o(ol(Button|HasOptions|Collection|Dropped|PropertyWindow)|NativePath |upper|kenize(List )?|l(ower|erance)|rus|ggle(WindowVisibility|Axis)?)|u(rbulence|mble(Ctx)?)|ex(RotateContext|M(oveContext|anipContext)|t(ScrollList|Curves|ure(HairColor |DisplacePlane |PlacementContext|Window)|ToShelf |Field(Grp|ButtonGrp)?)?|S(caleContext|electContext|mudgeUVContext)|WinToolCtx)|woPointArcCtx|a(n(gentConstraint)?|bLayout)|r(im|unc(ate(HairCache|FluidCache))?|a(ns(formLimits|lator)|c(e|k(Ctx)?))))|i(s(olateSelect|Connected|True|Dirty|ParentOf |Valid(String |ObjectName |UiName )|AnimCurve )|n(s(tance(r)?|ert(Joint(Ctx)?|K(not(Surface|Curve)|eyCtx)))|heritTransform|t(S(crollBar|lider(Grp)?)|er(sect|nalVar|ToUI )|Field(Grp)?))|conText(Radio(Button|Collection)|Button|StaticLabel|CheckBox)|temFilter(Render|Type|Attr)?|prEngine|k(S(ystem(Info)?|olver|plineHandleCtx)|Handle(Ctx|DisplayScale)?|fkDisplayMethod)|m(portComposerCurves |fPlugins|age))|o(ceanNurbsPreviewPlane |utliner(Panel|Editor)|p(tion(Menu(Grp)?|Var)|en(GLExtension|MayaPref))|verrideModifier|ffset(Surface|Curve(OnSurface)?)|r(ientConstraint|bit(Ctx)?)|b(soleteProc |j(ect(Center|Type(UI)?|Layer )|Exists)))|d(yn(RelEd(itor|Panel)|Globals|C(ontrol|ache)|P(a(intEditor|rticleCtx)|ref)|Exp(ort|ression)|amicLoad)|i(s(connect(Joint|Attr)|tanceDim(Context|ension)|pla(y(RGBColor|S(tats|urface|moothness)|C(olor|ull)|Pref|LevelOfDetail|Affected)|cementToPoly)|kCache|able)|r(name |ect(ionalLight|KeyCtx)|map)|mWhen)|o(cServer|Blur|t(Product )?|ubleProfileBirailSurface|peSheetEditor|lly(Ctx)?)|uplicate(Surface|Curve)?|e(tach(Surface|Curve|DeviceAttr)|vice(Panel|Editor)|f(ine(DataServer|VirtualDevice)|ormer|ault(Navigation|LightListCheckBox))|l(ete(Sh(elfTab |adingGroupsAndMaterials )|U(nusedBrushes |I)|Attr)?|randstr)|g_to_rad)|agPose|r(opoffLocator|ag(gerContext)?)|g(timer|dirty|Info|eval))|CBG |u(serCtx|n(t(angleUV|rim)|i(t|form)|do(Info)?|loadPlugin|assignInputDevice|group)|iTemplate|p(dateAE |Axis)|v(Snapshot|Link))|joint(C(tx|luster)|DisplayScale|Lattice)?|p(sd(ChannelOutliner|TextureFile|E(ditTextureFile|xport))|close|i(c(ture|kWalk)|xelMove)|o(se|int(MatrixMult |C(onstraint|urveConstraint)|On(Surface|Curve)|Position|Light)|p(upMenu|en)|w|l(y(Reduce|GeoSampler|M(irrorFace|ove(UV|Edge|Vertex|Facet(UV)?)|erge(UV|Edge(Ctx)?|Vertex|Facet(Ctx)?)|ap(Sew(Move)?|Cut|Del))|B(oolOp|evel|l(indData|endColor))|S(traightenUVBorder|oftEdge|u(perCtx|bdivide(Edge|Facet))|p(her(icalProjection|e)|lit(Ring|Ctx|Edge|Vertex)?)|e(tToFaceNormal|parate|wEdge|lect(Constraint(Monitor)?|EditCtx))|mooth)|Normal(izeUV|PerVertex)?|C(hipOff|ylind(er|ricalProjection)|o(ne|pyUV|l(or(BlindData|Set|PerVertex)|lapse(Edge|Facet)))|u(t(Ctx)?|be)|l(ipboard|oseBorder)|acheMonitor|rea(seEdge|teFacet(Ctx)?))|T(o(Subdiv|rus)|r(iangulate|ansfer))|In(stallAction|fo)|Options|D(uplicate(Edge|AndConnect)|el(Edge|Vertex|Facet))|U(nite|VSet)|P(yramid|oke|lan(e|arProjection)|r(ism|ojection))|E(ditUV|valuate|xtrude(Edge|Facet))|Qu(eryBlindData|ad)|F(orceUV|lip(UV|Edge))|WedgeFace|L(istComponentConversion|ayoutUV)|A(utoProjection|ppend(Vertex|FacetCtx)?|verage(Normal|Vertex)))|eVectorConstraint))|utenv|er(cent|formanceOptions)|fxstrokes|wd|l(uginInfo|a(y(b(last|ackOptions))?|n(e|arSrf)))|a(steKey|ne(l(History|Configuration)?|Layout)|thAnimation|irBlend|use|lettePort|r(ti(cle(RenderInfo|Instancer|Exists)?|tion)|ent(Constraint)?|am(Dim(Context|ension)|Locator)))|r(int|o(j(ect(ion(Manip|Context)|Curve|Tangent)|FileViewer)|pMo(dCtx|ve)|gress(Bar|Window)|mptDialog)|eloadRefEd))|e(n(codeString|d(sWith |String )|v|ableDevice)|dit(RenderLayer(Globals|Members)|or(Template)?|DisplayLayer(Globals|Members)|AttrLimits )|v(ent|al(Deferred|Echo)?)|quivalent(Tol | )|ffector|r(f|ror)|x(clusiveLightCheckBox|t(end(Surface|Curve)|rude)|ists|p(ortComposerCurves |ression(EditorListen)?)?|ec(uteForEachObject )?|actWorldBoundingBox)|mit(ter)?)|v(i(sor|ew(Set|HeadOn|2dToolCtx|C(lipPlane|amera)|Place|Fit|LookAt))|o(lumeAxis|rtex)|e(ctorize|rifyCmd )|alidateShelfName )|key(Tangent|frame(Region(MoveKeyCtx|S(caleKeyCtx|e(tKeyCtx|lectKeyCtx))|CurrentTimeCtx|TrackCtx|InsertKeyCtx|D(irectKeyCtx|ollyCtx))|Stats|Outliner)?)|qu(it|erySubdiv)|f(c(heck|lose)|i(nd(RelatedSkinCluster |MenuItem |er|Keyframe|AllIntersections )|tBspline|l(ter(StudioImport|Curve|Expand)?|e(BrowserDialog|test|Info|Dialog|Extension )?|letCurve)|rstParentOf )|o(ntDialog|pen|rmLayout)|print|eof|flush|write|l(o(or|w|at(S(crollBar|lider(Grp|ButtonGrp|2)?)|Eq |Field(Grp)?))|u(shUndo|id(CacheInfo|Emitter|VoxelInfo))|exor)|r(omNativePath |e(eFormFillet|wind|ad)|ameLayout)|get(word|line)|mod)|w(hatIs|i(ndow(Pref)?|re(Context)?)|orkspace|ebBrowser(Prefs)?|a(itCursor|rning)|ri(nkle(Context)?|teTake))|l(s(T(hroughFilter|ype )|UI)?|i(st(Relatives|MenuAnnotation |Sets|History|NodeTypes|C(onnections|ameras)|Transforms |InputDevice(s|Buttons|Axes)|erEditor|DeviceAttachments|Unselected |A(nimatable|ttr))|n(step|eIntersection )|ght(link|List(Panel|Editor)?))|o(ckNode|okThru|ft|ad(NewShelf |P(lugin|refObjects)|Fluid)|g)|a(ssoContext|y(out|er(Button|ed(ShaderPort|TexturePort)))|ttice(DeformKeyCtx)?|unch(ImageEditor)?))|a(ssign(Command|InputDevice)|n(notate|im(C(one|urveEditor)|Display|View)|gle(Between)?)|tt(ach(Surface|Curve|DeviceAttr)|r(ibute(Menu|Info|Exists|Query)|NavigationControlGrp|Co(ntrolGrp|lorSliderGrp|mpatibility)|PresetEditWin|EnumOptionMenu(Grp)?|Field(Grp|SliderGrp)))|i(r|mConstraint)|d(d(NewShelfTab|Dynamic|PP|Attr(ibuteEditorNodeHelp)?)|vanceToNextDrivenKey)|uto(Place|Keyframe)|pp(endStringArray|l(y(Take|AttrPreset)|icationName))|ffect(s|edNet)|l(i(as(Attr)?|gn(Surface|C(tx|urve))?)|lViewFit)|r(c(len|Len(DimContext|gthDimension))|t(BuildPaintMenu|Se(tPaintCtx|lectCtx)|3dPaintCtx|UserPaintCtx|PuttyCtx|FluidAttrCtx|Attr(SkinPaintCtx|Ctx|PaintVertexCtx))|rayMapper)|mbientLight|b(s|out))|r(igid(Body|Solver)|o(t(at(ionInterpolation|e))?|otOf |undConstantRadius|w(ColumnLayout|Layout)|ll(Ctx)?)|un(up|TimeCommand)|e(s(olutionNode|et(Tool|AE )|ampleFluid)|hash|n(der(GlobalsNode|Manip|ThumbnailUpdate|Info|er|Partition|QualityNode|Window(SelectContext|Editor)|LayerButton)?|ame(SelectionList |UI|Attr)?)|cord(Device|Attr)|target|order(Deformers)?|do|v(olve|erse(Surface|Curve))|quires|f(ineSubdivSelectionList|erence(Edit|Query)?|resh(AE )?)|loadImage|adTake|root|move(MultiInstance|Joint)|build(Surface|Curve))|a(n(d(state|omizeFollicles )?|geControl)|d(i(o(MenuItemCollection|Button(Grp)?|Collection)|al)|_to_deg)|mpColorPort)|gb_to_hsv)|g(o(toBindPose |al)|e(t(M(odifiers|ayaPanelTypes )|Classification|InputDeviceRange|pid|env|DefaultBrush|Pa(nel|rticleAttr)|F(ileList|luidAttr)|A(ttr|pplicationVersionAsFloat ))|ometryConstraint)|l(Render(Editor)?|obalStitch)|a(uss|mma)|r(id(Layout)?|oup(ObjectsByName )?|a(dientControl(NoAttr)?|ph(SelectContext|TrackCtx|DollyCtx)|vity|bColor))|match)|x(pmPicker|form|bmLangPathList )|m(i(n(imizeApp)?|rrorJoint)|o(del(CurrentTimeCtx|Panel|Editor)|use|v(In|e(IKtoFK |VertexAlongDirection|KeyCtx)?|Out))|u(te|ltiProfileBirailSurface)|e(ssageLine|nu(BarLayout|Item(ToShelf )?|Editor)?|mory)|a(nip(Rotate(Context|LimitsCtx)|Move(Context|LimitsCtx)|Scale(Context|LimitsCtx)|Options)|tch|ke(Roll |SingleSurface|TubeOn |Identity|Paintable|bot|Live)|rker|g|x))|b(in(Membership|d(Skin|Pose))|o(neLattice|undary|x(ZoomCtx|DollyCtx))|u(tton(Manip)?|ild(BookmarkMenu|KeyframeMenu)|fferCurve)|e(ssel|vel(Plus)?)|l(indDataType|end(Shape(Panel|Editor)?|2|TwoAttr))|a(sename(Ex | )|tchRender|ke(Results|Simulation|Clip|PartialHistory|FluidShading )))))\\b' }, + { caseInsensitive: true, + token: 'support.constant.mel', + regex: '\\b(s(h(ellTessellate|a(d(ing(Map|Engine)|erGlow)|pe))|n(ow|apshot(Shape)?)|c(ulpt|aleConstraint|ript)|t(yleCurve|itch(Srf|AsNurbsShell)|u(cco|dioClearCoat)|encil|roke(Globals)?)|i(ngleShadingSwitch|mpleVolumeShader)|o(ftMod(Manip|Handle)?|lidFractal)|u(rface(Sha(der|pe)|Info|EdManip|VarGroup|Luminance)|b(Surface|d(M(odifier(UV|World)?|ap(SewMove|Cut|pingManip))|B(lindData|ase)|iv(ReverseFaces|SurfaceVarGroup|Co(llapse|mponentId)|To(Nurbs|Poly))?|HierBlind|CleanTopology|Tweak(UV)?|P(lanarProj|rojManip)|LayoutUV|A(ddTopology|utoProj))|Curve))|p(BirailSrf|otLight|ring)|e(tRange|lectionListOperator)|k(inCluster|etchPlane)|quareSrf|ampler(Info)?|m(ooth(Curve|TangentSrf)|ear))|h(svToRgb|yper(GraphInfo|View|Layout)|ik(Solver|Handle|Effector)|oldMatrix|eightField|w(Re(nderGlobals|flectionMap)|Shader)|a(ir(System|Constraint|TubeShader)|rd(enPoint|wareRenderGlobals)))|n(o(n(ExtendedLightShapeNode|Linear|AmbientLightShapeNode)|ise|rmalConstraint)|urbs(Surface|Curve|T(oSubdiv(Proc)?|essellate)|DimShape)|e(twork|wtonField))|c(h(o(ice|oser)|ecker|aracter(Map|Offset)?)|o(n(straint|tr(olPoint|ast)|dition)|py(ColorSet|UVSet))|urve(Range|Shape|Normalizer(Linear|Angle)?|In(tersect|fo)|VarGroup|From(Mesh(CoM|Edge)?|Su(rface(Bnd|CoS|Iso)?|bdiv(Edge|Face)?)))|l(ip(Scheduler|Library)|o(se(stPointOnSurface|Surface|Curve)|th|ud)|uster(Handle)?|amp)|amera(View)?|r(eate(BPManip|ColorSet|UVSet)|ater))|t(ime(ToUnitConversion|Function)?|oo(nLineAttributes|lDrawManip)|urbulenceField|ex(BaseDeformManip|ture(BakeSet|2d|ToGeom|3d|Env)|SmudgeUVManip|LatticeDeformManip)|weak|angentConstraint|r(i(pleShadingSwitch|m(WithBoundaries)?)|ansform(Geometry)?))|i(n(s(tancer|ertKnot(Surface|Curve))|tersectSurface)|k(RPsolver|MCsolver|S(ystem|olver|Csolver|plineSolver)|Handle|PASolver|Effector)|m(plicit(Box|Sphere|Cone)|agePlane))|o(cean(Shader)?|pticalFX|ffset(Surface|C(os|urve))|ldBlindDataBase|rient(Constraint|ationMarker)|bject(RenderFilter|MultiFilter|BinFilter|S(criptFilter|et)|NameFilter|TypeFilter|Filter|AttrFilter))|d(yn(Globals|Base)|i(s(tance(Between|DimShape)|pla(yLayer(Manager)?|cementShader)|kCache)|rect(ionalLight|edDisc)|mensionShape)|o(ubleShadingSwitch|f)|pBirailSrf|e(tach(Surface|Curve)|pendNode|f(orm(Bend|S(ine|quash)|Twist|ableShape|F(unc|lare)|Wave)|ault(RenderUtilityList|ShaderList|TextureList|LightList))|lete(Co(lorSet|mponent)|UVSet))|ag(Node|Pose)|r(opoffLocator|agField))|u(seBackground|n(trim|i(t(Conversion|ToTimeConversion)|formField)|known(Transform|Dag)?)|vChooser)|j(iggle|oint(Cluster|Ffd|Lattice)?)|p(sdFileTex|hong(E)?|o(s(tProcessList|itionMarker)|int(MatrixMult|Constraint|On(SurfaceInfo|CurveInfo)|Emitter|Light)|l(y(Reduce|M(irror|o(difier(UV|World)?|ve(UV|Edge|Vertex|Face(tUV)?))|erge(UV|Edge|Vert|Face)|ap(Sew(Move)?|Cut|Del))|B(oolOp|evel|lindData|ase)|S(traightenUVBorder|oftEdge|ubd(Edge|Face)|p(h(ere|Proj)|lit(Ring|Edge|Vert)?)|e(parate|wEdge)|mooth(Proxy|Face)?)|Normal(izeUV|PerVertex)?|C(hipOff|yl(inder|Proj)|o(ne|pyUV|l(orPerVertex|lapse(Edge|F)))|u(t(Manip(Container)?)?|be)|loseBorder|rea(seEdge|t(or|eFace)))|T(o(Subdiv|rus)|weak(UV)?|r(iangulate|ansfer))|OptUvs|D(uplicateEdge|el(Edge|Vertex|Facet))|Unite|P(yramid|oke(Manip)?|lan(e|arProj)|r(i(sm|mitive)|oj))|Extrude(Edge|Vertex|Face)|VertexNormalManip|Quad|Flip(UV|Edge)|WedgeFace|LayoutUV|A(utoProj|ppend(Vertex)?|verageVertex))|eVectorConstraint))|fx(Geometry|Hair|Toon)|l(usMinusAverage|a(n(e|arTrimSurface)|ce(2dTexture|3dTexture)))|a(ssMatrix|irBlend|r(ti(cle(SamplerInfo|C(olorMapper|loud)|TranspMapper|IncandMapper|AgeMapper)?|tion)|ent(Constraint|Tessellate)|amDimension))|r(imitive|o(ject(ion|Curve|Tangent)|xyManager)))|e(n(tity|v(Ball|ironmentFog|S(phere|ky)|C(hrome|ube)|Fog))|x(t(end(Surface|Curve)|rude)|p(lodeNurbsShell|ression)))|v(iewManip|o(lume(Shader|Noise|Fog|Light|AxisField)|rtexField)|e(ctor(RenderGlobals|Product)|rtexBakeSet))|quadShadingSwitch|f(i(tBspline|eld|l(ter(Resample|Simplify|ClosestSample|Euler)?|e|letCurve))|o(urByFourMatrix|llicle)|urPointOn(MeshInfo|Subd)|f(BlendSrf(Obsolete)?|d|FilletSrf)|l(ow|uid(S(hape|liceManip)|Texture(2D|3D)|Emitter)|exorShape)|ra(ctal|meCache))|w(tAddMatrix|ire|ood|eightGeometryFilter|ater|rap)|l(ight(Info|Fog|Li(st|nker))?|o(cator|okAt|d(Group|Thresholds)|ft)|uminance|ea(stSquaresModifier|ther)|a(yered(Shader|Texture)|ttice|mbert))|a(n(notationShape|i(sotropic|m(Blend(InOut)?|C(urve(T(T|U|L|A)|U(T|U|L|A))?|lip)))|gleBetween)|tt(ach(Surface|Curve)|rHierarchyTest)|i(rField|mConstraint)|dd(Matrix|DoubleLinear)|udio|vg(SurfacePoints|NurbsSurfacePoints|Curves)|lign(Manip|Surface|Curve)|r(cLengthDimension|tAttrPaintTest|eaLight|rayMapper)|mbientLight|bstractBase(NurbsConversion|Create))|r(igid(Body|Solver|Constraint)|o(ck|undConstantRadius)|e(s(olution|ultCurve(TimeTo(Time|Unitless|Linear|Angular))?)|nder(Rect|Globals(List)?|Box|Sphere|Cone|Quality|L(ight|ayer(Manager)?))|cord|v(olve(dPrimitive)?|erse(Surface|Curve)?)|f(erence|lect)|map(Hsv|Color|Value)|build(Surface|Curve))|a(dialField|mp(Shader)?)|gbToHsv|bfSrf)|g(uide|eo(Connect(or|able)|metry(Shape|Constraint|VarGroup|Filter))|lobal(Stitch|CacheControl)|ammaCorrect|r(id|oup(Id|Parts)|a(nite|vityField)))|Fur(Globals|Description|Feedback|Attractors)|xformManip|m(o(tionPath|untain|vie)|u(te|lt(Matrix|i(plyDivide|listerLight)|DoubleLinear))|pBirailSrf|e(sh(VarGroup)?|ntalray(Texture|IblShape))|a(terialInfo|ke(Group|Nurb(sSquare|Sphere|C(ylinder|ircle|one|ube)|Torus|Plane)|CircularArc|T(hreePointCircularArc|extCurves|woPointCircularArc))|rble))|b(irailSrf|o(neLattice|olean|undary(Base)?)|u(lge|mp(2d|3d))|evel(Plus)?|l(in(n|dDataTemplate)|end(Shape|Color(s|Sets)|TwoAttr|Device|Weighted)?)|a(se(GeometryVarGroup|ShadingSwitch|Lattice)|keSet)|r(ownian|ush)))\\b' }, + { caseInsensitive: true, + token: 'keyword.control.mel', + regex: '\\b(if|in|else|for|while|break|continue|case|default|do|switch|return|switch|case|source|catch|alias)\\b' }, + { token: 'keyword.other.mel', regex: '\\b(global)\\b' }, + { caseInsensitive: true, + token: 'constant.language.mel', + regex: '\\b(null|undefined)\\b' }, + { token: 'constant.numeric.mel', + regex: '\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f)?\\b' }, + { token: 'punctuation.definition.string.begin.mel', + regex: '"', + push: [{ token: 'constant.character.escape.mel', regex: '\\\\.' }, + { token: 'punctuation.definition.string.end.mel', + regex: '"', + next: 'pop' }, + { defaultToken: 'string.quoted.double.mel' }] }, + { token: ['variable.other.mel', 'punctuation.definition.variable.mel'], + regex: '(\\$)([a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*?\\b)' }, + { token: 'punctuation.definition.string.begin.mel', + regex: '\'', + push: [{ token: 'constant.character.escape.mel', regex: '\\\\.' }, + { token: 'punctuation.definition.string.end.mel', + regex: '\'', + next: 'pop' }, + { defaultToken: 'string.quoted.single.mel' }] }, + { token: 'constant.language.mel', + regex: '\\b(false|true|yes|no|on|off)\\b' }, + { token: 'punctuation.definition.comment.mel', + regex: '/\\*', + push: [{ token: 'punctuation.definition.comment.mel', + regex: '\\*/', + next: 'pop' }, + { defaultToken: 'comment.block.mel' }] }, + { token: ['comment.line.double-slash.mel', 'punctuation.definition.comment.mel'], + regex: '(//)(.*$\\n?)' }, + { caseInsensitive: true, + token: 'keyword.operator.mel', + regex: '\\b(instanceof)\\b' }, + { token: 'keyword.operator.symbolic.mel', + regex: '[-\\!\\%\\&\\*\\+\\=\\/\\?\\:]' }, + { token: ['meta.preprocessor.mel', 'punctuation.definition.preprocessor.mel'], + regex: '(^[ \\t]*)((?:#)[a-zA-Z]+)' }, + { token: ['meta.function.mel', 'keyword.other.mel', 'storage.type.mel', 'entity.name.function.mel', 'punctuation.section.function.mel'], + regex: '(global\\s*)?(proc\\s*)(\\w+\\s*\\[?\\]?\\s+|\\s+)([A-Za-z_][A-Za-z0-9_\\.]*)(\\s*\\()', + push: [{ include: '$self' }, + { token: 'punctuation.section.function.mel', + regex: '\\)', + next: 'pop' }, + { defaultToken: 'meta.function.mel' }] } + ] }; + this.normalizeRules(); +}; +oop.inherits(MELHighlightRules, TextHighlightRules); +exports.MELHighlightRules = MELHighlightRules; + +}); + +ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/mel",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/mel_highlight_rules","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var MELHighlightRules = require("./mel_highlight_rules").MELHighlightRules; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = MELHighlightRules; + this.$behaviour = new CstyleBehaviour(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "//"; + this.blockComment = { start: "/*", end: "*/" }; + this.$id = "ace/mode/mel"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + ace.require(["ace/mode/mel"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/fd7d0e7d961590c139ed4e02aa7ca536.js.gz b/web/dist/fd7d0e7d961590c139ed4e02aa7ca536.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..94c041faef284537162b1ef978ce3ffd56c538f6 GIT binary patch literal 11139 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 VdA}`ei_F@u{|^^vfAwo}008h+w9^0p literal 0 HcmV?d00001 diff --git a/web/dist/ffa203dcaae3e64846fe72a12c66f52a.js b/web/dist/ffa203dcaae3e64846fe72a12c66f52a.js new file mode 100644 index 00000000..155ce652 --- /dev/null +++ b/web/dist/ffa203dcaae3e64846fe72a12c66f52a.js @@ -0,0 +1,16 @@ +ace.define("ace/snippets/haskell.snippets",["require","exports","module"], function(require, exports, module){module.exports = "snippet lang\n\t{-# LANGUAGE ${1:OverloadedStrings} #-}\nsnippet info\n\t-- |\n\t-- Module : ${1:Module.Namespace}\n\t-- Copyright : ${2:Author} ${3:2011-2012}\n\t-- License : ${4:BSD3}\n\t--\n\t-- Maintainer : ${5:email@something.com}\n\t-- Stability : ${6:experimental}\n\t-- Portability : ${7:unknown}\n\t--\n\t-- ${8:Description}\n\t--\nsnippet import\n\timport ${1:Data.Text}\nsnippet import2\n\timport ${1:Data.Text} (${2:head})\nsnippet importq\n\timport qualified ${1:Data.Text} as ${2:T}\nsnippet inst\n\tinstance ${1:Monoid} ${2:Type} where\n\t\t${3}\nsnippet type\n\ttype ${1:Type} = ${2:Type}\nsnippet data\n\tdata ${1:Type} = ${2:$1} ${3:Int}\nsnippet newtype\n\tnewtype ${1:Type} = ${2:$1} ${3:Int}\nsnippet class\n\tclass ${1:Class} a where\n\t\t${2}\nsnippet module\n\tmodule `substitute(substitute(expand('%:r'), '[/\\\\]','.','g'),'^\\%(\\l*\\.\\)\\?','','')` (\n\t)\twhere\n\t`expand('%') =~ 'Main' ? \"\\n\\nmain = do\\n print \\\"hello world\\\"\" : \"\"`\n\nsnippet const\n\t${1:name} :: ${2:a}\n\t$1 = ${3:undefined}\nsnippet fn\n\t${1:fn} :: ${2:a} -> ${3:a}\n\t$1 ${4} = ${5:undefined}\nsnippet fn2\n\t${1:fn} :: ${2:a} -> ${3:a} -> ${4:a}\n\t$1 ${5} = ${6:undefined}\nsnippet ap\n\t${1:map} ${2:fn} ${3:list}\nsnippet do\n\tdo\n\t\t\nsnippet \u03BB\n\t\\${1:x} -> ${2}\nsnippet \\\n\t\\${1:x} -> ${2}\nsnippet <-\n\t${1:a} <- ${2:m a}\nsnippet \u2190\n\t${1:a} <- ${2:m a}\nsnippet ->\n\t${1:m a} -> ${2:a}\nsnippet \u2192\n\t${1:m a} -> ${2:a}\nsnippet tup\n\t(${1:a}, ${2:b})\nsnippet tup2\n\t(${1:a}, ${2:b}, ${3:c})\nsnippet tup3\n\t(${1:a}, ${2:b}, ${3:c}, ${4:d})\nsnippet rec\n\t${1:Record} { ${2:recFieldA} = ${3:undefined}\n\t\t\t\t, ${4:recFieldB} = ${5:undefined}\n\t\t\t\t}\nsnippet case\n\tcase ${1:something} of\n\t\t${2} -> ${3}\nsnippet let\n\tlet ${1} = ${2}\n\tin ${3}\nsnippet where\n\twhere\n\t\t${1:fn} = ${2:undefined}\n"; + +}); + +ace.define("ace/snippets/haskell",["require","exports","module","ace/snippets/haskell.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./haskell.snippets"); +exports.scope = "haskell"; + +}); (function() { + ace.require(["ace/snippets/haskell"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/fffbc895129cdb3efeafa5b234743aa0.js b/web/dist/fffbc895129cdb3efeafa5b234743aa0.js new file mode 100644 index 00000000..d48336bf --- /dev/null +++ b/web/dist/fffbc895129cdb3efeafa5b234743aa0.js @@ -0,0 +1,9 @@ + +; (function() { + ace.require(["ace/snippets/alda"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/web/dist/index.html b/web/dist/index.html new file mode 100644 index 00000000..f163bbc3 --- /dev/null +++ b/web/dist/index.html @@ -0,0 +1,42 @@ +节点控制台